linux服务器防火墙配置

任务陈述
用户通过定义一组防火墙规则,对来自外部的网络流量进行匹配和分类,并根据规则决定是允许还是拒绝流量通过防火墙。

一、firewalld的基本概念

    firewalld是一种支持动态更新的防火墙实现机制。firewalld的动态性是指可以在不重启防火墙的情况下创建、修改和删除。firewalld使用**区域**和**服务**来简化防火墙的规则配置。

区域
区域包括一组预定义的规则。可以把网络接口(网卡)和流量源指定到某个区域中,允许哪些流量通过防火墙取决于主机所连接的网络及用户为网络定义的安全级别。

    一个网络连接只能属于一个区域,但是一个区域可以包含多个网络连接。在区域中定义规则后,firewalld会
    把这些规则应用到进入该区域的网络流量上。可以把区域理解为firewalld提供的防火墙策略集合(或策略
    模板),用户可以根据实际的使用场景选择合适的策略集合。

firewalld预定义的9个区域
丢弃区域:任何进入网络的数据包都被丢弃,并且不给出任何响应,只允许从本网络发出的 数据包通过。
阻塞区域:任何进入的网络连接都被拒绝,并返回IPv4的icmp-host-prohibited报文或IPv6的 icmp6-adm-prohibited报文作为响应,只允许由该系统发起的网络连接接入。
公共区域:在公共区域中使用,仅接受选定的网络连接接入。这是firewalld的默认区域。
外部区域:主要应用在启用伪装功能的外部网络中,仅接受选定的网络连接接入。
隔离区域:隔离区(DMZ)网络中计算机可以被外部网络有限地访问,仅接受选定的网络连 接接入。
工作区域:在工作网络中使用,仅接受选定的网络连接接入。
家庭区域:在家庭网络中使用,仅接受选定的网络连接接入。
内部区域:应用在内部网络中,对网络中的其他计算机的信任度较高,仅接受选定的网络连 接接入。
信任区域:对网络中的计算机具有最高的信任级别,接受所有网络连接接入。
服务
服务是端口和协议的组合,表示允许外部流量访问某种服务需要配置的所有规则的集合。在firewalld中放行一个服务,就相当于打开与该服务相关的端口和协议、启用数据包转发等功能,可以将多步操作集成到一条简单的规则中。

二、firewalld的安装和启停

安装firewalld和firewall-config工具

[root@localhost ~]# yum install firewalld -y         //默认已安装
[root@localhost ~]# yum install firewall-config -y   //默认已安装

systemctl start firewalld.service	启动firewalld服务。firewalld.service可简写为firewalld
systemctl restart firewalld.service	重启firewalld服务
systemctl stop firewalld.service	停止firewalld服务
systemctl reload firewalld.service	重新加载firewalld服务
systemctl status firewalld.service	 查看firewalld服务的状态
systemctl enable firewalld.service 	设置firewalld服务为开机自动启动
systemctl-unit-files|grep firewalld.service	查看firewalld服务是否开机自动启动

三、firewalld的基本配置与管理

配置firewalld可以使用firewall-config工具、firewall-cmd命令和firewall-offline-cmd命令。

在终端窗口输入firewall-config命令,或者选择【应用程序】—>【杂项】—>【防火墙】选项。

1. 查看firewalld的当前状态和当前配置

除了使用systemctl status firewalld命令查看firewalld的具体状态信息外,还可以使用firewall-cmd命令快速查看firewalld运行状态。

查看firewalld的当前状态

[root@localhost ~]# firewall-cmd --state

查看firewalld的当前配置
//查看默认区域的完整配置

[root@localhost ~]# firewall-cmd --list-all

如果想查看特定区域的信息,则可以使用–zone选项指定域名
//查看区域某一方面的配置

[root@localhost ~]# firewall-cmd --list-all --zone=work   //指定区域名
[root@localhost ~]# firewall-cmd --list-services           //只查看服务信息
[root@localhost ~]# firewall-cmd --list-services --zone=public //组合使用(适用于CentOS 7.6)

2. firewalld的两种配置模式

firewalld的配置有运行时配置和永久配置(持久配置)之分。
运行时配置:指在firewalld处于运行状态时生效的配置
永久配置:是firewalld重载或重启时应用的配置。

修改运行时配置

[root@localhost ~]# firewall-cmd --add-service=http  //只修改运行时配置

当firewalld重启时,其会恢复为永久配置。如果想让更改在firewalld下次启动时仍然生效,则需要使用–permanent选项。但即使使用了–permanent选项,这些修改也只会在firewalld重新启动后生效。使用–reload选项重载永久配置,可以使永久配置立即生效并覆盖当前的运行时配置。
修改永久配置

[root@localhost ~]# firewall-cmd --permanent --add-service=http //修改永久配置
[root@localhost ~]# firewall-cmd --reload                       //重载永久配置

一种常见的做法是先修改运行时配置,验证修改正确后,再把这些修改提交到永久配置中。可以借助–runtime-to-permanent选项来实现这种需求。
先修改运行时配置,再提交到永久配置中

[root@localhost ~]# firewall-cmd --add-service=http     //只修改运行时配置
[root@localhost ~]# firewall-cmd --runtime-to-permanent //提交到永久配置中

3. 基于服务的流量管理

使用预定义服务
使用服务管理网络流量的最直接的办法就是把预定义服务添加到firewalld的允许服务列表中,或者从允许服务列表中移除预定义服务。

[root@localhost ~]# firewall-cmd --list-services  //查看当前的允许服务列表
[root@localhost ~]# firewall-cmd --permanent --add-service=http  //添加预定义服务
[root@localhost ~]# firewall-cmd --reload  //重载防火墙的永久配置
[root@localhost ~]# firewall-cmd --list-services

​​​​​​注意:从列表中移除某个预定义服务,使用–remove-service选项,但需要重载防火墙永久配置。

每个预定义服务都有一个独立的配置文件,配置文件的内容决定了添加/移除服务时要打开或关闭那些端口和协议。服务配置文件的文件名格式一般是service-name.xml,如ssh.xml、ftp.xml、http.xml。
HTTP服务的配置文件http.xml的内容

[root@localhost ~]# cat /usr/lib/firewalld/services/http.xml

创建新服务
除了firewalld预定义的服务外,用户还可以使用–new-service选项创建一个服务,此时会在/etc/firewalld/services/目录中自动生成相应的服务配置文件,但文件中没有任何有效的配置;使用–delete-service选项可以删除自定义服务。这两个选项必须在永久配置模式下使用。

//创建和删除自定义服务
[root@localhost ~]# firewall-cmd --permanent --new-service=myservice
[root@localhost ~]# ls /etc/firewalld/services/
[root@localhost ~]# cat /etc/firewalld/services/myservice.xml

firewalld会从/etc/firewalld/services/目录中加载服务配置文件,如果这个目录中没有服务配置文件,则到/usr/lib/firewalld/services/目录中加载。

创建服务的另一种方法是从/usr/lib/firewalld/services/目录中复制一个服务配置模板文件到/etc/firewalld/services/目录中。

[root@localhost ~]# cd /etc/firewalld/services/
[root@localhost services]# cp /usr/lib/firewalld/services/http.xml mynewservice.xml
[root@localhost services]# firewall-cmd --permanent --new-service-from-file=mynewservice.xml --name=anotherservice

配置服务端口
每种预定义服务都有相应的监听端口,如HTTP服务的监听端口是80,操作系统根据端口号决定把网络流量交给哪个服务处理。

[root@localhost ~]# firewall-cmd --add-port=80/tcp  //添加端口
[root@localhost ~]# firewall-cmd --remove-port=80/tcp  //删除端口

4. 基于区域的流量管理

区域关联了一组网络接口和源IP地址,可以在区域中配置复杂的规则以管理来自这些网络接口和源IP地址的网络流量。
查看可用区域

[root@localhost ~]# firewall-cmd --get-zones  //查看系统当前可用的区域
block dmz drop external home internal public trusted work
[root@localhost ~]# firewall-cmd --list-all-zones  //查看所有区域的详细信息
[root@localhost ~]# firewall-cmd --list-all --zone=home //查看指定区域的详细信息

修改指定区域的规则
如果没有特别说明,firewall-cmd默认将规则修改应用在当前活动区域中。要想修改其他区域的规则,则可以通过–zone选项指定区域名。

[root@localhost ~]# firewall-cmd --add-service=ssh --zone=work //在work区域中放行SSH服务

修改默认区域
如果没有明确地把网络接口和某个区域关联起来,则firewalld会自动将其和默认区域关联起来。firewalld启动时会加载默认区域的配置并激活默认区域,firewalld默认区域是public。

[root@localhost ~]# firewall-cmd --get-default-zone  //查看当前默认区域
public
[root@localhost ~]# firewall-cmd --set-default-zone work  //修改默认区域
[root@localhost ~]# firewall-cmd --get-default-zone 
work

关联区域和网络接口
网络接口关联到那个区域,进入该网络接口的流量就适用于那个区域的规则。因此,可以为不同区域制定不同的规则,并根据实际需要把网络接口关联到适合的区域中。

[root@localhost ~]# firewall-cmd --get-active-zones  //查看活动区域的网络接口
public
interfaces: ens33
[root@localhost ~]# firewall-cmd --zone=work --change-interface=ens33 //为接口划分区域
[root@localhost ~]# firewall-cmd --get-active-zones 
work
interfaces: ens33

也可以直接修改网络接口配置文件,在文件中设置ZONE参数,将网络接口关联到指定区域中。

//修改网络接口配置文件,将网络接口关联到指定区域中
 
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 //注:适用于CentOS 7.6
......
ZONE=work
......

创建新区域
除了firewalld预定义的9个区域外,还可以创建新的区域,并像预定义区域一样使用。

[root@localhost ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
[root@localhost ~]# firewall-cmd --permanent --new-zone=RJ
[root@localhost ~]# firewall-cmd --reload
[root@localhost ~]# firewall-cmd --get-zones
RJ block dmz drop external home internal public trusted work

创建新区域的另一种办法是使用区域配置文件。和服务一样,每个区域都有一个独立的配置文件,文件名格式为zone-name.xml,保存在/usr/lib/firewalld/zones/和、etc/firewalld/zones/目录中。

配置区域默认规则
当数据包与区域的所有规则都不匹配时,可以使用区域默认规则处理数据包,包括【接受(ACCEPT)、拒绝(REJECT)、丢弃(DROP)】3种处理方式。

    ACCEPT表示默认接受所有数据包,除非数据包被某些规则明确拒绝
    REJECT和DROP默认拒绝所有的、数据包,除非数据包被某些规则明确接受
    REJECT会向源主机返回响应信息
    DROP直接丢弃数据包,没有任何响应信息

使用–set-target选项配置区域的默认规则

[root@localhost zones]# firewall-cmd --permanent --zone=work --set-target=ACCEPT
[root@localhost zones]# firewall-cmd --reload 
[root@localhost zones]# firewall-cmd --zone=work --list-all

添加和删除流量源
流量源是指某一特定的IP地址或子网。可以使用–add-source选项把来自某一流量源的网络流量添加到某个区域中,这样即可将该区域的规则应用在这些网路流量上。

例如:在工作区域中允许所有来自192.168.100.0/24子网的网络流量通过,删除流量源时只要用–remove-source选项替换-add-source即可

[root@localhost ~]# firewall-cmd --zone=work --add-source=192.168.100.0/24
[root@localhost ~]# firewall-cmd --runtime-to-permanent
[root@localhost ~]# firewall-cmd --zone=work --remove-source=192.168.100.0/24

添加和删除源端口
以允许或拒绝来自某些端口的网络流量通过

[root@localhost ~]# firewall-cmd --zone=work --add-source-port=3721/tcp
[root@localhost ~]# firewall-cmd --zone=work --remove-source-port=3721/tcp

添加和删除ICMP
也可以根据协议来决定是接受还是拒绝使用某种协议的网络流量。常见的协议有TCP、UDP、ICMP等。
在内部区域中添加ICMP即可接受对方主机的ping测试

[root@localhost ~]# firewall-cmd --zone=internal --add-protocol=icmp
[root@localhost ~]# firewall-cmd --zone=internal --remove-protocol=icmp

对于接收到的网络流量具体使用哪个区域的规则,firewalld会按下面的顺序进行处理。

1.网络流量的源地址
2.接受网络流量的网络接口
3.firewalld的默认区域

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在安装CentOS 7服务器配置时,你可以按照以下步骤进行操作: 1. 首先,下载CentOS 7的安装文件并安装系统。你可以从官方网站或其他可信来源下载CentOS 7的ISO镜像文件。在安装过程中,选择安装CentOS 7并按照界面提示进行操作。 2. 选择适合你的语言设置。在安装过程中,你可以选择使用中文或其他语言进行安装。 3. 在服务器安装完成后,你需要对其进行一些基本的配置。这包括设置网络连接、安装必要的软件和服务以及进行系统更新等。 4. 对于网络连接的设置,你可以根据自己的需求选择使用动态IP或静态IP。 5. 安装所需的软件和服务。例如,如果你需要在CentOS 7上安装vsftpd服务器,你可以按照相应的步骤进行操作。首先,你需要安装vsftpd软件包,可以使用以下命令进行安装: ``` sudo yum install vsftpd ``` 6. 配置vsftpd服务器。在安装完成后,你需要对vsftpd进行配置以启用FTP服务,并设置相应的权限和访问控制。你可以编辑vsftpd的配置文件`/etc/vsftpd/vsftpd.conf`,根据自己的需求进行修改。 7. 配置防火墙以允许FTP流量通过。你可以使用以下命令开放相关的端口: ``` sudo firewall-cmd --zone=public --add-port=20/tcp --permanent sudo firewall-cmd --zone=public --add-port=21/tcp --permanent sudo firewall-cmd --reload ``` 8. 最后,启动并设置vsftpd服务开机自启动: ``` sudo systemctl start vsftpd sudo systemctl enable vsftpd ``` 通过按照以上步骤进行操作,你可以成功安装和配置CentOS 7服务器。请注意,在实际操作中可能会遇到不同的情况和问题,你需要根据具体情况进行调整和解决。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值