Linux Admin教程

Linux Admin 防火墙

firewalld 是 CentOS 上 iptables 的默认前端控制器。 firewalld 前端与原始 iptables 相比有两个主要优势-
使用易于配置的d 实现区域抽象链和规则。 规则集是动态的,这意味着在更改和/或修改设置时有状态的连接不会中断。
请记住, 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 自带的每个区域。
区域和描述
drop
信任度低。所有传入的连接和数据包都被丢弃,只有传出连接才能通过 statefullness
block
使用icmp消息回复传入的连接,让发起者知道请求被禁止
public
所有网络都受到限制。但是,可以明确允许选定的传入连接
external
为 NAT 配置 firewalld。内部网络保持私密但可访问
dmz
只允许某些传入连接。用于 DMZ 隔离的系统
工作
默认情况下,如果系统处于安全的工作环境中,则信任网络上的更多计算机
hone
默认情况下,未过滤更多服务。假设系统位于家庭网络上,其中将使用 NFS、SAMBA 和 SSDP 等服务
可信
网络上的所有机器都是可信的。允许大多数传入连接不受限制。 这不适用于暴露在 Internet 上的接口
最常用的区域是:public、drop、work 和 home。
使用每个公共区域的一些场景是-
public-这是管理员最常用的区域。它将让您应用自定义设置并遵守 RFC 规范以在 LAN 上进行操作。 drop-何时使用 drop 的一个很好的例子是在安全会议、公共 WiFi 或直接连接到 Internet 的接口上。 drop 假定所有未经请求的请求都是恶意的,包括 ICMP 探测。所以任何状态外的请求都不会收到回复。 drop 的缺点是它可能会在某些需要严格遵守 RFC 的情况下破坏应用程序的功能。 work-您在半安全的公司局域网上。所有交通都可以假设为中等安全。这意味着它不是 WiFi,我们可能有 IDS、IPS 和物理安全或 802.1x。我们也应该熟悉使用 LAN 的人。 home-您在家庭局域网上。您个人对 LAN 上的每个系统和用户负责。您知道 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。
让我们将默认区域设置为 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://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 过滤规则仅在运行配置的上下文中。这意味着一旦系统重新启动或 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 命令。
命令 Action
firewall-cmd--get-zones 列出可以应用到一个接口的所有区域
firewall-cmd —状态 返回 firewalld 服务的当前状态
firewall-cmd--get-default-zone 获取当前默认区域
firewall-cmd--set-default-zone= 将默认区域设置为当前上下文
firewall-cmd--get-active-zone 获取上下文中应用于接口的当前区域
firewall-cmd--zone= --list-all 列出提供区域的配置
firewall-cmd --zone=<zone> --addport=<port/transport protocol>
--permanent 对区域进行持久更改。标志与修改命令内联使用
这些是管理和配置 firewalld的基本概念。
在更复杂的网络场景中,在 CentOS 中配置基于主机的防火墙服务可能是一项复杂的任务。 firewalld 和 iptables 在 CentOS 中的高级用法和配置可能需要一整个教程。但是,我们已经介绍了足以完成大部分日常任务的基础知识。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4