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

Linux学习整理-网络防火墙iptables-概念篇,第1张

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

3 iptables的开启关闭

4 实验环境


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条链,按照数据经过的顺序排列。

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

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

2.2 表(table)

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

raw(不常用)

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

          PREROUTING      OUTPUT

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

mangle(不常用)

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

filter

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

     有三个内置链。

         INPUT     FORWARD     OUTPUT

security(基本不用)

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

         INPUT     FORWARD     OUTPUT

nat

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

 rawmanglefiltersecuritynatPREROUTING●●  ●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
3 iptables的开启关闭

Centos

      用firewalld的开关来管理iptables的开关。

Ubuntu

      用ufw的开关来管理iptables的开关。

4 实验环境
                       192.168.0.0/24
访问用机器(Centos) --------------------- iptables设定机器(Ubuntu)
   192.168.0.211                            192.168.0.203

试验待续。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5704457.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存