# 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、te.net、ypbind、yppasswd、ypserv,既然是Web服务器,都可以取消或卸载掉。
同理,如果是作为FTP服务器运行,只需FTP进程和必要的程序。
用安全系数高的服务替代正在运行的服务进程
对于一些必要的服务器,如前所说的Web服务器,理论上只需要Apache的进程就可以工作了。但是如果管理员需要远程控制放在运营中心的主机呢?或者用户需要通过FTP上传更新资料呢?Telnet、wu-ftp这些服务的安全性太低,这时,就需要启用安全级别高的服务来替代这些服务程序。以下为几个需要替代的进程:
1.用OpenSSH替代Telnet
推荐使用开放软件OpenSSH(Secure Shell),这是一个安全的登录系统,且不受加密方法的出口限制,适用于替代Telnet、rlogin、rsh、rcp、rdist。另外, OpenSSH也可以用来在两台计算机间建立一条加密信道供其它不安全软件使用。OpenSSH支持多种算法,包括BlowFish、Triple DES、IDEA、RSA。目前支持SSH的客户端软件不少,推荐使用Putty和Filezilla。关于服务器和软件的安装使用,请参见相关文章,在此不再详述。
.用Vsftpd替代wu-ftpd、tftpd(基本的FTP服务)、ncftpd(匿名服务)
如果想要一个优秀的FTP软件,建议使用Vsftpd。Vsftpd(Very Secure)是一个非常值得信赖的FTP软件。除了与生俱来的高安全性外,在ASCⅡ传输模式下的速度是wu-ftpd的两倍,在千兆以太网的下载速度可达86Mb/s;在稳定性方面,Vsftpd可以在单机(非集群)上支持4000~15000个以上的并发用户同时连接。除此以外,还可以建立虚拟 FTP服务器,支持非系统用户的登录下载,同时也可以给不同的用户分配不同的权限,保证服务的安全最大化。现在世界上很多著名的公司都在使用 Vsftpd,如Red Hat、GNU、GNOME、SuSe、KDE、OpenBSD等。具体安装和配置请见参考资料。
3.用Qmail替代Sendmail
Sendmail 将来仍然是主要的SMTP服务器,网络上有关Sendmail服务器的配置资料随处可见。但事实上由于Sendmail代码的复杂性,使得很多人对其配置一知半解。多数情况下,新手们往往只要能够让Sendmail启动起来、能收发邮件就觉得万事大吉了。这样的配置其实漏洞太多,难以保证安全性。所以, Qmail是个更好的选择。当然,要想真正建立一个功能强大、运行稳定的邮件服务器,掌握其灵活的配置,认真阅读How-to手册和FAQ是很有必要的。
使用tcpwrappers控制文件
在没有设置防火墙之前,可以通过一种简单而可靠的机制——tcpwrappers来加强网络访问控制。tcpwrappers从两个文件中读取网络访问控制规则:
/etc/hosts.allow 指定授权主机
/etc/hosts.deny 指定非授权主机
配置文件的编写规则非常简单,一般是:
services_list : client_list [ : shell_command ]
1. 如果client及services满足hosts.allow里面的条目,那么访问将被允许。
2. 如果client及services满足hosts.deny里面的条目,那么访问将被禁止。
3. 如果以上两条都不满足,访问将被允许。
4. 如果访问控制文件不存在,将被当作空规则文件处理。所以可以通过删除访问控制文件来关闭访问限制。
其中services_list可以列出一个或几个服务进程名,也可以使用通配符;client_list可以是IP地址、主机名或者网络号,也可以使用通配符。
services_list有两个特殊用法的符号:ALL和EXCEPT。ALL表示所有的进程,而EXCEPT表示排除某个进程。比如,ALL EXCEPT in.fingerd表示除了in.fingerd外所有的进程。
client_list可以使用如下通配符:
1. “.”号在字符串前匹配所有后面部分和所提供字符串一样的主机名。比如:.xssz.net可以匹配www.xssz.net或mail.xssz.net。
2. “.”号在字符串后匹配以所提供字符串开头的地址,比如,10.44.可以匹配所有10.44.xxx.xxx的地址。
3. 可以使用n.n.n.n/m.m.m.m的格式来表示net/mask,比如,10.44.72.0/255.255.254.0匹配从10.44.72.0到10.44.73.255的地址。
4. 以“/”号开头的字符串将被看作一个文件处理,它匹配所有在这个文件中列出的主机名或者地址。
5. “@”开头的串将被当作一个NIS组的名字。
6. ALL表示所有的主机,LOCAL匹配所有机器名中不带“.”号的主机,EXCEPT表示排除某些主机。
比如,hosts.allow中有一行,ALL: .edu.cn EXCEPT example.edu.cn表示允许除了主机名叫example.edu.cn 以外的所有.edu.cn域内的机器访问所有的服务。而在hosts.deny中,ALL EXCEPT in.fingerd:192.168.0.0/255.255.255.0则表示禁止192.168.0.1到192.168.0.254的机器访问除了in.fingerd以外的服务。
防火墙的选用和配置
前面介绍了tcpwrappers的详细应用,但是对管理员而言,只有经过Internet的考验才能真正得到直接有效的磨炼和提高。如何分辨和抵挡 Internet上形形色色的信息呢?仅仅 tcpwrappers是不够的,关键是防火墙的选用和配置。配置高效的防火墙是管理员要掌握的十分重要而且非常有效的必修课。在此,防火墙的功能和类型就不介绍了。最主要的是防火墙的构建要量身定制,应从企业自身状况和需求特点来考虑所需要的防火墙解决方案。不同规模、不同类型的企业,其网络保护的要求也存在明显的差异。防火墙是个重要的话题,在这里限于篇幅不可能详细分析每一种配置。有兴趣的朋友可以详见参考资料http://linux- firewall-tools.com/linux/faq/index3.html,这是个很不错的主题。