美文网首页linux设置123hjg
CentOS firewall防火墙配置

CentOS firewall防火墙配置

作者: 岑吾 | 来源:发表于2020-06-04 23:36 被阅读0次

    CentOS7之后默认使用了firewall防火墙。

    一、基本操作

    # 查看是否开启
    firewall-cmd --state
    
    # 启动
    systemctl start firewalld
    
    # 停止
    systemctl stop firewalld
    
    # 重启
    systemctl restart firewalld.service
    
    # 开机启动
    systemctl enable firewalld.service
    
    # 开机禁用
    systemctl disable firewalld
    
    # 重新加载防火墙配置
    firewall-cmd --reload
    
    # 查看所有状态
    firewall-cmd --list-all
    
    # 查看public区域所有打开的端口
    firewall-cmd --zone=public --list-ports
    

    二、开放、禁用端口

    1. 开放端口

    firewall-cmd --zone=public --add-port=80/tcp --permanent
    

    80-端口号
    tcp-协议
    --permanent -使设置永久生效,不加的话机器重启之后失效

    2. 禁用端口

    防火墙相当于白名单,从列表里删除就可以禁用对应的端口了

    firewall-cmd --zone=public --remove-port=80/tcp --permanent
    

    3. 批量开放或限制端口

    firewall-cmd --zone=public --add-port=6000-7000/tcp --permanent
    firewall-cmd --zone=public --remove-port=6000-7000/tcp --permanent
    

    三、开放或限制IP

    可以针对IP操作,可以指定某ip访问某端口,也能禁用某ip访问某端口。

    1. 端口针对某ip开放

    firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.55" port protocol="tcp" port="80" accept"
    

    2. 限制ip访问端口

    firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.55" port protocol="tcp" port="80" reject"
    

    3. 开放或限制IP地址段

    这里用子网掩码的表格来表示。如:192.168.0.0~192.168.0.255 用 192.168.0.0/24表示

    # 允许访问
    firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/24" port protocol="tcp" port="80" accept"
    
    # 限制访问
    firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/24" port protocol="tcp" port="80" reject"
    

    四、配置文件

    firewalld防火墙配置是/etc/firewalld/zones/public.xml,我们也可以通过修改配置文件来设置防火墙

    <?xml version="1.0" encoding="utf-8"?>
    <zone>
      <short>Public</short>
      <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
      <service name="ssh"/>
      <service name="dhcpv6-client"/>
      <port protocol="tcp" port="8080"/>
      <rule family="ipv4">
        <source address="192.168.0.55"/>
        <port protocol="tcp" port="80"/>
        <accept/>
      </rule>
      <rule family="ipv4">
        <source address="192.168.0.0/24"/>
        <port protocol="tcp" port="21"/>
        <reject/>
      </rule>
    </zone>
    

    五、设置区域

    1. 常用的区域名称及策略规则

    区域(noze) 默认策略规则
    trusted 允许所有的数据包进出
    home 拒绝进入的流量,除非与出去的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许进入
    Internal 等同于home区域
    work 拒绝进入的流量,除非与出去的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许进入
    public 拒绝进入的流量,除非与出去的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许进入
    external 拒绝进入的流量,除非与出去的流量相关;而如果流量与ssh服务相关,则允许进入
    dmz 拒绝进入的流量,除非与出去的流量相关;而如果流量与ssh服务相关,则允许进入
    block 拒绝进入的流量,除非与出去的流量相关
    drop 拒绝进入的流量,除非与出去的流量相关

    2. 查看网卡及所在区域

    $ firewall-cmd --list-all
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: eno1
      sources: 
      services: ssh dhcpv6-client
      ports: 
      protocols: 
      masquerade: no
      forward-ports: 
      source-ports: 
      icmp-blocks: 
    

    target:目标
    icmp-block-inversion:ICMP协议类型黑白名单开关(yes/no)
    interfaces:关联的网卡接口
    sources:来源,可以是IP地址,也可以是mac地址
    services:允许的服务
    ports:允许的目标端口,即本地开放的端口
    protocols:允许通过的协议
    masquerade:是否允许伪装(yes/no),可改写来源IP地址及mac地址
    forward-ports:允许转发的端口
    source-ports:允许的来源端口
    icmp-blocks:可添加ICMP类型,当icmp-block-inversion为no时,这些ICMP类型被拒绝;当icmp-block-inversion为yes时,这些ICMP类型被允许。
    rich rules:富规则,即更细致、更详细的防火墙规则策略,它的优先级在所有的防火墙策略中也是最高的。

    可以看到当前激活(active)区域是public,区域下关联的网卡有eno1

    3. 设置区域相关操作

    # 查看默认当前使用的区域
    firewall-cmd --get-default-zone
    
    #查看系统默认活动区域名称、来源地址和关联的网卡
    firewall-cmd --get-active-zones
    
    #查看所有可用区域
    firewall-cmd --get-zones
    
    #查看指定网卡所在的区域
    firewall-cmd --get-zone-of-interface=eno1
    
    # 设置默认区域
    firewall-cmd --set-default-zone=public
    
    # 设置区域关联网卡
    firewall-cmd --permanent --zone=drop --change-interface=eno1
    
    # 区域中添加关联网卡
    firewall-cmd --zone=drop -add-interface=eno1
    
    # 区域中移除关联网卡
    firewall-cmd --zone=drop -remove-interface=eno1
    

    六、注意注意!!

    1. 修改之后记得使用firewall-cmd --reload重新加载配置使之生效。

    2. 如果你是用ssh连接上去修改的防火墙,如果之前防火墙未启用,你在启用之前先查看一下配置文件,是否有<service name="ssh"/>或开放了ssh对应的22端口。否则,当你启动防火墙之后,你将无法再用ssh连接服务器了。

    相关文章

      网友评论

        本文标题:CentOS firewall防火墙配置

        本文链接:https://www.haomeiwen.com/subject/ickozhtx.html