zoukankan      html  css  js  c++  java
  • CentOS 7 中配置Firewall规则

    1. 防火墙简介

    动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙,用以支持网络 zones” ,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IPv4和 IPv6 防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。

    2. 了解防火墙

    一个图像化的配置工具,firewall-config,用于配置 firewalld:它依次用 iptables工具 与执行数据包筛选的内核中的 Netfilter 通信,
    使用图像化的 firewall-config 工具,按下 Super 键进入活动总览,点击 firewall,然后按下 Enter。firewall-config 工具就出现了。您将被提示输入管理员密码。
    firewall-config 工具里有一个标记为 Configuration 的下拉菜单,可以在 运行时间 和 永久两种模式之间进行选择。要注意,如果您选择了 Permanent ,在左上角会出现一排附加的图标。因为不能在运行模式下改变一个服务参数,所以这些图标仅在永久配置模式中出现。
    由 firewalld 提供的是动态的防火墙服务,而非静态的。因为配置的改变可以随时随地立刻执行,不再需要保存或者执行这些改变。现行网络连接的意外中断不会发生,正如防火墙的所有部分都不需要重新下载。
    提供命令行客户端,firewall-cmd,用于进行永久性或非永久性运行时间的改变,正如在 man firewall-cmd(1)所解释的一样。永久性改变需要按照 firewalld(1) 手册页的解释来进行。注意, firewall-cmd 命令可以由 root 用户运行,也可以由管理员用户——换言之, wheel 群体的成员运行。在后一种情况里,命令将通过 polkit 进程来授权。
    firewalld 的配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 里的各种 XML 文件里,这样保持了这些文件被编辑、写入、备份的极大的灵活性,使之可作为其他安装的备份等等。
    其他应用程序可以使用 D-bus 和 firewalld 通信。

    3. 比较 system-config-firewall 以及 iptables 的 firewalld

    firewalld 和 iptables service 之间最本质的不同是:
    • iptables service 在 /etc/sysconfig/iptables 中储存配置,而 firewalld 将配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件里,。要注意,当 firewalld 在Red Hat Enterprise Linux上安装失败时, /etc/sysconfig/iptables文件就不存在。
    • 使用 iptables service,每一个单独更改意味着清除所有旧有的规则和从 /etc/sysconfig/iptables里读取所有新的规则,然而使用 firewalld 却不会再创建任何新的规则;仅仅运行规则中的不同之处。因此,firewalld 可以在运行时间内,改变设置而不丢失现行连接。
    使用 iptables tool 与内核包过滤对话也是如此。

    4. 对网络区的理解

    基于用户对网络中设备和交通所给与的信任程度,防火墙可以用来将网络分割成不同的区域。 NetworkManager 通知 firewalld 一个接口归属某个区域。接口所分配的区域可以由 NetworkManager 改变,也可以通过能为您打开相关 NetworkManager 窗口的 firewall-config 工具进行。
    /etc/firewalld/的区域设定是一系列可以被快速执行到网络接口的预设定。列表并简要说明如下:
    drop(丢弃)
    任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
    block(限制)
    任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。
    public(公共)
    在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。
    external(外部)
    特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。
    dmz(非军事区)
    用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
    work(工作)
    用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。
    home(家庭)
    用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。
    internal(内部)
    用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。
    trusted(信任)
    可接受所有的网络连接。
    指定其中一个区域为默认区域是可行的。当接口连接加入了 NetworkManager,它们就被分配为默认区域。安装时,firewalld 里的默认区域被设定为公共区域。

    如果你的系统上没有安装使用命令安装

    安装firewalld 防火墙

    yum install firewalld

    开启服务

    systemctl start firewalld.service

    关闭防火墙

    systemctl stop firewalld.service

    开机自动启动

    systemctl enable firewalld.service

    关闭开机制动启动

    systemctl disable firewalld.service

    使用firewall-cmd 命令

    查看状态firewall-cmd --state //running 表示运行

    获取活动的区域

    firewall-cmd --get-active-zones

    这条命令将用以下格式输出每个区域所含接口:
    <zone1>: <interface1> <interface2> ..<zone2>: <interface3> ..

    获取所有支持的服务

    firewall-cmd --get-service

    在不改变状态的条件下重新加载防火墙:

    firewall-cmd --reload

    启用某个服务

    firewall-cmd --zone=public --add-service=https //临时
    
    firewall-cmd --permanent --zone=public --add-service=https //永久

    开启某个端口

    firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp //永久
    
    firewall-cmd --zone=public --add-port=8080-8081/tcp //临时

    删除某个端口

    firewall-cmd --permanent --zone=public --remove-port=8080-8081/tcp

    使用命令加载设置firewall-cmd --reload

    新增一个zone,如新增 k8s,新增的配置文件会存放在 /etc/firewalld/zones 目录下

    firewall-cmd --new-zone=k8s --permanent

    将网络接口eth0 添加到k8s zones,一个zone 可以添加多个网络接口,但是一个网络接口只能加入一个 zone(一定要加ssh服务)

     firewall-cmd --zone=k8s --add-interface=eth0

    如网络接口 eth0 已经存在其他zone,首先查找eth0 接口当前在那个zone(假设查询在 publich zone),然后将 eth0 接口从所在的 zone 删除

    firewall-cmd --get-zone-of-interface=eth0
    firewall-cmd --zone=public --remove-interface=eth0

    查看开启的端口和服务

    firewall-cmd --permanent --zone=public --list-services //服务空格隔开 例如 dhcpv6-client https ss
    
    firewall-cmd --permanent --zone=public --list-ports //端口空格隔开 例如 8080-8081/tcp 8388/tcp 80/tcp

    设置某个ip 访问某个服务

    firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"

    ip 192.168.0.4/24 访问 http

    删除上面设置的规则

    firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"

    检查设定是否生效

    iptables -L -n | grep 21
    ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW

    执行命令firewall-cmd --list-all
    显示:

    public (default)
    interfaces:
    sources:
    services: dhcpv6-client ftp ssh
    ports:
    masquerade: no
    forward-ports:
    icmp-blocks:
    rich rules:

    查询服务的启动状态

    firewall-cmd --query-service ftp
    yes
    firewall-cmd --query-service ssh
    yes
    firewall-cmd --query-service samba
    no
    firewall-cmd --query-service http
    no

    自行加入要开放的 Port

    firewall-cmd --add-port=3128/tcp
    firewall-cmd --list-all
    public (default)
    interfaces:
    sources:
    services: dhcpv6-client ftp ssh
    ports: 3128/tcp
    masquerade: no
    forward-ports:
    icmp-blocks:
    rich rules:
    

      参考:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/security_guide/sec-using_firewalls

  • 相关阅读:
    泛微云桥e-Bridge 目录遍历,任意文件读取
    (CVE-2020-8209)XenMobile-控制台存在任意文件读取漏洞
    selenium 使用初
    将HTML文件转换为MD文件
    Python对word文档进行操作
    使用java安装jar包出错,提示不是有效的JDK java主目录
    Windows server 2012安装VM tools异常解决办法
    ifconfig 命令,改变主机名,改DNS hosts、关闭selinux firewalld netfilter 、防火墙iptables规则
    iostat iotop 查看硬盘的读写、 free 查看内存的命令 、netstat 命令查看网络、tcpdump 命令
    使用w uptime vmstat top sar nload 等命令查看系统负载
  • 原文地址:https://www.cnblogs.com/Dev0ps/p/11394225.html
Copyright © 2011-2022 走看看