马上注册成为ROSABC会员,随时发帖回复。
您需要 登录 才可以下载或查看,没有账号?会员注册
x
防火墙规则事例
我先从 input 链表开始,这里是对所有访问路由的数据进行过滤和处理: 从 input 链表的第一条开始执行,这里一共有三条规则:
0 ;;; 接受你信任的 IP 地址访问(src-address=填写信任 IP,默认允许任何地址)chain=input src-address=192.168.100.2 action=accept
1 ;;; 丢弃非法连接
chain=input connection-state=invalid action=drop
2 ;;; 丢弃任何访问数据
chain=input action=drop
下面是 forward 链表
forward 链表,一共有 7 条规则,包括两个跳转到自定义链表 ICMP 和 virus 链表:
0 ;;; 接受已建立连接的数据
chain=forward connection-state=established action=accept
1 ;;; 接受相关数据
chain=forward connection-state=related action=accept
2 ;;; 丢弃非法数据包
chain=forward connection-state=invalid action=drop
3 ;;; 限制每个主机 TCP 连接数为 80 条
chain=forward protocol=tcp connection-limit=80,32 action=drop
4 ;;; 丢弃掉所有非单播数据
chain=forward src-address-type=!unicast action=drop
5 ;;; 跳转到 ICMP 链表
chain=forward protocol=icmp action=jump jump-target=ICMP
6 ;;; 跳转到病毒链表
chain=forward action=jump jump-target=virus
forward 工作过程如下:
在自定义链表 ICMP 中,是定义所有 ICMP(Internet 控制报文协议),ICMP 经常被认为是 IP 层的一个组成部分。它传 递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。例如:ping、traceroute、 trace TTL 等。我们通过 ICMP 链表来过滤所有的 ICMP 协议:
ICMP 链表操作过程:
0 ;;; Ping 应答限制为每秒 5 个包
chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept
1 ;;; Traceroute 限制为每秒 5 个包
chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept
2 ;;; MTU 线路探测限制为每秒 5 个包
chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept
3 ;;; Ping 请求限制为每秒 5 个包
chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept
4 ;;; Trace TTL 限制为每秒 5 个包
chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept
5 ;;; 丢弃掉任何 ICMP 数据
chain=ICMP protocol=icmp action=drop
ICMP 类型:代码值
通过指令保护你的路由器和相连接私有网络,你需要通过配置防火墙丢弃或拒绝 ICMP 协议的传输。然而一些ICMP 数据包则需要用来维护网络和故障判断用。
下面是 ICMP 类型列表:通常下面的 ICMP 传输建议被允许通过
Ping
o 8:0 – 回应请求
o 0:0 – 回应答复
Trace
o 11:0 – TTL 超出
o 3:3 – 端口不可到达
路径 MTU 探测
o 3:4 – 分段存储 Fragmentation-DF-Set
一般 ICMP 过滤建议:
-- 允许 ping—ICMP 回应请求向外发送和回应答复进入
-- 允许 traceroute—TTL 超出和端口不可到达信息进入
-- 允许路径 MTU—ICMP Fragmentation-DF-Set 信息进入
-- 阻止其他任何数据
在 virus 链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤: 阻止不必要的 IP 广播:
add chain=forward src-address=0.0.0.0/8 action=drop add chain=forward dst-address=0.0.0.0/8 action=drop add chain=forward src-address=127.0.0.0/8 action=drop add chain=forward dst-address=127.0.0.0/8 action=drop add chain=forward src-address=224.0.0.0/3 action=drop add chain=forward dst-address=224.0.0.0/3 action=drop
建立新的跳转数据链(chains):add chain=forward protocol=tcp action=jump jump-target=tcp add chain=forward protocol=udp action=jump jump-target=udp add chain=forward protocol=icmp action=jump jump-target=icmp
建立 tcp-chain 并拒绝一些 tcp 端口:
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"
add chain=tcp protocol=tcp dst-port=111 action=drop comment="deny RPC portmapper" add chain=tcp protocol=tcp dst-port=135 action=drop comment="deny RPC portmapper" add chain=tcp protocol=tcp dst-port=137-139 action=drop comment="deny NBT"
add chain=tcp protocol=tcp dst-port=445 action=drop comment="deny cifs" add chain=tcp protocol=tcp dst-port=2049 action=drop comment="deny NFS"
add chain=tcp protocol=tcp dst-port=12345-12346 action=drop comment="deny NetBus" add chain=tcp protocol=tcp dst-port=20034 action=drop comment="deny NetBus"
add chain=tcp protocol=tcp dst-port=3133 action=drop comment="deny BackOriffice" add chain=tcp protocol=tcp dst-port=67-68 action=drop comment="deny DHCP"
在 udp-chain 中拒绝非法的 udp 端口 Deny udp ports in udp chain:add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"
add chain=udp protocol=udp dst-port=111 action=drop comment="deny PRC portmapper" add chain=udp protocol=udp dst-port=135 action=drop comment="deny PRC portmapper" add chain=udp protocol=udp dst-port=137-139 action=drop comment="deny NBT"
add chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS"
add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice"
在 icmp-chain 允许相应需要的 icmp 连接:add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="drop invalid connections"
add chain=icmp protocol=icmp icmp-options=3:0 action=accept \
comment="allow established connections"
add chain=icmp protocol=icmp icmp-options=3:1 action=accept \
comment="allow already established connections"
add chain=icmp protocol=icmp icmp-options=4:0 action=accept \
comment="allow source quench"
add chain=icmp protocol=icmp icmp-options=8:0 action=accept \
comment="allow echo request"
add chain=icmp protocol=icmp icmp-options=11:0 action=accept \
comment="allow time exceed"
add chain=icmp protocol=icmp icmp-options=12:0 action=accept \
comment="allow parameter bad"
add chain=icmp action=drop comment="deny all other types"
|