• Linux防火墙之iptables(上)


    防火墙是什么

    防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。 

    安全技术的分类

    1.入侵检测机制 特点:阻断,量化,定位来自内外的网络的威胁情况。

    提供报警和时候监督,类似于监控。

    2.入侵防御,以透明模式工作,分析数据包的内容,一切进入本机的内容进行防护,木马,蠕虫,系统漏洞进行分析判断,然后进行阻断,主动防护机制。部署在整个架构,或者是集群的入口处。(必经之路)

    3.防火墙:隔离功能,工作在网络或者主机的边缘。

    对网络或者主机进出的数据包按照一定规则进行检测。(网络层转发的数据包)

    我们在工作当中,一般对防火墙的设置都是白名单(拒绝所有,允许个别)

    4.防水墙,透明模式,华为的ensp监控就是防火墙。一切对于防水墙都是透明的。

    在事前,事中,包括事后,都可以进行检测。

    防火墙的种类

    通过保护范围,可以将防火墙分为两类:

    主机防火墙(firewalld),仅为当前主机服务

    网络防火墙(iptables)包过滤防火墙。访问控制,每个数据包的源IP地址,目的IP地址,端口号,协议等进行组合式监控,由此来监控数据包是否允许通过。

    通信的五要素和四要素分别是什么???

    五要素:源/目的IP 源/目的端口 协议

    四要素:源/目的IP 源/目的端口

     iptables的简介 

    IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
     

    Iptables的四表五链

    四表:

    表名作用
    raw连接跟踪,跟踪数据的一种机制。配置了之后,可以加快防火墙的穿越速度(关闭raw里面的追踪)
    mangle修改数据包的标记位规则
    nat地址转换的规则表
    filter包过滤规则表。根据预定义的规则,人工设置的规则,对符合条件的数据包进行过滤,也是iptables的默认表

    四个表是有优先级的:

    raw--->mangle--->nat--->filter

    五链

    链名作用

    prerouting链:

    处理数据包进入本机之间的规则

    input链:

    处理数据包进入本机的规则

    FORWARD:

    处理数据包转发到其他主机的规则

    output:

    处理本机发出的数据包的规则,一般不做处理

    一般对出口不做限制

    postouting:

    处理数据包离开本机之后的规则 NAT

    匹配流程

    四表五链的关系

     规则表的作用:容纳各种规则链

    规则链的作用:容纳各种防火墙的规则

    简单记忆就是:表中有链,链中有规则

    iptables管理选项

    格式:

     命令格式:
     iptables  [-t 表名]    管理选项    [链名]     [匹配条件]     [-j 控制类型]

    管理选项作用
    -A在指定链的末尾进行追加
    -I在指定链的行插入新的规则。可以指定插入规则的位置。
    -P修改默认策略(链的策略)
    -D删除
    -R修改,替换规则
    -L查看指定链的规则
    -n以数字形式显示规则
    -v查看详细信息
    --line-numbers给每个链中的规则进行编号查看。
    -F清空指定链当中的规则(慎用)
    -X清空自定义链的规则
    -t指定表名

    匹配条件

    匹配条件作用
    -p指定数据包的协议类型
    -s指定数据包的源IP地址
    -d指定数据包的目的IP地址
    -i指定数据包进入本机的网络接口
    -o指定数据包离开本机的时候使用的网络接口
    --sporrt指定源端口
    --dport指定目的端口号

    iptables控制类型(都是大写)

    格式:

    -j:控制类型

    控制类型作用
    ACCEPT允许数据包通过
    DROP拒绝数据包的通过,直接丢弃数据包,不给任何回应的信息
    REJECT拒绝,拒绝数据包通过,但是会给一个回显信息(回应信息)
    SNAT修改数据包的源地址
    DNAT修改数据包的目的地址

    DROP 和REJECT的区别前者是直接丢弃传输过来的数据包,并且不给予回应,使访问主机卡在访问页面没有任何提示。后者是拒绝该数据包的通过,并且给予访问主机提示,该访问被拒绝。 

    粗略查看默认规则

    iptables -L

    1. [root@hj opt]# iptables -nL
    2. 数字化显示

     注意:当-nL同时使用时,n一定要在L 的前面,否则会报错,使用-vnL时也是如此,L要在最后面

    查看入口处规则

    指定表查看(指定表中链的查看) 

    1. [root@hj opt]# iptables -vnL
    2. #默认显示是filter表

    [root@hj opt]# iptables -t nat  -vnL

    对表进行编号

    [root@hj opt]# iptables -t filter -vnL --line-numbers
    

    iptable命令匹配规则:

    从上往下按照顺序匹配,匹配到了规则,后面的规则就不再匹配

    这里我先将icmp协议关闭,然后再开启之后,也无法Ping通,是因为匹配规则是从上往下的顺序匹配,第一个匹配成功之后,接下来的规则就不再匹配

    通过 iptables -vnL INPUT --line-numbers查看,第一个匹配规则是REJECT,匹配成功,接下来的规则便不再执行,即ACCEPT命令不再执行。

    以上这种情况,可以用 -d 清空所有规则,再输入需要规则,但是太过于麻烦,有更优解:插入 ,即 iptables -I

    1. iptables -I INPUT 1 -p icmp -j ACCPET
    2. #此处的1,就是在INPUT(序号1)之前插入规则,即刻生效

    对指定编号删除

    iptables -D INPUT 2

    代码逻辑:

    先查--->根据编号--->指定删除

    对行的编号进行修改(不推荐使用)

    为了保险起见,我们可以尝试着先添加一条新的规则,确保新规则不会带来任何不利的影响再删除旧的规则(也能达到替换的效果)

    iptables -R INPUT 1 -p icmp -j ACCEPT

    查找--->编号--->修改

    如图,将第一行的规则REJECT修改为 ACCEPT

    以上都是IP+端口的匹配

    下面介绍 IP+端口+网段+接口(网卡设备)

    根据mac地址匹配

    1. [root@hj ~]# iptables -A INPUT -i ens33 -s 20.0.0.0/24 -j DROP
    2. 整个20.0.0.0网段的数据都不能从ens33设备走

    192.168.233.0整个网段不能用tcp.

    当有两个端口时,小的端口在前,大的端口在后

    -m:扩展模块,明确指定类型,多端口 MAC地址,IP范围

    1. [root@hj ~]# iptables -A INPUT -p tcp -m multiport ==dport 80,22,21,53 -j REJECT
    2. #要用逗号隔开

    根据范围匹配

    根据IP范围匹配

    自定义链

    通常是五链,但是Linux可以自定义链

    1. #1.添加自定义链
    2. iptables -N zzr
    3. #zzr为自定义链名
    4. iptables -vnL
    5. #查看即可
    6. iptables -I zzr 1 -p icmp -j ACCEPT

    自定义的链无法使用,需要将自定义链添加到系统当中

    添加系统当中后才能够使用

    iptables -I INPUT 1 -p icmp -j zzr

    如此,自定义链添加到系统中可以使用。

    删除自定义链

    因为创建自定义链时,是先创建,再添加到系统中,删除的话就按照上述步骤反推,先删除系统当中的自定义链,最后删除自定义链

    iptables -D INPUT 1

    删除自定义链

    即可

  • 相关阅读:
    【c语言】探索内存函数
    Audio Hijack for Mac 激活版:音频录制与处理软件
    TCP/IP网络江湖——江湖导航(网络层上篇)
    随手记录: 快乐终端 ohmyzsh macOS/Ubuntu 共用
    tailwindcss 如何在 uniapp 中使用
    Matlab:使用分类数组的好处
    共模干扰、差模干扰 以及运放共模抑制比(Common-mode rejection ratio, CMRR)
    C# Onnx Yolov8 Detect 涉黄检测
    【Spring入门学习】
    【期末网页设计】基于HTML学生信息管理系统网页项目的设计与实现
  • 原文地址:https://blog.csdn.net/qq_51506982/article/details/133614537