6 个开源工具和技巧,帮助初学者保护 Linux 服务器安全

使用开源工具保护您的 Linux 环境免受漏洞攻击。
174 位读者喜欢这篇文章。
Avoiding data disasters with Sanoid

Opensource.com

由于我们大量的个人和专业数据如今都可以在网上获取,因此从专业人士到普通互联网用户,每个人都必须学习安全和隐私的基础知识。作为一名学生,我通过学校的 CyberPatriot 计划获得了这方面的经验,我有机会与行业专家互动,了解网络漏洞以及建立系统安全的基本步骤。

本文详细介绍了六个简单的步骤,根据我作为初学者至今所学到的知识,来提高您个人使用的 Linux 环境的安全性。在我的学习过程中,我利用开源工具来加速我的学习过程,并熟悉与保护我的 Linux 服务器相关的更高级的概念。

我使用 Ubuntu 18.04(我最熟悉的版本)测试了这些步骤,但这些步骤也适用于其他 Linux 发行版。

1. 运行更新

开发人员不断寻找方法,通过修补已知的漏洞来使服务器更稳定、快速和安全。定期运行更新是养成最大化安全性的好习惯。使用以下命令运行更新:

sudo apt-get update && apt-get upgrade

2. 启用防火墙保护

启用防火墙 可以更轻松地控制服务器上的传入和传出流量。您可以在 Linux 上使用许多防火墙应用程序,包括 firewall-cmd 和简易防火墙 (UFW)。我使用 UFW,所以我的示例是针对它的,但这些原则适用于您选择的任何界面。

安装 UFW

sudo apt-get install ufw

如果您想进一步保护您的服务器,您可以拒绝传入和传出的连接。警告:这会断开您的服务器与外界的连接,因此一旦您阻止了所有流量,您必须指定允许哪些传出连接来自您的系统

sudo ufw default deny incoming
sudo ufw default allow outgoing

您还可以编写规则来允许您个人需要的传入连接

ufw allow <service>

例如,要允许 SSH 连接

ufw allow ssh

最后,使用以下命令启用您的防火墙:

sudo ufw enable

3. 加强密码保护

实施强密码策略是保护服务器免受网络攻击和数据泄露的重要方面。密码策略的一些最佳实践包括强制执行最小长度和指定密码有效期。我使用 libpam-cracklib 软件包来完成这些任务。

安装 libpam-cracklib 软件包

sudo apt-get install libpam-cracklib

强制执行密码长度

  • 打开 /etc/pam.d/common-password 文件。
  • 通过将 minlen=12 行更改为您想要的字符数,来更改所有密码的最小字符长度。

防止密码重用

  • 在同一个文件 (/etc/pam.d/common-password) 中,添加行 remember=x
  • 例如,如果您想阻止用户重用他们最近的五个密码之一,请使用:remember=5

强制执行密码有效期

  • /etc/login.defs 文件中找到以下行,并将它们替换为您首选的时间量(天)。例如:
    PASS_MIN_AGE: 3
    PASS_MAX_AGE: 90
    PASS_WARN_AGE: 14

强制执行字符规范

  • 在密码中强制执行字符规范的四个参数是 lcredit(小写)、ucredit(大写)、dcredit(数字)和 ocredit(其他字符)。
  • 在同一个文件 (/etc/pam.d/common-password) 中,找到包含 pam_cracklib.so 的行。
    • 将以下内容添加到此行的末尾:
      lcredit=-a ucredit=-b dcredit=-c ocredit=-d
    • 例如,以下行要求密码包含每个参数的一个。您可以根据您首选的密码安全级别更改数字:
      lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1

4. 禁用容易被利用的非必要服务

禁用不必要的服务是一种最佳实践。这样可以减少暴露于漏洞的可开放端口。

安装 systemd 软件包

sudo apt-get install systemd

查看哪些服务正在运行

systemctl list-units

识别 哪些服务可能对您的系统造成潜在漏洞。对于每个服务:

  • 停止当前正在运行的服务
    systemctl stop <service>
  • 禁用服务在启动时启动
    systemctl disable <service>
  • 运行这些命令后,检查服务的状态
    systemctl status <service>

5. 检查侦听端口

开放端口可能会带来安全风险,因此检查服务器上正在侦听的端口非常重要。我使用 netstat 命令来显示所有网络连接:

netstat -tulpn

查看地址列以确定 端口号。找到开放端口后,检查它们以确保它们都是必要的。如果不是,调整您正在运行的服务,或调整您的防火墙设置(或让 fail2ban 为您调整它)。

6. 扫描恶意软件

防病毒扫描软件对于将病毒拒之系统之外非常有用。使用它们是保持服务器免受恶意软件侵害的简单方法。我首选的工具是开源软件 ClamAV

安装 ClamAV

sudo apt-get install clamav

更新病毒签名

sudo freshclam

扫描所有文件并打印出受感染的文件,并在找到文件时发出提示音

sudo clamscan -r --bell -i /

您可以并且应该自动化扫描,这样您就不必记住或花费时间手动执行扫描。对于像这样的简单自动化,您可以使用 systemd 定时器 或您 最喜欢的 cron

保持服务器安全

我们不能将保护服务器安全的责任留给个人或组织。随着威胁形势持续快速扩展,我们每个人都有责任意识到服务器安全的重要性,并采用一些简单有效的安全最佳实践。

这些只是您可以采取的众多步骤中的一小部分,以确保您的 Linux 服务器安全。当然,预防只是解决方案的一部分。这些策略应与严格监控拒绝服务攻击、使用 Lynis 进行系统分析以及创建频繁备份相结合。

您使用哪些开源工具来保持服务器安全?请在评论中告诉我们。

接下来阅读什么
User profile image.
Sahana Sreeram 是杜克大学的一年级学生。她喜欢用 Python 和 Java 编程,并在 AI4ALL 和 MIT FutureMakers 计划中获得了构建 AI 系统的经验。Sahana 也是她学校 CyberPatriot 团队的一员,她在那里学习如何使用 Linux 保护界面安全。

5 条评论

曾经有一段时间,我有一个服务器连接到外部世界接收 ssh。我发现有用但有点可怕的是查看尝试登录的日志。它们在您打开服务器后立即开始,并 24/7 不间断地继续。

我真的希望在列表中看到 fail2ban。该工具对于初学者来说并不完全适用,但默认的 ssh 设置已经足够好,并且是一个很好的起点。

Fail2ban 是一个非常有用的工具,可以添加到这里很棒的建议列表中。

回复 ,作者:Daniel

好文章

链接到关于升级的第一点,使用 unattended-upgrades 在 Debian/Ubuntu 服务器上自动安装安全更新有助于保持系统安全,而无需人工干预。可以通过运行 `sudo apt install unattended-upgrades` 来设置它,然后在选项提示符处选择“是”以启用自动升级。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.