扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
其中count和log指令与其他指令不同,其他指令都是对数据包进行处理的指令,因此每个数据包只要匹配这个指令,就立即将数据包或转发,或丢弃,不再进行其他处理,而count和log只是记录指令,只是将记录下这个数据包,而数据包本身还将继续受到其他过滤规则的处理。
过滤规则的第二部分是规定数据包的协议类型,指定规则是用于处理哪种数据包的,FreeBSD可以处理TCP,UCP,ICMP 类型的数据,以及在/etc/protocols文件中定义的其他数据包的类型,上例中使用all ,匹配所有类型的数据包。对于TCP或UDP,还可以在后面定义地址时指定应用的端口号(可以使用数字或/etc/services 中定义端口名字),进一步增加过滤能力。
过滤规则的第三部分是规定过滤规则适用的地址范围,这可以通过指定源和目的计算机的IP地址范围或数据包通过的网络界面来进行指定。
# 用from规定数据包的来源地址,可以是主机地址或网络;
# 用to规定数据包的目的地址,可以是主机地址或网络;
# 用in或out规定数据包是流向本机,还是向外发送的;
# 用via、recv、xmit规定数据包经过、接收、发送的网络介面,rece可以是接收本地发送的数据包,而xmit一定是向外发送,因此应该和out选项合用;例如:屏蔽任何来自192.168.1.5的数据的指令为:
# ipfw add deny all from 192.168.1.5
而许可来自192.168.1.0网络上的远程登录的指令为:
# ipfw add allow tcp from 192.168.1.0/24 telnet
应用过滤规则的顺序是按照过滤规则的序号,从小到大进行匹配,一旦一个数据包匹配一个过滤规则,就立即按照该规则转发或丢弃,不再需要继续考虑以下的规则(count和log规则除外)。因此在前面的例子中,192.168.1.5 就不能使用telnet连接,因为首先碰到的是不允许的规则,如果两个命令次序相反,则它就能够进行telnet连接。
最后一条过滤规则,第65535条规则,缺省被设为”deny all from any to any”时,为不允许对任何连接,此时在没有定义其他规则之前,不允许所有的网络连接。但是编译内核时使用IPFIREWALL_DEFAULT_TO_ACCEPT 选项,就能将这条规则改为”allow all from any to any”,允许转发不符合其他规则的所有数据。这两种不同的设置属于两种不同的考虑方式,一种适用于安全性要求较高的系统中,缺省情况不允许外界连接,另一种主要限制部分节点的访问,缺省情况允许任意网络连接,普通系统使用这样的设置更多些。
* rc.firewall
当启动了系统的包过滤能力之后,就需要在系统启动时将这些过滤规则自动载入内核,可以将这些添加过滤规则的指令写入启动文件rc.local或者其他启动文件中。但系统的启动文件中本来就具备载入这些过滤规则的相关启动文件 rc.firewall,这个文件中根据防火墙的基本要求,设置了常用的过滤规则,可以减轻防火墙管理员的设置工作。
为了让系统执行 rc.firewall中的设置,需要在rc.conf中设置参数firewall为YES,以及设置firewall_type的值,这个参数值将传递给rc.firewall,使rc.firewall执行不同的设置。一般情况下可以将firewall_type设置为open,对网络访问不进行限制,而client主要用于计算机不对外提供网络服务,保护本计算机只用于访问外部系统而拒绝所有的访问请求,设置为simple则定义了简单的防火墙规则,可以使用这台计算机保护防火墙内部的计算机,这三个选项比较常用。下面为缺省rc.firewall 中的有关过滤规则的设置。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者