firewalld概述

firewalld防火墙是CentOS 7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙。

firewalld和iptables都是用来管理防火墙的工具(属于用户态)来定义防火墙的各种规则功能,内部结构都指向netfiler网络过滤子系统(属于内核态)来实现包过滤防火墙功能

firewalld提供了支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具
支持IPV4、IPV6防火墙设置以及以太网桥(在某些高级服务可能会用到,例如云计算),并且拥有两种配置模式:运行时配置和永久配置

firewalld和iptables区别

1.
iptables主要基于接口,来设置规则,从而判断网络安全
firewalld是基于区域,根据不同的区域来设置不同的规则,从而保证网络的安全。与硬件防火墙的设置类似

2.
iptables在/etc/sysconfig/iptables中存储配置
firewalld将配置存储在/etc/firewalld(优先加载)和/usr/lib/firewalld(默认的配置文件)中的各种XML文件里。

 

 3.
使用iptables每一个单独更改意味着清除所有旧有的规则和从/etc/sysconfig/iptables里读取所有新的规则
使用firewalld却不会再创建任何新的规则,仅仅运行规则中的不同之处。因此firewalld可以在运行时间内,改变设置而不丢失现行连接。

4.
iptables 防火墙类型为静态防火墙
firewalld防火墙类型为动态防火墙

firewalld 区域的概念:

firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)。然后根据数据包的源IP地址或传入的网络接口等条件将流量流入相应区域。每个区域都定义了自己打开或者关闭的端口和服务列表。

 

firewalld防火墙预定义的9个区域:
1.trusted(信任区域):允许所有的传入流量
2.public(公共区域):允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒接。是新添加网络接口的默认区域
3.external(外部区域):允许与ssh预定义服务匹配的传入流量,其余均拒绝。默认将通过此区域转发的ipv4传出流量将进行地址伪装,可用于为路由器启动伪装功能的外部网络。
4.home(家庭区域):允许与ssh、mdns、samba-client或dhcpv6-client预定义服务匹配的流入流量,其余均拒绝。
5.internal(内部区域):默认值时与home区域相同。
6.work(工作区域):允许与ssh、dhcpv6-client预定义服务匹配的传入流量,其余均拒绝
7.dmz(隔离区域也称为非军事区域):允许与ssh预定义服务匹配的传入流量,其余均拒绝
8.block(限制区域):拒绝所有传入流量
9.drop(丢弃区域):丢弃所有传入流量,并且不产生包含ICMP的错误响应。

区域的优先级:
源地址绑定的区域>网卡绑定区域>默认区域(所有没有绑定的区域)

首先开启firewalld服务

 

格式:
firewall-cmd 命令选项

命令选项:
--get-default-zone :显示当默认区域
--set-default-zone=<zone> 设置修改默认区域

 

--get-active-zones : 显示当前活跃的区域及其对应的绑定对象(网卡或者源地址)
--get-zones :显示所有可用的区域

 

--get-zone-of-interface=<interface>  : 显示指定接口绑定的区域
--zone=<zone> --add-interface=<interface> : 为指定的接口绑定指定的区域
--zone=<zone> --change-interface=<interface> : 为指定的区域修改绑定的接口
--zone=<zone> --remove-interface=<interface> : 为指定的区域移除绑定的接口

 

--zone=<zone> --add-source=<source>[/<mask>] : 为指定区域绑定指定源地址
--zone=<zone> --change-source=<source>[/<mask>]:为指定区域修改绑定的源地址
--zone=<zone> --remove-source=<source>[/<mask>] :为指定区域移除绑定的源地址

--list-all-zones :显示所有区域及其规则


[--zone=<zone>] --list-all : 显示所有指定区域的所有规则,省略--zone=<zone>时表示仅对默认区域操作


[--zone=<zone>] --list-services : 显示指定区域内允许访问的所有服务
[--zone=<zone>] --add-service=<service> : 为指定区域设置允许访问的某项服务
[--zone=<zone>] --remove-service=<service> : 移除指定区域已设置的允许访问的某项服务

 

[--zone=<zone>] --list-ports : 显示指定区域内允许访问的所有端口
[--zone=<zone>] --add-port=<portid>[-<portid>]/<protocol> : 为指定区域设置允许访问的某个端口号(包括协议名)
[--zone=<zone>] --remove-port=<portid>[-<portid>]/<protocol> : 为指定区域移除允许访问的端口号(包括协议名)

[--zone=<zone>] --list-icmp-blocks : 显示指定区域内拒绝访问的所有ICMP类型
[--zone=<zone>] --add-icmp-block : 为指定区域设置拒绝访问的某项ICMP类型
[--zone=<zone>] --remove-icmp-block : 移除指定区域已设置的拒绝访问的某项ICMP类型

区域管理:
1.显示当前系统中的默认区域
firewall-cmd --get-default-zone

2.显示默认区域的所有规则
firewall-cmd --list-all

 

3.显示当前正在使用的区域及其对应的规则
firewall-cmd --get-active-zones

4.设置默认区域
firewall-cmd --set-default-zone=<zone>

服务管理:
1.查看默认区域内允许访问的所有服务
firewall-cmd --list-service

2.添加httpd 服务到public区域
firewall-cmd --add-service=http --zone=public

3.查看public区域已经配置的规则
firewall-cmd --list-all --zone=public

4.删除public区域的httpd服务
firewall-cmd --remove-service=http --zone=public

5.同时添加httpd、https服务到默认区域 ,设置成永久生效
firewall-cmd --add-service={http,https} --permanent
firewall-cmd --add-service=http --add-service=https --permanent
firewall-cmd --reload
(添加永久生效时需要添加 --permanent 并且需要重启firewalld服务或者重新加载)

将已有的实时设置转换为永久生效
firewall-cmd --runtime-to-permanent

 

 

端口管理:

1.允许TCP的443端口到internal区域
firewall-cmd --add-port=443/tcp --zone=internal

2.从internal区域将tcp的443号端口移除
firewall-cmd --remove-port=443/tcp --zone=internal

 

3.允许udp的2048~2050端口到默认端口
firewall-cmd --add-port=2048-2050/udp


扩展:(通过firewall修改nat)
firewall-cmd --zone=public --direct --passthrough ipv4 -t nat -A POSTROUTING -s 源地址 -j SNAT --to 修改后的源地址
firewall-cmd --zone=public --direct --passthrough ipv4 -t nat -A PREROUTING -d 目标地址 -p tcp --dport 端口 -j DNAT --to 修改后的目标地址

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐