iptables白名单
四表五链
- Filter表
Filter是iptables的默认表,它有以下三种内建链(chains) INPUT --> 处理来自外部的数据 OUTPUT --> 处理向外发送的数据
- FORWARD链 --> 将数据转发到本机的其他网卡设备上
- NAT表
- PREROUTING链:处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址,通常用于DNAT
- POSTROUTING链:处理即将离开本机的数据包。他会转换数据包中的源IP地址,通常用于SNAT
- OUTPUT链:处理本机产生的数据包
- Mangle表
用于指定如何处理数据包。他能改变TCP头部中的Qos位。Mangle具有5个内建链:-PREROUTING -OUTPUT -FORWARD -INPUT -POSTROUTING
- Raw表
用于处理异常,具有2个内建链:PREROUTING OUTPUT
- iptables选项
-t<表>:指定要操纵的表; -A:向规则链中添加条目; -D:从规则链中删除条目; -i:向规则链中插入条目; -R:替换规则链中的条目; -L:显示规则链中已有的条目; -F:清除规则链中已有的条目; -Z:清空规则链中的数据包计算器和字节计数器; -N:创建新的用户自定义规则链; -P:定义规则链中的默认目标; -h:显示帮助信息; -p:指定要匹配的数据包协议类型; -s:指定要匹配的数据包源ip地址; -j<目标>:指定要跳转的目标; -i<网络接口>:指定数据包进入本机的网络接口; -o<网络接口>:指定数据包要离开本机所使用的网络接口。
iptables -I:默认插入到第一行,原有规则后移。
iptables -A :默认追加到最后一行。
白名单模式
- 默认所有IP都不可以访问设备
- 将白名单的IP允许访问
所有IP不可访问: iptables -A INPUT -j DROP
具体操作:
iptables -I INPUT -s 192.168.3.0/24 -j ACCEPT #这里IP地址为允许访问的IP地址段,这样可以避免ssh连接不上
iptables -A INPUT -j DROP #禁止所有IP访问
iptables -t filter -nL INPUT --line-numbers #查看INPUT表规则
iptables -D INPUT 数字 #删除指定数字的规则,这个数字是上一条命令查看规则的数字
黑名单模式:
(1)默认所有IP是都可以访问设备
(2)将黑名单的ip禁止访问
默认INPUT访问允许
具体操作:
iptables -P INPUT ACCEPT
iptables -I INPUT -s 124.115.0.199 -j DROP #封单个IP的命令
iptables -I INPUT -s 124.115.0.0/16 -j DROP #封IP段的命令
iptables -I INPUT -s 194.42.0.0/8 -j DROP #封整个段的命令
iptables -I INPUT -s 61.37.80.0/24 -j DROP #封几个段的命令
iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP #只封80端口
iptables -t filter -nL INPUT --line-numbers #查看INPUT表规则
其他相关操作:
- iptables -A INPUT -p tcp --dport 22 -j ACCEPT 允许包从22端口进入
- iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 允许从22端口进入的包返回
- iptables -A OUTPUT -p udp --dport 53 -j ACCEPT 域名解析端口,一般不开
- iptables -A INPUT -p udp --sport 53 -j ACCEPT 域名解析端口,一般不开
- iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT 允许本机访问本机
- iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
- iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT 允许所有IP访问80端口
- iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
- iptables-save > /etc/sysconfig/iptables 保存配置
- iptables -L 显示iptables列表
列出 INPUT链 所有的规则:iptables -L INPUT --line-numbers
删除某条规则,其中5代表序号(序号可用上面的命令查看):iptables -D INPUT 5
开放指定的端口:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
禁止指定的端口:iptables -A INPUT -p tcp --dport 80 -j DROP
拒绝所有的端口:iptables -A INPUT -j DROP
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。