1、iptables 规则基本格式
iptbales [-t table] COMMAND chain CRETIRIA -j ACTION
-t table: 3个: filter、nat、mangle
COMMAND: 定义如何对规则进行管理
chain: 指定规则是在哪个链上操作的,当定义策略的时候,是可以省略的
CRETIRIA: 指定匹配标准
-j ACTION: 指定如何进行处理:
ACCEPT:允许通过
LOG:记录日志信息,然后传给下一条规则继续匹配
REJECT:拒绝通过,必要时会给出提示
DROP:直接丢弃,不给出任何回应
2. iptables 基本参数
参数 作用
-L 查看规则链
-F 清空规则链
-P 设置默认策略:iptables -P INPUT (DROP|ACCEPT)
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称,匹配从该网卡流入的数据
-o 网卡名称,匹配从该网卡流出的数据
-p 匹配协议,如tcp,udp,icmp
--dport 目标端口号,即本机端口号
--sport 来源端口号
2. 查看规则
iptables -nL
iptables -nL INPUT
3. 清除规则
# 清除所有规则
iptables -F
# 清除用户定义的规则
iptables -X
4. 配置规则
1.
vim /etc/sysconfig/iptables
# 添加
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
# 如:
# Generated by iptables-save v1.4.21 on Thu Feb 27 11:07:04 2020
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# 允许本机lo通信,lo: loopback device环回,本机发给本机的数据走虚拟设备通讯
-A INPUT -i lo -j ACCEPT
# 接收指定ip 开放所有端口
-A INPUT -s 10.0.0.2/32 -m conntrack --ctstate NEW -j ACCEPT
# 接收指定ip 发送到指定tcp端口的数据
# -m tcp 表示使用tcp扩展模块,--dport tcp扩展模块中的一个扩展条件,用于匹配目标端口
# !--dport 20 取反,取20以外端口,--dport 20:30 取20到30间所有端口
# 如常用条件:
# -p tcp -m tcp --sport
# -p tcp -m tcp --dport
-A INPUT -s 10.0.0.3/32 -p tcp -m conntrack --ctstate NEW -m tcp --dport 10050 -j ACCEPT
# 接收指定ip 通过指定的多个端口 发送到本机的数据
# -m multiport --dports 指定多个离散的端口,逗号分隔
# --dports不属于tcp扩展条件,而是属于multiport的扩展条件,使用--dports时,必须使用-m指定multiport扩展模块名称
# multiport扩展模块只能用于tcp及udp协议,所以必须配合 -p tcp/udp 使用
# 如常用条件:
# -p tcp -m multiport --sports
# -p udp -m multiport --dports
-A INPUT -s 10.0.0.4/32 -p tcp -m conntrack --ctstate NEW -m multiport --sports 3306,3307,3308 -j ACCEPT
# 对外开放多个指定tcp端口
-A INPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 8888,8889,10000 -j ACCEPT
# 对外开放tcp 22(ssh)端口
# -p 匹配的协议,-m 扩展模块的名称
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
# 接收123 端口发送到本机的数据
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --sport 123 -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -m udp --sport 123 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -j DROP
# output规则与input相同
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -d 10.0.0.2/32 -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -d 10.0.0.4/32 -p tcp -m conntrack --ctstate NEW -m multiport --dports 3306,3307,3308 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate NEW -m multiport --sports 8888,8889 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 80,443 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate NEW -m multiport --sports 80,443 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate NEW -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 123 -j ACCEPT
-A OUTPUT -p udp -m conntrack --ctstate NEW -m udp --dport 123 -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -j DROP
COMMIT
2.
iptables -I INPUT -p tcp --dport 25 -j ACCEPT
# 如
iptables -I INPUT -s 10.0.0.2 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -I INPUT -s 10.0.0.2 -p tcp -m tcp --dport 22:25 -j ACCEPT
iptables -I INPUT -s 10.0.0.3 -p tcp -m multiport --dports 3306,3308 -j ACCEPT
iptables -A OUTPUT -d 10.0.0.2 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -d 10.0.0.3 -p tcp -m multiport --dports 3306,3308 -j ACCEPT
5. 重启服务生效
systemctl restart iptables