中国青基会
RSS
热门关键字:  linux    None  Squid  linux moodle安装
当前位置 : Nixsky>BSD>FreeBSD>列表

让 FreeBSD 更安全(Securing FreeBSD)

来源: 作者: 时间:2007-03-10 点击:

标志中的 ss (确认用了两个s,而不是一个) 将禁止来自远程主机的记录并关闭端口,但仍然允许 localhost 进行日志记录。

随后,确认 /etc/rc.conf 中inetd_enable不是YES。如果sockstat输出中有inetd,那么/etc/inetd.conf中肯定有什么项目没有被注释掉,如果不需要的话,那么把那一行前 面加上#,并 killall inetd。

如果需要使用DHCP自动获取地址,那么请保持dhclient (udp 68)打开,否则将不能刷新地址。

如果在 sockstat 输出中发现了其他东西,那么请看看 man rc.conf 里面有没有关于如何关掉这些东西的提示。如果没有的话,那么很可能是某个启动脚本启动了一些服务程 序,请执行:

cd /usr/local/etc/rc.d

来看看你的系统中的启动脚本。绝大多数 packages/ports 会安装一个扩展名为sample的示范脚本用于启动服务,这些脚本并不被执行;也有一些直接安装能够执行的脚本,它 们会在计算机启动的时候加载。禁止某个脚本知性最简单的方法是把它的扩展名改为sample,随后杀掉守护程序,这样sockstat就不会再说什么了。 举例来说,我最近安装了 ethereal 结果发现 snmpd 出现在 sockstat -4 的输出中,这个程序在安全方面名声不佳,因此我把自己升级为root并执行了下面的命令:

cd /usr/local/etc/rc.d
mv snmpd.sh snmpd.sh.sample killall snmpd

你可能会希望把下面的选项加入 /etc/rc.conf :

tcp_drop_synfin="YES"

这个选项可以挫败诸如OS指纹识别的企图(译注:这个选项对最新的nmap无效)。如果你打算开启这个选项,那么,还需要在内核编译配置文件中加入:

options TCP_DROP_SYNFIN

还有两个相关的选项:

icmp_drop_redirect="YES"
icmp_log_redirect="YES"

ICMP 重定向可以被利用完成DoS攻击。这篇 ARP and ICMP redirection games article 介绍了具体的一些情况。

在打开 icmp_log_redirect 选项时请务必小心,因为它会记录每一个ICMP重定向 ,如果你遭到了这样的攻击,那么日志很可能会塞满记录。

建好防火墙之后,请考虑加入下面的选项:

log_in_vain = "YES"

这个选项会记录每一个到关闭端口的连接企图。另一个比较有意思的选项是:

accounting_enable = "YES"

这将打开系统审计功能,如果你不熟悉他们,那么请阅读 man sa 和 man lastcomm 。

最后,下面的选项可能非常有用:

clear_tmp_enable = "YES"

因为它在系统启动时将清空 /tmp ,这永远是一件值得去做的事情。

让我们来研究一下其他能够加强安全的设置。我比较喜欢把默认的口令加密算法改为Blowfish,因为它在提供最佳安全性的前提下,也提供了最快的速度。这里有一份 comparison of algorithms(几种密码学算法的比较)。

当然,如果你对这类东西感兴趣的话,看看 Cryptogram newsletter ,它是 Blowfish 作者写的。

为了启用 Blowfish 散列,编辑 /etc/login.conf 并把 passwd_format 一行改成下面这样:

:passwd_format=blf:\

保存设置,重新创建登录数据库:

cap_mkdb /etc/login.conf

随后需要修改每一个用户的口令,以便让这些口令都使用 Blowfish 散列值。以超级用户的身份执行下面的命令:

passwd username

需要修改所有用户的口令,包括 root 自己。

完成了这些操作之后,重新检查一下确认自己没有遗漏什么:

more /etc/master.passwd

所有用户的口令应该以 $2. 开始

最后,重新配置 adduser 程序,让它在以后使用Blowfish。修改 /etc/auth.conf,找到 crypt_default 一行,改为:

crypt_default = blf

你可能已经注意到,每次登录的时候FreeBSD都会提示你,你在用的那个系统是FreeBSD,以及它的版权信息,包括内核的编译时间,等等。这些信息可能有用,但相当烦人,特 别是当别人可以登录的时候,它可能会暴露一些你不希望暴露的信息。

可以通过编辑 /etc/motd 来阻止计算机说出一些不该说的东西,或者宣扬你的一些想法,包括你喜欢看的 sci-fi 文摘,或者其他一些——总之你想写什么就写什么。

随后,删除版权信息:

touch /etc/COPYRIGHT

随后,还可以修改登录提示,编辑 /etc/gettytab. 找到 default:\ 小节,它以下面的文字开头:

:cb:ce:ck:lc

小心地修改 \r\n\ \r\n\r\nr\n: 之间的文字来适应自己的需要。请仔细检查 \r 和 \n 的数量,并保存修改。例如,我的登录提示是这样的:

I'm a node in cyberspace. Who are you?
login:

可以在其他终端上尝试登录,以确认正确性。

最后,即使你已经修改了motd并从中删除了内核版本信息,默认情况下FreeBSD仍然会在启动之后把这些东西加入 /etc/motd 。因此需要修改 /etc/rc.conf 并加入下面的设置 :

update_motd = "NO"

这个设置需要重新启动才会生效。

此外,限制登录也是非常重要的。因为这些变动会改变 login 程序的行为,因此需要非常谨慎。比较好的习惯是保持一个以root身份登录的终端,用其他终端尝试。这样如果 由于某种原因造成问题,你仍然可以改正。

包括你自己在内的任何人都不应该直接以root身份登录。修改 /etc/ttys。你将注意到 ttyv0 到 ttyv8的一系列设置。把后面的 secure 改为 insecure。注意,这个文件肯定 是你不希望有任何错误的一个文件,因此请仔细地进行测试。如果设置正确,root登录将收到 "Login incorrect" 。

我个人倾向于使用所有的9个终端。如果你不打算这样,请把对应的 "on" 改为 "off" ,当然,只是一部分 ttys 。切记保持至少1个 "on," 否则你会无法登录,这将导致系统 无法使用。ttyv8 默认情况下是 "off" ,这意味着你需要手动打开X,如果希望自动启动,那么把它改为"on."。

最后一个我想说的限制是阻止从其他地方登录,这是通过编辑 /etc/login.access 实现的。

你可能希望禁止一切远程登录(这意味着你必须物理地坐在机器前面),删除下面这一行前面的#号:

#-:wheel:ALL EXCEPT LOCAL .win.tue.nl

把 .win.tue.nl 去掉,于是它看起来将像这样:

-:wheel:ALL EXCEPT LOCAL

如果你需要从远程登录,那么把.win.tue.nl 替换为相应的IP或域名。如果有多个地址,用空格分开。

如果只有一两个用户的话,那么可以拒绝其他人登录:

-:ALL EXCEPT user1 user2:ttyv0 ttyv1 ttyv2 ttyv3 ttyv4

用具体的用户名替换掉 user1 user2 。如果需要的话,增加相应的tty。

另外,也可以把用户组方在这里。首先,编辑 /etc/group 并增加下面的行:

mygroup:*:100:genisis,dlavigne6,biko

当增加组时,需要保证GID的唯一性。

随后,修改 /etc/login.access :

-:ALL EXCEPT mygroup:ttyv0 ttyv1 ttyv2 ttyv3 ttyv4 ttyv5

测试它非常重要,一定要留一个终端。测试每一个终端上的登录,确认其效果。

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
热点关注
相关文章