FreeBSD使用IPFW设置防火墙
时间:2020-01-09 10:40:42 来源:igfitidea点击:
问题描述:如何使用IPFW配置防火墙,
如何为典型的基于FreeBSD的Apache Web服务器设置规则?
解决方法:Ipfirewall(ipfw)是FreeBSD IP数据包过滤器和流量统计工具。
FreeBSD基本安装中包含IPFW作为单独的运行时可加载模块。
当使用rc.conf语句firewall_enable = YES时,系统将动态加载内核模块。
用于IPFW的FreeBSD编译内核
此步骤是可选的。
除非您要启用NAT功能,否则不需要将IPFW编译到FreeBSD内核中。
但是,某些旧版本可能未编译IPFW。
这是使用IPFW编译内核的快速指南。
确保IPFW支持未编译到内核中:
#ipfw list
如果出现如下错误,则必须现在编译内核的源代码。
ipfw: getsockopt(IP_FW_GET): Protocol not available
另一个选项是打开默认的内核配置文件/usr/src/sys/i386/conf并查找IPFIREWALL选项:
# grep IPFIREWALL /usr/src/sys/i386/conf
使用IPFW构建和安装自定义内核
复制默认内核文件:
# cd /usr/src/sys/i386/conf # cp GENERIC IPFWKERNEL
添加IPFW支持:
# vi IPFWKERNEL
追加以下指令:
options IPFIREWALL # required for IPFW options IPFIREWALL_VERBOSE # optional; logging options IPFIREWALL_VERBOSE_LIMIT=10 # optional; don't get too many log entries options IPDIVERT # needed for natd
保存并关闭文件。
构建内核,执行以下命令:
# cd /usr/src # make buildkernel KERNCONF=IPFWKERNEL
安装新内核:
# make installkernel KERNCONF=IPFWKERNEL
现在重新启动系统:
# reboot
步骤1:启用IPFW
打开/etc/rc.conf文件
# vi /etc/rc.conf
追加以下设置:
firewall_enable="YES" firewall_script="/usr/local/etc/ipfw.rules"
保存并关闭文件..
步骤2编写防火墙规则脚本
您需要将防火墙规则放置在名为/usr/local/etc/ipfw.rule
的脚本中:
# vi /usr/local/etc/ipfw.rules
追加以下代码:
IPF="ipfw -q add" ipfw -q -f flush #loopback $IPF 10 allow all from any to any via lo0 $IPF 20 deny all from any to 127.0.0.0/8 $IPF 30 deny all from 127.0.0.0/8 to any $IPF 40 deny tcp from any to any frag # statefull $IPF 50 check-state $IPF 60 allow tcp from any to any established $IPF 70 allow all from any to any out keep-state $IPF 80 allow icmp from any to any # open port ftp (20,21), ssh (22), mail (25) # http (80), dns (53) etc $IPF 110 allow tcp from any to any 21 in $IPF 120 allow tcp from any to any 21 out $IPF 130 allow tcp from any to any 22 in $IPF 140 allow tcp from any to any 22 out $IPF 150 allow tcp from any to any 25 in $IPF 160 allow tcp from any to any 25 out $IPF 170 allow udp from any to any 53 in $IPF 175 allow tcp from any to any 53 in $IPF 180 allow udp from any to any 53 out $IPF 185 allow tcp from any to any 53 out $IPF 200 allow tcp from any to any 80 in $IPF 210 allow tcp from any to any 80 out # deny and log everything $IPF 500 deny log all from any to any
保存并关闭文件。
步骤3:启动防火墙
您可以重新启动该框,也可以通过在命令行上输入来重新加载这些规则。
# sh /usr/local/etc/ipfw.rules
依次列出所有规则
执行以下命令:
# ipfw list