FreeBSD中三个常用的防火墙之一ipfw

IPFW本身是FreeBSD内置的,IPFW默认拒绝所有网络服务,包括对系统本身都会拒绝,所以在配置过程中一定要小心谨慎。

我们会将firewall的设定写在/etc/rc.firewall中或者写入任何一个文件中,并在/etc/rc.conf中使用firewall_script="/etc/ipfw.rules"来指定要读取的规则文件。每一条设定都是以先入为主(firstmatch wins)的方式来呈现,也就是先符合的规则(rules)为优先。所有进出的封包都会被这些规则过滤,因此我们会尽量减少规则的数量,以加速处理的速度。


在KERNEL中,关于防火墙的设定有下列几条:

不知道怎么编译内核的请参考我的另一篇博文:https://blog.csdn.net/icquu/article/details/103547394
# 防火墙
options IPFIREWALL

# 支援NAT
options IPDIVERT

# 下面这一行是预设允许所有封包通过,如果没有这一行,就必须在/etc/rc.firewall中设定封包的规则。这条规则内定编号是65535,也就是所有规则的最后一条。如果没有加这一条规则,内定就是拒绝所有封包,只允许规则中允许的封包通过。

options IPFIREWALL_DEFAULT_TO_ACCEPT

# 这一行是让你可以在ipfw中设定要记录哪些封包,如果没有这一行,就算设定了要留下记录也不会有作用。

options IPFIREWALL_VERBOSE

# 这一行是限制每一条规则所要记录的封包数量,因为同样的规则可能有许多记录,加上这一条可以使同样的记录重复数减少,以避免记录文件爆增。

options IPFIREWALL_VERBOSE_LIMIT=10

# 下面这一行是用来支援封包转向,当你要使用fwd动作时必须要有这一项设定。

options IPFIREWALL_FORWARD

# 如果要使用pipe来限制频宽,必须加入下列选项以支持dummynet。

options DUMMYNET


我的/etc/ipfw.conf规则:

ipfw -q -f flush
ipfw -q add 1 check-state
ipfw -q add 10 allow ip from me to any keep-state
ipfw -q add 20 deny ip from any to any frag
ipfw -q add 30 deny tcp from any to any established
ipfw -q add 40 allow tcp from 192.168.184.0/24 to me 22 in via em0 setup limit src-port 2
ipfw -q add 50 allow tcp from 192.168.184.0/24 to me 3306 in via em0 setup keep-state
ipfw -q add 65535 deny ip from any to any

系统配置文件的设置:

编辑/etc/rc.conf
加入如下参数:

    firewall_enable=“YES“
    //激活Firewall防火墙
    firewall_script=“/etc/ipfw.conf“
    //Firewall防火墙的默认脚本
    firewall_type=“open“
    //Firewall 自定义脚本
    firewall_quiet=“NO“
    //启用脚本时是否显示规则信息;假如你不再修改防火墙脚本,那么可以把这里设成“YES“。
    firewall_logging_enable=“YES“

编辑/etc/syslog.conf 文件,在文件最后加入:

   !ipfw
    *.* /var/log/ipfw.log
    //这行的作用是将IPFW的日志写到/var/log/ipfw.log/文件里。你可以为日志文件指定其它路径。

 

你可能感兴趣的:(玩味数据)