规则的查看与清除

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