iptables学习记录
iptables是linux系统中控制网络报文进出网卡及转发的控制服务。
iptables的网络模型
软件中主要是有 五链 四表 堵通策略
五链
PREROUTING, 路由前,过滤从网卡到达的报文
POSTROUTING, 路由后,过滤离开到网卡的报文
INPUT, 报文入口,过滤进入操作系统的报文(与进程交互)
OUTPUT, 报文出口,过滤离开操作系统的报文(与进程交互)
FORWARD, 转发管卡,过滤直接转发到指定网卡的报文
四表
FILTER:
报文是否允许通过,主要作为防火墙
支持:INPUT,OUTPUT,FORWARD
NAT:
转换报文的地址(源地址,目的地址)
支持:PREROUTING,POSTROUTING,INPUT,OUTPUT
MANGLE:
修改报文中的源数据
在应用中使用的少
支持:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD
RAW:
记录NAT表中连接的记录
报文流向
发送到本机某进程的报文:PREROUTING -> INPUT
本机某进程发出的报文:OUTPUT -> POSTROUTING
由本机转发的报文:PREROUTING -> FORWARD
堵通策略
堵通策略指的是规则对报文的操作
允许(ACCEPT),丢(DROP),拒绝(REJECT)
这里ACCEPT应该不用介绍了,主要介绍堵的两种策略。DROP会直接丢弃报文,可能使具有重试策略的远程重传数据。使用REJECT会回复拒绝。能够避免远程重传数据造成带宽和网卡的资源浪费,但是可能暴露信息给攻击者。
源地址转换(SNAT),目标地址转换(DNAT)
这两个转换分别是修改报文的源地址和目的地址,SNAT通常用于将内网地址转换为公网。DNAT通常用于将外部请求转发至内网中的服务。
REDIRECT(端口转发)
将报文从目标端口转发到另一个端口上,通常用于实现端口映射或负载均衡
返回(RETURN)
结束当前规则链,将控制器返回到调用该规则的上一级规则链
只记录日志(LOG)
将匹配该规则的报文记录进日志,不做其他处理
总结
iptables命令的使用
以下是打印filter表中存在的规则的命令
iptables -t filter -L -n
-t 选择打印的表 (filter是默认表)
-L 把表列出来
-n 打印的时候带行号
以下是在filter表中添加规则的命令
iptables -t filter -A INPUT -j DROP -p tcp --dport 8081
-t 选择打印的表 (filter是默认,可以不写)
-A 添加规则(-A append 在末尾添加,-I insert在头部添加)
-j 丢弃匹配的报文
-p 指定生效的协议