iptables命令备忘

启动:

service iptables start

保存规则:

iptables-save > /etc/sysconfig/iptables
生成保存规则的文件 /etc/sysconfig/iptables,
也可以用
service iptables save
它能把规则自动保存在/etc/sysconfig/iptables中。

iptable基本操作

iptables -L  列出iptables规则
iptables -F  清除iptables内置规则
iptables -X  清除iptables自定义规则

设定默认规则

在iptables规则中没有匹配到规则则使用默认规则进行处理

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

示例配置SSH规则 允许全部IP访问22端口

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 

只允许192.168.0.3的机器进行SSH连接

iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.

允许loopback回环通信

IPTABLES -A INPUT -i lo -p all -j ACCEPT 
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT

输入以下命令查看到每个规则chain的序列号。

iptables -L -n --line-number

最后输入以下命令根据序列号删除指定一条防火墙规则即可。

iptables -D INPUT 3 
#删除INPUT的第三条已添加规则,这里3代表第几行规则
#注意,当删除一条规则之后行号有变动!不可一口气删除多规则,否则可能会与预期不符

拒绝全部IP访问某一端口:

iptables -A INPUT -p tcp --dport 3306 -j DROP

#注意,这是拒绝所以IP访问3306,除添加允许的规则
#同事也会拒绝本机localhost 访问3306
#如果只是单纯拒绝外面访问3306 允许特定IP访问3306
#建议配置特定IP访问3306 和开启默认拒绝入 iptables -P INPUT DROP

查询端口已经连接的IP,方便配置规则

netstat -an |grep 'ESTABLISHED' |grep '3306'
#查看已经连上3306端口的IP

允许源地址是192.168.0.0/24网段的IP访问(已包括192.168.0.1/32在内)

iptables -A INPUT -s 192.168.0.1/32 -j ACCEPT 
#允许192.168.0.1/32 一个IP

iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT 
#允许192.168.0.0/24 一段IP

允许目标地址是192.168.0.0/24网段的IP访问(已包括192.168.0.1/32在内)

iptables -A INPUT -d 192.168.0.1/32 -j ACCEPT 
#允许192.168.0.1/32 一个IP

iptables -A INPUT -d 192.168.0.0/24 -j ACCEPT 
#允许192.168.0.0/24 一段IP

# 允许已建立的或相关连的通行

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT 
#不添加DNS 无法解析
Momostudent
Momostudent
因为喜欢所以折腾。。。