|
步骤四:加固
在给你的新系统打好补丁后,你可能需要额外的步骤来加固它,在你的计划中应该有一个安全目标,参照这些目标确定要做哪些事情,你的目标越多,事情就越多,尽量保持简化,实际上复杂的设置会让系统更不安全,因为它们常常导致配置失效,同时,在你的安装日志中记录这些步骤。
Fedora实例已经准备好展示两个重要的步骤来增强安全性:启用SELinux和安装一个防火墙。在大多数典型的使用桌面的情况下,安装一个杀毒软件就足够了,对于Debian盒子而言,我选择了三个可以在任何服务器上使用的步骤:使用sudo、锁住ssh和使用一个限制性的iptables防火墙,这些项目应该在任何服务器上考虑部署,如果需要,它们也可以在桌面系统上应用。
sudo
sudo对于限制root访问而言是一个伟大的程序,它应该在任何服务器上接受严格的监视,将用户添加到/etc/sudoers文件中,限制它们使用su来执行特殊的命令,访问特殊的目录或访问网络主机,在sudoers文件中的任何用户只要在它运行命令前输入sudo来进入root环境即可执行想执行的程序,这比起将root密码告诉每个人来将更容易,而且更安全了。
ssh
ssh是目前linux系统上标准的远程访问协议,在它的默认配置下,它有一些设置明确地需要你进行锁定,将下面两行添加到/etc/ssh/sshd.config文件中:
PermitRootLogin no X11DisplayForwarding no
第一行阻止root用户通过ssh登陆到服务器,永远都不要用root用户登陆ssh,第二行禁用了X转发(它允许用户快速地从你的服务器启动一个X会话),在本例中,X并没有安装,因此这不是问题,你应该通过chroot技术或使用TCP Wrappers进一步锁定ssh,由于空间限制,我忽略了这些配置步骤。
iptables防火墙
与其长时间讨论如何正确配置一个防火墙,还不如使用我编写的现成脚本,我编写了下面的脚本并配有注释来加固Debian系统,它限制了新发起的ssh、http、ssl连接通信,将本例中的ip地址修改为你服务器的ip地址,想了解更多关于iptables可用选项的细节,请参考帮助文档,当安装你自己的防火墙时,不要忘了只在iptables中开放必须的端口以减小攻击面的目标。
#!/bin/sh
PATH=/usr/sbin:/sbin:/bin:/usr/bin
#FLUSH PREVIOUS TABLE ENTRIES
iptables --flush
#CHANGE DEFAULT POLICIES FROM
#ACCEPT TO DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
#ALLOW LOCAL LOOPBACK TRAFFIC
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#ALLOW ESTABLISHED CONNECTIONS
iptables -A INPUT -m state --state \
ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state \
ESTABLISHED,RELATED -j ACCEPT
#ALLOW DEFINED TRAFFIC
#
#SSH - 22
iptables -A INPUT -d 192.168.1.2 -p tcp \
--dport 22 --sport 1024:65535 -m state \
--state NEW -j ACCEPT
#HTTP - APACHE -80
iptables -A INPUT -d 192.168.1.2 -p tcp \
--dport 80 --sport 1024:65535 -m state \
--state NEW -j ACCEPT
#SSL - 443
iptables -A INPUT -d 192.168.1.2 -p tcp \
--dport 443 --sport 1024:65535 -m state \
--state NEW -j ACCEPT
|
将这些脚本保存到本地,然后拷贝或移动到/etc/network/if-up.d目录,当系统启动网络开启后它将被执行,如果你西藏应用这个配置到一个基于Redhat的系统上,你只需简单地运行上面的脚本并用iptables-save命令来重设规则,可以不用重新启动系统。 尽管你可以手动一步一步执行这些步骤,但有一款工具可以使得做这些事情更容易,他就是Bastille(图7、图8),它通过问题/答案的形式将你的安全设置信息保存到脚本中,然后将其应用到真实的系统上,在互联网上也可以找到许多对于大部分发行版和应用程序都是可用的手工安全检查列表,最好的检查列表就是由互联网安全中心完成的检查标准,这些标准包括了详细的设置和对特定操作系统及流行的应用程序有关的最佳实践描述,它们是Bastille最好的伙伴。
 |
|
图7 Debian中的Bastille |
 |
|
图8在一个有X环境的Fedora下的Bastille |
步骤五:监视/审核
最好一步是一个不断进行的过程,持续监视你的系统将验证实现你的安全目标是否超时了,最有用的工具是从/var/log/messages文件提取系统日志,你可以看到许多与系统和应用程序安全有关的信息,许多应用程序有它自己的日志文件,也请仔细审核它们,如果你有许多系统,你应该使用一个中心日志文件服务器来收集日志,在syslog.conf文件可以很容易地进行配置。
一个新的代替叫做Splunk(图9),它有免费的版本(每天限制大小是500M)和企业版本,最让人高兴的是它安装超级容易,并且你可以通过一个革新的基于web的界面象使用google命令似的搜索日志。
 |
| 图9 Splunk是一个最好且非常有用的开源项目 |
与日志用途一样,它们也不提供一个完整的关于你的安全设置是否工作良好的图形,仅仅经常审核能实现目的,因此我要告诉你如果你的安全措施仍然适当并在运行,我不建议你为每个系统做渗透测试,但是有效性测试你的设置是一个很好的保险措施,创建检查列表或脚本来测试那些维护你系统安全目标的设置是很重要的,代替检查列表,你可以使用—assess开关运行Bastille来得到一个你目前配置的安全报告,你也可以使用CIS检查标准(它依赖于Bastille)作为一个基准检查列表,如果你有能力购买它,你能得到一个顾问服务并用他/她自己的测试校验你的安全,你会更加镇静,特别是你在一家厉害的管理企业工作时。
 |
| 图10 Bastille评估报表给你显示了当前安全配置的详细信息 |
上路
在你的安装中使用这些步骤是第一步,这个简单、有序的战略将给你的系统带来更多的安全保障,但是,每个系统都不一样,确定你的安全目标匹配你的系统需要,安全并不困难,使用简单可重复的步骤,保留最佳实践和常见弱点,在任何可能的地方实行最小权限,经常查看你的日志,你将发现你已经上路了。
上一页 [1] [2] [3]
|