如何来量身定制安全的Linux系统服务平台

如何保证安全的最大化呢?量体裁衣,有的放矢,取舍得当是关键。现从以下几个方面加以详述。

控制文件的属性和权限

密切关注文件的属性和权限设置是保证主机文件系统完整性的至关紧要的操作。

两种特殊的文件访问权限分别是SUID(八进制为4000)和SGID(八进制为2000)。设置这两种权限的文件,将使其它用户在执行它们时拥有所有者的权限。也就是说,如果一个设置为SUID的程序,即使是普通用户使用也是作为root来运行的。因此,SUID/SGID文件是安全的隐患。

SUID和SGID攻击方式的预防:

1.严格审查系统内的文件权限。可以找出系统内使用SUID/SGID的文件,列出清单保存,做到心中有数。命令如下:

[root#] find / -type f -perm +6000 -ls | less

[root#] find / -type f -perm +6000 > Suid-Sgid.txt

2.对于一部分程序必须设置为SUID的,可以让它们自成一组,集中管理。但是绝对不允许在用户的家目录下有SUID程序存在。

3.确保重要的SUID脚本不可写。命令如下:

[root#] find / -perm -2 ! -type l -ls

4.对于并非绝对需要被设置成SUID的程序,改变它们的访问权限或者卸载程序。如:

[root#] chmod -s [program]

5.查找系统内所有不属于任何用户和组的文件。因为这些文件很容易被利用来获得入侵主机的权限,造成潜在的威胁。命令如下:

[root#] find / -nouser -o -nogroup

6.善于使用lsattr和chattr这两个ext2/3的属性命令。本文将主要讨论a属性和i属性,因为这两个属性对于提高文件系统的安全性和保障文件系统的完整性有很大的好处。a属性(Append-only),系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。i属性(Immutable),系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何进程只能修改目录之下的文件,不允许建立和删除文件。

如果主机直接暴露在因特网或者位于其它危险(如其它非管理员亦可接触服务器)环境,有很多Shell账户或提供HTTP和FTP等网络服务,一般应该在安装配置完成后使用如下命令,便于保护这些重要目录:

[root#] chattr -R +i /bin /boot /etc /lib /sbin

[root#] chattr -R +i /usr/bin /usr/include /usr/lib /usr/sbin

[root#] chattr +a /var/log/messages /var/log/secure......

如果很少对账户进行添加、变更或删除操作,把/home本身设置为Immutable属性也不会造成什么问题。

在很多情况下,整个/usr目录树也应该具有不可改变属性。实际上,除了对/usr目录使用chattr -R +i /usr/命令外,还可以在/etc/fstab文件中使用ro选项,使/usr目录所在的分区以只读的方式加载。

另外,把系统日志文件设置为只能添加属性(Append-only),将使入侵者无法擦除自己的踪迹,以便于执法人员取证、分析。

文件系统的完整性检查

完整性是安全系统的核心属性。管理员需要知道是否有文件被恶意改动过。攻击者可以用很多方法破坏文件系统,例如,可以利用错误配置获得权限,也可以修改文件植入特洛伊木马和病毒。Linux中常用如下工具进行校验检查。

1.md5sum

md5sum 命令可以用来创建长度为128位的文件指纹信息。通过md5sum -c命令可以反向检查文件是否被修改过。黑客进入到系统后,会用修改后的文件来取代系统上某些特定的文件,如netstat命令等。于是当使用 netstat -a命令查看系统状态时,不会显示系统攻击者存在的信息。攻击者还可能会替代所有可能泄露其存在的文件,一般来说包括:

/bin/ps、/bin/netstat、/bin/login、/bin/ls、

/usr/bin/top、/usr/bin/passwd、/usr/bin/top、

/sbin/portmap、/etc/xinetd.conf、/etc/services。

这些文件都是替代的对象。由于这些文件已经被取代,那么简单地利用ls命令是查看不出这些文件有什么破绽的。因此你需要用md5sum工具在系统安装前期为这些文件做好指纹认证并保存,以备日后检测所用。

2.RPM安装包

如果使用的是基于RPM的安装包(Red Hat公司开发并包含在其Linux产品之中的多功能软件安装管理器,现有多种版本的Linux使用此管理器,如Red Hat、 TurboLinux),它可以用来建立、安装、查询、检验、升级和卸载独立的软件包。一个完整的RPM包包括压缩文件和包信息。当使用RPM安装软件时,RPM为每个被安装的文件向数据库中添加信息,包括MD5校验和、文件大小、文件类型、拥有者、组和权限模式。当RPM以-verify标志运行时,将把初始文件的值与当前安装的文件进行比较并报告差异。例如,下面是对一个被黑站点的运行结果:

# rpm -qf /bin/ps(或# rpm -qf /usr/bin/top 查看命令隶属哪个RPM包)

procps.2.0.2-2

# rpm -V procps(-V MD5检验)

SM5..UGT /bin/ps

SM5..UGT /usr/bin/top(有消息表示此文件已被修改)

由上可以看出,攻击者已经入侵到系统中,并且用自己的ps及top命令替代了原来系统中的命令,从而使管理员看不到其运行的进程。RPM的使用方法很多,具体操作方法参见man rpm文档。

3.Tripwire

Tripwire是一个用来检测整个系统是否存在恶意代码和检验文件完整性的有用工具。它采用MD5算法生成128位的“指纹”,通过命令自动保存系统快照,再产生相应的MD5数值以供日后比较判断。

使用Tripwire可以定义哪些文件/目录需要被检验。一般默认设置能满足大多数的要求。该工具运行在四种模式下:数据库生成模式、数据库更新模式、文件完整性检查模式、互动式数据库更新模式。当初始化数据库生成的时候,它生成对现有文件各种信息的数据库文件。为预防以后系统文件或者配置文件被意外地改变、替换或删除,它将每天基于原始数据库对现有文件进行比较,以发现哪些文件被更改、是否有系统入侵等意外事件发生。当然,如果系统中的配置文件或程序被更改,则需要再次生成数据库文件,保持最新的系统快照。此软件功能强大,使用方便。具体的安装和使用,可以通过Google搜索获得。

有效控制服务器运行的后台进程

服务进程(Daemon)是Linux操作系统的核心程序,是外界与主机互相交互的主要途径,同时也是连接因特网的大门。正因为运行了不同的服务进程,Linux系统才能够提供不同的服务,网络才变得丰富多彩。一个称职的管理员必须掌握以下几个要领:

1. 要对自己的服务器有足够的了解,清楚每台服务器的所有后台进程,了解哪台主机运行了哪些服务,开放了哪些端口。我们可以用以下方法得到服务器的配置:

# ntsysv (或 setup) (列出所有的服务清单,可以选择安装/卸载)

# less /etc/services (列出所有服务运行的端口)

# ps -auxf > daemons.txt(推荐使用,把所有后台打印列表)

# cd /var/run/|ls -al(查看启动服务的进程号文件)

2. 对每个服务都要做好软件版本号的登记归档,密切注意各服务软件的漏洞,尽快升级或打补丁。如bind软件在8.X存在安全漏洞,应该尽快升级到9.X。

3.尤其要注意的是,新手们总是认为把服务运行起来工作就已经做完了,其实这是不对的。当服务进程运行起来后,配置文件的优化处理相当重要。比如, Apache的配置文件中,KeepAlive、MaxKeepAliveRequests、KeepAliveTimeout、 StarServers、MinSpareServers、MaxSpareServers、MaxClients、 MaxRequestsPerChild对机器性能的影响都非常重要。所以,需要常去网上论坛了解最新信息和发展动态,从而更好地守住每个进出的要口。管理员应该常去的网站链接http://www.linuxsecurity.com。

同时还要特别注意以下几方面:

配置独立的专用服务器,增加负荷能力,降低风险

Linux 作为优秀的网络操作平台,完全有能力胜任运行多个服务器。比如,它可以作为Web服务器,同时也可以充当FTP服务器和Mail服务器。这样做的好处在于能够降低投资成本,但是不安全因素也会随之相应增加。因此,需要在投资成本与安全最大化之间权衡。假如电脑连接因特网,提供多种服务,且每天都要提供大量访问量时,建议一“不要把所有的鸡蛋放在同一个篮子里”。把各个服务进程运行在不同的主机上,成为专用的Web服务器,FTP服务器或Mail服务器,共同分担风险。建议二把各种服务分类管理。在FTP服务器和Mail服务器访问量不大时,也可以把它们统一管理。

取消所有非必要的服务,尽量做到干净,减少后门

把Linux作为专用服务器是个明智的举措。例如,希望Linux成为强大的Web服务器,可以取消系统内所有非必要的服务,只开启必要服务。这样做可以尽量减少后门,降低隐患,而且可以合理分配系统资源,提高整机性能。以下是几个不常用的服务:

1. fingerd(finger服务器)报告指定用户的个人信息,包括用户名、真实姓名、shell、目录和联系方式,它将使系统暴露在不受欢迎的情报收集活动下,应避免启动此服务。

2. R服务(rshd、rlogin、rwhod、rexec)提供各种级别的命令,它们可以在远程主机上运行或与远程主机交互,在封闭的网络环境中登录而不再要求输入用户名和口令,相当方便。然而在公共服务器上就会暴露问题,导致安全威胁。

3. X-Window从严格的意义上说,是Linux窗口管理器的扩展,而不是重要组成部分。从目前的GNOME、KDE这两种主流图形服务器来看,体积越来越臃肿,耗存越来越大,一些基于图形界面的软件在使用上也存在不少问题。虽然开发人员不会放弃对它的完善,但对于服务器来说,它的存在价值几乎没有。因此,在安装服务器时,务必考虑是否真的需要图形管理界面。

4. 其它服务,如amd、arpwatch、atd、dhcpd、innd、nntpd、talkd、lpd、named、routed、snmpd、 xfs、wuftpd、tftpd、telnet、ypbind、yppasswd、ypserv,既然是Web服务器,都可以取消或卸载掉。

同理,如果是作为FTP服务器运行,只需FTP进程和必要的程序。

安全系数高的服务替代正在运行的服务进程

对于一些必要的服务器,如前所说的Web服务器,理论上只需要Apache的进程就可以工作了。但是如果管理员需要远程控制放在运营中心的主机呢?或者用户需要通过FTP上传更新资料呢?Telnet、wu-ftp这些服务的安全性太低,这时,就需要启用安全级别高的服务来替代这些服务程序。以下为几个需要替代的进程:

1.用OpenSSH替代Telnet

您的回应...

相关话题

查看全部

也许你感兴趣

换一批

热门标签

更多