文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>定制安全的Linux系统服务平台(1)

定制安全的Linux系统服务平台(1)

时间:2006-06-16  来源:snowtty

随着电脑技术日新月异的发展和各种各样网络应用的流行,网络操作系统在服务器领域里扮演了非常重要的角色。由于Windows操作系统的广泛应用,以及人们对其内部机制的深入剖析,导致利用其漏洞攻击服务器的黑客软件越来越多。于是,随着对安全问题的日益关注,另一操作系统——Linux出现在人们面前。
Linux秉承Unix高端操作系统的血脉,其安全性、可靠性、高伸缩性的特点与生俱来。再加上Linux独创的源码开放模式,从 1989年其源代码出现在Internet上起,短短十几年间,来自世界各地的开发人员对其进行了不断地修改及完善,如今Linux已经逐渐成长为一个功能强大、可操作性强的网络操作系统。通过构建Linux服务器,可以架设Web服务器、Mail服务器、DNS服务器、DHCP服务器、FTP服务器、代理服务器及NFS服务器等;也可以用Linux作为防火墙接入,充当路由器等各种重要角色;或是开发基于Linux的入侵检测系统(IDS)、语音呼叫系统、桌面应用等。由此可见Linux的强大和重要,尤其是在服务器领域越来越多的应用平台建立在Linux系统架构上。随着应用范围不断扩大,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) (列出所有的服务清单,可以选择安装/卸载)

相关阅读 更多 +
排行榜 更多 +
火柴人狙击高手

火柴人狙击高手

飞行射击 下载
僵尸射击防御汉化版

僵尸射击防御汉化版

飞行射击 下载
士兵生存

士兵生存

飞行射击 下载