参考:https://zhuanlan.zhihu.com/p/441089738
介绍
防火墙是计算机的重要功能之一,可以有效保护计算机安全。对防火墙的配置和管理是运维的主要工作之一。
iptables是linux计算机常用的防火墙。可以配置实现ip、端口等规则的过滤。
结构
iptables分为表Tables、链Chains、规则Rules三个层次。
iptables有Filter, NAT, Mangle, Raw四种内建表。
表tables
- Filter表
Filter是iptables的默认表,它有以下三种内建链(chains):
INPUT链 – 处理来自外部的数据。
OUTPUT链 – 处理向外发送的数据。
FORWARD链 – 将数据转发到本机的其他网卡设备上。
- NAT表
NAT表有三种内建链:
PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
OUTPUT链 – 处理本机产生的数据包。
- Mangle表
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链(chains):
PREROUTING
OUTPUT
FORWARD
INPUT
POSTROUTING
4. Raw表
Raw表用于处理异常,它具有2个内建链:
PREROUTING chain
OUTPUT chain
规则
规则的关键知识点:
Rules包括一个条件和一个目标(target)
如果满足条件,就执行目标(target)中的规则或者特定值。
如果不满足条件,就判断下一条Rules。
目标值(Target Values)
在target里指定的特殊值:
ACCEPT – 允许防火墙接收数据包
DROP – 防火墙丢弃包
QUEUE – 防火墙将数据包移交到用户空间
RETURN – 防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)中。
命令
清除规则
iptables --flush
或者
iptables -F
iptables -t nat -F
永久生效
service iptables save
# 重启iptables服务
service iptables stop
service iptables start
追加
iptables -A chain firewall-rule
-A chain – 指定要追加规则的链
firewall-rule – 具体的规则参数
# 1.清空所有iptables规则
iptables -F
# 2.接收目标端口为22的数据包
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# 3.拒绝所有其他数据包
iptables -A INPUT -j DROP