Firewalld使用方法

RHEL7中的FirewallD支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项,被称作动态管理防火墙,也就是说不需要重启整个防火墙便可应用更改,不过貌似其实现方式还是和iptables一样的,但是不像mariaDB那样兼容MySQL命令,FirewallD无法解析由 ip*tables 和 ebtables 命令行工具添加的防火墙规则

FirewallD使用区域(zone)的概念来管理,每个网卡对应一个zone,这些zone的配置文件可在/usr/lib/firewalld/zones/下看到,默认的是public,其他区域:
drop

任何流入网络的包都被丢弃,不作出任何响应,只允许流出的网络连接。即使开放了某些服务(比如http),这些服务的数据也是不允许通过的。

block

任何进入的网络连接都被拒绝,并返回 IPv4  icmp-host-prohibited 报文或者 IPv6  icmp6-adm-prohibited 报文。只允许由该系统初始化的网络连接。

public(默认)

用以可以公开的部分。你认为网络中其他的计算机不可信并且可能伤害你的计算机,只允许选中的服务通过。

external

用在路由器等启用伪装的外部网络。你认为网络中其他的计算机不可信并且可能伤害你的计算机,只允许选中的服务通过。

dmz

用以允许隔离区(dmz)中的电脑有限地被外界网络访问,只允许选中的服务通过。

work

用在工作网络。你信任网络中的大多数计算机不会影响你的计算机,只允许选中的服务通过。

home

用在家庭网络。你信任网络中的大多数计算机不会影响你的计算机,只允许选中的服务通过。

internal

用在内部网络。你信任网络中的大多数计算机不会影响你的计算机,只允许选中的服务通过。

trusted

允许所有网络连接,即使没有开放任何服务,那么使用此zone的流量照样通过(一路绿灯)。 

由上可以看见服务器的话使用默认zone就可以了,当然你可以设置所在zone:

#firewall-cmd --set-default-zone=public
firewalld安装和配置

可以通过yum轻松安装firewalld:

#yum install firewall

开启/关闭服务,注意RHEL7使用systemctl代替service和chkconfig管理服务,小心如果是远程操作主机必需确保ssh端口是默认开放的,不然开启后你就连不上了,具体后面会细说:

#systemctl start firewalld.sevice
#systemctl stop firewalld.sevice

服务自启动:

#systemctl enable firewalld.service

fierwalld可以直接修改配置文件进行配置,也可以通过配置工具的命令,这里因为是远程操作为了确保开启后ssh端口是开放的,所以直接修改配置文件:

  1. 先查看/etc/firewalld/firewalld.conf中DefaultZone的值,默认是DefaultZone=public,这时/etc/firewalld/zones/目录下应该有个public.xml文件,vi打开它修改成:

     <?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="dhcpv6-client"/>
       <service name="ssh"/>
       <service name="http"/>
       <service name="https"/>
     </zone>
    

    这就代表在public zone中开放ssh(22)、http(80)、https(443)端口,其中对应每一个在/usr/lib/firewalld/services/下*.xml文件定义好的服务类型,比如http.xml文件如下:

     <?xml version="1.0" encoding="utf-8"?>
             <service>
               <short>WWW (HTTP)</short>
               <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
               <port protocol="tcp" port="80"/>
             </service>
    

    所以也可以直接在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="dhcpv6-client"/>
               <service name="ssh"/>
               <port protocol="tcp" port="80"/> #等效的
               <service name="https"/>
             </zone>
    
  2. 每次改配置文件还是比较麻烦的,firewalld可以使用firewall-config和firewall-cmd进行配置,前者是由于GUI模式下,后者为命令行下工具,一些常用命令如下:

     # Check firewall state.
     firewall-cmd --state
    
     # Check active zones.
     firewall-cmd --get-active-zones
    
     # Check current active services.
     firewall-cmd --get-service
    
     # Check services that will be active after next reload.
     firewall-cmd --get-service --permanent
     
     #reload the config after making any changes.
     firewall-cmd --reload
    

    设置默认区域为trusted,注意trusted是信任等级最高的,默认允许所有连接,即使没有设置任何的服务

     firewall-cmd --set-dedault-zone=trusted
    

    添加http服务

     firewall-cmd --add-service=http
    

    禁用某种服务

     firewall-cmd [--zone=<zone>] --remove-service=<service>
    

    查询区域中是否启用了特定服务,如果服务启用,将返回1,否则返回0

     firewall-cmd [--zone=<zone>] --query-service=<service>
    

    在firewalld里添加一个端口

     firewall-cmd --add-port=8080/tcp
    

    查询开启的端口

     firewall-cmd --query-poert=8080/tcp
    

    关闭端口

     firewall-cmd [--zone=<zone>] --remove-poert=<port>/tcp
    

    启用区域端口和协议组合,此举将启用端口和协议的组合。端口可以是一个单独的端口或者是一个端口范

     firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]
    

    启用区域的ICMP阻塞功能

     firewall-cmd [--zone=<zone>] --add-icmp-block=<icmptype>
    

    在区域中永久启用端口转发或映射

     firewall-cmd [--zone=<zone>] --add-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address>}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值