• Linux系统firewalld防火墙的应用实操(禁止屏蔽海外国外IP访问)


    一、前文

    二、ipset知识点

    • ipset是ip地址的集合。
    • firewalld使用ipset可以在一条规则中处理多个ip地址,执行效果更好,管理更方便。
    • firewalld的ipset会记录到/etc/firewalld/ipsets/目录下

    2.1 ipset的增删查

    #新建一个ip集合,--type=hash:ip    指定类型为 hash:ip,不允许重复ip
    firewall-cmd --permanent --new-ipset=china_ip --type=hash:ip
    
    #删除一个ip集合
    firewall-cmd --permanent --delete-ipset=china_ip
    
    #查询所有ip集合
    firewall-cmd --permanent --get-ipsets
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.2 ipset的ip地址修改

    #ipset添加ip
    firewall-cmd --permanent --ipset=china_ip --add-entry=121.122.123.105
    
    #从文件中添加ip到ipset
    firewall-cmd --permanent --ipset=china_ip --add-entries-from-file=china_ip_list.txt
    
    #ipset删除ip
    firewall-cmd --permanent --ipset=china_ip --remove-entry=121.122.123.105
    
    #判断ip是否存在ipset中
    firewall-cmd --permanent --ipset=china_ip --query-entry=121.122.123.105
    
    firewall-cmd --reload
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.3 ipset的其他查询

    more /etc/firewalld/ipsets/china_ip.xml
    
    #打印ipset的路径
    firewall-cmd --path-ipset=china_ip --permanent
    
    #打印ipset的内容
    firewall-cmd --info-ipset=china_ip --permanent
    
    #打印ipset的所有entry
    firewall-cmd --ipset=china_ip --get-entries --permanent
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    三、应用实操

    • 禁止屏蔽海外国外IP访问有两种方法
      • 允许所有IP,禁止国外IP
      • 禁止所有IP,允许国内IP
    • 相对而言,禁止所有IP,允许国内IP更容易些。
    • 因为,相比收集国内IP集合会更加容易些。

    3.1 下载国内ip网段

    [root@iZ2ze30dygwd6yh7gu6lskZ home]# wget https://www.isres.com/china_ip_list.txt
    --2022-08-15 11:46:01--  https://www.isres.com/china_ip_list.txt
    Resolving www.isres.com (www.isres.com)... 45.136.15.104
    Connecting to www.isres.com (www.isres.com)|45.136.15.104|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 95267 (93K) [text/plain]
    Saving to: ‘china_ip_list.txt’
    
    china_ip_list.txt                                   100%[==================================================================================================================>]  93.03K   419KB/s    in 0.2s    
    
    2022-08-15 11:46:02 (419 KB/s) - ‘china_ip_list.txt’ saved [95267/95267]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.2 新建ip集合

    firewall-cmd --permanent --new-ipset=china_ip --type=hash:net
    
    firewall-cmd --permanent --ipset=china_ip --add-entries-from-file=china_ip_list.txt
    
    • 1
    • 2
    • 3

    3.3 添加规则

    firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source ipset="china_ip"  port port=80 protocol=tcp accept'
    firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source ipset="china_ip"  port port=8080 protocol=tcp accept'
    firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source ipset="china_ip"  port port=443 protocol=tcp accept'
    firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source ipset="china_ip"  port port=8443 protocol=tcp accept'
    firewall-cmd --reload
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.4 有点耐心

    • firewall处理大量IP的时候,会卡住,需要点耐心
    ERROR:dbus.proxies:Introspect error on :1.32902:/org/fedoraproject/FirewallD1/config: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
    
    • 1
    • 如果遇到报错,那就升级下firewalld试试
    [root@iZ2ze30dygwd6yh7gu6lskZ home]# firewall-cmd --reload
    Error: COMMAND_FAILED: '/usr/sbin/nft insert rule inet firewalld raw_PREROUTING_ZONES iifname "eth0" goto raw_PRE_public' failed: Error: Could not process rule: No such file or directory
    insert rule inet firewalld raw_PREROUTING_ZONES iifname "eth0" goto raw_PRE_public
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
    • 1
    • 2
    • 3
    • 4
    [root@iZ2ze30dygwd6yh7gu6lskZ home]# systemctl stop firewalld
    [root@iZ2ze30dygwd6yh7gu6lskZ home]# yum install firewalls
    CentOS-8 - AppStream                                                                                                                                                                                                                         764 kB/s | 4.3 kB     00:00    
    CentOS-8 - Base                                                                                                                                                                                                                              148 kB/s | 3.9 kB     00:00    
    CentOS-8 - Extras                                                                                                                                                                                                                             55 kB/s | 1.5 kB     00:00    
    Extra Packages for Enterprise Linux 8 - x86_64                                                                                                                                                                                               135 kB/s | 4.7 kB     00:00    
    No match for argument: firewalls
    Error: Unable to find a match: firewalls
    [root@iZ2ze30dygwd6yh7gu6lskZ home]# yum install firewalld
    Last metadata expiration check: 0:00:04 ago on Wed 17 Aug 2022 12:23:38 AM CST.
    Package firewalld-0.7.0-5.el8.noarch is already installed.
    Dependencies resolved.
    =============================================================================================================================================================================================================================================================================
     Package                                                                   Architecture                                                Version                                                             Repository                                                   Size
    =============================================================================================================================================================================================================================================================================
    Upgrading:
     firewalld                                                                 noarch                                                      0.9.3-7.el8                                                         BaseOS                                                      502 k
     firewalld-filesystem                                                      noarch                                                      0.9.3-7.el8                                                         BaseOS                                                       77 k
     libnftnl                                                                  x86_64                                                      1.1.5-4.el8                                                         BaseOS                                                       83 k
     nftables                                                                  x86_64                                                      1:0.9.3-21.el8                                                      BaseOS                                                      321 k
     python3-firewall                                                          noarch                                                      0.9.3-7.el8                                                         BaseOS                                                      432 k
    Installing dependencies:
     python3-nftables                                                          x86_64                                                      1:0.9.3-21.el8                                                      BaseOS                                                       29 k
    
    Transaction Summary
    =============================================================================================================================================================================================================================================================================
    Install  1 Package
    Upgrade  5 Packages
    
    Total download size: 1.4 M
    Is this ok [y/N]: y
    Downloading Packages:
    (1/6): python3-nftables-0.9.3-21.el8.x86_64.rpm                                                                                                                                                                                              334 kB/s |  29 kB     00:00    
    (2/6): firewalld-filesystem-0.9.3-7.el8.noarch.rpm                                                                                                                                                                                           853 kB/s |  77 kB     00:00    
    (3/6): firewalld-0.9.3-7.el8.noarch.rpm                                                                                                                                                                                                      4.5 MB/s | 502 kB     00:00    
    (4/6): libnftnl-1.1.5-4.el8.x86_64.rpm                                                                                                                                                                                                       1.2 MB/s |  83 kB     00:00    
    (5/6): python3-firewall-0.9.3-7.el8.noarch.rpm                                                                                                                                                                                               5.1 MB/s | 432 kB     00:00    
    (6/6): nftables-0.9.3-21.el8.x86_64.rpm                                                                                                                                                                                                      2.7 MB/s | 321 kB     00:00    
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Total                                                                                                                                                                                                                                        6.8 MB/s | 1.4 MB     00:00     
    Running transaction check
    Transaction check succeeded.
    Running transaction test
    Transaction test succeeded.
    Running transaction
      Preparing        :                                                                                                                                                                                                                                                     1/1 
      Running scriptlet: libnftnl-1.1.5-4.el8.x86_64                                                                                                                                                                                                                         1/1 
      Upgrading        : libnftnl-1.1.5-4.el8.x86_64                                                                                                                                                                                                                        1/11 
      Running scriptlet: libnftnl-1.1.5-4.el8.x86_64                                                                                                                                                                                                                        1/11 
      Upgrading        : nftables-1:0.9.3-21.el8.x86_64                                                                                                                                                                                                                     2/11 
      Running scriptlet: nftables-1:0.9.3-21.el8.x86_64                                                                                                                                                                                                                     2/11 
      Installing       : python3-nftables-1:0.9.3-21.el8.x86_64                                                                                                                                                                                                             3/11 
      Upgrading        : python3-firewall-0.9.3-7.el8.noarch                                                                                                                                                                                                                4/11 
      Upgrading        : firewalld-filesystem-0.9.3-7.el8.noarch                                                                                                                                                                                                            5/11 
      Upgrading        : firewalld-0.9.3-7.el8.noarch                                                                                                                                                                                                                       6/11 
    warning: /etc/firewalld/firewalld.conf created as /etc/firewalld/firewalld.conf.rpmnew
    
      Running scriptlet: firewalld-0.9.3-7.el8.noarch                                                                                                                                                                                                                       6/11 
      Running scriptlet: firewalld-0.7.0-5.el8.noarch                                                                                                                                                                                                                       7/11 
      Cleanup          : firewalld-0.7.0-5.el8.noarch                                                                                                                                                                                                                       7/11 
      Running scriptlet: firewalld-0.7.0-5.el8.noarch                                                                                                                                                                                                                       7/11 
      Cleanup          : firewalld-filesystem-0.7.0-5.el8.noarch                                                                                                                                                                                                            8/11 
      Cleanup          : python3-firewall-0.7.0-5.el8.noarch                                                                                                                                                                                                                9/11 
      Running scriptlet: nftables-1:0.9.0-14.el8.x86_64                                                                                                                                                                                                                    10/11 
      Cleanup          : nftables-1:0.9.0-14.el8.x86_64                                                                                                                                                                                                                    10/11 
      Running scriptlet: nftables-1:0.9.0-14.el8.x86_64                                                                                                                                                                                                                    10/11 
      Cleanup          : libnftnl-1.1.1-4.el8.x86_64                                                                                                                                                                                                                       11/11 
      Running scriptlet: libnftnl-1.1.1-4.el8.x86_64                                                                                                                                                                                                                       11/11 
      Verifying        : python3-nftables-1:0.9.3-21.el8.x86_64                                                                                                                                                                                                             1/11 
      Verifying        : firewalld-0.9.3-7.el8.noarch                                                                                                                                                                                                                       2/11 
      Verifying        : firewalld-0.7.0-5.el8.noarch                                                                                                                                                                                                                       3/11 
      Verifying        : firewalld-filesystem-0.9.3-7.el8.noarch                                                                                                                                                                                                            4/11 
      Verifying        : firewalld-filesystem-0.7.0-5.el8.noarch                                                                                                                                                                                                            5/11 
      Verifying        : libnftnl-1.1.5-4.el8.x86_64                                                                                                                                                                                                                        6/11 
      Verifying        : libnftnl-1.1.1-4.el8.x86_64                                                                                                                                                                                                                        7/11 
      Verifying        : nftables-1:0.9.3-21.el8.x86_64                                                                                                                                                                                                                     8/11 
      Verifying        : nftables-1:0.9.0-14.el8.x86_64                                                                                                                                                                                                                     9/11 
      Verifying        : python3-firewall-0.9.3-7.el8.noarch                                                                                                                                                                                                               10/11 
      Verifying        : python3-firewall-0.7.0-5.el8.noarch                                                                                                                                                                                                               11/11 
    
    Upgraded:
      firewalld-0.9.3-7.el8.noarch                     firewalld-filesystem-0.9.3-7.el8.noarch                     libnftnl-1.1.5-4.el8.x86_64                     nftables-1:0.9.3-21.el8.x86_64                     python3-firewall-0.9.3-7.el8.noarch                    
    
    Installed:
      python3-nftables-1:0.9.3-21.el8.x86_64                                                                                                                                                                                                                                     
    
    Complete!
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88

    四、测试验证

    搞个国外的IP测试一下~

  • 相关阅读:
    基于Springboot实现漫画网站平台
    LeetCode19.删除链表的倒数第N个结点
    十三水中各种牌型判断LUA版
    基于Delta Lake构建数据湖仓体系
    MySQL数据库的基本概念以及MySQL8.0版本的部署(一)
    Node.js 20.6支持.env配置文件,加入C++垃圾回收函式库Oilpan
    为什么不能直接在链表上进行操作
    微信飞机大战小游戏编写分享(上)
    Linux必会100个命令(五十七)apt
    正大国际:期货结算价是如何理解呢?结算价有什么作用?
  • 原文地址:https://blog.csdn.net/kangweijian/article/details/126342726