使用 UFW 锁定我的 Ubuntu 服务器

使用 UFW 锁定我的 Ubuntu 服务器

我在 Amazon EC2 实例上使用 Ubuntu 12.04,对系统管理员方面还不熟悉。我正在做一个自己的小项目,我已经开始成为机器人的目标(至少我希望它们是机器人)。

我正在使用 PHP,在错误日志中我注意到了w00tw00t romanian anti-sec/w00tw00t.at.blackhats.romanian.anti-sec:我在 Google 上搜索后发现了几个结果,例如两者都表示这很可能只是一些机器人。他们正在寻找 PHPMyAdmin、PMA、MyAdmin 的变体。据我所知,他们没有找到任何东西,只得到了一些 404 错误。就 PHPMyAdmin 而言,我使用的是别名,并且我的访问权限仅限于几个 IP 地址。

目前我正在运行 UFW,并且我有以下规则

To                         Action      From
--                         ------      ----
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
22                         ALLOW       MY.IP.ADDRESS1
22                         ALLOW       MY.IP.ADDRESS2
22                         ALLOW       MY.IP.ADDRESS3
80                         ALLOW       Anywhere (v6)
443                        ALLOW       Anywhere (v6)

我在 UFW 上看到的所有教程都只是说如何设置,而不是关于配置本身的建议。基本上我使用 SFTP 和 SSH(带有密钥对)在我的服务器上工作。是否存在一些我必须遵守而我却忽略的规则?

答案1

我不知道您如何使用 UFW 来避免这些类型的攻击。

如果除 80/443 之外的所有 IP 都被拒绝公共访问,并且您只为 ssh 访问指定了几个特定 IP,那么问题就出在您的应用程序上,而不是网络配置上。

在这种情况下,甚至不要触碰防火墙规则。

您需要保护自己免受以下侵害:

  • 弱密码
  • 明显的“管理页面”链接,IE。website.com/admin, website.com/phpmyadmin
  • 代码中嵌入的密码
  • SQL 注入和其他各种 Web 代码/数据库漏洞。

为了进一步提高服务器的安全性,您可以让 Apache 以 chroot 方式运行,以便通过虚拟层将其与核心系统分离。

您还可以实施 FIM(文件完整性管理)以确保不应更改的文件不会被更改(例如:apache/php 配置)

或者您可以编写一个脚本来记录 root/apache 运行的所有命令,并定期通过电子邮件发送出去。

设置防火墙后,您应该查看此类内容(您已完成)

答案2

保护自己免受控制面板扫描的最佳方法可能是不运行 Web 控制面板。如果您可以避免这样做,则可以完全忽略这些攻击。

为保护自己免受常见攻击,您可以采取的另一项措施是设置 VPN,并将对管理服务(SSH、控制面板等)的访问限制在该 VPN 上的 IP 地址。使用防火墙确保此类流量确实来自 VPN,并且不是伪造的(例如,丢弃从 WAN 发往 VPN 接口的流量)。

如果您使用强密码,使您的应用程序保持最新,对守护进程使用最小权限用户,并遵循类似的最佳实践,那么您根本不必担心这些类型的自动攻击。

请记住,没有一套神奇的防火墙规则,防火墙无法保护您免受很多事情的侵害。它们旨在使“内部”服务无法被公共 WAN 访问(请参阅我关于 VPN 的观点),您可以使用它们丢弃某些类型的流量,否则这些流量会突破安全边界,但它们在应用程序层不起作用,您不能用它来保护您的 Web 应用程序。

答案3

日志中所有可见的w00tw00t流量都意味着您看到的内容:您被某种脚本探测。我不会把这当回事,但如果您真的担心,那么使用iptables&ufw不会有太大帮助。

由于您似乎正在运行 Web 服务器,我建议您使用ModSecurity反而。

Ubuntu 的仓库中有一个 ModSecurity 软件包,但它的核心规则集 (CRS) 已经过时了。所以我会建议从这里下载

这让我们陷入了困境:对于新手来说,ModSecurity 的设置并不容易。我已经设置过很多次了,但即使在运行时,也有一些问题需要注意。例如,由于 ModSecurity 以启发式方式运行并监控网络流量,因此有时由于出现“误报”,您的网络服务器上的预期行为会被阻止。

也就是说,您可能处于一种暂时无需担心任何事情的情况。Web 服务器(以及每个服务器)始终都会受到扫描。根据您对该服务器的操作,最佳且最真实的安全性是确保您的前端应用程序是安全的。如果您正在编写自己的 PHP 代码库,那么您可以非常放心您的安全。

如果您正在使用一些现成的软件,如 WordPress 或 Joomla!,我最好的建议是这样做:只需将 Apache Web 授权密码放在 CMS 的管理 URL/路径上。说真的,这是目前最好的安全措施之一。探测网站的脚本通常会寻找脚本(PHP、Perl、Ruby 等)编码中的缺陷,但通过设置 Apacce Web 授权密码,您几乎可以阻止大量脚本。这种方法的缺点是现在您必须记住 CMS 的密码以及 Apache 密码,但与系统受到威胁相比,这只是微不足道的不便。

相关内容