第十二章 防火墙IPFW

(一)介绍说明:

IPFIREWALL (IPFW) 是一个由 FreeBSD 发起的防火墙应用软件, 它由 FreeBSD 的志愿者成员编写和维护。

在FreeBSD 12中,ipfw已经默认编译进内核了,它默认会有一条规则,规则号为65536,是不可以删除的,这条规则会把所有流量都切断, 所以还没配置好之前,千万不要随意启动ipfw,否则就会面临无法连上远程FreeBSD的问题。

(二)配置ipfw:

1、执行以下命令:

# sysrc firewall_enable="YES"  # 允许防火墙开机自启
# sysrc firewall_type="open"  # 让系统把流量通过,这样就可以使用防火墙
# sysrc firewall_script="/etc/ipfw.rules"  # 制定ipfw规则的路径,我们待会儿在这里编辑规则
# sysrc firewall_logging="YES"  # 这样ipfw就可以打日志
# sysrc firewall_logif="YES"  # 把日志打到 `ipfw0` 这个设备里

2、编辑 /etc/ipfw.rules文件:

root@svros:~ # vi /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 for ssh
$IPF 110 allow tcp from any to any 22 out
$IPF 120 allow tcp from any to any 22 in

# open port for samba
$IPF 130 allow tcp from any to any 139 out
$IPF 140 allow tcp from any to any 139 in
$IPF 150 allow tcp from any to any 445 out
$IPF 160 allow tcp from any to any 445 in
$IPF 170 allow udp from any to any 137 out
$IPF 180 allow udp from any to any 137 in
$IPF 190 allow udp from any to any 138 out
$IPF 200 allow udp from any to any 138 in



# deny and log everything 
$IPF 500 deny log all from any to any

额外说明: samba开放tcp/139,445端口,udp/137,138端口

3、启动ipfw:

4、查看ipfw状态:

5、查看ipfw规则条目

参考资料:

https://forums.freebsd.org/threads/enabled-ssh-in-ipfw-problem.52638/arrow-up-right

https://docs.freebsd.org/zh_CN/books/handbook/firewalls-ipfw.htmlarrow-up-right

最后更新于