FreeBSD操作系统本身带有二种内置的IP信息包检查机制:ipfw和ipfilter。在创建决定允许哪些信息包进入系统、哪些信息包会被拒之系统门外的规则集方面,二种机制各有自己独特的语法。而在这里我们将使用ipfw配置FreeBSD系统的防火墙。
IPFW本身是FreeBSD内置的,要使用IPFW设置防火墙需要重新编译FreeBSD内核。注意,因为在编译后IPFW默认拒绝所有网络服务,包括对系统本身都会拒绝,所以在配置过程中一定要小心谨慎。
Step 1,对IPFW的一些基本参数进行配置:
#cd /sys/i386/conf
//如果没有这个目录,说明你的系统没有安装Ports服务,要记得装上。
#cp GENERIC ./kernel_IPFW
用 vi 打开kernel_IPFW文件,在文件未尾加入以下个行:
options IPFIREWALL //将包过滤部分代码编译进内核。
options IPFIREWALL_VERBOSE
//启用通过Syslogd记录日志;如果没有指定这个选项,即使你在过滤规则中指定了记录包,也不会真的记录它们。
options IPFIREWALL_VERBOSE_LIMIT=10
//限制通过Syslogd记录的每项包规则的记录条数。如果你受到了大量的攻击,想记录防火墙的活动,但又不想由于Syslog洪水一般的记录将你淹没,那么这个选项将会很有用。当使用了这条规则,当规则链中的某一项达到限制数值时,它所对应的日志将不再记录下来。
options IPFIREWALL_DEFAULT_TO_ACCEPT
//注意,关键地方了,本句把默认的规则动作从“deny”改成“allow”了,作用是在默认状态下IPFW将会接受任何的数据。
输入完成后,保存,并退出。
Step 2,编译系统内核:
#/usr/sbin/config kernel_IPFW
#cd ../compile/kernel_IPFW
//注意,FreeBSD 4.X版本是../../compile/kernel_IPFW,而FreeBSD 5.X版本却是../compile/kernel_IPFW。
#make
#make install //开始编译内核。
Step 3,编辑/etc/rc.conf
加入如下参数:
firewall_enable=“YES“
//激活Firewall防火墙
firewall_script=“/etc/rc.firewall“
//Firewall防火墙的默认脚本
firewall_type=“/etc/ipfw.conf“
//Firewall 自定义脚本
firewall_quiet=“NO“
//启用脚本时是否显示规则信息;假如你不再修改防火墙脚本,那么可以把这里设成“YES“。
firewall_logging_enable“YES“
编辑/etc/syslog.conf 文件,在文件最后加入:
!ipfw
*.* /var/log/ipfw.log
//这行的作用是将IPFW的日志写到/var/log/ipfw.log/文件里。你可以为日志文件指定其它路径。
最后,重启服务器。
重启之后,你就可以用SSH登录你的服务器了,之后你可以在/etc/ipfw.conf中添加过滤规则来防止入侵了。