DIY的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),将使入侵者无法擦除自己的踪迹,以便于执法人员取证、分析。