Linux学习整理-网络防火墙iptables-概念篇

目录

1 Linux网络防火墙命令的关系图

2 iptables的概念

2.1 链(chain)

2.2 表(table)

2.3 规则(rule)

2.3.1 匹配(match)

2.3.2 目标(target)

2.4 链接追踪 Connection Tracking


1 Linux网络防火墙命令的关系图

下图是Linux网络防火墙命令的关系图,Ubuntu的ufw已经学习过了,今天来做一下iptables试验。

       CentOS              Ubuntu★              openSUSE
  +--------------+    +------------+    +---------------------+   -*-
  | firewall-cmd |    |     ufw    |    |    SUSEfirewall2    |    |
  +--------------+    +------------+    +---------------------+    |
                                                                用户空间
  +-----------------------------------------------------------+    |
  |                     iptables command                      |    |
  +-----------------------------------------------------------+   -*-

  +-----------------------------------------------------------+   -*-
  |                                                           |    |
  |                      OS(Netfilter)                        | 内核空间
  |                                                           |    |
  +-----------------------------------------------------------+   -*-

2 iptables的概念

iptables可以检测、修改、转向、分组和丢弃IPv4数据包。看名字,顾名思义,是工作在网络层。要想理解iptables能做什么,然后什么时候用iptables,先得对iptables有个系统的概念。

 结合上面的iptables的数据流来说一下iptables的概念。

2.1 链(chain)

iptables有5条链,按照数据经过的顺序排列。

  1. PREROUTING-------数据进入网卡,进入路由前调用的链
  2. INPUT------------------数据经过路由后,进入本地程序前调用的链
  3. FORWARD-----------数据经过路由后,转发出去之前调用的链
  4. OUTPUT--------------本地程序产生的数据经过路由前调用的链
  5. POSTROUTING----经过路由后,从网卡发出之前调用的链

上面的5链是netfilter的内置链(built-in),用户可以自己创建链。

2.2 表(table)

iptables有5张表(不是4表5链)

  • raw(不常用)

     从上图可以看出,raw的优先级最高,有两个内置链。

  1.       PREROUTING
  2.       OUTPUT

     因为这两个链都是在Connection Tracking之前被调用,所以系统跟踪不了,也就是                 用conntrack命令监视不到。

  • mangle(不常用)

     该表用于专门的数据包更改。有所有的5个内置链。

  • filter

     首先,这是iptables的命令的默认表,也就是不指定表的时候,默认用filter。过滤用的。

     有三个内置链。

  1.      INPUT
  2.      FORWARD
  3.      OUTPUT
  • security(基本不用)

     SELinux security相关的。有三个内置链。

  1.      INPUT
  2.      FORWARD
  3.      OUTPUT
  • nat

     用来做网络地址转换。有除了FORWARD以外的4个内置链。

 rawmanglefiltersecuritynat
PREROUTING  
INPUT 
FORWARD  
OUTPUT
POSTROUTING   

据上面的表格来看,主要用的就是filter表和nat表,也就是7条链。

2.3 规则(rule)

规则在链里,每条规则包含匹配的条件(match),和匹配条件后动作(target)。

2.3.1 匹配(match)

匹配条件例子
按协议匹配iptables -A INPUT -p tcp -j REJECT
所有TCP协议都拒绝
按源IP匹配iptables -A INPUT -s 192.168.0.0/24 -j REJECT
所有来自192.168.0网段的访问都拒绝
按目的IP匹配iptables -A OUTPUT -d 192.168.0.0/24 -j REJECT
所有去往192.168.0网段的访问都拒绝
按入网卡设备匹配iptables -A INPUT -i ens33 -j [TARGET]
按出网卡设备匹配iptables -A FORWARD -o ens33 -j [TARGET]
按源端口匹配iptables -A INPUT -p [tcp|udp] --sport 22 -j [TARGET]
按目的端口匹配iptables -A INPUT -p [tcp|udp] --dport 22 -j [TARGET]

还有各种各样的匹配条件,可以参照链接match

2.3.2 目标(target)

target就是匹配后执行的处理,常用的target有下列几种:

target处理内容
ACCEPT

匹配条件后,放行。

当前链的后面的规则,还有当前链所在的表的剩余链都不会执行。

LOG匹配条件后,写入日志
DROP匹配条件后,丢弃包(因为不会返回信息,发送方一直是等待状态,最好不用,可以用下面的REJECT)
REJECT

匹配条件后,丢弃包,并且会通知送信方,访问被拒(跟ufw里一样)

REJECT 目标仅在 INPUT、FORWARD 和 OUTPUT 链或其子链中有效

RETURN如果是在子链中,匹配条件后,无视这条rule,如果是在主链中,则采取默认策略(ACCEPT,REJECT等等)
REDIRECT

匹配条件后,做端口转换

REDIRECT 目标仅在 nat 表的 PREROUTING 和 OUTPUT 链中有效

DNAT

匹配条件后,做地址转换

DNAT 目标仅在 nat 表中的 PREROUTING 和 OUTPUT 链中有效

NOTRACK匹配条件后,数据不被跟踪。也就是用conntrack命令 看不到记录。

还有很多target,不常用,再有就是跳转到自定义的子链。

其它详细的可以参照target

2.4 链接追踪 Connection Tracking

# 用conntrack命令来跟踪数据包的路线
# Centos
yum install conntrack-tools

# Ubuntu
apt install conntrack

# 用法
conntrack -E

下一篇

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值