正确配置的防火墙是整个系统安全性中最重要的方面之一。
“只有客户发展了,才有我们的生存与发展!”这是创新互联的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对网站制作、做网站、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。
FirewallD是一个完整的防火墙解决方案,用于管理系统的iptables规则,并提供用于对其进行操作的D-Bus接口。 从centos 7开始,FirewallD将替换iptables为默认的防火墙管理工具。
必要条件
Firewalld基本概念
FirewallD使用区域和服务的概念,而不是iptables链和规则。根据您要配置的区域和服务,您可以控制允许或禁止进出系统的流量。
可以使用firewall-cmd命令行实用程序配置和管理FirewallD。
Firewalld区域
区域是预定义的规则集,用于根据计算机连接到的网络上的信任级别指定应允许的流量。您可以将网络接口和源分配给区域。
防火墙服务
Firewalld服务是在区域内应用的预定义规则,并定义必要的设置以允许特定服务的传入流量。
Firewalld运行时和永久设置
Firewalld使用两个独立的配置集,运行时和永久配置。
运行时配置是实际运行的配置,并且在重新启动时不会持久。 当Firewalld服务启动时,它会加载永久配置,从而成为运行时配置。
默认情况下,使用firewall-cmd实用程序更改Firewalld配置时,更改将应用于运行时配置,以使更改成为永久性,您需要使用--permanent标志。
安装并启用FirewallD
01、安装FirewallD
默认情况下,Firewalld安装在CentOS 7上,但如果系统上未安装,则可以通过键入以下命令安装软件包:
sudo yum install firewalld
02、检查防火墙状态。
默认情况下禁用Firewalld服务。 您可以使用以下命令检查防火墙状态
sudo firewall-cmd --state
如果您刚刚安装或从未激活过,则该命令将打印不运行,否则您将看到正在运行。
03、启用FirewallD
要启动FirewallD服务并在引导类型上启用它:
sudo systemctl start firewalld
sudo systemctl enable firewalld
如下图:
使用Firewalld区域
首次启用FirewallD服务后,公共区域将设置为默认区域。 您可以键入以下内容来查看默认区域:
sudo firewall-cmd --get-default-zone
输出:
public
要获取所有可用区域的列表,请输入:
sudo firewall-cmd --get-zones
输出:
block dmz drop external home internal public trusted work
默认情况下,为所有网络接口分配默认区域。 要检查网络接口使用的区域类型,请执行以下操作:
sudo firewall-cmd --get-active-zones
输出:
public
interfaces: ens33
上面的输出告诉我们,接口ens33分配给public区域。
您可以使用以下方式打印区域配置设置:
sudo firewall-cmd --zone=public --list-all
输出:
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client
ports: 3389/tcp 21/tcp 60000-65535/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
以上命令截图如下:
从上面的输出中,我们可以看到公共区域处于活动状态并设置为默认值,由ens33接口使用。还允许与DHCP客户端和SSH相关的连接。
如果要检查所有可用区域的配置,请键入:
sudo firewall-cmd --list-all-zones
该命令将打印一个巨大的列表,将所有可用区域的设置。
如下图:
更改接口区域
您可以使用--zone标志结合--change-interface标志轻松更改接口区域。 以下命令将eth1接口分配给工作区:
sudo firewall-cmd --zone=work --change-interface=eth1
输入以下内容验证更改:
sudo firewall-cmd --get-active-zones
输出:
work
interfaces: eth1
public
interfaces: eth0
更改默认区域
要更改默认区域,请使用--set-default-zone标志,后跟要作为默认区域的名称。 例如,要将默认区域更改为home,您应该运行以下命令:
sudo firewall-cmd --set-default-zone=home
验证更改:
sudo firewall-cmd --get-default-zone
输出
home
开放端口或服务
使用FirewallD,您可以根据称为服务的预定义规则允许特定端口的流量。
要获取所有默认可用服务类型的列表:
sudo firewall-cmd --get-services
您可以通过在/usr/lib/firewalld/services目录中打开关联的.xml文件来查找有关每个服务的更多信息。 例如,HTTP服务定义如下:
/usr/lib/firewalld/services/http.xml
要允许公共区域中的接口传入HTTP流量(端口80),仅针对当前会话(运行时配置)类型:
sudo firewall-cmd --zone=public --add-service=http
如果要修改默认区域,可以省略--zone标志。
要验证是否已成功添加服务,请使用--list-services标志:
sudo firewall-cmd --zone=public --list-services
输出:
ssh dhcpv6-client http
如果你想在重新启动后保持端口80打开,你需要再次输入相同的命令,但这次使用--permanent标志:
sudo firewall-cmd --permanent --zone=public --add-service=http
使用--list-services和--permanent标志来验证您的更改:
sudo firewall-cmd --permanent --zone=public --list-services
输出:
ssh dhcpv6-client http
删除服务的语法与添加服务时的语法相同。 只需使用--remove-service而不是--add-service标志:
sudo firewall-cmd --zone=public --remove-service=http --permanent
上面的命令将从公共区域永久配置中删除http服务。
如果您正在运行没有适当服务的Plex Media Server等应用程序,该怎么办?
在这种情况下,您有两种选择。 您可以打开相应的端口或定义新的FirewallD服务。
例如,Plex服务器侦听端口32400并使用TCP,使用--add-port =标志打开当前会话的公共区域中的端口:
sudo firewall-cmd --zone=public --add-port=32400/tcp
协议可以是tcp或udp。
要验证端口是否已成功添加,请使用--list-ports标志:
sudo firewall-cmd --zone=public --list-ports
32400/tcp
要在重新启动后保持端口32400打开,请通过使用--permanent标志运行相同的命令将规则添加到永久设置。
删除端口的语法与添加端口时的语法相同。 只需使用--remove-port而不是--add-port标志。
sudo firewall-cmd --zone=public --remove-port=32400/tcp
创建新的FirewallD服务
正如我们已经提到的,默认服务存储在/ usr / lib / firewalld / services目录中。 创建新服务的最简单方法是将现有服务文件复制到/ etc / firewalld / services目录,该目录是用户创建的服务的位置并修改文件设置。
例如,要为Plex Media Server创建服务定义,我们可以使用HTTP服务文件:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml
打开新创建的plexmediaserver.xml文件,并在
/etc/firewalld/services/plexmediaserver.xml
保存文件并重新加载FirewallD服务:
sudo firewall-cmd --reload
您现在可以在区域中使用plexmediaserver服务,与任何其他服务相同。
使用Firewalld转发端口
要将流量从一个端口转发到另一个端口或地址,请首先使用--add-masquerade开关为所需区域启用伪装。 例如,要为外部区域类型启用伪装:
sudo firewall-cmd --zone=external --add-masquerade
在同一服务器上将流量从一个端口转发到另一个端口
在以下示例中,我们将流量从端口80转发到同一服务器上的端口8080:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
将流量转发到其他服务器
在以下示例中,我们将流量从端口80转发到IP 192.168.1.2的服务器上的端口80:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.2
将流量转发到其他端口上的另一台服务器
在以下示例中,我们将流量从端口80转发到IP 192.168.1.2的服务器上的端口8080:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.2
如果你想使前锋永久性只是附加--permanent标志。
使用FirewallD创建规则集
在以下示例中,我们将向您展示如果您运行Web服务器时如何配置防火墙。 我们假设您的服务器只有一个接口eth0,并且您希望仅在SSH,HTTP和HTTPS端口上允许传入流量。
01、将默认区域更改为dmz
我们将使用dmz(非军事化或隔离区)区域,因为默认情况下它只允许SSH流量。 要将默认区域更改为dmz并将其分配给eth0接口,请运行以下命令:
sudo firewall-cmd --set-default-zone=dmz
sudo firewall-cmd --zone=dmz --add-interface=eth0
02、打开HTTP和HTTPS端口:
要打开HTTP和HTTPS端口,请向dmz区域添加永久服务规则:
sudo firewall-cmd --permanent --zone=dmz --add-service=http
sudo firewall-cmd --permanent --zone=dmz --add-service=https
通过重新加载防火墙立即使更改生效:
03、验证更改
要检查dmz区域配置设置,请键入:
sudo firewall-cmd --zone=dmz --list-all
输出:
dmz (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: ssh http https
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
上面的输出告诉我们dmz是默认区域,应用于eth0接口,ssh(22)http(80)和https(443)端口打开。
总结
您已经学习了如何在CentOS系统上配置和管理FirewallD服务。
确保允许系统正常运行所需的所有传入连接,同时限制所有不必要的连接。
标题名称:CentOS7上安装配置FirewallD防火墙详解
文章位置:http://www.csdahua.cn/qtweb/news22/81372.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网