📜  Linux管理员-防火墙设置

📅  最后修改于: 2020-10-31 13:29:52             🧑  作者: Mango


firewalld是CentOS上iptables的默认前端控制器。与原始iptables相比,防火墙前端有两个主要优势-

  • 使用易于配置的区域并实现抽象链和规则的区域。

  • 规则集是动态的,这意味着在更改和/或修改设置时状态连接不会中断。

请记住, firewalld是iptables的包装器-而不是替代品。尽管自定义iptables命令可与firewalld一起使用,但建议使用firewalld,以免破坏防火墙功能。

首先,让我们确保firewalld已启动并启用。

[root@CentOS rdc]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon 
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) 
Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago 
 Docs: man:firewalld(1) 
Main PID: 712 (firewalld) 
  Memory: 34.7M 
 CGroup: /system.slice/firewalld.service 
       └─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

我们可以看到,firewalld既处于活动状态(在启动时启动),又正在运行。如果不活动或未开始,我们可以使用-

systemctl start firewalld && systemctl enable firewalld

现在我们已经配置了防火墙服务,让我们确保它可以运行。

[root@CentOS]# firewall-cmd --state 
running 
[root@CentOS]#

我们可以看到,firewalld服务已完全正常运行。

Firewalld致力于区域概念。通过网络管理器将区域应用于网络接口。我们将在配置网络时对此进行讨论。但是目前,默认情况下,更改默认区域将更改保留在默认状态“默认区域”中的所有网络适配器。

让我们快速浏览一下firewalld提供的每个可用区域。

Sr.No. Zone & Description
1

drop

Low trust level. All incoming connections and packetsare dropped and only outgoing connections are possible via statefullness

2

block

Incoming connections are replied with an icmp message letting the initiator know the request is prohibited

3

public

All networks are restricted. However, selected incoming connections can be explicitly allowed

4

external

Configures firewalld for NAT. Internal network remains private but reachable

5

dmz

Only certain incoming connections are allowed. Used for systems in DMZ isolation

6

work

By default, trust more computers on the network assuming the system is in a secured work environment

7

hone

By default, more services are unfiltered. Assuming a system is on a home network where services such as NFS, SAMBA and SSDP will be used

8

trusted

All machines on the network are trusted. Most incoming connections are allowed unfettered. This is not meant for interfaces exposed to the Internet

最常用的区域是:公共区域,停靠区域,工作区域和家庭区域。

使用每个公共区域的一些场景是-

  • 公共-这是管理员使用的最常见区域。它将允许您应用自定义设置并遵守RFC规范以在LAN上进行操作。

  • drop-何时使用drop的一个很好的例子是在安全会议,公共WiFi或直接连接到Internet的接口上。 drop假定所有未经请求的请求都是恶意的,包括ICMP探针。因此,任何状态不佳的请求都不会收到答复。缺点是,在某些需要严格遵守RFC的情况下,它可能破坏应用程序的功能。

  • 工作-您在半安全的公司LAN上。可以假定所有流量为中等安全的地方。这意味着它不是WiFi,我们可能已经安装了IDS,IPS和物理安全性或802.1x。我们还应该熟悉使用LAN的人员。

  • home-您在家庭局域网中。您要对局域网上的每个系统和用户个人负责。您知道LAN上的每台计算机,并且没有一台受到威胁。通常会为信任的个人之间的媒体共享带来新的服务,并且出于安全性考虑,您不需要花费额外的时间。

区域和网络接口在一对多的层次上工作。一个网络接口一次只能应用一个区域。同时,一个区域可以同时应用于许多接口。

让我们看一下可用的区域以及当前应用的区域。

[root@CentOS]# firewall-cmd --get-zones 
 work drop internal external trusted home dmz public block
[root@CentOS]# firewall-cmd --get-default-zone 
public
[root@CentOS]#

准备在firewalld中添加一些自定义规则了吗?

首先,让我们看看我们的盒子从外面看是什么样的形状。

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1
 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00046s latency). 
Not shown: 1023 filtered ports 
PORT   STATE SERVICE 
22/tcp open  ssh


Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds 
bash-3.2#

让我们允许传入的请求到端口80。

首先,检查默认应用了哪个区域。

[root@CentOs]# firewall-cmd --get-default-zone 
public
[root@CentOS]#

然后,将允许端口80的规则设置为当前默认区域。

[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp 
success
[root@CentOS]#

现在,让我们在允许端口80连接后选中我们的复选框。

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1

Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00053s latency). 
Not shown: 1022 filtered ports 
PORT   STATE  SERVICE 
22/tcp open   ssh 
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds 
bash-3.2#

现在,它允许未经请求的流量到达80。

让我们把默认的区域下降,并看看会发生什么端口扫描。

[root@CentOS]# firewall-cmd --set-default-zone=drop 
success

[root@CentOS]# firewall-cmd --get-default-zone 
drop

[root@CentOs]#

现在,让我们在更安全的区域中使用网络接口扫描主机。

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00094s latency). 
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered

Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds 
bash-3.2#

现在,一切都从外部过滤掉了。

如下所示,当放置drop时,主机甚至不会响应ICMP ping请求。

bash-3.2# ping 10.211.55.1 
PING 10.211.55.1 (10.211.55.1): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2

让我们再次将默认区域设置为public

[root@CentOs]# firewall-cmd --set-default-zone=public 
success

[root@CentOS]# firewall-cmd --get-default-zone 
public

[root@CentOS]#

现在,让我们在public中检查当前的过滤规则集。

[root@CentOS]# firewall-cmd --zone=public --list-all 
public (active) 
target: default 
icmp-block-inversion: no 
interfaces: enp0s5 
sources:  
services: dhcpv6-client ssh 
ports: 80/tcp 
protocols:  
masquerade: no 
forward-ports:  
sourceports:  
icmp-blocks:  
rich rules:

[root@CentOS rdc]#

按照配置,我们的端口80过滤规则仅在运行配置的上下文内。这意味着一旦系统重新启动或防火墙服务重新启动,我们的规则将被丢弃。

我们将很快配置一个httpd守护进程,所以让我们的更改持久化-

[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent 
success

[root@CentOS]# systemctl restart firewalld

[root@CentOS]#

现在,我们在公共区域中的端口80规则在重新启动和服务重新启动后将保持不变。

以下是对firewall-cmd应用的常见firewalld命令。

Command Action
firewall-cmd –get-zones Lists all zones that can be applied to an interface
firewall-cmd —status Returns the currents status of the firewalld service
firewall-cmd –get-default-zone Gets the current default zone
firewall-cmd –set-default-zone= Sets the default zone into the current context
firewall-cmd –get-active-zone Gets the current zones in context as applied to an interface
firewall-cmd –zone= –list-all Lists the configuration of supplied zone
firewall-cmd –zone= –addport= Applies a port rule to the zone filter
–permanent Makes changes to the zone persistent. Flag is used inline with modification commands

这些是管理和配置Firewalld的基本概念。

在更复杂的网络场景中,在CentOS中配置基于主机的防火墙服务可能是一项复杂的任务。 CentOS中对firewalld和iptables的高级用法和配置可以学习整个教程。但是,我们介绍了足以完成大多数日常任务的基础知识。