您的位置:首页 > 运维架构 > Linux

Firewalld使用方法

2016-03-28 12:11 441 查看

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端口是开放的,所以直接修改配置文件:

先查看/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>


每次改配置文件还是比较麻烦的,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>}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Firewalld Linux