IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    RHEL7中防火墙firewalld的配置

    小憩闲人发表于 2014-11-15 10:28:44
    love 0

    在RHEL7里有几种防火墙共存:firewalld、iptables、ebtables,默认使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。因为这几个daemon是冲突的建议禁用其他的几种服务:

        systemctl mask iptables(ip6tables,ebtables)

    wps3F68 tmp RHEL7中防火墙firewalld的配置(1)

    在firewalld中使用了区域(zone)的概念,默认已经定义了几个zone:

    wps3F79 tmp RHEL7中防火墙firewalld的配置(1)

    zone的解释:

    wps3F7A tmp RHEL7中防火墙firewalld的配置(1)

    数据包要进入到内核必须要通过这些zone中的一个,而不同的zone里定义的规则不一样(即信任度不一样,过滤的强度也不一样)。可以根据网卡所连接的网络的安全性来判断,这张网卡的流量到底使用哪个zone,比如上图来自eth0的流量全部使用zone1的过滤规则,eth1的流量使用zone3。一张网卡同时只能绑定到一个zone。大家就可以把这些zone想象成进入火车站(地铁)的安检,不同的入口检测的严格度不一样。

    默认的几个zone(由firewalld 提供的区域按照从不信任到信任的顺序排序):

    drop

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

    block

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

    public(默认)

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

    external

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

    dmz

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

    work

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

    home

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

    internal

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

    trusted

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

    查看当前的默认的区域:

    wps3F8A tmp RHEL7中防火墙firewalld的配置(1)

    设置默认的区域:

    wps3F8B tmp RHEL7中防火墙firewalld的配置(1)

    给某个区域开启某个服务

    wps3F8C tmp RHEL7中防火墙firewalld的配置(1)

    关闭某个服务:

    wps3F8D tmp RHEL7中防火墙firewalld的配置(1)

    如果没有指定zone的话,则是在默认的zone上操作。

    查看某个zone上是否允许某个服务:

    wps3F9E tmp RHEL7中防火墙firewalld的配置(1)

    在firewalld里添加一个端口,这样就可以访问了:

    wps3F9F tmp RHEL7中防火墙firewalld的配置(1)

    查看开启了哪些端口:

    wps3FA0 tmp RHEL7中防火墙firewalld的配置(1)

    查看某个接口是属于哪个zone的:

    wps3FA1 tmp RHEL7中防火墙firewalld的配置(1)

    把接口加入到某个zone:

    wps3FA2 tmp RHEL7中防火墙firewalld的配置(1)

    查看某个zone里开启了哪些服务、端口、接口:

    wps3FB3 tmp RHEL7中防火墙firewalld的配置(1)

    现在默认的zone是trusted,虽然现在已经不允许http访问了,但是还能访问,为什么?

    记住:因为trusted是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为trusted是允许所有连接的。

    有多个不同的zone,每个zone定义的规则是不一样的,因为所有的数据都是从网卡进入,到底使用哪个zone的规则,关键就在于这个网卡是在哪个区域的,比如下面的例子:

    wps3FB4 tmp RHEL7中防火墙firewalld的配置(1)

    现在eth0是在public这个zone里的,此时public是允许http的:

    wps3FB5 tmp RHEL7中防火墙firewalld的配置(1)

    但是默认的zone是external,且不允许http访问:

    wps3FC5 tmp RHEL7中防火墙firewalld的配置(1)

    但是浏览器却能访问,证明了上面的说法。

    如果改变eth0所在的zone,比如改到external:

    wps3FC6 tmp RHEL7中防火墙firewalld的配置(1)

    则访问不了:

    wps3FC7 tmp RHEL7中防火墙firewalld的配置(1)

    下面验证下源地址的意思:

    网卡的source地址,也能决定可以使用哪个zone,新添加了一张网卡,此网卡开始默认不属于任何的zone:

    wps3FC8 tmp RHEL7中防火墙firewalld的配置(1)

    此时通过访问eth1来访问web是访问不了的:

    wps3FC9 tmp RHEL7中防火墙firewalld的配置(1)

    下面我们给public设置source,来自源192.168.30.0/24网段的都走public区:

    wps3FDA tmp RHEL7中防火墙firewalld的配置(1)

    wps3FDB tmp RHEL7中防火墙firewalld的配置(1)

    通过验证,现在访问是成功的。

    如果在external里面同时也加入192.168.30.0/24这个源呢?

    wps3FDC tmp RHEL7中防火墙firewalld的配置(1)

    显示为冲突,即一个源只能属于一个zone,不能同时属于多个zone。

    以上是对tcp协议做的实验,下面对ICMP做一些演示:

    首先获取firewalld所支持的ICMP类型:

    wps3FDD tmp RHEL7中防火墙firewalld的配置(1)

    记住:默认情况下是允许所有类型的ICMP通过。

    wps3FEE tmp RHEL7中防火墙firewalld的配置(1)

    下面阻断public的request的包:

    wps3FEF tmp RHEL7中防火墙firewalld的配置(1)

    这样凡是进来的是echo-request类型的包都会被拒绝,因为public是和eth0绑定在一块的,所以ping 192.168.2.130的时候是不通的:

    wps3FF0 tmp RHEL7中防火墙firewalld的配置(1)

    删除此规则:

    wps3FF1 tmp RHEL7中防火墙firewalld的配置(1)

    -端口的转发

    wps3FF2 tmp RHEL7中防火墙firewalld的配置(1)

    意思是凡是来从external进来的22端口的数据包全部转发到192.168.30.254

    wps4002 tmp RHEL7中防火墙firewalld的配置(1)

    验证:

    wps4003 tmp RHEL7中防火墙firewalld的配置(1)

    更详细的写法,可以指定目标端口的:

    wps4004 tmp RHEL7中防火墙firewalld的配置(1)

    wps4015 tmp RHEL7中防火墙firewalld的配置(1)

    查询:

    wps4016 tmp RHEL7中防火墙firewalld的配置(1)

    删除:

    wps4017 tmp RHEL7中防火墙firewalld的配置(1)

    未完待续…



沪ICP备19023445号-2号
友情链接