Linux管理员 - 防火墙设置

firewalld 是CentOS上iptables的默认前端控制器. firewalld 前端比原始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

现在我们已经配置了firewalld服务,让我们确保它可以运行.

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

我们可以看到,firewalld服务功能齐全.

Firewalld适用于区域的概念.区域通过网络管理器应用于网络接口.我们将在配置网络中讨论这个问题.但就目前而言,默认情况下,更改默认区域将更改处于默认状态"默认区域"的任何网络适配器.

让我们快速浏览一下 firewalld 开箱即用的每个区域.

Sr.No.Zone&说明
1

drop

信任度低.所有传入的连接和数据包都被丢弃,只有传出连接可以通过状态完整

2

阻止

使用icmp消息回复传入连接,让发起人知道请求被禁止

3

公共

所有网络都受到限制.但是,可以明确允许选择的传入连接

4

外部

为NAT配置firewalld.内部网络保持私密但可以访问

5

dmz

仅允许某些传入连接.用于DMZ隔离的系统

6

工作

默认情况下,假设系统处于安全的工作环境中,请信任网络上的更多计算机

7

磨刀石

默认情况下,更多服务未经过滤.假设系统在家庭网络上,将使用NFS,SAMBA和SSDP等服务

8

信任

网络上的所有计算机都是可信任的.允许大多数传入连接不受限制. 这不适用于暴露于互联网的接口

最多常用的区域包括:公共区域,丢弃区域,工作区域和家庭区域.

使用每个公共区域的一些情况是 :

  • public : 它是管理员使用的最常用区域.它允许您应用自定义设置并遵守RFC规范,以便在LAN上进行操作.

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

  • 工作 : 您位于半安全的公司LAN上.所有交通都可以被认为是中等安全的.这意味着它不是WiFi,我们可能有IDS,IPS和物理安全性或802.1x.我们也应该熟悉使用局域网的人.

  • home : 你在家里的局域网上.您个人对LAN上的每个系统和用户负责.你知道局域网上的每台机器都没有受到任何损害.通常会为受信任的个人提供新的服务以进行媒体共享,为了安全起见,您不需要花费额外的时间.

区域和网络接口在一个到多个级别上工作.一个网络接口一次只能应用一个区域.同时,区域可以同时应用于多个界面.

让我们看看哪些区域可用以及当前应用的区域是什么.

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


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

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

首先,让我们看看我们的盒子是什么对于来自外部的portscanner看起来像.

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1
 
Starting Nmap 7.30 ( https://img01.yuandaxia.cn/Content/img/tutorials/linux_admin/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] #snence-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://img01.yuandaxia.cn/Content/img/tutorials/linux_admin/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.

让我们将默认区域设置为 drop ,看看端口扫描会发生什么.

[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://img01.yuandaxia.cn/Content/img/tutorials/linux_admin/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#

现在,所有内容都是从外部过滤的.

如下所示,主机甚至不响应ICMP ping请求 drop .

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]#

As配置后,我们的端口80过滤规则仅在运行配置的上下文中.这意味着一旦系统重新启动或firewalld服务重新启动,我们的规则将被丢弃.

我们将很快配置一个 httpd 守护进程,所以让我们来做我们的更改持续 :

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

[root@CentOS]# systemctl restart firewalld

[root@CentOS]#

现在我们在公共区域中的端口80规则在重新启动和服务重新启动时是持久的.

以下是使用 firewall-cmd的常见firewalld命令.

命令动作
firewall-cmd --get-zones列出可应用于接口的所有区域
firewall-cmd -status
返回firewalld服务的当前状态
firewall-cmd --get-default-zone获取当前默认区域
firewall-cmd --set-default-zone =< zone>将默认区域设置为当前上下文
firewall-cmd --get-active-zone获取应用于接口的上下文中的当前区域
firewall-cmd --zone =&lt ;区&GT; --list-all列出提供区域的配置
firewall- cmd --zone =< zone> --addport =< port/transport protocol>将端口规则应用于区域过滤器
-  permanent对区域进行持久更改.标志与修改命令一起使用

这些是管理和配置 firewalld .

在更复杂的网络方案中,在CentOS中配置基于主机的防火墙服务可能是一项复杂的任务.在CentOS中高级使用和配置 firewalld 和iptables可以完成整个教程.但是,我们已经提出了足以完成大部分日常任务的基础知识.