我在 Debian 上运行 Apache。
以下是我的 apache 错误日志中的条目示例。问题 1:服务器是否受到攻击(我每小时看到大约 30-40 个此类条目)。我假设这些是对我的服务器的攻击或至少是对我的服务器的探测。
[Sun Feb 13 16:37:54.013622 2022] [:error] [pid 16071] [client 106.193.114.87:19356] PHP 注意:未定义的变量:/var/www/example.com/page-sidebar-both 中的 error_msg。 php 在第 57 行,引用者:https ://example.com/podbanks/abresult.php?ab=ab18&lg=English
[Sun Feb 13 16:38:01.289976 2022] [:error] [pid 16109] [client 106.193.114.87:19358] PHP 注意:未定义的变量:result_msg in /var/www/example.com/abc/defg.php on第 210 行,引用者:https ://example.com/result.php?ab=ab18&lg=English
[Sun Feb 13 16:38:01.290048 2022] [:error] [pid 16109] [client 103.77.154.37:1842] PHP 注意:未定义变量:/var/www/example.com/pods/dashboard.php 中的状态第 210 行,引用者: https ://example.com/result.php?ab=AB18&lg=English
[Sun Feb 13 16:38:26.788827 2022] [:error] [pid 15961] [client 54.90.210.118:36104] PHP 注意:未定义变量:BaseURL in /var/www/example.com/biz.php on line 63
(页面和变量是有效的,但端口号很奇怪)。
问题 2:如果这些是攻击,我可以用 UFW 阻止它们吗?我目前有:
To Action From
-- ------ ----
WWW Full ALLOW Anywhere
3306 ALLOW Anywhere
22 ALLOW Anywhere
8081 ALLOW Anywhere
1185 ALLOW Anywhere
WWW Full (v6) ALLOW Anywhere (v6)
3306 (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
8081 (v6) ALLOW Anywhere (v6)
1185 (v6) ALLOW Anywhere (v6)
8081 ALLOW OUT Anywhere
8081 (v6) ALLOW OUT Anywhere (v6)
考虑到上述情况,以下这些步骤是否有效且完整?
ufw disable
ufw default deny incoming
ufw default allow outgoing
ufw allow OpenSSH
ufw allow WWW Full
ufw allow 1185
ufw allow 3306
ufw enable
(第 1 行是为了确保我不会被锁定 - 我正在使用 PuTTY)
问题3:如果只在本地使用MySQL,真的需要开启3306吗?我只通过受密码和会话保护的 php 查询来访问数据库。
问题 4:我需要 8081 端口吗?它是由“WWW Full”自动添加的吗?
我没有看到任何攻击迹象,只是 PHP 编写不佳。您可以通过更改 PHP 的错误报告配置来过滤日志中的通知。端口也没有什么异常,该范围内的客户端端口是正常的。
端口号正常。这是客户端的临时端口。
一般没有。您需要在适用级别进行过滤,并且您希望流量到达 Apache - 所以您无法在 L3 进行过滤。
不,你没有。本地 mySQL 通过套接字,而不是 TCP/IP。即使没有,您也只想在环回接口 (127.0.0.1) 上允许它。
可能不是。但是您需要知道您的应用程序是如何工作的。
广告问题 1:您引用的日志消息没有显示任何攻击迹象。相反,它们表示您的网络服务器的 PHP 代码中的错误。这些消息还包含发生错误的确切位置(文件名和行号)。你可能想看看那里。
消息中的端口号一点也不奇怪,但绝对正常。
广告问题 2:鉴于没有攻击,该问题不适用。
广告问题 3:如果 MySQL 端口 3306 仅由网络服务器在本地使用,则您不需要也不应该将 MySQL 端口 3306 暴露给网络。也就是说,MySQL 服务器应配置为仅侦听地址 127.0.0.1 (localhost),并且不应在 ufw 中允许端口 3306。
广告问题 4:您是否需要允许端口 8081 取决于该端口上是否运行任何您希望通过网络访问的服务。如果端口 8081 上没有任何东西在监听,或者任何正在监听的东西都不能通过网络访问,那么你不应该在 ufw 中允许它。
您在互联网上公开的任何内容都会被调查是否存在弱点。
良好的被动安全性的基础是了解您的服务运行所需的网络流量,并且只允许特定的流量。对于任何非标准的东西,通过向 Serverfault 上的陌生人寻求建议,您不会得到这种理解。
如果您只是向 Internet 提供 Web 服务,那么您需要允许来自客户端(“任何”)的唯一流量可能是 HTTP 和 HTTPS。
您还需要提供一个管理界面 - 常规 ssh 或某种类型的管理 VPN。重要的是,您在此处选择的任何内容都足够坚固以承受不可避免的蛮力攻击。对这些通道使用基于密钥或证书的身份验证是一种很好的做法。
一般来说,您永远不想将数据库服务器直接暴露给 Internet。