Linux防火墙工具iptables教科书级教程
netfilter 中五个勾子函数和报文流向
报文流向
流入本机:PREROUTING --> INPUT-->用户空间进程
流出本机:用户空间进程 -->OUTPUT--> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING
iptables的组成
iptables由五个表table和五个链chain以及一些规则组成
五个表
filter 表格(默认表格):用于过滤数据包,决定是否接受或丢弃数据包。它包含三个默认链:INPUT、OUTPUT 和 FORWARD。
nat 表格:用于网络地址转换(Network Address Translation,NAT),修改数据包的源或目标地址。它包含三个默认链:PREROUTING、OUTPUT 和 POSTROUTING。
mangle 表格:用于修改数据包的特定字段。它允许在数据包经过网络协议栈的不同阶段进行操作。
raw 表格:用于配置数据包在内核中的处理方式,通常用于跳过某些处理阶段,如连接追踪和网络地址转换。
security 表格:用于 Linux 安全模块(Security Modules)对数据包进行额外的安全检查和操作。
五个勾子函数
INPUT 链:用于处理目标地址为本机的数据包,即进入本机的数据包。
OUTPUT 链:用于处理源地址为本机的数据包,即从本机发出的数据包。
FORWARD 链:用于处理需要转发到其他主机的数据包。
PREROUTING 链:用于对数据包进行路由前的预处理,如目标地址转换。
POSTROUTING 链:用于对数据包进行路由后的处理,如源地址转换。
表和链的对应关系
优先级
security -->raw-->mangle-->nat-->filter
iptables的初步使用
iptables的参数解释
iptables [-t 表名] 子命令 链名 [选项] [匹配条件] -j 目标动作 [目标动作选项]
-t 表名:
指定要操作的表名。默认为filter表,可以是filter、nat、mangle、raw、security等表名之一。
子命令:
链管理类子命令
-N:new, 自定义一条新的规则链
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除
-X:delete,删除自定义的空的规则链
-P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:ACCEPT:接受, DROP:丢弃
查看类子命令
-L:list, 列出指定鏈上的所有规则,本选项须置后
-n:numberic,以数字格式显示地址和端口号
-v:verbose,详细信息
-vv 更详细
-x:exactly,显示计数器结果的精确值,而非单位转换后的易读值
--line-numbers:显示规则的序号
-S selected,以iptables-save 命令格式显示链上规则
常用子命令组合
-vnL
-vvnxL --line-numbers
规则管理类子命令
-A:append,追加
-I:insert, 插入,要指明插入至的规则编号,默认为第一条
-D:delete,删除
(1) 指明规则序号
(2) 指明规则本身
-R:replace,替换指定链上的指定规则编号
-F:flush,清空指定的规则链
-Z:zero,置零
iptables的每条规则都有两个计数器
(1) 匹配到的报文的个数
(2) 匹配到的所有报文的大小之和
链名:
指定要操作的链的名称。链是一系列规则的集合,用于决定数据包的处理方式。常见的链包括INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTING。
[选项]:
可选的命令选项,用于对iptables命令进行进一步的配置和控制。
[!] -s, --source address[/mask][,...]:源IP地址或者不连续的IP地址
[!] -d, --destination address[/mask][,...]:目标IP地址或者不连续的IP地址
[!] -p, --protocol protocol:指定协议,可使用数字如0(all)
protocol: tcp, udp, icmp, icmpv6, udplite,esp, ah, sctp, mh or“all“
参看:/etc/protocols
[!] -i, --in-interface name:报文流入的接口;只能应用于数据报文流入环节,只应用于INPUT、
FORWARD、PREROUTING链
[!] -o, --out-interface name:报文流出的接口;只能应用于数据报文流出的环节,只应用于
FORWARD、OUTPUT、POSTROUTING链
[匹配条件]:
可选的匹配条件,用于指定数据包匹配的条件。可以使用不同的匹配模块和选项来匹配源地址、目标地址、协议类型、端口等。
-j 目标动作:
指定匹配成功后的目标动作,决定数据包的处理方式。常见的目标动作包括ACCEPT(接受数据包)、DROP(丢弃数据包)、REJECT(拒绝数据包)等。
[目标动作选项]:
可选的目标动作选项,用于进一步配置和控制目标动作的行为。
做个小例子
基本设置
iptables -A INPUT -s 192.168.2.100 -j ACCEPT
iptables -I INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
iptables -I INPUT -p icmp -j DROP
本文系作者 @亦秋先生 原创发布在亦秋先生博客站点。未经许可,禁止转载。
暂无评论数据