Linux 服务器因其灵活性、成本效益和强大的性能而在企业和个人中获得了极大的普及。 但是,确保这些服务器的安全至关重要。

在本文中,我们将探索如何使用 CSF(ConfigServer Security & Firewall)或类似软件来保护 Linux 服务器,并为您提供链接和示例来强化您的服务器。

什么是脑脊液?

CSF 是一款功能强大的状态防火墙,专为 Linux 服务器设计。 它提供易于使用的界面和全面的安全功能,使其成为系统管理员的热门选择。

CSF 不仅是防火墙,还是入侵检测系统,主动监控和阻止恶意活动。

您可以在其官方网站上了解有关 CSF 及其功能的更多信息:ConfigServer Security & Firewall

为什么选择 CSF?

为您的 Linux 服务器选择 CSF 而不是其他防火墙解决方案的原因有以下几个:

  • 易于安装和设置
  • 定期更新和积极的社区支持
  • 与大多数 Linux 发行版和控制面板兼容
  • 全面的安全功能,包括入侵检测和登录失败跟踪
  • 可定制的配置选项

How to Install and Configure CSF

在安装 CSF 之前,必须卸载或禁用服务器上的任何其他防火墙。 按照以下步骤安装和配置 CSF:

  1. 通过 SSH 以 root 用户身份登录到您的服务器。
  2. 使用命令下载最新版本的 CSF:
1wget https://download.configserver.com/csf.tgz
  1. 解压缩下载的存档:
1tar -xzf csf.tgz
  1. 导航到提取的目录并运行安装程序脚本:
1cd csf
2sh install.sh
  1. 使用您喜欢的文本编辑器(例如 nano 或 vim)打开位于 /etc/csf/csf.conf 的配置文件。 自定义设置以满足您的安全要求。
  2. 配置 CSF 后,运行以下命令测试服务器的兼容性:
1perl /usr/local/csf/bin/csftest.pl
  1. 如果测试成功,通过将配置文件中的 TESTING 设置更改为 0 来启用 CSF。
  2. 重新启动 CSF 以应用更改:
1csf -r

有关更详细的说明和配置选项,请参阅 CSF 官方文档

增强安全性的最佳 CSF 配置

以下是优化 CSF 配置的一些推荐设置,可增强 Linux 服务器的安全性。

请记住,这些设置可能并不适合所有服务器环境,因此根据您的特定需求定制它们很重要。 在生产服务器上实施之前始终测试任何更改。

  1. 限制传入和传出连接

通过在 TCP_INTCP_OUTUDP_INUDP_OUT 部分中指定它们,将传入和传出连接限制为仅必要的端口。 例如:

1TCP_IN = "22,80,443"
2TCP_OUT = "22,80,443,53"
3UDP_IN = "53"
4UDP_OUT = "53"
  1. 启用登录失败检测

通过启用配置文件中的LF_*选项,确保 CSF 跟踪登录失败:

1LF_TRIGGER = "5"
2LF_SSHD = "5"
3LF_FTPD = "10"
4LF_SMTPAUTH = "5"
5LF_POP3D = "10"
6LF_IMAPD = "10"

此示例在指定时间段内对 SSH、FTP、SMTP、POP3 和 IMAP 登录尝试失败 5 次后设置临时阻止触发器。

  1. 启用流程跟踪

通过启用进程跟踪来监视服务器进程的可疑活动:

1PT_LIMIT = "60"
2PT_USERMEM = "200"
3PT_USERTIME = "1800"
4PT_USERKILL = "1"

此示例设置进程跟踪的 60 秒间隔,内存使用限制为 200 MB,最大进程时间为 1800 秒,并且能够杀死超过这些限制的进程。

  1. 记住在对配置文件进行任何更改后重新启动 CSF:
1csf -r

在 CSF 中使用配置文件增强安全性

CSF 中的配置文件是为特定用例或安全级别量身定制的预定义配置选项集。 它们允许您在不同配置之间快速切换,而无需手动调整各个设置。

当您想要实施更严格的安全措施或暂时放宽规则时,这会特别有用。 在本节中,我们将解释什么是配置文件、如何使用它们以及实施它们时的一些注意事项。

什么是 CSF 配置文件?

CSF 配置文件本质上是存储不同场景的特定设置的配置文件。 这些配置文件可以通过单个命令应用,从而可以轻松地在各种安全配置之间切换。

CSF 带有几个默认配置文件,每个配置文件都为特定目的而设计,例如 Web 服务器或邮件服务器。

如何使用 CSF 配置文件

  1. 首先,导航到 CSF 配置文件目录:
1cd /usr/local/csf/profiles
  1. 列出可用的配置文件:
1ls

您应该会看到默认配置文件的列表,例如 webserver.confmailserver.confdefault.conf

  1. 要应用配置文件,请使用以下命令:
1csf --profile <profile_name>
  1. 例如,要应用 webserver.conf 配置文件,请使用:
1csf --profile webserver
  1. 如果要创建自定义配置文件,请将现有配置文件复制到配置文件目录:
1cp /etc/csf/csf.conf /usr/local/csf/profiles/my_custom_profile.conf

然后,使用您喜欢的文本编辑器编辑 my_custom_profile.conf 文件,并根据您的需要调整设置。 进行更改后,您可以使用前面提到的相同命令应用自定义配置文件。

使用 CSF 配置文件时的注意事项

  1. 在应用新配置文件之前备份您当前的配置。 这确保您可以在需要时轻松恢复到以前的设置。
  2. 在将新配置文件应用到实时服务器之前,在非生产环境中对其进行测试。 这有助于识别可能出现的任何潜在问题或冲突。
  3. 创建自定义配置文件时,确保遵循保护 Linux 服务器的最佳实践,并考虑您的特定用例和环境。
  4. 定期查看和更新您的个人资料,以了解最新的安全建议和最佳实践。
  5. 请记住,应用新配置文件将覆盖当前设置。 确保在应用配置文件之前仔细检查配置文件的内容,尤其是在您使用自定义配置文件或对默认配置文件进行更改时。

通过了解和利用 CSF 配置文件,您可以有效地管理和切换 Linux 服务器的不同安全配置。 这不仅可以节省时间,还可以确保您的服务器在各种情况下都受到保护。

设置 CSF 用户界面

CSF 提供了一个基于 Web 的用户界面 (UI),用于管理和配置防火墙。 此图形界面对于那些不习惯使用命令行工具或更喜欢以可视化方式管理设置的人特别有用。

在本节中,我们将引导您设置 CSF UI 并讨论使用它的一些注意事项。

如何设置 CSF UI

CSF UI 默认可用于流行的控制面板,例如 cPanel、DirectAdmin 和 Webmin。 如果您正在使用这些控制面板之一,CSF UI 应该已经集成到您的面板中。

对于其他控制面板或没有控制面板的服务器,您可以使用以下步骤设置 CSF UI:

  1. 确保您的服务器上安装了所需的依赖项:
  • Perl
  • LWP (libwww-perl) 模块
  • GD (libgd) 模块
  • GD::Graph 模块

您可以使用包管理器安装这些依赖项。 例如,在 Ubuntu 上:

1sudo apt-get install perl libwww-perl libgd-dev libgd-perl libgd-graph-perl
  1. 使用您喜欢的文本编辑器(例如 nano 或 vim)打开位于 /etc/csf/csf.conf 的 CSF 配置文件。
  2. 找到以下设置并进行如下修改:
1UI = "1"
2UI_PORT = "<your_desired_port>"
3UI_USER = "<your_username>"
4UI_PASS = "<your_password>"

<your_desired_port> 替换为未使用的端口号(例如 8080),将 <your_username> 替换为您选择的用户名,并将 <your_password> 替换为强而独特的密码。

  1. 保存并关闭配置文件。
  2. 重新启动 CSF 以应用更改:
1csf -r

通过在 Web 浏览器中导航到http://your_server_ip:<your_desired_port>来访问 CSF UI,并使用您在配置文件中指定的用户名和密码登录。

如何为 CSF UI 设置 HTTPS

使用 HTTPS 保护 CSF UI 以保护您的登录凭据和数据传输至关重要。 强烈建议使用 HTTPS,尤其是在通过 Internet 访问 UI 时。

在本节中,我将向您展示如何使用 Let’s Encrypt、ACME 或 Certbot 为 CSF UI 设置 HTTPS,以及将生成的证书放在哪里以便 CSF 可以读取它们。

使用 Certbot 的 HTTPS

  1. 确保您的服务器上安装了 Certbot。 您可以按照 Certbot 网站 上的特定分发说明进行操作。
  2. 使用 Certbot 为您的域生成证书:
1sudo certbot certonly --standalone -d example.com

example.com 替换为您的域。 确保域指向您服务器的 IP 地址。

  1. 生成证书后,您会在/etc/letsencrypt/live/example.com/目录下找到证书文件。 您需要的文件是 fullchain.pem(证书)和 privkey.pem(私钥)。
  2. 将证书文件复制到 CSF 可以读取的位置:
1sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /etc/csf/ui/ssl/cert.pem
2sudo cp /etc/letsencrypt/live/example.com/privkey.pem /etc/csf/ui/ssl/key.pem
  1. 使用您喜欢的文本编辑器(例如 nano 或 vim)打开位于 /etc/csf/csf.conf 的 CSF 配置文件。
  2. 修改以下设置:
1UI_SSL = "1"
2UI_CERT = "/etc/csf/ui/ssl/cert.pem"
3UI_KEY = "/etc/csf/ui/ssl/key.pem"
  1. 保存并关闭配置文件。
  2. 重新启动 CSF 以应用更改:
1csf -r

现在,您可以在 Web 浏览器中导航到https://example.com:<your_desired_port>,通过 HTTPS 安全访问 CSF UI。

请记住每 90 天更新一次 Let’s Encrypt 证书,因为它们的有效期很短。 您可以使用 cron 作业自动执行此过程。

请记住,HTTPS 是必要的,并且强烈推荐用于保护 CSF UI。 通过执行这些步骤,您可以确保您的登录凭据和数据传输保持安全,免受潜在威胁。

使用 CSF UI 时的注意事项

  1. 为 CSF UI 选择一个强而独特的密码,以防止未经授权的访问。 请务必定期更新密码,并避免将相同密码用于其他服务。
  2. 通过仅允许特定 IP 地址连接到 UI 来限制对 CSF UI 的访问。 您可以通过修改 CSF 配置文件中的 UI_ALLOW 设置来做到这一点:
1UI_ALLOW = "192.168.1.1,192.168.1.2"

将示例 IP 地址替换为您希望允许访问 CSF UI 的 IP 地址。

  1. 确保为 CSF UI 选择的端口未被其他服务使用。 此外,建议选择非标准端口以减少自动攻击的机会。
  2. 定期更新 CSF UI 及其依赖项,以防范已知漏洞和安全问题。
  3. 监控访问日志以识别任何可疑活动或未经授权的登录尝试。 CSF 日志可以在/var/log/lfd.log中找到。

通过设置和使用 CSF UI,您可以通过易于使用的图形界面有效地管理和配置防火墙设置。

确保遵循最佳实践并考虑上述几点以维护安全可靠的环境。

CSF 防护 DDoS 攻击

CSF 可以通过实施各种配置和安全措施来帮助保护您的服务器免受分布式拒绝服务 (DDoS) 攻击。

在本节中,我将介绍 CSF 如何抵御 DDoS 攻击并提供一些示例配置和建议。

SYN泛洪保护

SYN 洪水攻击是一种 DDoS 攻击,攻击者向服务器发送大量 SYN 数据包,导致服务器在尝试建立连接时耗尽资源。

要在 CSF 中启用 SYN 洪水保护,请在/etc/csf/csf.conf文件中调整以下设置:

1SYNFLOOD = "1"
2SYNFLOOD_RATE = "100/s"
3SYNFLOOD_BURST = "150"

这些设置将启用 SYN 洪水保护并配置传入连接的速率和突发限制。

连接限制保护

通过限制与服务器同时连接的数量,您可以减轻针对特定服务的 DDoS 攻击。

要启用连接限制保护,请配置CONNLIMIT设置:

1CONNLIMIT = "22;5,80;50,443;50"

此示例将 SSH (22) 连接数限制为 5,HTTP (80) 连接数限制为 50,HTTPS (443) 连接数限制为 50。

端口泛洪保护

端口泛洪保护有助于抵御针对服务器上特定端口的 DDoS 攻击。

要启用端口溢出保护,请配置 PORTFLOOD 设置:

1PORTFLOOD = "22;tcp;5;300,80;tcp;30;5,443;tcp;30;5"

此示例将 SSH (22) 的新连接速率限制为每 300 秒 5 个,将 HTTP (80) 和 HTTPS (443) 的新连接速率限制为每 5 秒 30 个。

黑名单

CSF 可以与各种 IP 黑名单集成,以防止已知的恶意 IP 地址访问您的服务器。

要启用黑名单集成,请在 CSF 配置文件中配置BLOCKLIST_*设置:

1BLOCKLIST_DE = "1"
2BLOCKLIST_6DE = "1"
3BLOCKLIST_DE_URL = "https://lists.blocklist.de/lists/all.txt"
4BLOCKLIST_6DE_URL = "https://lists.blocklist.de/lists/ipv6/all.txt"

此示例启用与 IPv4 和 IPv6 地址的 blocklist.de 阻止列表的集成。

国家级封锁

CSF 允许您使用 CC_DENYCC_ALLOW_FILTER 设置阻止来自特定国家的访问。 虽然此方法可能并不适用于所有情况,但在您想要限制来自以发起 DDoS 攻击而闻名的国家/地区的访问的情况下,它可能很有用。

1CC_DENY = "CN,IR,RU"
2CC_ALLOW_FILTER = "US,CA,GB"

此示例阻止来自中国 (CN)、伊朗 (IR) 和俄罗斯 (RU) 的访问,并且只允许来自美国 (US)、加拿大 (CA) 和英国 (GB) 的传入连接。

请记住在对配置文件进行任何更改后重新启动 CSF:

1csf -r

通过实施这些配置和建议,您可以显着增强服务器对 DDoS 攻击的保护。

请记住,没有任何安全措施是万无一失的,因此定期监控您的服务器是否存在潜在威胁并相应地调整您的 CSF 设置至关重要。

替代安全解决方案

虽然 CSF 是 Linux 服务器安全的绝佳选择,但您可能需要考虑提供类似功能的替代解决方案:

  • UFW (Uncomplicated Firewall) :基于 Ubuntu 系统的用户友好型防火墙。
  • Firewalld :用于使用 systemd 的 Linux 发行版的防火墙管理工具。
  • IPTables :一个强大的命令行工具,用于在 Linux 上进行数据包过滤和网络地址转换。

结论

保护您的 Linux 服务器对于保护您的数据和维护服务器的完整性至关重要。 CSF 提供了一个功能强大且用户友好的解决方案来实现这一目标。

按照本文概述的步骤,您可以轻松地在 Linux 服务器上安装和配置 CSF。 如果您正在寻找其他选项,请不要忘记探索其他安全解决方案,例如 UFW、Firewalld 和 IPTables。

我希望您发现这篇文章对使用 CSF 保护您的 Linux 服务器有帮助和信息。 如果您喜欢这篇文章并觉得它有价值,请随时与可能从中受益的其他人分享。 我也鼓励您对您的想法或问题发表评论,我将非常乐意提供帮助。 😊

在 2023 年及以后保持警惕并确保您的服务器安全!