七、系统的管理、授权、认证
1、在PAM配置文件里移除.rhosts支持
.rhosts定义了哪些计算机和用户可以不用提供口令就在本地计算机上执行远程命令,很容易被攻击者利用。使用.rhosts是对用户访问控制规则的破坏,尽量关闭。如果有特殊原因,必须要使用,那就需要一些预防措施。永远不要在.rhosts里使用+通配符。.rhosts必须指定特定的可信任用户名,比如trustedhost DB1,而不是trustedhost。这种在配置HA的时候常见。要避免信任关系之外的主机,而且防火墙或者其他安全设备应该阻止外部的rlogin/rsh/rcp访问。最后,还要确保.rhost文件只有所有者可读。例如文件权限600。
2、/etc/ftpusers
/etc/ftpusers的列表里定义了哪些用户不允许使用系统的FTP,一般来说,应该只有普通用户可以使用FTP,而不是system这种类型的账户。当然,root用户永远都不应该使用FTP方式直接传输文件。
SUSE提供了一个netcfg的包,预填充了不该使用FTP的账户。
3、 防止X Server在tcp6000上监听
X Server在TCP6000上监听,接受来自其他客户端的请求。但是,X Server使用了一个相对不安全的身份验证协议,攻击者可以未授权访问到本地X Server上。使用”-nolisten tcp” 方式可以取消X Server在TCP6000上默认监听。
4、限制用户使用at/cron
cron.allow、 at.allow定义了谁可以使用crontab、at命令在预定的时间运行作业。在很多系统上,只有系统管理员有这种能力。即使某个用户不在cron.allow里面,用户仍然可以运行cron作业。cron.allow控制的是:crontab命令调度的权限、修改cron作业的权限。注意:不要修改/etc/at.deny和/etc/cron.deny文件,除非你的确了解他们,这两个文件里都有合理的默认内容。如果对at和cron必须加以控制,创建/etc/at.allow和/etc/cron.allow文件,增加适当的用户。
5、限制crontab文件的权限
系统的crontab文件只能由cron守护进程(运行超级用户权限)和crontab命令(set-UID为root)访问。允许未授权的用户读取修改crontab,可以让用户获得权限提升。
6、配置xinetd的访问控制
可使用简单的基于IP的访问控制,限制对xinted的非法连接。现在比较流行的工具是PortSentry,可以用于监视那些试图访问未使用端口的行为。然后再使用系统防火墙SuSEfirewall2来控制。
7、限制root登录到系统控制台
root直接登录到系统控制台是不允许的,除非特别情况。在其他时候,管理员应该通过无特权的账户并使用授权机制,比如su、sudo来获取额外的特权。这些机制至少提供了审计的线索。/etc/securtty让你可以规定root可从哪个tty登录。/etc/securtty列出来的都是可以登录的,注释、不存在的都是不允许root登录的。
8、设置LILO/GRUB密码
大多数的Linux系统,默认在引导时,有装载提示,这让攻击者破坏正常的引导变得很容易。对他设置密码,这样在试图修改LILO或GRUB的时候,就需要验证,当然,密码要够强壮。
方法
A、如果你有/etc/lilo.conf 文件
在/etc/lilo.conf前面添加:
password=
以root执行命令:
chown root:root /etc/lilo.conf
chmod 600 /etc/lilo.conf
B、如果是/etc/grub.conf文件
在/etc/grub.conf取消password 的注释。
以root执行命令:
chown root:root /etc/grub.conf
chmod 600 /etc/grub.conf
9、对单用户模式验证
在一些Linux上你可以在LILO模式下键入linux single进入单用户模式,或者在GRUB的引导编辑菜单。这就带来风险,进入系统的认证应该始终需要root级别的访问,防止攻击者物理访问系统。SUSE默认禁止这种进入方式,但是作为检查来说,还是需要检查一下。如果被改动的话,要搞清楚原因并恢复。8和9这两个项目都为了解决物理/启动的安全问题,也可以考虑设置只从主硬盘启动,或者设置BIOS密码。
10、限制NFS客户端请求特权端口
设置:NFS服务器忽略来自客户端的低于1024的源端口访问,这不会妨碍到正常的NFS操作,但可以阻止一些使用工具软件攻击的人。其配置文件在/etc/exports里。
11、syslog的消息接收
你的服务器是日志服务器吗?需要从网络上、其他主机上接收日志吗?如果是肯定的,启用日志系统的远程消息接受。默认情况下的系统日志的守护进程是syslogd,不在udp514上监听来自其他系统的日志消息(Solaris相反,默认是接受的。)成立一个独立的日志服务器来记录一个或多个日志,是比较推荐的安全做法。但是,如果你不是日志服务器的话,就不应该打开udp514的监听,因为这些信息的传递没有任何认证机制。攻击者也可以利用此端口发起DDOS攻击,或者不停的发送日志消息填满你的日志系统,这样以后的攻击就不会被记录到了。
在syslog-ng.conf.in里,把下面这行加上#注释掉
#udp(ip(“0.0.0.0”) port(514))
八、用户账户和环境
1、锁定系统账户
有很多账户是系统账户,不会被人使用,锁定这些账户有助于减少攻击者的利用。这些账户不应该有shell。如果没有守护进程/服务使用的话,甚至可以将账户删除。比较简单的做法是直接停用,停用的做法是锁定password,设置一个无效的shell(比如/bin/false)。SUSE里使用/bin/false而不是/dev/null和/bin/nologin。
2、空密码账户
使用awk -F: ‘($2 == “”) { print $1 }’ /etc/shadow查找空密码账户。空密码账户是指任何人都可以登录,而不用提供密码。所有的账户都应该有健壮的密码,或者使用锁定密码的字符串:NP、*LOCKED*。
3、设置账户过期和密码参数
强制用户定期改变密码,设置所有活跃账户(除了系统账户)强制更改密码,例如:每90天(-M 90),下次允许更改密码之前最少的天数7天 (-m 7),用户在密码过期前28天收到警告(-W 28)。一旦密码过期,账户将被锁定7天(-I 7)。最后,密码最小长度为6。这只是一些建议,你需要根据你的实际情况在/etc/login.defs进行调整。
4、确认在passwd, shadow,group里没有‘+’
使用命令grep ^+: /etc/passwd /etc/shadow /etc/group检查。+用于NIS的数据映射配置,在passwd, shadow,group文件里存在+号,将会为攻击者提供一个提权的途径,应该把它们都删掉。
5、确认除了root外,没有UID为0的账户
检查方法:awk -F: ‘($3 == 0) { print $1 }’ /etc/passwd
任何UID为0的账户都拥有系统的超级用户权限,唯一的超级用户应该是root,而且还应该通过非特权账户su来获得权限。
6、用户主目录应为750权限或者更多的限制
用户主目录如果有任何人可写的目录,可以导致别人窃取、修改数据,或者获得其他用户的权限。对其他组成员,取消读、执行权限。不过在全局对用户主目录的权限进行修改,可能会造成服务中断。
7、删除User.netrc文件
find / -name .netrc
.netrc是ftp命令的初始化文件,能够给Ftp带来一定的方便。但文件可能包含未加密的密码。在上出他们之前,要考虑.netrc文件的作用,因为可能会影响应用。但是一个良好设计的应用,不应该使用.netrc。
8、设置默认的用户umask值
将umask设置为077,这样由用户创建的文件和目录不会被系统上任何其他人可读。如果需要改变权限可通过chmod命令。可将uamsk命令插入到shell配置文件中来实现,例如.profile, .cshrc, etc.等。027可让同组人员可读,而022的umask值可让系统上每个用户都可读。但是,过于严格的umask会导致软件的安装问题,比如umask设置为700,那么他的应用程序或者守护进程就无法读取文件。所以一般umask的设置不能过于严格,或者在文件安装之后再控制umask。
9、关闭核心转储
这个问题需要问一下你的软件开发商们,他们是否需要调试程序,或者需要看到debug的信息?如果答案是否定的,则可以关闭。核心转储会大量消耗磁盘空间,并且核心转储会包含敏感数据。开发人员需要用这个功能来帮助调试。/etc/security下的limits.con文件是用来控制核心转储的开关。
10、限制root账户su
su命令允许你成为系统上的其他用户,常常被用来作为root执行命令。如果不希望某些用户可以su到root,在/etc/pam.d/su下加入:
auth required pam_wheel.so
这行命令的意思是,只允许wheel组的用户,可以su为root。其他用户在su root的时候,会收到一条消息,说该密码是不正确的。通过限制使用root账户,即使用户知道root密码,也无法成为root用户,除非它能够物理上控制这个服务器,或者他被添加到wheel组。
这样就增加了一个安全保护层,防止未经授权的访问。
九、杀毒
在有些系统上,比如邮件服务器、文件服务器,主要是给windows用户使用的,应该有杀毒软件来保护。linux平台下的杀毒软件有:
Sophos http://www.sophos.com/ 商业软件
NAI Virus Scan 商业软件
McAfee http://www.mcafee.com/ 商业软件
ClamAV http://www.clamav.net/ 开源软件
f-prot Antivirus 商业软件
f-prot Antivirus http://www.f-prot.com 商业软件
Trend Micro 商业软件
Computer Associates InoculateIT http://www.cai.com/ 商业软件
十、其他
1、对于危险文件创建符号链接
/root/.rhosts, /root/.shosts, /etc/hosts.equiv等文件的访问控制很薄弱,我们在第七章里已经讨论过了,攻击者会经常针对这些漏洞进行攻击,把他们链接到/dev/null,意味着任何数据都会被简单的抛弃。
可以使用这个脚本:
for FILE in /root/.rhosts /root/.shosts /etc/hosts.equiv
/etc/shosts.equiv; do
rm -f $FILE
ln -s /dev/null $FILE
done
2、打开TCP SYN Cookie的保护
SYN攻击是一种拒绝服务攻击,目的在于消耗系统资源。这个攻击是由于TCP连接握手协议的漏洞,对方发送SYN信息,然后不再回应。这样的攻击就使得系统与数百或者上千的连接保持半开状态。是一个非常简单的攻击方法。
3、LILO/GRUB安全
给LILO和GRUB加上一个i的属性,这样他既不能删除也不能修改,可以有效地防止配置文件发生任何变化(不管是意外或者其他原因)。如果想要修改,必须用chattr -i命令。
chattr +i /etc/lilo.conf
chattr +i /boot/grub/menu.lst
4、配置sudo
sudo的是一个文件包,它允许管理员授权给用户做一些特权,这些特权超出了用户的权限,比如重启web服务。我们举个例子,因为你的web服务有bug或者不断的出现故障,那你可能需要不断地修改web的配置文件来让找出问题原因。这时候如果你要用su – root的话就会非常繁琐,因为你只是在改完配置文件之后,重启一下web服务而已。这时候sudo就派上用场了,它允许管理员授权给该用户权利来重启web服务。sudo安装之后,使用visudo来配置而不是vi配置文件,因为visudo有错误检查功能。
5、删除所有的编译器和汇编程序
在安全上,C编译器会构成对系统可信的威胁。编译器应该安装在开发系统的机器上,而不是一个生产应用系统上。这里只是提醒注意检查。检查这些:gcc、gcc3、gcc3-c++、 gcc3-g77、gcc3-java、gcc3-objc、gcc-c++、gcc-chill、 gcc-g77、gcc-java、gcc-objc、bin86、dev86、nasm。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
SUSE安全大揭秘之“十诫”(中)
SUSE和其他Linux一样,把网络参数的修改都放在了/proc/sys/net/ipv4下,这里所有文件名中包含rate和max的变量都可以防止拒绝服务攻击。
-
SUSE安全大揭秘之“十诫”(上)
SUSE由于其出色的性能和对安全较好的控制,吸引了很多企业级用户,目前在国内开始有大量的关键应用。但这并不代表SUSE在使用中就是安全的……
-
2010年安全主题展望
2000年的第一个十年在经济动荡中落幕了,2010年的安全走势将会如何发展?以下对这个十年初始阶段将会出现的安全主题的展望……
-
有跟安全和虚拟化都相关的认证吗?
有读者来信称,他正在从事用Hyper-v进行虚拟化方面的工作,但还是喜欢安全,问我们有没有跟安全和虚拟化都有关的认证。TT安全专家对这一问题的解答是……