作者:丁玮
NFS服务
网络文件系统是构成Unix世界文件共享访问的基础。如果希望禁止用户任意的共享目录,可以增加NFS限制,比如锁定/etc/exports文件,并事先定义共享的目录。如果不希望用户共享,只限制用户访问,就需要修改NFS的启动脚本。编辑/etc/init.d/nfs文件,找到守护进程一行并注释掉。
/etc/init.d/nfs
# daemon rpc.nfsd $RPCNFSDCOUNT
系统中的很多配置文件和命令是很敏感的,修改权限和增加只读属性可以在一定程度上避免安全问题。
chmod 700 /bin/rpm
#NFS共享目录配置文件
chmod 600 /etc/exports
#主机访问控制文件
chmod 600 /etc/hosts.*
chmod R 751 /var/log
chmod 644 /var/log/messages
#系统日志配置文件
chmod 640 /etc/syslog.conf
chmod 660 /var/log/wtmp
chmod 640 /var/log/lastlog
chmod 600 /etc/ftpusers
#用户口令文件
chmod 644 /etc/passwd
chmod 600 /etc/shadow
#校验模块配置文件目录
chmod R 750 /etc/pam.d
chmod 600 /etc/lilo.conf
#终端配置文件
chmod 600 /etc/securetty
chmod 400 /etc/shutdown.allow
#系统访问安全配置文件
chmod 700 /etc/security
#网络系统配置文件
chmod R 751 /etc/sysconfig
#超级守护进程配置文件
chmod 600 /etc/xinetd.conf
chmod 600 /etc/inetd.conf
chmod R 750 /etc/rc.d/init.d/
chmod 750 /etc/rc.d/init.d/*
#自动运行程序控制文件
chmod 600 /etc/crontab
chmod 400 /etc/cron.*
#SSH配置文件
chmod 750 /etc/ssh
#内核控制配置文件
chmod 400 /etc/sysctl.confg
chattr +i /etc/services
chattr +i /etc/group
chattr +i /etc/gshadow
chattr +i /etc/hosts.*
chattr +i /etc/xinetd.conf
chattr +i /etc/exports
chattr +i /bin/login
chattr +a /var/log/message
关注日志
首先要使用日志服务器。将客户机的日志信息保存副本是好主意,创建一台服务器专门存放日志文件,可以通过检查日志来发现问题。修改/etc/sysconfig/syslog文件加入接受远程日志记录。
/etc/sysconfig/syslog
SYSLOGD_OPTIONS="-m r 0"
还应该设定日志远程保存。修改/etc/syslog.conf文件加入日志服务器的设置,syslog将保存副本在日志服务器上。
/etc/syslog.conf
*.* @log_server_IP
可以使用彩色日志过滤器。彩色日志loco过滤器,目前版本是0.32。使用loco /var/log/messages | more可以显示出彩色的日志,明显标记出root的位置和日志中异常的命令。这样可以减少分析日志时人为遗漏。
还要进行日志的定期检查。Red Hat Linux中提供了logwatch工具,定期自动检查日志并发送邮件到管理员信箱。需要修改/etc/log.d/conf/ logwatch.conf文件,在MailTo = root参数后增加管理员的邮件地址。Logwatch会定期检查日志,过滤有关使用root、sudo、telnet、ftp登录等信息,协助管理员分析日常安全。
检查本机具有suid和sgid的文件。具有suid和sgid的文件具有相当的危险性。简单说就是普通用户使用这些命令时可以具有超级用户的权限,用户就直接进入超级用户环境。有很多命令是需要suid和sgid的。在系统安装时就把这些命令找到,并作为标准以比较出现问题的机器就可以发现安全问题。除了suid和sgid外,如果发现有些文件不属于任何用户,也可能是安全出现漏洞。下面的命令可以将以上的文件列表保存到文件中,备份这些文件,以后用来方便比较。
find / -xdev -type f -perm +6000 2> /dev/null > /root/backup/audit/suid.log
find / -xdev -nouser -o -nogroup > /dev/null > /root/backup/audit/nouser.log
find / -xdev -type f -perm -2 > /dev/null > /root/backup/audit/other.log
使用SSH
当管理员远程管理客户机时,除了Webmin方便通过浏览器管理外,命令行的使用更加快捷。而telnet是明文传输的,为了防止被嗅探器捕捉敏感信息,使用SSH是最好的选择。SSH会在第一次连接时在通讯的两台机器之间生成密钥,随后的通讯是通过加密方式传输的,嗅探器将无法有效地分析信息。如果是Linux直接使用SSH命令将可以连接到对方主机,如果是从Windows连接,则需要软件的支持,推荐使用PuTTY,可以从http://www.chiark.greenend.org.uk/~sgtatham/putty/下载,目前的版本是0.52。SSH使用的是TCP端口22。注意不要使用任何r进程,比如rlogin、rcp等。
使用更安全的文件传输
除非需要FTP传输大量文件,不然可以使用SCP来代替。同SSH一样,SCP是通过密钥来创建加密通道的。在Windows上的WinSCP可以从http://winscp.vse.cz/下载,目前版本是2.0.0 (Build89)。但是如果需要传输大量的文件,SCP会导致处理器在处理加密上耗费过多的资源,可以使用proftp来代替。Red Hat Linux缺省使用的Wuftp服务,从http://www.proftpd.org/下载,目前的版本是1.2.4。
使用系统快照
系统快照是利用对系统文件编排数据库来定期发现系统的变化。推荐使用tripwire,目前的版本是2.3.1-10。需要注意的是,tripwire的配置文件很全面,但是不一定适合你的系统,因此需要定制twpol.txt文件。定制的原则是首先安装完整的系统,随后安装tripwire,使用缺省的配置文件制作系统快照。根据提示的错误信息,用#屏蔽掉多出来的配置信息,随后重新生成数据库。
rpm ivh tripwire-2.3.1-10.i386.rpm
#修改twpol.txt文件,屏蔽掉系统中不存在的文件,随后开始安装
/etc/tripwire/twinstall.sh
#安装会要求输入生成密钥的密码和更新数据库的密码
#注意复制密钥的操作,不然会在初始化中提示文件不存在的错误
cp /etc/tripwire/$HOSTNAME-local.key /etc/tripwire/localhost-local.key
#初始化tripwire,生成数据库,其中会要求输入密钥的密码
tripwire --init
#通过系统快照判断系统的变化,并且发送邮件到指定用户
tripwire --check -M
使用基于主机的入侵检测
IDS可以帮助管理员发现突破安全的企图。在企业中基于主机的入侵防御比基于网络的更重要,毕竟企业的网络是在防火墙后。建议使用snare,目前在Red Hat Linux 7.2上支持的版本是0.9-1,可以到http://www.intersectalliance.com下载。其中snare-core是核心的守护进程。snare是图形界面的显示程序。安装完毕后会产生名为audit的守护进程。snare关心的是以root操作或修改文件权限,以及访问敏感数据的日志。因此可以通过配置文件来定义适合自己系统的入侵检测日志系统。缺省的安装已经提供了完整的配置,可以满足一般的需求。
其它安全工具
使用Bastille工具
Bastille是一组安全设置脚本的集合,前面的很多设置可以使用Bastille来自动完成。首次安装完Bastille后,BastilleBackEnd可以使用以前设置好的配置文件。配置/etc/Bastille/config文件就可以完成安全脚本的定制。Bastille的一般配置中没包括防火墙等参数。如果需要,可以在安装完后使用InteractiveBastille.pl交互安装。Bastille将会启动向导窗口,只要选择是或者否就可以生成适合自己系统的配置文件。Bastille的配置方案略。
使用木马检查工具
chkrootkit就是通过校验系统中重要的命令,来判断是否被替换,因为是根据已出现的木马与后门工具编写的,要注意经常更新。
使用自动运行程序
使用crontab可以减少管理员的工作强度。比如加入定期的tripwire校验、chkrootkit校验,并发送结果到管理员的制定信箱。
提醒大家注意:至少应有一台日志服务器,并且使用不同类型的Linux版本或者操作系统;所有的桌面机需在防火墙内,并且禁止使用调制解调器连接互联网;至少有一个入侵检测系统,多个传感器分布在网络中;至少有2名系统管理员互为备份;不要使用root直接登录;不要使用telnet远程登陆;任何的系统更改需要文档化;毕竟一分预防胜于十分的治疗。
以上仅仅是简单的说明了企业中Linux安全的基本设置。如果连基本设置都没有达到,安全问题将会困扰系统管理员。还有很多更复杂的安全设置没有介绍,比如限制网络的交互、限制资源等。因为介绍的是防火墙内的桌面机,所以防火墙、邮件服务器、文件和Web服务器的安全设定也都没加以描述,但是决不是说安全照这样做了,就可以高枕无忧。这些只是入门,还远远不够。很多具体使用情况和更深入的配置欢迎关心Linux安全的管理员交流。
(责任编辑 Sunny)