网络防火墙配置
概述
为了对内部网络提供保护,有必要对通过防火墙的数据包进行检查,例如检查其源地址和目的地址、端口地址、数据包的类型等,根据这些数据来判断这个数据包是否为合法数据包,如果不符合预定义的规则,就不将这个数据包发送到目的计算机中去。由于包过滤技术要求内外通信的数据包必须通过使用这个技术的计算机,才能进行过滤,因而包过滤技术通常用在路由器上。
SylixOS 提供的NPF(Net Packet Filter)工具是一个网络过滤器,该工具提供了以下过滤规则:
- 过滤链路层帧:指定为MAC规则,此规则需要提供目的计算机的硬件地址。
- 过滤 IP 数据报:指定为 IP 规则,此规则需要指定一个想要过滤的 IP 地址范围。
- 过滤传输层数据包:指定为 UDP 或 TCP 规则,此规则将过滤某个 IP 地址范围和 某个端口号范围的数据包。
NPF 工具配置
在 SylixOS 系统中,通过 npfs
命令、 npfruleadd
命令、 npfruledel
命令可以实现一个完整的防火墙功能。
npfs
命令:显示当前所有的过滤规则条目。
[root@sylixos:/root]# help npfs
show net packet filter rule(s).
npfs
[root@sylixos:/root]#
npfruleadd
命令:增加一条网络包过滤规则。
[root@sylixos:/root]# help npfruleadd
add a rule into net packet filter.
eg. npfruleadd en1 mac input deny 11:22:33:44:55:66
npfruleadd en1 ip input allow 192.168.0.5 192.168.0.10
npfruleadd lo0 udp input deny 0.0.0.0 255.255.255.255 433 500
npfruleadd wl2 tcp input deny 192.168.0.1 192.168.0.200 169 169
allow : allowed
deny : not allowed
dof : not allowed only for route forwarding
npfruleadd [netifname] [rule] [input | output] [allow |deny] [args...]
[root@sylixos:/root]#
参数说明如下:
- netifname:需要添加过滤规则的网络接口。
- rule:网络包过滤规则,mac-过滤以太网帧,ip-过滤 IP 数据报,udp-过滤 UDP 数据包,tcp-过滤 TCP 数据包。
- input / output:input-针对输入数据包作过滤规则,output-针对输出数据包作过滤规则。
- allow / deny:allow-允许数据包通过,deny:禁止数据包通过。
npfruledel
命令:删除一条网络包过滤规则。
[root@sylixos:/root]# help npfruledel
delete a rule from net packet filter.
npfruledel [netifname] [input | output] [rule sequence num]
[root@sylixos:/root]#
参数说明如下:
- netifname:需要删除过滤规则的网络接口。
- input / output:input-针对输入数据包作过滤规则,output-针对输出数据包作过滤规则。
- rule sequence num:通过
npfs
命令查询到的 SEQNUM 值。
实际场景
通过防火墙关闭 Telnet 端口
Q:设备 A 使用网络接口 en1,IP 地址是 10.4.120.211,禁止 10.4.0.1 ~ 10.4.0.130 网段的主机通过 Telnet 端口(23)连接到设备 A,如何实现?
A:通过NPF工具增加 Telnet 端口过滤规则。
进入设备 A 的 Shell 命令界面,通过
npfruleadd
命令增加一条 Telnet 端口的过滤规则,IP 禁止范围设置为 10.4.0.1 ~ 10.4.0.130,端口禁止范围设置为 23。[root@sylixos:/root]# npfruleadd en1 tcp input deny 10.4.0.1 10.4.0.130 23 23
通过
npfs
命令查看增添的过滤规则。[root@sylixos:/root]# npfs input >> NETIF ATTACH SEQNUM RULE ALLOW OF MAC IPs IPe PORTs PORTe en1 YES 0 TCP NO N/A 10.4.0.1 10.4.0.130 23 23 output >> NETIF ATTACH SEQNUM RULE ALLOW OF MAC IPs IPe PORTs PORTe drop:9 allow:87669 [root@sylixos:/root]#
通过主机 B(IP 地址:10.4.0.120)使用 Telnet 工具连接设备 A,发现无法连接,通过主机 C(IP 地址:10.4.0.140)使用 Telnet 工具连接设备 A,发现可以正常连接,证明添加的端口过滤规则有效。
删除上文添加的网络包过滤规则,需要提前通过
npfs
命令获取过滤条目的 SEQNUM 值,可得 SEQNUM 值为 0。[root@sylixos:/root]# npfs input >> NETIF ATTACH SEQNUM RULE ALLOW OF MAC IPs IPe PORTs PORTe en1 YES 0 TCP NO N/A 10.4.0.1 10.4.0.130 23 23 output >> NETIF ATTACH SEQNUM RULE ALLOW OF MAC IPs IPe PORTs PORTe drop:9 allow:87669
通过
npfruledel
命令删除上文添加的 Telnet 端口的过滤规则,SEQNUM 值为 0。[root@sylixos:/root]# npfruledel en1 input 0
删除过滤规则完毕后,通过主机 B(IP 地址:10.4.0.120)使用 Telnet 工具连接设备 A,发现可以正常连接了,证明删除端口过滤规则功能有效。