iptables 常用命令
规则的查看与清除
iptables [-t tables] [-L] [-nv]
- -t 后面接table,若省略,则使用默认的filter
- -L 列出目前的table 规则
- -n 不进行IP与hostname的反查
iptables-save
iptables [-t table] [-FXZ]
- -F:清除所有的已制定的规则
- -X:清除所有用户自定义的table
- -Z:将所有的chain的计数与流量统计都清零
删除某条规则
iptables -L -n --line-numbers
iptables -D INPUT 3
定义默认策略(policy)
iptables [-t nat] -P [INPUT, OUTPUT, FORWARD] [ACCEPT, DROP]
- -P:定义策略
- ACCEPT:该数据包可接受
- DROP:丢弃,不会让Client端知道丢弃原因
将本机INPUT设置为DROP,其余设置为ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
IP、网络以及接口设备
iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网络] [-d 目标IP/网络] -j [ACCEPT|DROP|REJECT|LOG]
- -AI 链名:针对某条链进行规则的插入或累加
- -A:新增一条规则,在原规则的最后。
- -I:默认插入变成第一条规则。
- 链:有 INPUT OUTPUT FORWARD等,与 -io有关。
- -io 网络接口
- -i:数据包进入的那个网络接口 例如eth0, lo等接口 需要和INPUT链配合使用
- -o:数据包传出的接口,需要和OUTPUT配合使用
- -p:协议 有tcp, udp, icmp, all
- -s:来源,可以使用!表示非。 -s !192.168.100.0/24 表示不接受这个段发来的包
- -d :目标 IP/网络
- -j:后面接操作 主要的有ACCEPT, DROP, REJECT, LOG
将lo所有的数据包都接受
iptables -A INPUT -i lo -j ACCEPT
接受来自内网的数据包
iptables -A INPUT -i eth1 -s 192.168.100.0/24 -j ACCEPT
针对端口的设置
iptables [-AI 链名] [-io 网络接口] [-p tcp, udp] [-s] [--sport 端口范围] [-d] [--dport 端口范围] -j [ACCEPT|DROP|REJECT]
--sport 限制来源的端口号码 1024:65535
--dport 限制目的的端口号码
连接本机21端口的数据包都阻挡
iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP
来自192.168.1.0/24的 1024:65535端口号 连接本机ssh就拒绝
iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --dport 22 --sport 1024:65535 -j DROP
处理syn标志
iptables -A INPUT -i eth0 -p tcp --sport 1:1023 --doprt 1:1023 --syn -j DROP
iptables 外挂模块 mac与state
iptables -A INPUT [-m state] [--state 状态]
- -m:一些iptables的外挂模块,主要有mac和state(状态模块)
- --state:一些数据包状态,INVALID无效 ESTABLISHED已经连接成功的连接状态 NEW想要新建立连接的数据包状态 RELATED表示这个数据包是与主机发送出去的数据包有关
只要建立连接或与已发出请求相关的数据包就予以通过,不合法数据包就丢弃
iptables -A INPUT -m state --state RELATED, ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP