iptables 四表五链

一、什么是iptables

iptables是Linux的防火墙管理工具而已,真正实现防火墙功能的是Netfilter,我们配置了iptables规则后Netfilter通过这些规则来进行防火墙过滤等操作

Netfilter模块:

它是主要的工作模块,位于内核中,在网络层的五个位置(也就是防火墙四表五链中的五链)注册了一些钩子函数,用来抓取数据包;把数据包的信息拿出来匹配各个各个链位置在对应表中的规则:匹配之后,进行相应的处理ACCEPT、DROP等等。

下面这张图很明了的说明了Netfilter和iptables之间的关系
  在这里插入图片描述

二、四表五链(重要)

四表五链:

链就是位置:共有五个 进路由(PREROUTING)、进系统(INPUT) 、转发(FORWARD)、出系统(OUTPUT)、出路由(POSTROUTING);

表就是存储的规则;数据包到了该链处,会去对应表中查询设置的规则,然后决定是否放行、丢弃、转发还是修改等等操作。

2.1. 具体的四表

filter表——过滤数据包
Nat表——用于网络地址转换(IP、端口)
Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
Raw表——决定数据包是否被状态跟踪机制处理

2.2. 具体的五链

INPUT链——进来的数据包应用此规则链中的策略
OUTPUT链——外出的数据包应用此规则链中的策略
FORWARD链——转发数据包时应用此规则链中的策略
PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)

2.3. 四表五链之间的关系

在这里插入图片描述

三、iptables语法参数

3.1.iptables语法格式

iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]

3.2.iptables常用参数

-P 设置默认策略:iptables
 
-P INPUT (DROP|ACCEPT)
 
-F 清空规则链
 
-L 查看规则链
 
-A 在规则链的末尾加入新规则
 
-I num 在规则链的头部加入新规则
 
-D num 删除某一条规则
 
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
 
-d 匹配目标地址
 
-i 网卡名称 匹配从这块网卡流入的数据
 
-o 网卡名称 匹配从这块网卡流出的数据
 
-p 匹配协议,如tcp,udp,icmp
 
--dport num 匹配目标端口号
 
--sport num 匹配来源端口号

回到顶部

四、常用实例

以下例子大家都可以直接进行根据需求更改使用

1. 删除已有规则
在开始创建iptables规则之前,你也许需要删除已有规则。命令如下:
iptables -F
(or)
iptables –flush
查看已有规则
iptables -nL
 
 
2.设置链的默认策略
链的默认政策设置为”ACCEPT”(接受),若要将INPUT,FORWARD,OUTPUT链设置成”DROP”(拒绝),命令如下:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
当INPUT链和OUTPUT链都设置成DROP时,对于每一个防火墙规则,我们都应该定义两个规则。例如:一个传入另一个传出。在下面所有的例子中,由于我们已将DROP设置成INPUT链和OUTPUT链的默认策略,每种情况我们都将制定两条规则。
当然,如果你相信你的内部用户,则可以省略上面的最后一行。例如:默认不丢弃所有出站的数据包。在这种情况下,对于每一个防火墙规则要求,你只需要制定一个规则——只对进站的数据包制定规则。
 
 
3. 阻止指定IP地址
例:丢弃来自IP地址x.x.x.x的包
BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP
注:当你在log里发现来自某ip地址的异常记录,可以通过此命令暂时阻止该地址的访问以做更深入分析
例:阻止来自IP地址x.x.x.x eth0 tcp的包
iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP
 
 
4. 允许所有SSH的连接请求
例:允许所有来自外部的SSH连接请求,即只允许进入eth0接口,并且目标端口为22的数据包
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
 5<
### iptables 功能解释 #### raw raw 主要用于处理连接跟踪机制。通过该可以决定哪些数据包不被内核中的连接追踪机制记录,从而提高性能并减少资源消耗[^1]。 #### mangle mangle 用于修改 IP 报头字段以及 TCP/UDP 的一些选项。此允许更改诸如 TTL、TOS 字段等参数,并能设置特定标记供后续规则使用。它适用于需要精细控制网络流量特性的场景下。 #### nat nat 负责地址转换工作,在 NAT(Network Address Translation)过程中发挥重要作用。具体来说,它可以实现 SNAT(源地址转换)、DNAT(目的地址转换),使得局域网内的主机能够访问外部互联网或让外界请求映射到指定服务器上。 #### filter filter 是最常用的格之一,主要用来执行基本的数据包过滤操作。这包括允许或拒绝某些类型的通信流进入或离开系统,基于协议类型、端口号等多种条件来制定安全策略。 --- ### 及其作用说明 #### PREROUTING 位于数据包刚到达接口之前的位置,此时还没有进行路由决策。PREROUTING 主要应用于 nat 和 mangle 中,前者可在此阶段改变目标地址;后者可用于调整报文优先级或其他特性[^2]。 #### INPUT 当接收到的数据包目的地为本地机器时,则会经过 INPUT 。在这里可以根据设定的安全政策进一步筛选入站流量,判断是否放行至更高层次的应用程序层处理。 #### FORWARD 仅存在于多网卡环境中启用IP转发的情况下。如果一台设备配置有两个及以上物理网络接口并且开启了相应的转发服务,那么不属于本机而是需继续传输给其他节点的数据包将会穿过这个条接受审查[^3]。 #### OUTPUT 针对由本机产生的向外发送的数据包而言,OUTPUT 是最后一个检查点。同样地,这里也可以施加各种形式的限制措施以确保发出的信息符合预期标准。 #### POSTROUTING 作为最后一道工序,POSTROUTING 出现在即将离开发送者前一刻。在这个环节里通常会对源地址做最后修正(SNAT),保证回应路径正确无误。 ```bash # 示例命令展示如何查看当前iptables规则 sudo iptables -L -v -n ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值