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 统统放行
下一篇:树莓派玩机笔记