• firewalld


    firewalld状态

    启动服务,并在系统引导时启动该服务:
    	systemctl start firewalld
    	systemctl enable firewalld
    
    停止并禁用:
    	systemctl stop firewalld
    	systemctl disable firewalld
    
    查看firewalld守护进程状态
    	systemctl status firewalld
    
    检查防火墙状态
    	firewall-cmd --state
    
    重新加载配置
    	firewall-cmd --reload
    

    配置集

    firewalld使用两个配置集:"运行时" 和 "持久"。在系统重新启动或重新启动firewalld时,不会保留运行时的配置,而对持久配置集的更改不会应用于正在运行的系统
    
    默认情况下,firewalld命令适用于运行时配置,但使用"--permanent"标志将保存到持久配置中
    因此我们要想修改firewalld规则要立即生效并且持久保存,有以下两种方法:
        1、将规则同时添加到持久规则和运行时规则集中
            firewall-cmd --zone=public --add-service=http --permanet
            firewall-cmd --zone=public --add-service=http
        
        2、将规则添加到持久规则集中并重新加载firewalld
            firewall-cmd --zone=public --add-service=http
            "然后执行 :firewall-cmd --reload"
    

    区域

    防火墙的区域是针对给定位置或场景(例如家庭、公共、受信任等)可能具有各种信任级别人预想构建规则。
    不同区域允许不同的网络服务和入站流量类型,而拒绝其他任何流量。首次启动firewalld,public是默认的区域
    
    查看默认的区域
        [root@c1 ~]# firewall-cmd --get-default-zone
        public
    
    查看网络接口使用的区域
        [root@c1 ~]# firewall-cmd --get-active-zones
        public
           interfaces: enp0s3 enp0s8
    
    查看指定区域的所有配置
        firewall-cmd --zone=public --list-all
    
    查看所有区域的配置
        firewall-cmd --list-all-zones
    
    修改默认区域
        firewall-cmd --set-default-zone=internal
    

    服务规则

    firewalld可以根据特定网络服务的预备定义规则来允许相关流量。我们可以创建自定义系统规则,并将它们添加到任何区域。
    默认支持的服务配置文件位于/usr/lib/firewalld/services,用户创建的服务文件在/etc/firewalld/services中
    
    要查看默认的可用服务
        firewall-cmd --get-services
    
    比如,要启用或禁用HTTP服务
        firewalld-cmd --zone=public --add-service=http --permanent
        firewalld-cmd --zone=public --remove-service=http --permanent
    
    我们通过查看firewall-cmd --get-services,默认支持的服务里面没有redis,现在,我想自定义可以这样做:
        1、复制/usr/lib/firewalld/services下面的http服务配置文件到/etc/firewalld/services并改名为redis
            cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/redis.xml
            
        2、修改reids.xml
            # vim /etc/firewalld/services/redis.xml
            <?xml version="1.0" encoding="utf-8"?>
    		<service>
    		  <short>Redis Server</short>
    		  <description>Redis is an open source (BSD licensed), in-memory data structure store</description>
    		  <port protocol="tcp" port="6379"/>
    		</service>
    		
    	3、现在我们就可以直接使用redis名字了
    	    firewall-cmd --zone=public --add-service=redis --permanent
    	    firewall-cmd --reload
    
    当然,我们也可以使用端口号
    	firewall-cmd --zone=public --add-port=6379/tcp --permanent
    	firewall-cmd --zone=public --remove-port=6379/tcp --permanent
    

    端口转发

    将本地端口80的流量转发到IP地址为192.168.88.3的远程服务器上的8080端口
    
    1、在区域中激活masquerade
    	firewall-cmd  --zone=public --add-masquerade   #只要激活,/prodet/ipv4/ip_forward的值就会变为1
    2、添加转发规则
    	firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.88.3
    
    3、删除的话就把add改为remove
    

    构建规则

    以下是如何使用 FirewallD 为你的服务器配置基本规则(如果您正在运行 web 服务器)
    
    1、将 eth0 的默认区域设置为 dmz。 在所提供的默认区域中,dmz(非军事区)是最适合于这个程序的,因为它只允许 SSH 和 ICMP
        firewall-cmd --set-default-zone=dmz
        firewall-cmd --zone=dmz --add-interface=eth0
    
    2、把 HTTP 和 HTTPS 添加永久的服务规则到 dmz 区域中:
        firewall-cmd --zone=dmz --add-service=http --permanent
        firewall-cmd --zone=dmz --add-service=https --permanent
    
    3、重新加载 FirewallD 让规则立即生效
        firewall-cmd --reload
    
    4、如果你运行 firewall-cmd --zone=dmz --list-all, 会有下面的输出
        dmz (default)
          interfaces: eth0
          sources:
          services: http https ssh
          ports:
          masquerade: no
          forward-ports:
          icmp-blocks:
          rich rules:
    
    这告诉我们,dmz 区域是我们的默认区域,它被用于 eth0 接口中所有网络的源地址和端口。 允许传入 HTTP(端口 80)、HTTPS(端口 443)和 SSH(端口 22)的
    流量,并且由于没有 IP 版本控制的限制,这些适用于 IPv4 和 IPv6。 不允许IP 伪装以及端口转发。 我们没有 ICMP 块,所以 ICMP
    流量是完全允许的。没有丰富Rich规则,允许所有出站流量
    

    高级配置

    允许来自主机192.168.88.3的所有ipv4流量
    	firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.88.3 accept'
    
    
    拒绝来自主机192.168.88.3的22端口ipv4流量
    	firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.88.3" port port=22 protocol=tcp reject'
    
    
    允许来自主机192.168.88.3的80端口的ipv4的TCP流量,并将其流量转发到6532端口
    	firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=192.168.88.3 forward-port port=80 protocol=tcp to-port=6532'
    	意思是:192.168.88.3访问防火墙主机的80端口,会转发到访问防火墙主机的6532端口
    

      

      

  • 相关阅读:
    qt自定义的串口类判断断开
    ubuntu16.04永久修改有线接口名称(enp0s3->eth0)
    记录一下读过的书
    Qt 主界面卡死
    Mysql5.7及版本以上导入sql提示Incorrect date value: '0000-00-00' for column
    webpack打包css
    ant-design-vue中的a-directory-tree更换图标
    解决php-fpm占用内存过高问题
    centos,解压源代码安装,没有configure文件
    OSS存储上遇到The difference between the request time and the current time is too large
  • 原文地址:https://www.cnblogs.com/sellsa/p/7788618.html
Copyright © 2020-2023  润新知