如何保障您的 Ubuntu 服务器安全

0 股票
0
0
0
0

介绍

我还记得我的第一台服务器。当时我几乎没做任何安全措施,因为我不知道心怀不轨的人能入侵我的服务器。结果可想而知。幸运的是,我有备份,可以轻松恢复。但同样的事情再次发生。所以,这一次,我做了些研究,认真准备,提高了服务器的安全性。我知道世上没有绝对安全的服务器,但我会向你展示如何保护服务器安全,以及服务器宕机时该如何应对。.

我们将从基本设置开始。您将学习如何创建新服务器。然后,我们将介绍如何通过定期检查来维护服务器。最后,您将学习服务器宕机时的应对措施。本教程不会让您成为专业的服务器管理员,因为这需要大量的工作,而且是一项严肃的任务。但至少您可以确保您的业余项目安全无虞。.

先决条件
  • 1 台服务器(例如,使用 Hetzner)

步骤 1 – 初始设置和基本安全

服务器创建完成后,请按照“使用 Ubuntu 进行初始服务器设置”教程中的步骤 1 到 5 进行操作。该教程解释了如何:

  • 创建一个具有 sudo 权限的新用户
  • 添加 SSH 密钥

完成链接教程的前 5 个步骤并连接到新的 sudo 用户后,您可以继续执行以下步骤。.

系统更新

首先,您应该检查软件更新,因为过时的软件可能存在容易被利用的漏洞。这比您想象的要简单;只需运行以下两个命令:

sudo apt update
sudo apt upgrade

很简单,对吧?我们现在已经确保使用的是最新版本。.

安全 SSH 访问

当有人攻击你的服务器时,他们首先可能会尝试通过 SSH 访问。他们通常会使用机器人程序和多种方法进行攻击。因此,保护 SSH 访问安全至关重要。.

编辑配置文件:

sudo nano /etc/ssh/sshd_config
  • 禁用 root 访问权限

找到“PermitRootLogin”这一行,并将其更改为“no”。.

  • 禁用密码输入

如果您按照上述建议添加了 SSH 密钥,则可以禁用密码输入。.

    • “找到”密码验证“并将其设置为”否”。.
    • “找到”PubkeyAuthentication“并将其设置为”是”。.
  • 更改默认 SSH 端口

仅仅通过改变这一点,我们就可以消除大部分自动机器人攻击,因为它们大多是假机器人,试图通过 22 端口访问 SSH。.

找到“#Port 22”这一行,并将其更改为类似“Port 2222”的内容(或者将 2222 更改为您想要的任何内容)。.

保存更改并检查端口是否已成功更改:

sudo systemctl restart ssh.service
sudo systemctl status ssh

确保显示“服务器正在监听 :: 端口 2222”。.

如果指定了端口 2222,您可以运行以下命令终止与服务器的连接,并检查与新端口的连接是否有效:

ssh -p 2222 holu@<203.0.113.1>

如果可以连接到您设置的端口,则可以继续学习本教程。.

配置防火墙

我们将使用“ufw”来管理防火墙规则。它设计简洁易用,并提供命令行界面。您的系统可能已经安装了ufw,但您可以运行以下命令来确认它是否已安装:

sudo apt install ufw

接下来,我们将拒绝所有入站网络流量,除非其他规则明确允许。这对于保护服务器安全至关重要,因为它只允许您明确允许的流量通过。您需要运行以下命令:

sudo ufw default deny incoming

接下来,我们允许所有出站网络流量。这通常是安全的,并允许您的服务器与其他服务器或服务不受限制地通信。运行以下命令:

sudo ufw default allow outgoing

现在我们需要允许 SSH 端口通过 SSH 连接到服务器。如果您指定了其他 SSH 端口,请务必将 2222 替换为您的端口号,然后运行以下命令:

sudo ufw allow 2222/tcp

最后,我们需要启用防火墙规则:

sudo ufw enable

失败2Ban

我们更改了 SSH 端口并设置了防火墙。但是,如果某个机器人找到了我们的端口并仍然尝试通过 SSH 访问我们的服务器,会发生什么情况?这将是一次暴力破解攻击,我们可以使用 Fail2Ban 来保护我们的服务器。该软件会封禁那些显示出恶意迹象或恶意尝试的 IP 地址。要安装并启用 Fail2Ban,您需要运行以下三个命令:

sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

您还可以通过编辑 /etc/fail2ban/ 文件夹中的配置文件来自定义 Fail2Ban 设置。有关更多详细信息和最佳实践,您可以查阅 Fail2Ban 文档。.

太棒了!您已经迈出了重要一步,现在您的服务器安全性能得到了提升。目前,您只需定期进行一些维护工作即可。我们将在下一节中详细说明您需要做什么。.

步骤二 – 定期维护

  • 系统更新

首先,我们需要检查系统是否有任何更新。运行以下命令:

sudo apt update && sudo apt upgrade -y
  • 监测报告

您应该定期检查系统日志以检测异常活动。Logwatch 可以帮助您自动执行此过程。您可以使用以下命令安装 Logwatch:

sudo apt install logwatch

您可以参考本指南了解更多详细信息,了解如何设置每日报告,以及查看报告的样式。.

  • 检查磁盘使用情况。

为了确保您有足够的空间运行服务器,请使用以下命令检查剩余磁盘空间:

df -h
  • 备份您的数据。

为了确保在服务器完全删除或无法访问的情况下能够恢复,您应该始终拥有多个备份。幸运的是,Hetzner 为云服务器提供了一套自动化备份解决方案,您可以在其官方文档中查看相关信息。如果您想设置自己的备份,可以使用诸如“rsync”或“Duplicity”之类的工具。.

  • 审核用户帐户

请务必定期检查服务器上的用户帐户。确保只有授权用户才能访问您的服务器。删除任何不再需要的帐户。您可以通过运行以下命令来检查用户帐户:

sudo nano /etc/passwd
  • 检查是否存在Rootkit和恶意软件

要快速扫描服务器,可以使用“rkhunter”和“chkrootkit”等工具。这些工具可以帮助您检查是否存在rootkit、后门和本地漏洞,并确保一切正常。运行以下命令以确保rkhunter已安装并进行检查:

sudo apt install rkhunter
sudo rkhunter --check

  • 系统性能监控

最后,您可以快速检查系统性能,确保软件运行过程中没有资源瓶颈。可以使用诸如«htop»、«top»或«atop»之类的工具。但您也可以直接运行以下命令:

htop

步骤 3 – 更多安全工具

  • 使用入侵检测系统。

您可以使用“AIDE”(高级入侵检测环境)等工具来监控系统变更。它会创建一个包含您文件和文件夹的数据库,并将您的系统与该数据库进行比较,以确保文件完整性。您可以从其代码库中查看更多详细信息。首次使用时,您可以使用以下命令进行安装:

sudo apt install aide

使用以下命令启动并生成数据库:

sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

然后使用以下命令将您的系统与数据库进行比较:

sudo aide --config /etc/aide/aide.conf --check
  • 启用双因素身份验证 (2FA)

您还可以设置双因素身份验证 (2FA),以便通过 SSH 登录服务器。这可以增加一层额外的保护,并降低未经授权访问的风险。您可以使用以下命令进行安装:

sudo apt install libpam-google-authenticator

运行以下命令即可启动它:

google-authenticator
  • 安全 Web 应用程序

如果您在服务器上运行 Web 应用程序,请务必遵循最佳实践并定期更新。例如,如果您运行的是 WordPress,则应始终使用最新版本的 WordPress,并保持所有插件和主题的更新。此外,您还应该安装合适的 WordPress 安全插件。这将降低未经授权访问您的服务器和应用程序的风险。.

第四步——事件响应计划

大型机构的方案可以非常详细,但对于小型娱乐服务器,我们会尽量简化,使其易于操作。因此,我为您准备了一个三步计划。.

  • 准备

在本部分,您需要在记事本程序中创建一个关于服务器信息的简短文本文件或笔记。内容应包括服务器架构、运行的软件、备份和日志的存储位置以及您的配置等信息。请将此笔记妥善保管。您可以参考以下示例作为起点:

服务器信息
信息描述
服务器名称我的服务器01
IP地址192.168.1.100
操作系统Ubuntu 24.04 LTS
中央处理器4 个虚拟 CPU
内存8GB
贮存100GB 固态硬盘
SSH端口2222
    • 软件和服务:Nginx 1.18.0、PostgreSQL 13、Django 3.1
    • 备份:双重备份,每日备份,分别存储在 /mnt/backup 和 AWS S3 远程存储中,保留期 30 天。
    • Nginx 配置:/etc/nginx/nginx.conf
    • PostgreSQL 配置:/etc/postgresql/13/main/postgresql.conf
    • Django 配置:/home/myuser/myapp/settings.py
    • UFW 配置:/etc/ufw/ufw.conf
  • 鉴别

此时,您需要检查服务器到底出了什么问题。问题或安全漏洞是与您的 Web 应用程序、服务器本身,还是服务器内部的某个数据库有关?如果您不确定,请始终假设所有环节都存在风险。因此,您需要重新开始检查所有内容,首先从服务器入手。.

  • 改进

本节介绍如何恢复受损系统。如果您无法访问服务器,则应从服务器备份进行恢复。如果您的某个 Web 应用程序出现故障,则可能只需从其备份进行恢复。请确保所有内容均已恢复、测试完毕且运行正常,并已运行安全扫描。.

结果

保护服务器安全需要结合最佳实践和定期维护。按照本文所述步骤操作,您可以显著提高服务器安全性并保护您的宝贵数据。请记住,安全是一个持续的过程,因此请务必定期检查您的服务器。.

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢