zoukankan      html  css  js  c++  java
  • CENTOS 7 firewalld详解,添加删除策略

    一、CENTOS7中FIREWALL防火墙

    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
    修改防火墙配置文件之前,需要对之前防火墙【/etc/firewalld/zones/public.xml】做好备份
    重启防火墙后,需要确认防火墙状态和防火墙规则是否加载,若重启失败或规则加载失败,则所有请求都会被防火墙。
    1.firewall-cmd --state           #查看firewall的状态
      firewall-cmd --list-all        #查看防火墙规则(只显示/etc/firewalld/zones/public.xml中防火墙策略)
      firewall-cmd --list-all-zones  #查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略)
      firewall-cmd --reload          #重新加载配置文件
    2、关闭firewall:
      systemctl stop firewalld.service      #停止firewall
      systemctl disable firewalld.service   #禁止firewall开机启动
      firewall-cmd --state                  #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
    3、firewalld的基本使用
      启动: systemctl start firewalld
      查看状态: systemctl status firewalld
      停止: systemctl disable firewalld
      禁用: systemctl stop firewalld
    4.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
      启动一个服务:systemctl start firewalld.service
      关闭一个服务:systemctl stop firewalld.service
      重启一个服务:systemctl restart firewalld.service
      显示一个服务的状态:systemctl status firewalld.service
      在开机时启用一个服务:systemctl enable firewalld.service
      在开机时禁用一个服务:systemctl disable firewalld.service
      查看服务是否开机启动:systemctl is-enabled firewalld.service
      查看已启动的服务列表:systemctl list-unit-files|grep enabled
      查看启动失败的服务列表:systemctl --failed
    5.配置firewalld-cmd
      查看版本: firewall-cmd --version
      查看帮助: firewall-cmd --help
      显示状态: firewall-cmd --state
      查看所有打开的端口: firewall-cmd --zone=public --list-ports
      更新防火墙规则: firewall-cmd --reload
      查看区域信息:  firewall-cmd --get-active-zones
      查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
      拒绝所有包:firewall-cmd --panic-on
      取消拒绝状态: firewall-cmd --panic-off
      查看是否拒绝: firewall-cmd --query-panic

    二、防火墙配置文件

    复制代码
    [root@node ~]# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
    INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
    INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
    DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    FORWARD_direct  all  --  0.0.0.0/0            0.0.0.0/0           
    FORWARD_IN_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
    FORWARD_IN_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
    FORWARD_OUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0           
    FORWARD_OUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0           
    DROP       all  --  0.0.0.0/0            0.0.0.0/0            ctstate INVALID
    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    OUTPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0           
    
    Chain FORWARD_IN_ZONES (1 references)
    target     prot opt source               destination         
    FWDI_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 
    FWDI_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 
    
    Chain FORWARD_IN_ZONES_SOURCE (1 references)
    target     prot opt source               destination         
    
    Chain FORWARD_OUT_ZONES (1 references)
    target     prot opt source               destination         
    FWDO_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 
    FWDO_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 
    
    Chain FORWARD_OUT_ZONES_SOURCE (1 references)
    target     prot opt source               destination         
    
    Chain FORWARD_direct (1 references)
    target     prot opt source               destination         
    
    Chain FWDI_public (2 references)
    target     prot opt source               destination         
    FWDI_public_log  all  --  0.0.0.0/0            0.0.0.0/0           
    FWDI_public_deny  all  --  0.0.0.0/0            0.0.0.0/0           
    FWDI_public_allow  all  --  0.0.0.0/0            0.0.0.0/0           
    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    
    Chain FWDI_public_allow (1 references)
    target     prot opt source               destination         
    
    Chain FWDI_public_deny (1 references)
    target     prot opt source               destination         
    
    Chain FWDI_public_log (1 references)
    target     prot opt source               destination         
    
    Chain FWDO_public (2 references)
    target     prot opt source               destination         
    FWDO_public_log  all  --  0.0.0.0/0            0.0.0.0/0           
    FWDO_public_deny  all  --  0.0.0.0/0            0.0.0.0/0           
    FWDO_public_allow  all  --  0.0.0.0/0            0.0.0.0/0           
    
    Chain FWDO_public_allow (1 references)
    target     prot opt source               destination         
    
    Chain FWDO_public_deny (1 references)
    target     prot opt source               destination         
    
    Chain FWDO_public_log (1 references)
    target     prot opt source               destination         
    
    Chain INPUT_ZONES (1 references)
    target     prot opt source               destination         
    IN_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 
    IN_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto] 
    
    Chain INPUT_ZONES_SOURCE (1 references)
    target     prot opt source               destination         
    
    Chain INPUT_direct (1 references)
    target     prot opt source               destination         
    
    Chain IN_public (2 references)
    target     prot opt source               destination         
    IN_public_log  all  --  0.0.0.0/0            0.0.0.0/0           
    IN_public_deny  all  --  0.0.0.0/0            0.0.0.0/0           
    IN_public_allow  all  --  0.0.0.0/0            0.0.0.0/0           
    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    
    Chain IN_public_allow (1 references)
    target     prot opt source               destination         
    ACCEPT     tcp  --  172.17.134.13        0.0.0.0/0            tcp dpt:2181 ctstate NEW
    ACCEPT     all  --  172.17.134.13        0.0.0.0/0           
    ACCEPT     all  --  172.17.172.236       0.0.0.0/0         
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 ctstate NEW
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8715 ctstate NEW
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 ctstate NEW
    
    Chain IN_public_deny (1 references)
    target     prot opt source               destination         
    
    Chain IN_public_log (1 references)
    target     prot opt source               destination         
    
    Chain OUTPUT_direct (1 references)
    target     prot opt source               destination 
    
    [root@node ~]# cat /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="8715"/>
      <port protocol="tcp" port="80"/>
      <rule family="ipv4">
        <source address="172.17.134.13"/>
        <port protocol="tcp" port="2181"/>
        <accept/>
      </rule>
      <rule family="ipv4">
        <source address="172.17.134.13"/>
        <accept/>
      </rule>
      <rule family="ipv4">
        <source address="172.17.172.236"/>
        <accept/>
      </rule>
    </zone>
    复制代码

    三、CENTOS7的FIREWALLD开启端口/IP、屏蔽IP

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    开启防火墙:systemctl start firewalld
    查看开放的端口和服务以及屏蔽的IP:firewall-cmd --zone=public --list-all
    查看系统中查看系统中可用的服务:firewall-cmd --get-services
    添加端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
    查看:firewall-cmd --zone= public --query-port=80/tcp
    添加端口段:firewall-cmd --zone=public --add-port=5060-5061/udp --permanent
    添加IP+端口:firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="0.0.0.0/24" port protocol="tcp" port="10050" accept"
    删除端口:firewall-cmd --permanent --zone=public --remove-port=8080/tcp
    删除IP+端口:firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="10.0.5.0/24" port protocol="tcp" port="10050" accept"
    屏蔽IP(reject):firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=43.229.53.61 reject"
    屏蔽IP(drop)  : firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address='x.x.x.x/24'  drop"
    热加载才能生效:firewall-cmd --reload
    查看屏蔽结果:firewall-cmd --list-rich-rules
    因为在/usr/lib/firewalld/services/中事先定义了ssh.xml的相应的规则

    四、FIREWALLD防火墙 禁止/限制 特定用户的IP访问,DROP和REJECT区别

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    1.drop禁止特定ip连接ssh/22服务
      firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address='x.x.x.x/24' service name='ssh' drop"
      firewall-cmd --reload ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
     
    2.reject禁止特定ip连接ssh/22服务
      firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='x.x.x.x/24' service name='ssh' reject"
      firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='x.x.x.x/24' port port=22 protocol=tcp reject"
      firewall-cmd --reload
    3.accept运行特定ip连接ssh/22服务
      firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address='x.x.x.x/24' port port=22 procotol=tcp accept"
      firewall-cmd --reload
    防火墙内的策略动作有DROP和REJECT两种,区别如下:
    1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。
    2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,
    参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
     
        至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高
    的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因
    此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则
    的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。
     
        一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必
    要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓******的进度(
  • 相关阅读:
    asp.net项目发布网上-当前自定义错误设置禁止远程查看应用程序
    TortoiseSVN提交文件的时候卡死
    TortoiseSVN,排除不想提交文件的方法(转)
    VS2010 发布网站时文件丢失
    SQL SERVER2012秘钥
    QTP常用功能
    XAMPP和Bugfree详细教程
    模块
    匿名函数、函数递归与二分法、面向过程
    迭代器、生成式、生成器
  • 原文地址:https://www.cnblogs.com/aqicheng/p/14173253.html
Copyright © 2011-2022 走看看