• linux之iptables防火墙


    centos中的防火有:

    1、iptables,是一个Linux平台中的包过滤防火

    2、firewalld,是一个同时拥有命令行终端和图形化界面的防火

    3、ebtables,是一款以太网桥防火

    所谓防火墙也称之为防护墙,它是一种位于内部网络与外部网络之间的网络安全系统。一项信息安全的防护系统。按照给定的规则,允许或者限制网络报文通过。

    • 硬件防⽕墙:通过硬件和软件的组合,基于硬件的防⽕墙保护整个内部网络安全。(例如 华为E9000)
    • 软件防⽕墙:通过纯软件,单独使⽤软件系统来完成防⽕墙功能,保护安装它的系统。
    • 大型公司都是以硬件防火墙为主,软件防火墙为辅。软件防火墙根据情况来决定是否开启,如 果服务器性能不够,可能会关闭软件防火墙。

       四表五链概念

    • filter表——过滤数据包
    • Nat表——用于网络地址转换(IP、端口)
    • Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS(修改数据包内容)
    • Raw表——决定数据包是否被状态跟踪机制处理
    • INPUT链——进来的数据包应用此规则链中的策略
    • OUTPUT链——外出的数据包应用此规则链中的策略
    • FORWARD链——转发数据包时应用此规则链中的策略
    • PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)(再路由转发前目的地址前修改的)
    • POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)(在路由转发后源地址作修改的)

         表中有链,链中有规则  iptabls用户态  netfilter 内核态

          规则链内部的匹配顺序:

    • 自上向下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志)
    • 若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许)

        使用iptables命令行配置规则

    命令格式:

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

    控制类型              作用                    控制类型必须为大写

    ACCEPT允许数据包通过(默认)
    DROP直接丢弃数据包,不给出任何回应信息
    REJECT拒绝数据包通过,会给数据发送端一个响应信息
    SNAT修改数据包的源地址      postrouting链
    DNAT修改数据包的目的地址     prerouting 链
    MASQUERADE伪装成一个非固定公网IP地址
    LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。LOG只是一种辅助动作,并没有真正处理数据包

     匹配条件:

     规则配置示例

           查看规则 -nL       -t  指定表名进行修改   不指定时默认为filter 表

    添加规则 -A -I

    -A,在末尾追加规则。

    -I,在指定位置前插入规则。如果不指定,则在首行插入

     -j,  指定控制类型

     

     

     删除  —D     iptables -D INPUT 2

     按内容删除规则

     原有规则

     

    注意:

         1. -F 仅仅是清空链中的规则,并不影响 -p 设置的默认规则,默认规则需要手动进行修改

         2.  -p 设置了DROP后.使用-F 一定要小心!

         #防止把允许远程和连接的相关规则清楚后导致无法远程连接主机,此情况如果没有保存

           规则可重启主机解决

           3. 如果不写表名和链名,默认清空filter表中所有链里的所有规则。 

        

     修改策略 -P

     

    方法二:重新启动服务器

      

    如何添加内容并修改策略

     iptables -P INPUT ACCEPT

     iptables -P FORWARD ACCEPT

     iptables -P OUTPUT ACCEPT

     iptables -F   清空链中的规则并不影响-P生成的规则,默认规则需要手动修改

     iptables -A INPUT -s 192.168.61.20 -j ACCEPT

     iptables -A INPUT -m state --state ESTABLISHED RELATED -j  ACCEPT

     iptables -p INPUT DROP

    1.  iptables -A INPUT ! -p icmp -j ACCEPT  
    2. #没有-t指定表,就是指默认表filter表 # !代表条件取反,不是icmp的都放通  
    3. iptables -A INPUT -s 192.168.72.10 -j REJECT  #拒绝从哪个主机发数据包过来(-s指定了源地址)
    4.  iptables -I INPUT -i ens33 -s 192.168.80.0/24 -j DROP  #在行首插入规则,丢弃该网段从ens33
    5. 网卡进来的数据包

     

    ICMP类型匹配

    --icmp-type ICMP类型

    ICMP类型可以是字符串、数字代码:

    ICMP类型含义
    Echo-Request (代码为8)表示请求
    Echo- -Reply (代码为0)表示回显
    Dest ination-Unreachable (代码为3)表示目标不可达

     

    多端口匹配

    • -m multiport --sport 源端口列表
    • -m multiport --dport 目的端口列表

     

    IP范围匹配

    • -m iprange --src-range 源IP范围
    • -m iprange --dst-range 目的IP范围

     

    MAC地址匹配

    格式:

     -m mac -- -mac- source MAC地址 

     TCP标记匹配

      --tcp-flags TCP标记

       ​​​​​​

     

     

    状态匹配

     -m state --state连接状态

    NEW                     主机连接目标主机,在目标主机上看到的第一个想要连接的包

    ESTABLISHED     主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就                                  进入该状态

    RELATED             主机已与目标主机进行通信,目标主机发起新的链接方式,一般与                                              ESTABLISHED配合使用

    INVALID              无效的封包,例如数据破损的封包状态
     

     总结

     Linux防火墙的两个组件:

        1. 内核态 netfilter(保存包过滤处理的规则集)

    .    2.用户态 iptables(防火墙规则管理工具)

       

    匹配顺序

    1)数据包到达防火墙时,规则表之间的优先顺序:raw >mangle > nat > filter。

    2)规则链之间的匹配顺序:

    • 入站数据(来自外界的数据包,且目标地址是防火墙本机):PREROUTING --> INPUT -->本机的应用程序
    • 出站数据(从防火墙本机向外部地址发送的数据包):本机的应用程序---->OUTPUT ----->POSTROUTING
    • 3)链中的规则集:从上往下一次匹配,匹配到规则即停止,若都没有匹配到则按默认策略处理

      管理选项

            

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

    • 增:-A 在末尾添加,-I 在指定位置插入
    • 删:-D 删除指定规则,-F 清空所有规则
    • 改:-R,或者-A 添加后 -D 删除
    • 查:-nL 以数字形式显示,--line-numbers 显示规则的序号
    • 设置默认策略:-P
    • 设置白名单时要先修改规则,最后在设置默认策略,这样就不会直接断开ssh

     匹配条件

    • -p tcp|udp|icmp
    • -s 源IP
    • -d 目的IP
    • -i 入站网卡
    • -o 出站网卡

  • 相关阅读:
    【Maven系列】maven基础(三)
    yarn安装及使用
    ORACLE集群管理-19C RAC重新配置IPV6
    SASS常用内置函数
    第二十章《Java Swing》第5节:常用组件
    CSDN客诉周报第6期|本周解决25个用户问题,修复1个漏洞,收到4条建议
    nvm管理多个版本的nodejs
    .NET CORE 完美支持AOT 的 ORM SqlSugar 教程
    C/C++之(一)洛谷刷题及洛谷评测
    家庭收支记账管理系统(Java+Web+MySQL)
  • 原文地址:https://blog.csdn.net/weixin_59629968/article/details/126845321