美文网首页
Linux-防火墙管理工具firewalld

Linux-防火墙管理工具firewalld

作者: yuanzicheng | 来源:发表于2019-03-30 18:36 被阅读0次

    防火墙作为网络安全的防护工具,在保障数据和服务安全方面发挥着重大作用。

    提到防火墙,接触Linux较早的朋友首先想到的是iptables(centos 6版本),centos 7推荐使用的是firewalld。然而,不管是iptalbes还是firewalld,其本身并不是防火墙,而是防火墙配置管理工具

    本文介绍的是firewalld工具的使用方法,对于具体的原理这里不作深究,iptables相关的内容也不在讨论范围内。

    1.firewalld安装

    使用yum安装

    sudo yum install -y firewalld
    

    使用systemctl启动firewalld

    # 启动
    sudo systemctl start firewalld
    # 开机启动
    sudo systemctl enable firewalld
    

    如果要停止或禁用firewalld

    # 停止
    sudo systemctl stop firewalld
    # 禁用
    sudo systemctl enable firewalld
    

    2.firewalld基本概念

    2.1 Zones

    区域:定义了网络连接的信任级别,firewalld提供了几种预先定义好的区域,我们可以根据需要选择合适的区域。

    区域 默认规则策略
    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.2 Services

    Service可以是一个local ports、protocols、destinations列表,使用预定义的服务使用户更容易启用和禁用对服务的访问。

    2.3 ICMP types

    Internet Control Message Protocol在IP协议中交换信息。ICMP types可以用来在firewalld中限制交换信息。

    # 显示预定义的ICMP types
    firewall-cmd --get-icmptypes
    
    2.4 Runtime configuration

    运行时配置:此配置在系统或服务重启后会失效。

    2.5 Permanent configuration

    永久配置 :此配置永久生效,使用firewall-cmd配置防火墙策略时需要添加--permanent选项才会将配置永久保存到配置文件中,另外使用firewall-cmd --reload可以将永久配置覆盖到运行配置并生效。

    2.6 Direct interface

    直接接口:此方式主要是为了适应对iptables比较熟悉却不适应firewalld的用户,使用--direct选项可以传递原始的iptables命令来配置防火墙策略。

    3.firewalld命令行工具

    firewall-cmd是firewalld的CLI版本管理工具,用来通过命令行配置防火墙策略。
    完整的firewall-cmd使用手册可以使用man firewall-cmdfirewall-cmd -h查看,这里介绍部分常用操作选项。

    3.1 Status Options
    # 检查firewalld状态
    firewall-cmd --state
    # 重新加载防火墙规则,保持状态信息
    firewall-cmd --reload
    # 重新加载防火墙规则,包括netfilter内核模块(仅当出现严重的防火墙问题时使用,会中断活动的网络连接)
    firewall-cmd --complete-reload
    # 将运行时配置永久保存到配置文件
    firewall-cmd --runtime-to-permanent
    
    3.2 Zone Options
    # 显示预定义的zones
    firewall-cmd --get-zones
    # 查看默认区域
    firewall-cmd --get-default-zone
    # 修改默认区域
    firewall-cmd --set-default-zone=<zone>
    # 查看网络接口使用的区域
    firewall-cmd --get-active-zones
    # 查看所有区域的所有配置
    sudo firewall-cmd --list-all-zones
    # 创建一个新的区域
    sudo firewall-cmd --new-zone=<zone> --permanent
    # 移除一个已存在的区域
    sudo firewall-cmd --delete-zone=<zone>
    # 指定区域(如果未指定则为默认区域)使用其它选项(见本文3.4章节)
    firewall-cmd --zone=<zone>
    # 查看指定区域的所有配置
    sudo firewall-cmd --zone=<zone> --list-all
    
    3.3 Service Options
    # 显示预定义的services
    sudo firewall-cmd --get-services
    # 显示指定service允许的端口和协议
    sudo firewall-cmd --service=<service> --get-ports --permanent
    # 为指定的service添加允许的端口和协议
    sudo firewall-cmd --service=<service> --add-port=<portid>[-<portid>]/<protocol>
    # 从指定的service移除允许的端口和协议
    sudo firewall-cmd --service=<service> --remove-port=<portid>[-<portid>]/<protocol>
    # 检查端口号和协议在指定的service是否允许
    sudo firewall-cmd --service=<service> --query-port=<portid>[-<portid>]/<protocol>
    
    3.4 Options to Adapt and Query Zones
    # 显示指定zone的所有策略
    sudo firewall-cmd --zone=<zone> --list-all 
    # 显示指定zone的所有service
    sudo firewall-cmd --zone=<zone> --list-services
    # 向指定zone添加允许的service
    sudo firewall-cmd --zone=<zone> --add-service=<service>
    # 从指定zone移除允许的service
    sudo firewall-cmd --zone=<zone> --remove-service=<service>
    # 显示指定zone的所有端口号和协议
    sudo firewall-cmd --zone=<zone> --list-ports
    # 向指定zone添加允许的端口和协议
    sudo firewall-cmd --zone=<zone> --add-port=<portid>[-<portid>]/<protocol>
    # 从指定zone移除允许的端口和协议
    sudo firewall-cmd --zone=<zone> --remove-port=<portid>[-<portid>]/<protocol>
    
    3.5 实例

    3.5.1 放行8080-8100的所有入口流量

    # 允许8080-8100端口的所有TCP流量,永久生效
    sudo firewall-cmd --zone=public --add-port=8080-8100/tcp --permanent
    # 立即生效
    sudo firewall-cmd --reload
    # 查看允许的端口号和协议
    sudo firewall-cmd --zone=public --list-ports
    

    3.5.2 放行8080-8081的所有http入口流量

    # 从public区域上移除允许的8080-8100的TCP入口流量
    # 如果没有进行3.5.1的操作,这一步可以忽略
    sudo firewall-cmd --zone=public --remove-port=8080-8081/tcp --permanent
    # 允许http服务上8080-8100端口的所有TCP流量,永久生效
    sudo firewall-cmd --service=http --add-port=8080-8100/tcp --permanent
    # 查看http服务上允许的端口号和协议
    sudo firewall-cmd --service=http --get-ports --permanent
    # 允许http服务的入口流量,永久生效
    sudo firewall-cmd --zone=public --add-service=http --permanent
    # 立即生效
    sudo firewall-cmd --reload
    

    3.5.3 仅允许本机通过TCP协议访问27017端口

    sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="127.0.0.1" port protocol="tcp" port="27017" accept" --permanent
    

    这里使用了--add-rich-rule来设置防火墙策略,关于详细的介绍可以使用man firewalld.richlanguage查看。

    4.firewalld图形界面工具

    firewall-config是firewalld的图形界面管理工具,即使不熟悉Linux命令也可以妥善配置防火墙策略。不过,本文对图形界面的操作就不一一赘述了,有需要的自行自行摸索或查阅相关资料。

    相关文章

      网友评论

          本文标题:Linux-防火墙管理工具firewalld

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