• centos防火墙firewall-cmd限定特定的ip访问


    firewall-cmd是什么?

    firewall-cmd是centos防火墙的命令行管理客户端,提供了接口来管理运行时和持久的防火墙配置。
    在firewalld中,运行时配置与永久配置是分开的。这意味着您可以在运行时配置或永久配置中进行更改。

    启动firewalld服务

    并设置开机自动启动(如果尚未启动)

    systemctl enable firewalld  
    systemctl start firewalld
    
    • 1
    • 2

    查看默认区域

    
    [root@localhost ~]# firewall-cmd --get-default-zone
    public
    
    
    • 1
    • 2
    • 3
    • 4

    如果不是public,改为public
    更改防火墙默认区域为public

    [root@localhost ~]# firewall-cmd --set-default-zone=public
    success
    
    
    • 1
    • 2
    • 3

    关闭端口访问

    确保端口关闭。如果已开放则关闭端口。此处区域中的端口如果开放,是所有ip都可以进行访问。

    #查询打开的端口
    firewall-cmd --zone=public --list-ports
    
    
    • 1
    • 2
    • 3

    关闭区域端口,如果端口未开启则无需关闭。

    #关闭端口9001
    firewall-cmd --zone=public --remove-port=9001/tcp --permanent
    #重新载入一下防火墙设置,使设置生效
    firewall-cmd --reload
    #查询打开的端口
    firewall-cmd --zone=public --list-ports
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    添加富规则

    只有富规则能进行精细化限制。区域规则会覆盖掉富规则。

    #允许192.168.1.118访问8081端口
    firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.118" port protocol="tcp" port="8081" accept'
    
    
    
    #重新载入一下防火墙设置,使设置生效
    firewall-cmd --reload
    #查看已设置规则
    firewall-cmd --zone=public --list-rich-rules
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    这样就可以限定特定的ip才能访问

    查看区域

    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: eth0
      sources:
      services: dhcpv6-client ssh
      ports:
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:
            rule family="ipv4" source address="192.168.1.118" port port="8081" protocol="tcp" accept
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    删除规则

    firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.119" port protocol="tcp" port="8081" accept'
    
    • 1

    firewall-cmd的区域概念

    trusted(信任区域)| 允许所有的传入流量。
    public(公共区域) 允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝。是新添加网络接口的默认区域。
    external(外部区域) 允许与ssh预定义服务匹配的传入流量其余均拒绝。
    home(家庭区域) 允许与ssh、mdns、samba-client或dhcpv6-client预定义服务匹配的传入流量,其他均拒绝。
    internal(内部区域) 默认值与home区域相同。
    work(工作区域) 允许与ssh、dhcpv6-client预定义服务匹配的传入流量,其他均拒绝
    dmz(隔离区域也称非军事区域) 允许与ssh预定义服务匹配的传入流量,其他均拒绝。
    block(限制区域) 拒绝所有传入流量。
    drop(丢弃区域) 丢弃所有传入流量,并且不产生包含icmp的错误响应。

    firewall-cmd的常用选项

    通用选项:

    
    
    -h, --help:
    这个选项用于打印简短的帮助文本并退出程序。当您不确定如何使用某个命令或需要查看其支持的功能时,可以使用此选项来获取帮助信息。
    
    -V, --version:
    这个选项用于打印firewalld的版本字符串。它不会与其他选项组合使用,也就是说,当您使用此选项时,其他选项将被忽略。通过查看版本信息,您可以了解当前安装的firewalld的版本和可能的特性。
    
    -q, --quiet:
    这个选项用于禁止打印状态消息。默认情况下,firewalld在执行某些操作时可能会输出状态消息,告诉您操作是否成功或提供了其他相关信息。如果您不想看到这些消息,可以使用此选项来静默执行命令。这在脚本或自动化任务中特别有用,因为您可能只想获取结果而不关心中间的过程信息。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    状态选项:

    
    
    --state:
    这个选项用于检查firewalld守护进程是否处于活动状态(即正在运行)。如果守护进程处于活动状态,则返回退出代码0;如果启动时出现故障,则返回RUNNING_BUT_FAILED;否则返回NOT_RUNNING。同时,它还会将状态信息打印到标准输出(STDOUT)。这可以帮助您快速了解firewalld的当前状态。
    
    --reload:
    这个选项用于重新加载防火墙规则,同时保持状态信息。当前的永久配置将变为新的运行时配置,也就是说,重新加载之前所做的仅针对运行时的更改(如果它们没有同时保存在永久配置中)将会丢失。请注意,通过直接接口应用的运行时更改不会受到影响,并将保持原样,直到firewalld守护进程完全重启。
    
    --complete-reload:
    这个选项用于完全重新加载防火墙,包括netfilter内核模块。这很可能会终止活动连接,因为状态信息会丢失。这个选项只应在出现严重的防火墙问题时使用,例如当存在状态信息问题导致无法建立正确防火墙规则的连接时。同样,通过直接接口应用的运行时更改不会受到影响,并将保持原样,直到firewalld守护进程完全重启。
    
    --runtime-to-permanent:
    这个选项用于保存当前的活动运行时配置,并用它覆盖永久配置。这通常是在配置firewalld时进行的,您只进行运行时更改,并在您对配置满意且测试了其按预期工作时,将配置保存到磁盘上。
    
    --check-config:
    这个选项用于对永久配置进行检查。这包括XML的有效性和语义检查。这可以帮助您在将配置应用到防火墙之前发现并修复潜在的问题。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    永久选项:

    --permanent:
    这个选项用于设置永久选项。使用--permanent选项所做的更改不会立即生效,而是在服务重启/重新加载或系统重新启动后生效。如果不使用--permanent选项,更改将仅作为运行时配置的一部分。
    
    如果您想在运行时和永久配置中都进行更改,请使用相同的命令,一次包含--permanent选项,一次不包含。
    
    --permanent选项可以可选地添加到下面所有支持该选项的命令中。这意味着,当您想要更改防火墙的规则或设置时,如果想要这些更改在重启后仍然保持,您应该添加--permanent选项。这样,您就可以确保即使系统重新启动,您的防火墙配置也会保持不变。
    
    总的来说,--permanent选项允许您管理防火墙的持久配置,确保更改在系统重启后仍然有效。这对于维护长期稳定的防火墙设置非常有用。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    区域选项:

    
    
    --get-default-zone:
    这个选项用于打印连接和接口的默认区域。默认区域是当没有为连接或接口选择特定区域时所使用的区域。通过此选项,您可以查看当前设置的默认区域。
    
    --set-default-zone=zone:
    这个选项用于设置连接和接口的默认区域。当没有为连接或接口指定区域时,将使用此默认区域。设置默认区域会更改那些使用默认区域的连接或接口的区域设置。这是一个运行时和永久性的更改,意味着更改将立即生效,并且在系统重启后仍然保持。
    
    --get-active-zones:
    这个选项用于打印当前活动的区域,以及这些区域中使用的接口和源。活动区域是那些与接口或源有绑定的区域。输出格式将列出每个区域,并显示该区域中的接口和源。如果某个区域没有绑定任何接口或源,则相应的行将被省略。这可以帮助您了解哪些区域当前处于活动状态,以及这些区域中使用了哪些接口和源。
    
    这些区域选项提供了对firewalld中区域配置的灵活管理,使您能够查看和更改默认区域,以及了解哪些区域当前处于活动状态。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    关于分布式数据库 TiDB与OceanBase 哪家强?
    咖啡技术培训:6款创意咖啡拿铁教程
    孟非、刘震云组团旅行,带你领略《非来不可》的大美中国
    安塔利斯升级php8
    Golang的性能优化
    Ubuntu20.04: UE4.27 中 Source Code 的编辑器下拉框没有 Rider选项
    【Linux】WSL2与VMware切换使用
    【Linux】gcc/g++ && gdb 使用
    网络安全—黑客技术—自学笔记
    A股上市公司MSCI指数和ESG评级效果(2010-2021年)
  • 原文地址:https://blog.csdn.net/gsl371/article/details/136727997