当前位置:首页 > Linux > 正文内容

Firewalld 基础操作

sa2021-08-22Linux

默认规则列表:

区域默认规则策略
trusted允许所有的数据包
home拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、samba-client与dhcpv6-client服务相关,则允许流量
internal等同于home区域
work拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
public拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
external拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
block拒绝流入的流量,除非与流出的流量相关
drop拒绝流入的流量,除非与流出的流量相关

操作实例:

注:FirewallD的默认区域是public
firewall-cmd --reload #在不改变状态的条件下重新加载防火墙
永久打开端口需要reload一下,临时打开不用,如果用了reload临时打开的端口失效。
启动FirewallD服务:
systemctl enable firewalld.service #设置开机启动
systemctl start firewalld.service #开启服务

查看防火墙状态:
systemctl status firewalld

查看firewalld服务当前默认的区域:
firewall-cmd --get-default-zone
public

显示支持的区域列表
firewall-cmd --get-zones
[...]# block dmz drop external home internal public trusted work

把firewalld服务的当前默认区域设置为public:
firewall-cmd --set-default-zone=public
success
firewall-cmd --get-default-zone
public

设置为家庭区域
firewall-cmd --set-default-zone=home

查看当前正在使用的区域和网卡名称
firewall-cmd --get-active-zones
[...]# public
[...]# interfaces: eth0 eth1

查询ifcfg-eth0网卡在firewalld服务中的区域:
firewall-cmd --get-zone-of-interface=ifcfg-eth0
no zone

把firewalld服务中ifcfg-eth0网卡的默认区域修改为external,并在系统重启后生效。分别查看当前与永久模式下的区域名称:
firewall-cmd --permanent --zone=external --change-interface=ifcfg-eth0
success
firewall-cmd --get-zone-of-interface=ifcfg-eth0
public
firewall-cmd --permanent --get-zone-of-interface=ifcfg-eth0
external

临时修改网络接口 ifcfg-eth0 为内部区域(internal)
firewall-cmd --zone=internal --change-interface=ifcfg-eth0

永久修改网络接口ifcfg-eth0为内部区域(internal)
firewall-cmd --permanent --zone=internal --change-interface=ifcfg-eth0

显示所有公共区域(public)
firewall-cmd --zone=public --list-all
[...]# public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: cockpit dhcpv6-client ssh
ports: 22000/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

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

显示当前服务
firewall-cmd --list-services

显示服务列表
Amanda, FTP, Samba和TFTP等最重要的服务已经被FirewallD提供相应的服务,可以使用如下命令查看:
firewall-cmd --get-services
[...]# RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client ...

查询public区域是否允许请求SSH和HTTPS协议的流量:
firewall-cmd --zone=public --query-service=ssh
yes
firewall-cmd --zone=public --query-service=https
no

把firewalld服务中请求HTTP和HTTPS协议的流量(http服务和https服务)设置为允许,且永久生效,并立即生效:
firewall-cmd --zone=public --add-service=http
success
firewall-cmd --permanent --zone=public --add-service=http
success
firewall-cmd --zone=public --add-service=https
success
firewall-cmd --permanent --zone=public --add-service=https
success
firewall-cmd --reload
success

添加HTTP服务到内部区域(internal,注意与上面操作的区别)
firewall-cmd --permanent --zone=internal --add-service=http

把firewalld服务中请求HTTP协议的流量设置为永久拒绝,并立即生效:
firewall-cmd --permanent --zone=public --remove-service=http
success
firewall-cmd --reload
success

临时允许Samba服务通过600秒
firewall-cmd --zone=public --add-service=samba --timeout=600

查看已开放的端口
firewall-cmd --list-ports
22000/tcp 80/tcp

把在firewalld服务中访问8080和8081端口的流量策略设置为允许,但仅限当前生效:
firewall-cmd --zone=public --add-port=8080-8081/tcp
success
firewall-cmd --zone=public --list-ports
8080-8081/tcp

打开TCP的8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent (--permanent永久生效,没有此参数重启后失效)

打开443/TCP端口
firewall-cmd --add-port=443/tcp

永久打开3306/TCP端口
firewall-cmd --permanent --add-port=3306/tcp

永久打开一个端口段
firewall-cmd --permanent --add-port=1000-2000/tcp

将8080端口的流量转发至8081
firewall-cmd --add-forward-port=port=8080:proto=tcp:toport=8081


版权声明:本文由观止于行发布,如需转载请注明出处。

本文链接:https://zhangchen.cc/?id=13

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。