码迷,mamicode.com
首页 > 其他好文 > 详细

firewall的zone和service

时间:2020-09-11 16:09:32      阅读:35      评论:0      收藏:0      [点我收藏+]

标签:ted   应急   ack   就是   int   数据包   永久   发送   策略配置   

firewalld

打开firewalld
systemctl disable iptables //关闭iptables
systemctl stop iptables //禁止iptables开机启动
systemctl enable firewalld //开启firewalld
systemctl start firewalld //让firewalld开机启动

firewalld的9个zone

firewalld默认有9个zone
默认zone为public

drop(丢弃):任何接收的网络数据包都被丢弃,没有回复。仅能有发送出去的网络连接;
block(限制):任何接收的网络连接都会被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited所拒绝;
public(公共):在公共区域内使用,不能相信网络中的其他计算机不会队你造成危害,只接收经过选取的连接;
external(外部):为路由器启用伪装功能的外部网络。只接收经过选取的连接;
dmz(非军事区):用于你的非军事区的电脑,此区域内可以公开访问,可以有限的进入内部网络;只接收经过选取的连接;
work(工作):用于工作区,基本相信网络内的其它计算机;只接收经过选取的连接;
home(家庭):用于家庭网络,基本相信网络内的其他计算机;只接收经过选取的连接;
internal(内部):用于内部网络,基本相信;只接收经过选取的连接;
trusted(信任):可以接受所有的物理链接;

查询默认的区域名称

--get-default-zone

设置默认的区域,使其永久生效

--set-default-zone=<区域名称>

显示可用的区域

--get-zones

显示预先定义的服务

--get-services

显示当前正在使用的区域与网卡名称

--get-active-zones

将源自此 IP 或子网的流量导向指定的区域

--add-source=

不再将源自此 IP 或子网的流量导向某个指定区域

--remove-source=

将源自该网卡的所有流量都导向某个指定区域

--add-interface=<网卡名称>

显示当前区域的网卡配置参数、资源、端口以及服务等信息

--change-interface=<网卡名称> 将某个网卡与区域进行关联
--list-all

显示所有区域的网卡配置参数、资源、端口以及服务等信息

--list-all-zones

设置默认区域允许该服务的流量

--add-service=<服务名>

设置默认区域允许该端口的流量

--add-port=<端口号/协议>

设置默认区域不再允许该服务的流量

--remove-service=<服务名>

让“永久生效”的配置规则立即生效,并覆盖当前的配置规则

--remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量
--reload

开启应急状况模式

--panic-on

关闭应急状况模式

--panic-off

查看系统所有zone

firewall-cmd --get-zones
[root@jinkai ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

查询系统默认的zone

firewall-cmd --get-default-zone
[root@jinkai ~]# firewall-cmd --get-default-zone
Public

更改系统默认的zone

Firewall-cmd --set-default-zone=work
[root@jinkai ~]# firewall-cmd --set-default-zone=work
success
[root@jinkai ~]# firewall-cmd --get-default-zone
work

查询指定网卡所在的zone
firewall-cmd --get-zone-of-interface=ens33
[root@jinkai ~]# firewall-cmd --get-zone-of-interface=ens33
work

查询所有网卡所在zone

firewall-cmd --get-active-zones
[root@jinkai ~]# firewall-cmd --get-active-zones
work
interfaces: ens33 ens37

给指定网卡设置zong
firewall-cmd --zone=dmz --add-interface=lo
lo默认是没有zone的,可以给lo指定一个zone

[root@jinkai ~]# firewall-cmd --zone=block --add-interface=lo
success
[root@jinkai ~]# firewall-cmd --get-active-zones
work
interfaces: ens33 ens37
block
interfaces: lo

针对网卡更改zone
firewall-cmd --zone=work --change-interface=lo
lo原先为block zone针对网卡lo更改zone为work;

[root@jinkai ~]# firewall-cmd --get-zone-of-interface=lo
block
[root@jinkai ~]# firewall-cmd --zone=work --change-interface=lo
success
[root@jinkai ~]# firewall-cmd --get-zone-of-interface=lo
work

针对网卡删除zone

firewall-cmd --zone=dmz --remove-interface=lo
针对网卡lo删除掉zone;
[root@jinkai ~]# firewall-cmd --zone=work --remove-interface=lo
success
[root@jinkai ~]# firewall-cmd --get-zone-of-interface=lo
no zone

firewalld的service操作
列出当前系统所有的service

firewall-cmd --get-services

查看当前zone下有哪些service

firewall-cmd --list-services
[root@jinkai ~]# firewall-cmd --list-services
ssh dhcpv6-client

查看指定zone下有哪些service

firewall-cmd --zone=work --list-services

查看work下有哪些service

[root@jinkai ~]# firewall-cmd --zone=work --list-services
ssh dhcpv6-client

增加新的service到zone下,默认不加指定参数,为存在于内存中生效,重启后失效
firewall-cmd --zone=public --add-service=http
将http服务增加到public下;

[root@jinkai ~]# firewall-cmd --zone=public --add-service=http
success
[root@jinkai ~]# firewall-cmd --zone=public --list-services
ssh dhcpv6-client http

删除zone中指定的service
firewall-cmd --zone=public --remove-service=http
将public中的http服务删除掉;

[root@jinkai ~]# firewall-cmd --zone=public --remove-service=http
success
[root@jinkai ~]# firewall-cmd --zone=public --list-services
ssh dhcpv6-client

永久增加service到zone下,会写入配置文档中
zone的配置文档:/etc/firewalld/zones (一旦更改某个zone的模板配置文件,就会在这个目录下生产对应zong的配置文件xml后缀)
zone的模板文档:/usr/lib/firewalld/zones
Service的配置文档:/etc/firewalld/services
service的模板文档:/usr/lib/firewalld/services
firewall-cmd --zone=public --add-service=http --perma

将http服务增加到public下,并写入配置文档中,后面加参数 --permanent;可以通过新生产的配置文档public.xml查看;查询list-services是没有的,必须重启才有效;

[root@jinkai ~]# firewall-cmd --zone=public --add-service=http --permanent
Warning: ALREADY_ENABLED: http
success
[root@jinkai ~]# 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="ssh"/>
<service name="dhcpv6-client"/>
<service name="http"/>
</zone>
[root@jinkai ~]#

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

[root@linuxprobe ~]# firewall-cmd --panic-on
success
[root@linuxprobe ~]# firewall-cmd --panic-off
Success

查询 public 区域是否允许请求 SSH 和 HTTPS 协议的流量:

[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
no

把在 firewalld 服务中访问 8080 和 8081 端口的流量策略设置为允许,但仅限当前生效:

[root@jinkai ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@jinkai ~]# firewall-cmd --zone=public --list-ports
8080-8081/tcp

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

[root@jinkai ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.111.136
success
[root@jinkai ~]# firewall-cmd --reload

[root@jinkai02 ~]# ssh 192.168.111.136 -p 888
root@192.168.111.136‘s password:
Last login: Fri Aug 28 19:27:03 2020 from 192.168.111.1
[root@jinkai ~]#

firewalld 中的富规则表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有针对性的策略配置。它的优先级在所有的防火墙策略中也是最高的。比如,我们可以在 firewalld 服务中配置一条富规则,使其拒绝

192.168.111.0/24 网段的所有用户访问本机的 ssh 服务(22 端口):
[root@jinkai ~]# firewall-cmd --permanent --zone=public --add-rich-rule=" rule family="ipv4" source address="192.168.111.0/24" service name="ssh" reject"
success
[root@jinkai ~]# firewall-cmd --reload
success

在客户端使用 ssh 命令尝试访问 192.168.111.136 主机的 ssh 服务(22 端口):

[root@jinkai02 ~]# ssh 192.168.111.136
ssh: connect to host 192.168.111.136 port 22: Connection refused
[root@jinkai02 ~]# ssh 192.168.111.136 -p 888
ssh: connect to host 192.168.111.136 port 888: Connection refused
[root@jinkai02 ~]#

针对某个端口只允许某个IP或IP段访问

使mysql服务的3306端口只允许192.168.111.136的服务器能访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.111.136" port protocol="tcp" port="3306" accept"

小实验:
需求:ftp服务自定义端口1121,需要在work zone下面放行ftp;
思路:
用模板操作、先将ftp服务模板复制到配置模板下,这样firewall就会套用该模板,记得修改好端口为1121;
在work zone下面放行ftp,也就是将ftp服务添加到work中;但是之前不许讲work模板复制到firewall的zone下,
并在配置中添加ftp就ok;

1、复制ftp模板到/etc/firewalld/services/目录下

[root@jinkai ~]# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/
[root@jinkai ~]# ls /etc/firewalld/services/
ftp.xml

**2、修改文件、将ftp端口21给为1121;
vim /etc/firewalld/services/ftp.xml
将port=“21”改成port=“1121”

[root@jinkai ~]# vim /etc/firewalld/services/ftp.xml **
[root@jinkai ~]# cat !$
cat /etc/firewalld/services/ftp.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>FTP</short>
<description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You need the vsftpd package installed for this option to be useful.</description>
<port protocol="tcp" port="1121"/>
<module name="nf_conntrack_ftp"/>
</service>

3、将work zone模板文件复制或移动到zone目录下;

[root@jinkai ~]# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
[root@jinkai ~]# ls /etc/firewalld/zones/
public.xml public.xml.old work.xml

4、修改zone配置文件work.xml
vim /etc/firewalld/zones/work.xml
在文档中添加一行 <service name="ftp"/>
表示在work zone中增加ftp服务;

[root@jinkai ~]# vim /etc/firewalld/zones/work.xml
[root@jinkai ~]# cat !$
cat /etc/firewalld/zones/work.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Work</short>
<description>For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="ftp"/>
<service name="dhcpv6-client"/>
</zone>

5、重新加载firewall

firewall-cmd --reload
[root@jinkai ~]# firewall-cmd --reload
success

测试:
验证下work zone里面的service是否有FTP

[root@jinkai ~]# firewall-cmd --zone=work --list-services
ssh ftp dhcpv6-client

firewall的zone和service

标签:ted   应急   ack   就是   int   数据包   永久   发送   策略配置   

原文地址:https://blog.51cto.com/11451960/2525848

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!