首页 > 系统相关 >linux配置防火墙

linux配置防火墙

时间:2023-10-30 23:03:06浏览次数:36  
标签:sudo zone -- 配置 端口 防火墙 firewall cmd linux

linux如何配置防火墙及其允许的端口

这里写的是centos7如何配置防火墙。copy from:https://www.myfreax.com/how-to-setup-a-firewall-with-firewalld-on-centos-7/  ,一切版权归属原作者。

正确配置的防火墙是整个系统安全的最重要方面之一。FirewallD是一个完整的防火墙解决方案,可以管理系统的iptables规则并提供D-Bus接口以对其进行操作。

从CentOS 7开始,FirewallD取代iptables作为默认的防火墙管理工具。默认情况下,CentOS 7禁用防火墙服务。

 

在开始本教程之前,请确保您以root或者具有sudo权限的用户登录。最佳实践是以sudo用户而不是root用户运行管理命令。

如果您的CentOS系统上没有sudo用户,请阅读我们教程如何在CentOS创建sudo用户

FirewallD使用区域和服务的概念,而不是iptables链和规则。根据您将要配置的区域和服务,您可以控制系统允许或禁止的连接。

FirewallD可以使用firewall-cmd命令进行配置和管理。Firewalld默认安装在CentOS 7上,但是如果您的系统上未安装Firewalld。

 

则可以通过yum命令sudo yum install firewalld来安装Firewalld。您可以使用以下firewall-cmd命令检查防火墙状态。

 

如果您刚刚安装或从未激活过,sudo firewall-cmd --state命令将显示not running,否则将显示running

要启动FirewallD服务并在计算机启动时自动启动FirewallD服务,请运行systemctl命令sudo systemctl start firewalld && sudo systemctl enable firewalld

防火墙使用两个单独的配置集,运行时和永久配置。运行时配置是实际的运行配置,并且在重新启动后消失。

当防火墙服务启动时,它将加载永久配置,该永久配置将成为运行时配置。

默认情况下,当使用firewall-cmd命令对Firewalld配置进行更改时,所做的更改将应用​​于运行时配置,要使更改永久生效,您需要使用--permanent选项运行firewall-cmd命令。

防火墙区域与服务

区域是预定义的规则集,基于计算机信任级别来指定允许的网络连接。您可以将接口和源分配给区域。一个区域必须关联一个网络接口。

以下是FirewallD划分的区域,根据区域的信任级别从不信任到受信任而排序:

drop区域删除所有传入连接,而无任何通知。仅允许传出连接。

block区域对于IPv6/IPv4icmp6-adm-prohibited/IPv6n,所有传入连接均被拒绝,并带有icmp-host-prohibited消息。仅允许传出连接。

public区域用于不受信任的区域。即您的计算机在一个不可信的计算机网络上,但你可以指定那些连接允许传入。

 

external区域对于用在内部网络。当你的系统充当网关或者路由时,在网络上的计算机通常是可信的,仅已允许的连接可以传入。

internal区域对于在内部网络上。当计算机充当网关或路由器时。网络上的其它计算机通常是受信任的。仅已允许的连接可以传入。

dmz区域对于计算机位于可缓冲区,区域内计算机访问网络时将会被限制。仅已允许的连接可以传入。

work区域用于工作机。网络上的其他计算机通常是受信任的。仅已允许的连接可以传入。

home区域用于家庭计算机。网络上的其他计算机通常是受信任的。仅已允许的连接可以传入。

trusted区域接受所有网络连接。信任在网络中的所有计算机。

防火墙服务是预定义的规则集,关联在区域内,并定义必要的设置以允许指定服务的传入连接。

防火墙区域

首次启用FirewallD服务后,public区域被设置为默认区域。你可通过命令sudo firewall-cmd --get-default-zone获得默认区域的名称。

如需要获取所有可用区域的列表,请运行命令sudo firewall-cmd --get-zones。将会列出所有区域block dmz drop external home internal public trusted work。

 

默认情况下,所有网络接口/网卡都分配有默认区域。要检查您的网络接口关联了那区域,你可以运行命令sudo firewall-cmd --get-active-zones

从输出中,我们可以看到eth0eth1接口都使用了public区域

sudo firewall-cmd --list-all命令将会列出区域关联的服务。如果未指定区域,firewall-cmd将会查询默认区域。

由于我们没有改变默认区域因此时public区域。还允许与DHCP客户端服务和SSH的连接。

如果要列出指定区域的配置信息和关联服务的信息,你使用--zone选项指定区域。--list-all-zones可以列出所有区域的配置与关联服务。

sudo firewall-cmd --list-all #列出默认区域
sudo firewall-cmd --zone=external --list-all #指定区域
sudo firewall-cmd --zone=external ---list-all-zones #所有

现在已经知道如何获得防火墙的区域信息,接下来看看如何修改防护墙区域关联的接口和默认的的区域。

要修改接口的关联的防火墙区域,可通过结合使用--zone选项和--change-interface选项,修改接口的区域。

sudo firewall-cmd --zone=work --change-interface=eth1命令将会修改eth1接口关联防火墙区域work。你可运行sudo firewall-cmd --get-active-zones命令验证eth1关联的区域。

更改默认的区域,可以使用--set-default-zone选项,后跟要设为默认区域的名称。

sudo firewall-cmd --set-default-zone=home命令要将默认区域更改为home。可以通过运行命令sudo firewall-cmd --get-default-zone获取防火墙默认区域验证更改。

防火墙服务

使用FirewallD,您可以根据称为服务的预定义规则允许指定端口的连接。你可以通过运行命令sudo firewall-cmd --get-services要获取所有可用服务的列表,

你可在/usr/lib/firewalld/services目录找到服务中firewalld服务的配置文件,它为firewalld提供连接入口的信息。配置文件中最重要的配置选项是端口、模块和目标地址。

 

要在当前会话允许http服务,即运行时配置。也就是允许在public区域传入HTTP 80端口的连接。

你可运行命令sudo firewall-cmd --zone=public --add-service=http。要验证是否已成功添加服务,请运行命令sudo firewall-cmd --zone=public --list-services进行验

如果要在重启后保持端口80的打开状态,则需要再次输入相同的命令。如果使用--permanent选项修改,重启后继续使用规则。

--permanent选项的修改需要使用--list-services--permanent选项来验证您的更改。我们建议你经常直接--permanent选项添加和删除firewalld服务。

删除服务的语法与添加服务时的语法相同。只需使用--remove-service而不是--add-service选项。

sudo firewall-cmd --permanent --zone=public --add-service=http #添加http服务
sudo firewall-cmd --permanent --zone=public --list-services #列出服务
sudo firewall-cmd --zone=public --remove-service=http --permanent #删除服务

打开端口

上面说明都是通过服务的配置文件打开端口,但是有时候不是所有服务都带有配置文件。在这种情况下,您有两种选择。您可以打开指定的端口,也可以定义新的FirewallD服务。

例如,Plex服务器监听TCP协议32400端口,可使用--add-port=选项在当前会话的public区域中打开32400端口。

协议可以是tcpudp。要验证是否已成功添加32400端口,请使用--list-ports选项列出已打开的端口。

要在重新启动后使端口32400保持打开状态,请使用--permanent选项运行相同的命令,将规则添加到配置文件中。

删除端口规则的语法与添加端口时的语法相同。只需使用--remove-port选项即可。

sudo firewall-cmd --zone=public --add-port=32400/tcp #打开端口
sudo firewall-cmd --zone=public --list-ports #列出
sudo firewall-cmd --zone=public --remove-port=32400/tcp #

创建FirewallD服务

应用程序默认的服务配置文件存储在目录/usr/lib/firewalld/services。创建FirewallD服务的最简单方法是基于将现有服务文件创建一个副本。命名为你服务名称。

例如,要为Plex媒体服务器创建服务配置文件,我们可以使用SSH服务的配置文件作为模板。

运行以下cp命令sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml创建Plex的firewalld服务的模板。

使用你喜欢的文件编辑器,打开文件plexmediaserver.xml。在本教程我们将使用vim命令打开文件

并在<short><description>标签内更改firewalld服务的简称和描述。您需要更改的最重要的标签是port标签,port标签定义了您要打开的端口号和协议。

在示例中,我们打开UDP协议1900端口和TCP协议32400端口。

sudo vim /etc/firewalld/services/plexmediaserver.xml

#以下是文件内容
<?xml version="1.0" encoding="utf-8"?>
<service version="1.0">
<short>plexmediaserver</short>
<description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description>
<port protocol="udp" port="1900"/>
<port protocol="tcp" port="32400"/>
</service>

/etc/firewalld/services/plexmediaserver.xml

保存文件并退出vim编辑器,然后运行sudo firewall-cmd --reload命令重新加载FirewallD服务。

您现在可以在所有区域中通过命令sudo firewall-cmd --permanent --zone=public --add-service=plexmediaserver添加firewalld的plexmediaserver服务。注意这里命令指定public区域

端口转发

要将流量从一个端口转发到另一个端口或地址,请首先使用--add-masquerade选项在指定的区域启用伪装。

sudo firewall-cmd --zone=external --add-masquerade命令将在firewalld的public区域启用伪装。

firewalld防火墙可以创建三种不同的端口转发方式。分别在计算机内的端口转发,不同计算机相同端口转发,不同计算机端口转发。

在设置firewalld防火墙端口转发时,你需要使用--add-forward-port选项表示添加端口转发。

还有port选项指定要转发的端口,proto选项指定协议,toport选项指定目标主机的端口。toaddr选项指定目标地址。

在同一计算机内可以省略toaddr选项。如果转发的端口和目标端口相同可以省略目标选项。

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080命令将流量从端口80转发到同计算机内的8080端口。在同一计算机内可以省略toaddr选项。

sudo firewall-cmd --zone=external  --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2命令将流量从端口80转发到IP地址是10.10.10.2计算机80端口。转发到相同端口可以省略toport选项。

sudo firewall-cmd --zone=external  --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2命令将流量从端口80转发到IP地址是10.10.10.2计算机的8080端口。

如果要使规则永久生效,请添加--permanent选项。

sudo firewall-cmd --zone=external  --add-forward-port=port=80:proto=tcp:toport=8080

sudo firewall-cmd --zone=external  --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

sudo firewall-cmd --zone=external  --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

允许SSH/HTTPS/HTTP连接

在以下示例中,如果您正在运行Web服务器,并且您只想允许SSH,HTTP和HTTPS端口传入的流量。我们将展示向你如何配置FirewallD防火墙。

你可以很简单的使用命令将常见的服务添加接口关联的区域即可,如果你没有更改过默认的区域,那么就是public区域。

如果你已经更改接口关联的区域,运行命令sudo firewall-cmd --get-active-zones获取接口关联的区域。然后使用--zone指定接口关联的区域。

完成firewalld防火墙的更改后运行命令sudo firewall-cmd --reload重新加载防火墙立即生效。

最后运行命令sudo firewall-cmd --zone=public --list-all。验证firewalld服务是否添加到public区域。

在列出的信息中services:字段中将会包含ssh,http,https服务。

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-all

禁用防火墙

sudo systemctl stop firewalld
sudo systemctl disable firewalld #永久禁用

-------------------------- 对于我的测试,我只需要开启端口即可 ----------------------
sudo firewall-cmd --zone=public --add-port=32400/tcp #打开端口
sudo firewall-cmd --zone=public --list-ports #列出
如果想要永久生效,可以加上:--permanent

标签:sudo,zone,--,配置,端口,防火墙,firewall,cmd,linux
From: https://www.cnblogs.com/saaspeter/p/17781655.html

相关文章

  • vim配置
    最近在做Linux的作业,要用到vim写代码,因此做了一些配置,在此记下。开始使用vim的时候,对各种命令都不熟悉,因此写代码很痛苦。但是在熟练之后,真香。在配置中,有一个轻量级的代码补全系统,来自大佬韦易笑的文章:Vim2021:超轻量级代码补全系统-知乎(zhihu.com)setnu"在左......
  • 进攻和防御Linux(CentOS)
    一:概述Linux系统开源导致了系统的安全性问题,经常会遭遇到来自系统底层的进攻。系统管理员要清楚的了解LInux系统中可能会遇到的进攻类型和对应的措施,一旦发现系统中存在安全漏洞,我们应该立刻采取措施修复漏洞,保护系统安全、加强防御。计算机中的安全问题主要是针对信息安全泄露与窃......
  • CITECT2018R2做WEB发布练习2-安装webserver,配置用户
    这一篇博客我在新浪发表过,地址是CITECT2018R2做WEB发布练习2-安装webserver,配置用户_来自金沙江的小鱼_新浪博客(sina.com.cn)在这里也记录一遍。为了实现citect的web发布功能,需要安装web服务器,我将web服务器和IO服务器、报警服务器等安装在同一台电脑上。需要先安装IIS,这一点......
  • linux的学习
    1.文件目录: 常用的命令1.pwd命令 pwd:printworkingdirectory,即显示当前所在目录 2、cd命令 cd:changedirectory,即切换/改变所在目录 '.’:代表此层目录;‘..’:代表上一层目录;‘-’:代表前一个工作目录;‘~’:代表“当前登陆用户身份”所在的主目录;3.创建一个新......
  • [Linux]centos下安装jdk和tomcat,并把jdk加到环境变量。
    1.下载tomcat/jdk 注意格式最好是tar或者gz包,方便解压。2.系统centos或者其他redhat系列linux发行版。3.通过ftp上传tomcat/jdk的包到系统。4.在/opt/目录创建 /opt/java/  /opt/tomcat  或者/usr/local/java/ /usr/local/tomcat这个看个人喜好。(注意目录名)5.tar......
  • 嵌入式Linux中内存管理详解分析
    Linux中内存管理内存管理的主要工作就是对物理内存进行组织,然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。虚拟地址的作用如果用户进程直接操作物理地址会有以下的坏处:1、用户进程可以直接操作内核对应的内存,破坏内核运行。2、用户进程也会破坏其他进程的运行CPU......
  • 国标GB28181安防平台LiteCVR更新H.265转码:增加分辨率配置
    关于视频分析LiteCVR视频汇聚平台的转码功能,我们在此前的文章中也介绍过不少,感兴趣的用户可以翻阅往期的文章进行了解。LiteCVR视频汇聚业务平台目前可以支持H.265视频自动转码为H.264,也可以支持设置全局转码等功能,近期我们又对平台的视频转码能力进行了更新,在原有转码基础上新增转......
  • 安防视频监控平台EasyCVR服务器需要开启firewall防火墙,该如何开放端口?
    智能视频监控/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力,作为安防视频监控综合管理平台,它支持多协议接入、多格式视频流分发,视频监控综合管理平台EasyCVR支持海量视频汇聚管理,可应用在多样化的场景上,包括城市“一网统管”建设、智慧工地风险预警、智慧工厂安全......
  • EFCore 实体配置方式
    EFCore有两种实体配置方式1、DataAnnotation优点:简单;缺点:耦合[Table("Persons")]publicclassPerson{publicintId{get;set;}[Required][MaxLength(50)]publicstringName{get;set;}}2、FluentAPI(推荐)优点:解耦;缺点:较复杂//实体类......
  • Linux21--shell编程基础
    1bashshell介绍#介绍shell是一门解释型、弱类型、动态语言#类比shell语法<===>python语法bash解释器<===>python解释器平台<===>平台2变量2.1基本使用###交互式环境中[root@localhost~]#x=1#1定义变量中间不能有空......