[摘 要] Linux系统使用越来越广泛,关系Linux的安全越来越受到人们的重视,本文结合笔者在Linux系统安全管理方面的一些经验体会,从账户、密码策略、文件权限,日志管理、远程访问等5个方面,对linux系统安全谈谈自己的体会,供大家参考。
一、引言
随着Internet/Intranet网络的日益普及,Linux作为一个现代的操作系统,正在各个方面得到广泛的应用。Linux在服务器、嵌入式等方面已经取得不俗的成绩,在桌面系统方面,也逐渐受到欢迎。于是Linux的安全问题也逐渐受到人们的重视。
Linux是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入 Linux系统,或者盗取Linux系统上的重要信息。因此,详细分析Linux系统的安全机制,找出它可能存在的安全隐患,给出相应的安全策略和保护措施是十分必要的。针对Linux的基本安全防护,笔者这里稍做介绍。
二、Linux系统的安全策略
1.Linux系统的用户账号策略
管理员的工作中,相当重要的一环就是管理账号。在管理 Linux 主机的账号时,一个最重要的方面就是确保每一个UID仅仅使用一次。
另外就是设置有限的登陆次数来预防无休止的登陆攻击,通过编辑/etc/pam.d/system-auth,添加下面两句可以设置账户最多连续登陆5次,超过5次账户将被锁定,只有管理员才能帮助解锁。
auth required pam_tally.so deny=5
account required pam_tally.so
2.密码策略要求
(1)口令时效和口令长度的设置。口令时效和口令长度是一种系统机制,用于强制口令在特定的时间长度后失效。对用户来说,这可能带来了一些麻烦,但是它确保了口令会定期进行更改,是一项很好的安全措施。默认情况下,绝大多数的Linux版本并没有打开口令时效,不过要想打开却非常简单。通过编辑/etc/login.defs,你可以指定几个参数,来设置口令实效和口令长度的默认设定:
PASS_MAX_DAYS99999
PASS_MIN_DAYS 0
PASS_MIN_LEN5
PASS_WARN_AGE7
当设置口令时效的天数为99999时,实际上相当于关闭了口令时效。一般设定为90天或者更短时间来更改一次。PASS_MIN_DAYS参数则设定了在本次密码修改后,下次允许更改密码之前所需的最少天数。PASS_MIN_LEN是指密码设置的最小长度,一般定义为8位以上。PASS_WARN_AGE的设定则指明了在口令失效前多少天开始通知用户更改密码(一般在用户刚刚登陆系统时就会收到警告通知)。
(2)控制密码使用频率。控制适度的密码重用频率,也可以为密码的安全策略提供良好的保护,可以通过编辑/etc/pam.d/system-auth设定密码重用。一般设置重用密码前更换密码的最小次数为4次。
password required pam_unix.so remember=3 use_authtok md5 shadow 或者 password sufficient pam_unix.so remember=3 use_authtok md5 shadow。
3.Linux的基本文件权限要求
Linux中每一个文件都具有特定的属性,主要包括文件类型和文件权限两个方面。可以分为5种不同的类型:普通文件、目录文件、链接文件、设备文件和管道文件。所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux 是一个多用户操作系统,它允许多个用户同时登录和工作。因此正确的文件权限设定是非常重要的。与系统安全关系较为密切的几个文件目录权限设置要求如下表:
4.Linux日志文件管理
日志对于系统安全来说,非常重要,它记录了系统每天发生的各种各样的事情,你可以通过它来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。因此,保护系统日志安全,不被内部用户或外部入侵者修改或删除显得尤为重要。
在Linux系统中,有三个主要的日志子系统:
连接时间日志——由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
进程统计——由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。
错误日志——由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
Linux的日志文件很多,但是/var/log/wtmp,/var/log/messages,/var/log/faillog(权限设置为600) ,/var/log/secure (如果是Debian,/var/log/auth.log将代替它)最好是存在的。
如果服务器支持很多的用户的话,这些日志文件的大小会很快地增加,在服务器硬盘不是非常充足的情况下,必须采取措施限制日志文件的大小,定期做好日志备份和清除是非常重要的。
5.Linux的远程登录:使用OPENSSH代替FTP和Telnet
我们通常使用的网络传输程序FTP和Telnet等在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,黑客利用嗅探器非常容易截 获这些口令和数据。SSH的英文全称是Secure SHell。通过使用SSH,用户可以把所有传输的数据进行加密,这样即使网络中的黑客能够劫持用户所传输的数据,如果不能解密的话,也不能对数据传输构成真正的威胁。另外,传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP提供一个安全的“传输通道”。在不安全的网路通信环境中,它提供了很强的验证机制与非常安全的通信环境。SSH(Secure Shell)最初由芬兰的一家公司开发,但由于受版权和加密算法的限制,很多人转而使用免费的替代软件OpenSSH。命令行使用OPENSSH比较麻烦。这里介绍gFTP和OPENSSH整合在一齐,提供一个图形化加密传输方案。gFTP和Windows下的 CuteFTP一样使用非常简单,而且几乎所有的Linux发行版本都带有gFTP,不需要安装就可以使用本论文由无忧论文网整理提供 。Windows下支持SSH的客户端软件不少,推荐使用Putty和Filezilla。
目前很多公司企业对信息安全问题日益重视,完善的信息安全控制架构,先进的管理和技术的结合,才能真正满足公司企业的需要。
参考文献:
[1]王一川 Linux黑客大曝光:Linux安全机密与解决方案[M].清华大学出版社,2002~10~1
[2]汪 辉等:Linux安全最大化(第二版)[M].电子工业出版社, 2002~1~1
[3]前导工作室 Linux安全:入侵防范、检测、恢复[M].机械工业出版社,2002~1~1
本论文由无忧论文网整理提供
LINUX系统中常见的有:CERN、NCSA、Apache三种方式,一般最常用的方法就是用Apache。此种方式特点明显,配置简明,具有最大的对系统兼容性,以下是用此方式配置基于Linux的WEB服务器的全过程。
一. Apache服务器慨述。
其特征是显著的:可以运行于所有计算机平台,自然包括UNIX/LINUX系统;集成代理服务器和Perl编程脚本;对用户的访问会话过程跟踪;可对服务器日志定制;还支持虚拟主机及HTTP认证等等。再配合LINUX系统本身的强大,我们没理由不选择Apache。
二. 安装Apache。
一般说来,所有Linux版本应该包含有此软件包的安装,如果你在安装Linux系统没有安装此软件包,可以从安装光盘或是网站上找到其安装文件(注意网上有两种版本:一种是下载后需重新编译的源代码,一种是只需解压就可使用的可执行文件),然后执行安装即可。
1. 如果你下载的是可执行文件包如:apache_1.2.4.e.tar.gz(当中的数字视你下载的版本而定,此为举例),那这就相对简单,比较适合对Linux编译不熟悉的初级用户,只需执行:tar xvzf apache_1.2.3.4.tar.gz即可完成安装。
2. 如果下载的是源代码如:apache_1.2.4.rpm,则先用rpm –ivh apache_1.2.4.rpm安装,然后在src目录下执行“./configure”;接着执行“make”命令编译Apache;接着将编译好的可执行文件复制到/etc/httpd/bin目录下;再将Apache的配置文件:httpd.conf、access.conf 、srm.conf和mime.types复制到/etc/httpd/conf目录下,才算完成安装。
三. 配置Apache,实现WEB服务。
其实,到现在你的Linux已经开始WEB服务了,你要做的只需将Linux系统连入互联网,然后将主页存放于“/home/httpd”目录下即可。但为了让此WEB服务器更有效率的工作,我们还需对其作些设置,具体需要配置的其实就是刚才复制的那4个文件。以下对其主要的两个配置文件httpd.conf和access.conf作些说明:
1. httpd.conf.
此文件是主配置文件,主要用来设置服务器启动的基本环境,也就是说它负责安排WEB服务器怎样运行。其相关设置参数为:
ServerType standalone/inetd:此选项作用就是指定以何种方式运行WEB服务器。其中standalone参数表示WEB服务进程以一个单独的守候进程的方式在后台侦听是否有客户端的请求,如果有就生成一个子进程来为其服务;其效率更高。主要是设置主服务器进程侦听的特定端口地址,方法为:Port [number] (缺省为80)。
而inetd模式相对standalone来说它更安全,此模式也是RedHat Linux运行Apache的默认方式。如果你的版本不是RedHat,则需在/etc/inetd.conf文件里加入以下一新行:httpd stream tcp nowait httpd /etc/httpd/bin/httpd –f /etc/httpd/conf/httpd.conf;然后在/etc/services文件里同样添加一新行:httpd 80/tcp httpd即可。
ErrorLog:用来指定错误记录的文件名称和路径。格式如:ErrorLog /var/httpd/error.log。
ServerRoot:用来指定将服务器的配置及日志文件存于何处。格式如:ServerRoot /etc/httpd。
Server Admin: 设置WEB管理员的E-Mail地址.格式如:Server Admin 。
2. srm.conf
这是Apache的资源配置文件,作用为告诉服务器你想在WWW站点上提供的资源及如何提供,其主要参数为:
DocumentRoot: 用来指定主文档的地址。格式如:DocumentRoot /home/httpd/html。
DirectoryIndex:跟windows平台的IIS设置一样,用来指定首页文件的名称。大家都知道,首页一般都以“index.html”或“index.htm”作为文件名。当设置为这两种文件名之后,只要用户发出WEB请求,即将调入以“index.html”或“index.htm”命名的主页。格式如:DirecotryIndex index.html index.htm。
经过以上简单的配置后,你的WEB服务器已经具备基本的功能了。接下来要做的就是重启WEB服务,使刚才的配置生效,我们可以用以下命令来完成:
/etc/rc.d/init.d/httpd restart
最后,我们来看看基于Apache服务的安全方面。Apache服务器通过认证系统能控制哪些主机可以访问某些特定的站点。具体来说,它通过两种方式来实现:
一种是基于主机地址的认证,但由于目前大部分上网用户使用的都是动态地址,因此此种方式并没多少实际意义;
另一种方式是基于用户名/口令的认证方式,不言而喻,此种方式更适合如今的网络状况,而对于具体的用户名/口令认证实现。
Linux 系统命令
指令名称:chown
使用权限:root
使用方式:chmod [-cfhvR] [--help] [--version] user[:group] file...
说明:Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。
把计:
user:新的档案拥有者的使用者 IDgroup:新的档案拥有者的使用者群体(group)-c:若该档案拥有者确实已经更改,才显示其更改动作-f:若该档案拥有者无法被更改也不要显示错误讯息-h:只对于连结(link)进行变更,而非该 link 真正指向的档案-v:显示拥有者变更的详细资料-R:对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)--help:显示辅助说明--version:显示版本
范例:
将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie:
chown jessie:users file1.txt
将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport:
chmod -R lamport:users *
名称:cp
使用权限:所有使用者
使用方式:
cp [options] source dest
cp [options] source... directory
说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。
把计:
-a 尽可能将档案状态,权限等资料都照原状予以复制。
-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。
范例:
将档案 aaa 复制(已存在),并命名为 bbb:
cp aaa bbb
将所有的C语言程式拷贝至 Finished 子目录中:
cp *.c Finished
名称:cut
使用权限:所有使用者
用法:cut -cnum1-num2 filename
说明:显示每行从开头算起 num1 到 num2 的文字。
范例:
shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 开头算起前 6 个字元
test2
this i
cat cd
chmod chown
cp cut
名称:cat
使用权限:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
范例:
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3
名称:cd
使用权限:所有使用者
使用方式:cd [dirName]
说明:变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录).另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。
范例:跳到 /usr/bin/:
cd /usr/bin
跳到自己的 home directory:
cd ~
跳到目前目录的上上两层:
cd ../..
指令名称:chmod
使用权限:所有使用者
使用方式:chmod [-cfvR] [--help] [--version] mode file...
说明:Linux/Unix 的档案存取权限分为三级:档案拥有者,群组,其他。利用 chmod 可以藉以控制档案如何被他人所存取。
把计:
mode:权限设定字串,格式如下:[ugoa...][[+-=][rwxX]...][,...],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c:若该档案权限确实已经更改,才显示其更改动作
-f:若该档案权限无法被更改也不要显示错误讯息
-v:显示权限变更的详细资料
-R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help:显示辅助说明
--version:显示版本
范例 :将档案 file1.txt 设为所有人皆可读取:
chmod ugo+r file1.txt
将档案 file1.txt 设为所有人皆可读取:
chmod a+r file1.txt
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入:
chmod ug+w,o-w file1.txt file2.txt
将 ex1.py 设定为只有该档案拥有者可以执行:
chmod u+x ex1.py
将目前目录下的所有档案与子目录皆设为任何人可读取:
chmod -R a+r *
此外chmod也可以用数字来表示权限如 chmod 777 file
语法为:chmod abc file
其中a,b,c各为一个数字,分别表示User,Group,及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
范例:
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
效果相同
若用chmod 4755 filename可使此程式具有root的权限