使用防火墙和服务管理加固 Linux 端点

CompTIABeginner
立即练习

介绍

端点加固是保护任何计算机系统的关键过程。它涉及减小系统的“攻击面”,使其不易受到安全威胁。加固 Linux 系统的两个基本方面是管理运行的服务和实施防火墙。

在本实验中,你将亲身体验这些重要的安全实践。你将学习如何:

  • 识别并禁用对系统功能非必需的服务。
  • 安装和配置 Uncomplicated Firewall (UFW),这是一个用于管理 Linux 网络过滤规则的用户友好界面。

通过本实验的学习,你将对如何对 Linux 端点应用基本的加固技术有一个实际的理解。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 100%。获得了学习者 80% 的好评率。

识别并禁用不必要的服务

在此步骤中,你将学习如何识别 Linux 系统上运行的服务并禁用那些不需要的服务。减少运行的服务数量可以最小化潜在的攻击面,因为每个服务都可能存在漏洞。

首先,让我们列出所有正在运行的服务。在某些 Linux 环境中,尤其是在容器中,systemctl 命令不可用。我们可以使用 service 命令作为替代。

在你的终端中执行以下命令,查看所有服务的状态:

service --status-all

你将看到一个服务列表。服务名称旁边的 [ + ] 表示该服务正在运行,而 [ - ] 表示该服务已停止。

 [ - ]  acpid
 [ - ]  apparmor
 [ + ]  apache2
 [ - ]  atop
 [ - ]  atopacct
 [ + ]  cron
...

请注意,作为 Web 服务器的 apache2 正在运行。对于不需要托管网站的通用端点,此服务是不必要的,应将其禁用。

要停止 apache2 服务,请使用带有 stop 参数的 service 命令。你需要 sudo 权限来管理系统服务。

sudo service apache2 stop

现在,通过再次检查其状态来确认服务已停止:

service apache2 status

输出将确认 Apache2 服务不再运行。

○ apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Tue 2025-08-05 14:44:53 CST; 2s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 5892 ExecStop=/usr/sbin/apachectl graceful-stop (code=exited, status=0/SUCCESS)
   Main PID: 4800 (code=exited, status=0/SUCCESS)
        CPU: 50ms

通过禁用不需要的服务,你已经采取了一个简单而有效的步骤来加固你的系统。

安装并配置 Uncomplicated Firewall (UFW)

在这一步中,你将安装 Uncomplicated Firewall (UFW)。UFW 是强大但复杂的 iptables 防火墙的一个用户友好型前端。它提供了一种简化的方式来配置常见的防火墙规则。

首先,更新你的软件包列表并安装 ufw 软件包。

sudo apt-get update && sudo apt-get install -y ufw

安装完成后,UFW 将被安装但尚未激活。你可以使用以下命令检查其状态:

sudo ufw status

输出将显示防火墙处于非活动状态:

Status: inactive

要激活防火墙,你需要启用它。此命令将启动防火墙并配置它在系统启动时自动运行。

注意: 在远程服务器上启用防火墙时,你必须确保有一个允许 SSH 访问的规则。否则,你可能会被锁定在系统之外。对于这个 lab 环境,继续操作是安全的。

现在启用 UFW:

sudo ufw enable

系统会提示你确认操作。该命令将启用防火墙,并可能中断现有连接。

Firewall is active and enabled on system startup

我们再次检查状态,这次使用 verbose 选项以查看更多详细信息,包括默认策略。

sudo ufw status verbose

输出现在将显示防火墙处于活动状态,并列出默认策略。默认情况下,UFW 拒绝所有传入流量并允许所有传出流量,这是一个安全的起点。

Status: active
Logging: off
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

由于防火墙现在已激活并默认阻止所有传入连接,我们需要允许 SSH 访问,以确保我们可以继续远程管理系统。

添加一条规则以允许 SSH 连接:

sudo ufw allow ssh

你将看到规则已添加的确认信息:

Rule added
Rule added (v6)

这确保了在防火墙激活期间 SSH 访问仍然可用。

创建并测试基础防火墙规则

现在 UFW 已激活,你将学习如何创建规则来控制网络流量。我们将添加规则以允许特定的、必需的服务,同时默认阻止所有其他流量。

首先,让我们确保我们的默认策略设置正确。明确定义它们是一个好习惯。

sudo ufw default deny incoming
sudo ufw default allow outgoing

由于我们在上一步中已经配置了 SSH 访问,让我们为自定义应用程序添加一条规则。假设我们在端口 8080 上运行一个自定义 Web 应用程序。我们需要创建一条规则来允许到此特定端口的流量。

sudo ufw allow 8080/tcp

此命令专门允许 TCP 端口 8080 上的入站流量。

Rule added
Rule added (v6)

要查看当前规则列表,你可以使用带 numbered 选项的 ufw status。这使得以后管理或删除规则更加容易。

sudo ufw status numbered

输出将显示你的新规则,每个规则旁边都有一个编号。

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 8080/tcp                   ALLOW IN    Anywhere
[ 3] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 4] 8080/tcp (v6)              ALLOW IN    Anywhere (v6)

你现在已经配置了防火墙,使其只允许必要的流量,从而显著提高了系统的安全性。

审查系统日志以了解防火墙活动

在此步骤中,你将学习如何启用和查看 UFW 的日志记录。日志对于监控网络流量、识别潜在的安全威胁以及对连接问题进行故障排除至关重要。

UFW 的日志记录默认是禁用的。你可以使用一个简单的命令启用它。

sudo ufw logging on

你将看到日志记录已启用的确认信息。

Logging enabled

UFW 日志写入到 /var/log/ufw.log 文件中。请注意,日志文件在启用日志记录后可能不会立即存在;它会在第一条日志条目写入时自动创建。

你可以使用带有 -f (follow) 标志的 tail 命令实时查看日志文件。如果文件尚不存在,该命令将等待它被创建:

sudo tail -f /var/log/ufw.log

此命令将显示日志的最后几行并等待新条目。在实时环境中,你会看到防火墙阻止或允许连接时日志条目出现。由于此 Lab 环境没有外部流量尝试访问它,你可能看不到任何新条目。按 Ctrl+C 停止跟踪日志。

一个典型的被阻止数据包的日志条目如下所示:

Sep 10 12:00:00 ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:02:03:04:05:06:07:08:09:0a:0b:0c SRC=192.168.1.10 DST=192.168.1.20 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=12345 PROTO=TCP SPT=54321 DPT=23 WINDOW=0 RES=0x00 SYN URGP=0

以下是对重要字段的快速分解:

  • [UFW BLOCK]: 表示防火墙执行的操作。
  • SRC: 数据包的源 IP 地址。
  • DST: 目标 IP 地址。
  • PROTO: 网络协议(例如,TCP, UDP)。
  • DPT: 目标端口。

你也可以使用 grep 来搜索日志文件中的特定事件。例如,要查找所有被阻止的连接尝试,你可以运行:

sudo grep "UFW BLOCK" /var/log/ufw.log

如果日志文件尚不存在或为空,此命令将不返回任何结果,这是正常的。一旦发生防火墙活动,日志条目将被写入,然后你就可以搜索它们。此命令将过滤日志并仅显示包含字符串 "UFW BLOCK" 的行,这对于识别可疑活动的模式非常有用。

总结

恭喜你!你已成功完成了本次关于加固 Linux 端点的实验。

在此次实验中,你获得了基础安全任务的实践经验。你已学会如何:

  • 使用 service 命令识别 Linux 系统上运行的服务。
  • 停止和禁用不必要的服务,以减小系统的攻击面。
  • 安装、启用和配置 Uncomplicated Firewall (UFW)。
  • 为 SSH 和自定义应用程序等必需服务创建特定的 allow 规则。
  • 启用和查看 UFW 日志,以监控防火墙活动并检测潜在威胁。

这些是任何负责维护安全且健壮的 Linux 环境的系统管理员或开发人员的基础技能。通过应用这些技术,你可以显著提高系统的安全状况。