首页 > 系统相关 >CentOS之开启firewalld白名单

CentOS之开启firewalld白名单

时间:2022-10-10 14:04:19浏览次数:69  
标签:zone CentOS -- cmd firewalld firewall 白名单 trusted


title: CentOS之开启firewalld白名单
categories: CentOS
tags: CentOS
top: 40

CentOS之开启firewalld白名单

​ Firewalld 是可用于许多 Linux 发行版的防火墙管理解决方案,它充当 Linux 内核提供的 iptables 数据包过滤系统的前端。
在本教程中,介绍如何为服务器设置防火墙,并使用 firewall-cmd 管理工具来管理防火墙添加 IP 白名单。

firewalld中的区域(zone)

​ 区域(zone)基本上是一组规则,它们决定了允许哪些流量,具体取决于你对计算机所连接的网络的信任程度。为网络接口分配了一个区域,以指示防火墙应允许的行为。
Firewalld 一般已经默认内置了 9 个区域(zone),大部分情况下,这些已经足够使用,按从最不信任到最受信任的顺序为:

  • drop:最低信任级别。所有传入的连接都将被丢弃而不会回复,并且只能进行传出连接。
  • block:与上述类似,但不是简单地删除连接,而是使用 icmp-host-prohibitedor 和 icmp6-adm-prohibited 消息拒绝传入的请求。
  • public:表示不信任的公共网络。您不信任其他计算机,但可能会视情况允许选择的传入连接。默认情况下,此区域为激活状态。
  • external:如果你使用防火墙作为网关,则为外部网络。将其配置为 NAT 转发,以便你的内部网络保持私有但可访问。
  • internal:external 区域的另一侧,用于网关的内部。这些计算机值得信赖,并且可以使用一些其他服务。
  • dmz:用于 DMZ (DeMilitarized Zone) 中的计算机(将无法访问网络其余部分的隔离计算机),仅允许某些传入连接。
  • work:用于工作机。信任网络中的大多数计算机。可能还允许其他一些服务。
  • home:家庭环境。通常,这意味着您信任其他大多数计算机,并且将接受其他一些服务。
  • trusted:信任网络中的所有计算机。可用选项中最开放的,应谨慎使用。

安装并启用防火墙

Firewalld 是在某些 Linux 发行版上默认安装的,但有时候需$ sudo firewall-cmd--state要手动安装。CentOS 下的安装命令如下:

yum install firewalld

启用 Firewalld 服务并允许自启动

systemctl start firewalld
systemctl enable firewalld

确认 Firewalld 服务是否正在运行

firewall-cmd --state

返回 running 则表示已经运行;not running 则表示没有运行。

查看当前的防火墙规则

输入以下命令,可以看到当前选择哪个区域作为默认区域:

firewall-cmd --get-default-zone

一般情况下会返回 public
输入以下内容进行确认哪个区域处于激活状态:

firewall-cmd --get-active-zones

一般情况下,在只有一个网卡的情况下会返回:

public
  interfaces: eth0

获取可用区域的列表,输入以下命令:

firewall-cmd --get-zones

# 返回:
# block dmz drop external home internal public trusted work

通过指定 –zone 的 –list-all 参数,我们可以看到与区域关联的特定配置:

firewall-cmd --zone=home --list-all

返回值:

home
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

获取可用区域列表的详细信息,输入以下命令:

firewall-cmd --list-all-zones

使用 Firewalld 配置 IP 白名单

如前所述,Firewalld 有内置的区域,可以利用这些区域不同的特性,来简单快捷地配置 IP 白名单。
具体做法就是,首先要收集你要允许的 IP 白名单列表,比如 Cloudflare 的所有IP范围:

173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/12
172.64.0.0/13
131.0.72.0/22

与此同时,你也要加入你自己的 IP 地址,否则白名单一旦生效,可能会将你阻挡在外而无法连接。

将这些 IP 列表逐一加入 trusted 区域,使用命令如下:

firewall-cmd --permanent --zone=trusted --add-source=173.245.48.0/20

firewall-cmd --permanent --zone=trusted --add-source=131.0.72.0/22

使 trusted 区域设置生效,使用命令如下:

firewall-cmd --reload

确认 trusted 区域是否设置正确,使用命令如下:

firewall-cmd --zone=trusted --list-all

返回:

trusted (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 173.245.48.0/20 …… 131.0.72.0/22
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

因为此时已经设置了 trusted 区域,所以还需要切换默认区域从 public 到 drop,以达到无视所有接入连接的目的。使用命令如下:

firewall-cmd --set-default-zone=drop

再将默认网卡 eth0 分配给 drop 区域,使用命令如下:

firewall-cmd --permanent --zone=drop --change-interface=eth0

使白名单最终生效,使用命令如下(注意:请再次确认你的所有 IP 都加入了 trusted 区域):

firewall-cmd --reload

至此,白名单设置正式生效。

添加对外暴露的端口

查看所有打开的端口

firewall-cmd --zone=public --list-ports

添加开放端口

# permanent永久生效,没有此参数重启后失效
firewall-cmd --zone=public --add-port=80/tcp --permanent

删除开放端口

firewall-cmd --zone=public --remove-port=80/tcp --permanent

使开通的端口生效

firewall-cmd --reload

本文来自安服仔

End

标签:zone,CentOS,--,cmd,firewalld,firewall,白名单,trusted
From: https://www.cnblogs.com/warren6/p/16775456.html

相关文章

  • CentOS增加分区空间
    title:CentOS增加分区空间categories:CentOStags:CentOStop:40CentOS增加分区空间CentOS增加home的分区空间给/根目录1.umouthome目录umount/home2.删除/h......
  • CentOS设置服务守护进程
    title:CentOS设置服务守护进程categories:CentOStags:CentOSCentOS设置服务守护进程一.介绍Systemctl是linux系统继init.d之后的一个systemd工具,主要负责控制syst......
  • CentOS配置硬盘自动挂载
    title:CentOS配置硬盘自动挂载categories:CentOStags:CentOStop:30CentOS配置硬盘自动挂载1.查看Linux硬盘信息sudofdisk-l2.格式化新硬盘**(很危险,注意操......
  • CentOS配置本地yum源
    title:CentOS配置本地yum源categories:[CentOS]tags:CentOStop:20CentOS配置本地yum源为了方便测试与开发,常常需要在虚拟机上安装各种开发环境,如果没有yum源......
  • CentOS免密登录
    title:CentOS免密登录categories:CentOStags:CentOSCentOS免密登录#!/bin/shpass=root123yuminstallexpect-yecho"y"|ssh-keygen-trsa-P""-f/root/.......
  • 1、Centos7下安装Oracle11gR2及多实例
    实验环境:系统:2核8G内存60G硬盘,centos7.4;优化操作:已经关闭了防火墙、selinux,/etc/hosts文件中以添加"172.16.1.92slave-node2"的主机解析记录;设置u......
  • CentOS 配置免密登录
    1、跳板机操作:连续三次回车,生成私钥和密钥ssh-keygen-trsa 2、ssh-copy-id-i/root/.ssh/id_rsa.pub192.168.1.100//依次输入yes,123456(root用户的密码)ssh-......
  • centos7 中安装java8
     使用yum安装001、查看安装包[root@localhosttest]#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)  002、查看java8安装包[root@localho......
  • centos7.6 安装Tomcat-8.5.39的方法
    下面给大家介绍centos7.6安装Tomcat-8.5.39的方法,具体内容如下所示: #关闭防火墙systemctlstopfirewalld.servicesystemctldisablefirewalldsetenforce0sed-......
  • Centos7使用sendEmail-v1.56发送邮件
    Centos7使用sendEmail-v1.56发送邮件注意:Centos7默认使用perl5.16,而sendEmail-v.1.56要求使用perl5.10。否则会报以下错误。所以需要下载并安装Perl-5.10Usingthedefa......