iptables 规则优化

  iptables [-t 表] -命令 匹配   操作

  说明

  (1) -t 表

  表选项用于指定命令应用于哪个iptables内置表。

  (2)命令

  命令选项用于指定iptables的执行方式,包括插入规则,删除规则和添加规则,如下表所示

  命令              说明

  -P

  –policy  链名>                  定义默认策略

  -L

  –list  链名>

  查看iptables规则列表

  -A

  –append  链名> 在规则列表的最后增加1条规则

  -I

  –insert  链名>

  在指定的位置插入1条规则

  -D

  –delete  链名>

  从规则列表中删除1条规则

  -R

  –replace  链名>

  替换规则列表中的某条规则

  -F

  –flush  链名>

  删除表中所有规则

  -Z –zero  链名>

  将表中数据包计数器和流量计数器归零

  -X –delete-chain  链名>

  删除自定义链

  -v

  –verbose  链名> 与-L它命令一起使用显示更多更详细的信息

  (3) 匹配规则

  匹配选项指定数据包与规则匹配所具有的特征,包括源地址,目的地址,传输协议和端口号,如下表所示

  匹配                              说明

  -i     –in-interface  网络接口名>        指定数据包从哪个网络接口进入,

  -o    –out-interface  网络接口名>      指定数据包从哪个网络接口输出

  -p    —proto协议类型                     指定数据包匹配的协议,如TCP、UDP和ICMP等

  -s     –source  源地址或子网>           指定数据包匹配的源地址

  –sport 源端口号>                           指定数据包匹配的源端口号

  –dport 目的端口号>                        指定数据包匹配的目的端口号

  -m  –match 匹配的模块                   指定数据包

  规则所使用的过滤模块

  linux netfilter/Iptables包过滤防火墙

  带状态检查的包过滤防火墙:状态:new,established,invalid,related

  new:syn=1 新发起的请求

  established : syn<>1  ack=1 fyn<>1 已建立的连接

  output:一般都是ESTABLISHED

  related:关联到的状态. ftp 的连接

  默认规则:

  *filter

  # 使用 iptables -P INTPUT|OUTPUT|FORWARD  DROP

  :INPUT DROP [41:5302]

  :FORWARD DROP [0:0]

  :OUTPUT DROP [0:0]

  iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.7/32 -p tcp -m tcp –dport 22 -j ACCEPT

  # 在input链上 -s指定源地址:172.16.0.0/16 -d 指定目标地址 172.16.100.7 (本机)  -p 指定协议(tcp) -m 扩展选项(tcp)  允许172.16.0.0/16这个网段用户能够访问本地的sshd服务进行访问

  iptables -A INPUT -d 172.16.100.7/32 -p tcp -m tcp –dport 80 -j ACCEPT

  # 在input链上 -d 指定目标地址 172.16.100.7 -s 忽略表示所有的,允许所有用户对本地的web服务进行访问

  iptables -A INPUT -i lo -j ACCEPT

  # 允许本机对自己本地回环地址进行访问

  iptables -A OUTPUT -s 172.16.100.7/32 -d 172.16.0.0/16 -p tcp -m tcp –sport 22 -j ACCEPT

  # 在output链上 -s指定源地址:172.16.100.7(本机) -d 制动目标地址 172.16.0.0/16  -p 指定协议(tcp) -m 扩展选项(tcp)  允许172.16.0.0/16这个网段用户能够访问本地的sshd服务进行访问

  iptables -A OUTPUT -s 172.16.100.7/32 -p tcp -m tcp –sport 80 -j ACCEPT

  # 在output链上 -s指定:172.16.100.7(本机) -p 指定协议(tcp) -m 扩展选项  允许所有用户对本地的web服务进行访问 -j :指定允许 或拒绝(ACCEPT DROP)

  -A OUTPUT -o lo -j ACCEPT

  # 允许本机对自己本地回环地址进行访问

  # iptables -P INPUT DROP   # 将默认INPUT链策略改为拒绝,起初是ACCEPT

  # iptables -P OUTPUT DROP  # 将默认OUTPUT链策略改为拒绝,起初是ACCEPT

  # iptables -L -v -n

  Chain INPUT (policy DROP 5 packets, 843 bytes)

  pkts bytes target     prot opt in     out     source               destination

  247 17320 ACCEPT     tcp  —  *      *       0.0.0.0/0            172.16.251.132      tcp dpt:22 state NEW,ESTABLISHED

  Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

  pkts bytes target     prot opt in     out     source               destination

  Chain OUTPUT (policy DROP 0 packets, 0 bytes)

  pkts bytes target     prot opt in     out     source               destination

  146 14752 ACCEPT     tcp  —  *      *       172.16.251.132       0.0.0.0/0           tcp spt:22 state ESTABLISHED

  # iptables -A INPUT -d 172.16.251.132 -p udp –dport 53  -m state –state NEW,ESTABLISHED -j ACCEPT

  # iptables -A OUTPUT -s 172.16.251.132 -p udp –dport 53 -m state –state  ESTABLISHED -j ACCEPT

  # 开放所有用户对本机DNS服务器的请求

  # iptables -A INPUT -d 172.16.251.132 -p tcp –dport 53  -m state –state NEW,ESTABLISHED -j ACCEPT

  # iptables -A OUTPUT -s 172.16.251.132 -p tcp –dport 53 -m state –state  ESTABLISHED -j ACCEPT

  # 因为DNS主从复制的时候使用的就是TCP的53号端口,所以也要开放

  规则优化:

  # iptables -A INPUT -d 172.16.100.7/32 -m state –state ESTABLISHED -j ACCEPT

  # 所有用户所有的数据包只要是,只要是已连接的请求统统ACCEPT统统放行

  # iptables -A INPUT 2 -d 172.16.251.132 -p tcp -m state –state NEW,ESTABLISHED -m multiport –destination-ports 22,53,80 -j ACCEPT

  # 使用-m multiport –destination-ports 22,53,80 指定多个目标端口

  # iptables  -A OUTPUT -s 172.16.100.7/32 -m state –state ESTABLISHED -j ACCEPT

  # 所有只要使用本机流出的数据包并且状态为established 统统放行

 

上一篇:安卓防火墙 PS DroidWall

下一篇:树莓派玩机笔记