• Linux 防火墙firewalld


    1、列出所有支持的 zone 和查看当前的默认 zone:
    [root@lxjtest ~]# systemctl start firewalld
    [root@lxjtest ~]# firewall-cmd --get-zones
    block dmz drop external home internal public trusted work
    [root@lxjtest ~]# firewall-cmd --get-default-zone
    public

    区域(zone)说明如下:
    iptables service 在 /etc/sysconfig/iptables 中储存配置
    firewalld 将配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件里

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

    3、每加载一项 service 配置就意味着开放了对应的端口访问,使用下面的命令分别列出所有支持的 service 和查看当前 zone 种加载的 service:
    [root@lxjtest services]# firewall-cmd --get-services
    RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 .....
    [root@lxjtest services]# firewall-cmd --list-services
    dhcpv6-client ssh

    4、动态添加一条防火墙规则
    [root@lxjtest services]# firewall-cmd --add-port=12345/tcp --permanent
    success
    如果需要使规则保存到 zone 配置文件,则需要加参数 –permanent
    [root@lxjtest services]# cat /etc/firewalld/zones/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="12345"/>
    <forward-port to-addr="192.168.1.9" to-port="22" protocol="tcp" port="123"/>
    <rule family="ipv4">
    <source address="192.168.10.0/24"/>
    <service name="ssh"/>
    <reject/>
    </rule>
    </zone>
    [root@lxjtest services]#

    5、防火墙启停及状态查询
    [root@lxjtest services]# systemctl start firewalld.service
    [root@lxjtest services]# systemctl stop firewalld.service
    [root@lxjtest services]# systemctl enable firewalld.service --添加到系统服务
    [root@lxjtest services]# systemctl disable firewalld.service --从系统服务移除
    [root@lxjtest services]# systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
    Active: active (running) since Thu 2017-08-10 12:40:05 EDT; 1min 1s ago
    Main PID: 7007 (firewalld)
    CGroup: /system.slice/firewalld.service
    └─7007 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

    Aug 10 12:40:04 lxjtest.rusky.com systemd[1]: Starting firewalld - dynamic firewall daemon...
    Aug 10 12:40:05 lxjtest.rusky.com systemd[1]: Started firewalld - dynamic firewall daemon.

    6、重新加载配置文件
    重新加载防火墙,并不中断用户连接,即不丢失状态信息:
    [root@lxjtest services]# firewall-cmd --reload
    重新加载防火墙并中断用户连接,即丢弃状态信息:
    [root@lxjtest services]# firewall-cmd --complete-reload
    注意:通常在防火墙出现严重问题时,这个命令才会被使用。比如,防火墙规则是正确的,但却出现状态信息问题和无法建立连接。

    7、获取所有支持的ICMP类型
    [root@lxjtest services]# firewall-cmd --get-icmptypes
    destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement.....

    8、其它常用命令
    查看Firewalld服务当前所使用的zone区域:
    # firewall-cmd --get-default-zone

    查询eno16777728网卡在Firewalld服务中的zone区域:
    # firewall-cmd --get-zone-of-interface=eno16777728

    把Firewalld防火墙服务中eno16777728网卡的默认区域修改为external,重启后再生效:
    # firewall-cmd --permanent --zone=external --change-interface=eno16777728
    # firewall-cmd --get-zone-of-interface=eno16777728
    # firewall-cmd --permanent --get-zone-of-interface=eno16777728

    把Firewalld防火墙服务的当前默认zone区域设置为:
    # firewall-cmd --set-default-zone=
    # firewall-cmd --get-default-zone

    启动/关闭Firewalld防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用。):
    # firewall-cmd --panic-on
    # firewall-cmd --panic-off

    查询在区域中的ssh与https服务请求流量是否被允许:
    # firewall-cmd --zone= --query-service=ssh
    # firewall-cmd --zone= --query-service=https

    把Firewalld防火墙服务中https服务的请求流量设置为永久允许,并当前立即生效:
    # firewall-cmd --zone= --add-service=https
    # firewall-cmd --permanent --zone= --add-service=https
    # firewall-cmd --reload

    把Firewalld防火墙服务中http服务的请求流量设置为永久拒绝,并当前立即生效:
    # firewall-cmd --permanent --zone= --remove-service=http
    # firewall-cmd --reload

    把Firewalld防火墙服务中8080和8081的请求流量允许放行,但仅限当前生效:
    # firewall-cmd --zone= --add-port=8080-8081/tcp
    # firewall-cmd --zone= --list-ports

    把原本访问本机888端口号的请求流量转发到22端口号,要求当前和长期均有效:
    流量转发命令格式:firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
    # firewall-cmd --permanent --zone= --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
    # firewall-cmd --reload

    # firewall-cmd --permanent --zone= --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
    # firewall-cmd --reload

  • 相关阅读:
    js简单的双向绑定
    angular的$scope
    angular一些冷门的用法
    堆栈
    angular一些有启发的博客
    160830、如何运用最新的技术提升网页速度和性能
    160829、Java加解密与数字签名
    160826、浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘
    160825、互联网架构,如何进行容量设计?
    160824、ionic添加地图站点
  • 原文地址:https://www.cnblogs.com/rusking/p/7365609.html
Copyright © 2020-2023  润新知