iptables的表链结构,四表五链
表用于存放不同的规则链,
raw表:确定是否对数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包的源目标地址或端口
filter表:确定是否放行改数据包
规则链解析chain:用来存放一条条防火墙规则,根据处理包的不同时机分类。
默认五种规则链:
INPUT:处理入站的数据包
OUTPUT:处理出站数据包
FORWARD:处理转发的数据包
POSTROUTING:路由选择之后处理
PREROUTING:路由选择之前处理
规则表之间的顺序,raw-mangle-nat-filter
规则链之间的顺序:
入站:PREROUTING-INPUT
出站:OUTPUT-POSTROUTING
转发:PREROUTING-FORWARD-POSTROUTING
包过滤匹配流程:
规则链内的匹配顺序,匹配即停止
若无匹配,按照改链的默认策略处理
iptables的基本管理
/sbin/iptables
指令的组成
iptables -t表名 选项 链名 条件 -j 目标操作
iptables -t filter -I INPUT -p icmp -j REJECT
可以不指定表,默认为filter表,不指定链默认为对应表的所有链
除非设置默认策略,否则必须制定匹配条件
选项链名目标操作用大写字母,其他都小写
ACCEPT:允许通过,放行
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志,然后传给下调规则
添加规则: -A 在链的末尾追加一条规则,-I在链的开头插入一条规则
查看规则:-L 列出所有的规则条目,-n 以数字形式显示地址,端口等信息
--line-numbers 查看规则时,显示规则的序号
删除规则:-D 删除链内指定序号的条规则,-F清空所有规则
默认策略:-P 为指定的链设置默认规则
管理规则示例:
添加 —A追加 -I插入
iptables -t filter -A INPUT -p tcp -j ACCEPT
iptables -I INPUT -p udp -j ACCEPT
iptables -I INPUT 2 -p icmp -j ACCPET
查看规则列表:
iptables -nL INPUT
iptables -L INPUT --line-numbers
删除清空规则:
iptables -D INPUT 3
iptables -F 清空
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F
设置默认规则:
所有链的初始默认链均为ACCEPT 通过-P选项可重置默认规则
ACCEPT或者DROP
iptables -t filter -P INPUT DROP
开启内核的IP转发:
或者 echo 1 >/proc/sys/net/ipv4/ip_forward
基本的匹配条件:
通用匹配: 协议匹配 -p 协议名
地址匹配 -s 源地址 -d 目标地址
接口匹配 -i 收数据的网卡 -o 发数据的网卡
端口匹配 --sport 源端口 --dport 目标端口
隐含匹配: ICMP类型匹配 --icmp-type ICMP类型
TCP标记匹配 --tcp-flags 检查哪些位,哪些位被设置
示例:封禁IP地址网段
主机防护,针对入站访问的源地址: iptables -s 192.168.3.1 -j DROP
iptables -A INPUT -s 10.0.0.0/24 -j DROP
iptabels -A FORWARD -s 192.168.0.0/16 -i eth0 -j DROP
限制对指定端口的访问
iptables -A INPUT -s 192.168.236.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
允许本机ping其他,禁止其他ping主机
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -p icmp --icmp-type !echo-request -j ACCEPT
扩展匹配: -m 扩展模块 --扩展条件 条件值
示例:-m mac --mac-source 00:2c:54:ee:21:5f
常见的扩展条件
状态匹配: -m state --state 状态值
MAC地址匹配:-m mac --mac-source MAC地址
多端口匹配: -m multiport --sports 源端口列表
-m multiport --dports 目标端口列表
IP范围匹配:-m iprange --src-range IP1-IP2
-m iprange --dst-range IP1-IP2
状态匹配:
网络连接的五种状态
NEW-ESTABLISHED-RELATED-INVALID-UNTRACKED
丢弃陌生的TCP响应包
示例:
防止反射反弹攻击
iptables -A INPUT -m state --stae NEW -p tcp !--syn -j DROP
iptables -A FORWARD -m state --state NEW -p tcp !--syn -j DROP
识别FTP数据连接
iptables -A FORWARD -d 192.168.4.205 -p tcp --dport 20:21 -j ACCEPT
iptabels -A FORWARD -s 192.168.4.205 -p tcp --sport 29:21 -j ACCEPT
iptabels -A FORWARD -d 192.168.4.205 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 192.168.4.205 -m state --state ESTABLISHED,RELATED -j ACCEPT
允许从内网访问外网的服务,禁止从外网访问内网
iptables -A FORWARD -s 192.168.4.0/24 -o eth0 -j ACCEPT
iptables -A FORWARD -d 192.168.4.0/24 -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -d 192.168.4.0/24 -i eth0 -m state --state NEW -j DROP
领取专属 10元无门槛券
私享最新 技术干货