在Linux安全领域,最近加入了不少极具吸引力的新成员,比如SELinux、AppArmor以及各种形式的虚拟化技术。
【IT专家网独家】在Linux安全领域,最近加入了不少极具吸引力的新成员,比如SELinux、AppArmor以及各种形式的虚拟化技术。(尽管已经发现虚拟机就像chroot jail一样并非难以攻破,所以不要指望靠它获得强壮的安全性。)
但与此同时,也不要忽略了可靠而有用的老前辈Bastille Linux。Bastille Linux既是用于增强Linux系统安全性的一系列Perl脚本,又是一种学习Linux安全知识的工具。我的推荐做法是,通过运行它来采取基本的安全措施,从而为系统安全打下基础——新出现的技术固然不错,但基础性的保护仍是重要和有价值的。
最好在一个刚装好的、尚未与不可信赖的网络进行连接的系统上运行Bastille。你可以把它用在现有的系统上,但为了确保没在徒劳地保护一个已经漏洞百出的系统,尽量在一个刚装好的系统上运行它。
Bastille的名字变更
Bastille已经正式更名为Bastille Unix,因为它也支持Mac OS X和HP-UX。由于http://www.bastille-linux.org这个域名已经戏剧性地被其他人控制了,所以Bastille的官方网址是http://www.bastille-unix.org。对此感兴趣的人可以在这个链接看到围绕域名发生的整个故事。请记得通过http://www.bastille-unix.org来访问官方网站,而不是其他网址。
支持的系统
Bastille并不是在每一种Linux发行版上都能运行。到目前为止,它支持Red Hat及其派生系统(CentOS、Pie Box等)、Fedora、SUSE、Debian、Gentoo和Mandriva,以及HP-UX和Mac OS X。它能在Kubuntu上运行,也许能在Sabayon(Gentoo)等其它派生系统上运行,但我还没有一一试过。
评估模式
Bastille推出了一种新的评估和报告工具bastille –assess,但这个工具只能在Red Had及其派生系统和SUSE上运行。如果你在不被支持的系统上运行它,它会告诉你一个有用的出错提示,并给出一个所支持平台的列表。
确保你已经安装了perl-Tk软件包以及用于Ncurses界面的perl-Curses软件包。然后从发行站点获取并安装Bastille RPM,安装命令是:
以下是引用片段:
# rpm -ivh Bastille-3.0.9-1.0.noarch.rpm
然后在评估模式下运行它:
以下是引用片段:
# bastille --assess
这将对你的系统进行一次只读扫描,最后生成一份类似这样的很不错的报告。这么做能给你一份系统快照,而不需要让整个Bastille首先运行一次。制作这种前后评估报告(before and after assessment reports)是一个很有价值的练习,能帮助你进行系统微调。你可以借此更进一步,为不同的选项指定不同的权重;默认的权重未必能反映你的系统策略或优先级,你可以调整它们来适应自己的系统。
Debian用户可以通过aptitude install bastille来安装Bastille,Gentoo用户可以通过portage系统。
运行Bastille
我不准备讨论每一个选项,只说明一些重要的地方。对大多数选项回答yes还是no,取决于你想让系统达到何等的安全程度,而Bastille在运行过程中也会给你许多帮助信息。
Bastille既能在Ncurses界面中运行,也能在使用Perl-Tk的X窗口中运行。对我来说,Perl-Tk界面的可读性不太好并且有些笨拙,所以我使用Ncurses。可以通过下面的命令进入Perl-Tk界面:
以下是引用片段:
# bastille -x
在Ncurses中使用下面的命令来运行:
以下是引用片段:
# bastille -c
bastille –r命令能还原所有的修改,所以可以放心大胆地去尝试做修改。但如果你确实改变了主意,想恢复到原来的设置,就应该马上去做,而不要等到几个月后你已经忘掉了对系统做了哪些修改。bastille –log命令能让你进行一次演练,而不会对系统造成任何改变。
在Linux安全领域,最近加入了不少极具吸引力的新成员,比如SELinux、AppArmor以及各种形式的虚拟化技术。
给你自己30分钟来学着运行Bastille吧。不用担心:我们的想法就是边学边做。
刚开始的一系列提示会问你是否想对某些特定命令禁用SUID root bit(该选项能让普通用户运行需要root权限的命令)。乍一看你可能会想“我当然不需要SUID root命令!这是一个多么明显的安全漏洞啊!”但不要急着说yes。比如说,你真的需要进行root登录才能使用mount或ping命令?如果这样,未经授权的用户就无法安装像CD这种可卸载媒介;而ping其实也不会带来什么大的危害。如果你回答“Yes”但随后改变了主意,可以使用下面的chmod命令来重置SUID bit:
以下是引用片段:
# chmod u+s ping
无论如何你都应该定期检查启用了SUID的文件,只需要注意一下系统受到的潜在破坏或忘掉了的尝试性修改。可以使用下面的命令查看这些文件的列表:
以下是引用片段:
# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -l {} \;
下面是你会遇到的一些提示问题:
Bastille是否应该禁用基于IP进行用户认证的明文r-协议?(Should Bastille disable clear-text r-protocols that use IP-based authentication?)
回答Yes。这个选项针对rsh、rlogin、rcp和rdist,它们在所有的数据传输中都使用明文。你无论如何都不应该使用它们,因为它们早就被ssh和scp替代了。
你是否想用密码保护单用户模式?(Would you like to password protect single-user mode?)
回答Yes。如果没有密码,任何人就都能通过重启进入单用户模式来获得root权限。
Bastille是否应该确保telnet服务不在本系统上运行?(Should Bastille ensure the telnet service does not run on this system?)
不仅回答Yes,而且一定得是Yes,除非你有十足的把握确信要运行telnet服务。启用telnet服务相当不安全。选择Yes并不会禁用telnet客户端程序,这对排除网络故障还是很有用的。
禁用gcc编译器不是太重要的一项安全措施。如果你需要用到它,就不要禁用。如果你不需要它,就禁用。
你是否要限制系统资源的使用?(Would you like to put limits on system resource usage?)
回答Yes是相当安全的。内核转储(Core dump)对最终用户并不是特别有用,文件可能变得非常大,因此设置对用户进程的限制通常是一个好主意。可以使用下面的命令来算一下总共有多少个用户进程,就会知道Bastille默认150的限制是否够用:
以下是引用片段:
$ ps --no-headers -U [username] | wc -l
你可以在/etc/security/limits.conf中修改这些限制。
你是否想添加额外的日志?(Would you like to add additional logging?)
回答Yes,你应该这么做。
尽管防火墙脚本相当不错,但它没有提供足够的信息来告诉你对每一个端口应该怎么做。看一下这个危险的TCP/IP端口列表。你需要自己确定是否要在防火墙中为某些服务打开相应端口,例如为SSH、DNS或Web服务器等等。Bastille可以接受端口号或者服务名称,依据是/etc/services文件。这个网页列出了ICMP类型,在你想监视它们或想了解它们是什么的时候可以参考。你不能阻止所有的ICMP消息,否则就可能搞乱基本的网络功能;Bastille的默认设置就挺不错。
ICMP攻击详解这个链接是一个很好的ICMP隐患指南。
到最后,你既可以激活所做的更改,又能返回进行修改。Bastille会告诉你如何开始、停止和测试你的防火墙脚本。可以在/etc/Bastille目录下看到新的脚本,并在/var/log/Bastille目录下看到所有活动的一份记录。
在不同的服务器和台式电脑上照这样多做几次,你就能很好地学会基本的Linux系统安全强化知识。
没有评论:
发表评论