我有一个在 Linux 上使用 Apache 运行的网站。我可以在访问日志文件中看到几个 IP 地址试图访问一些常见且众所周知的应用程序,例如 PhpMyAdmin,如果被发现,可能会入侵服务器。
当然,我没有公开可用的 phpmyadmin,但我想知道如何防范此类攻击。也许 Linux 下有一个工具能够检测到这种情况并自动阻止 IP 地址?也许另一个工具能够在检测到这种情况时自动向我发送邮件。
目前最先进的技术是什么?
谢谢你的帮助。
答案1
ModSecurity(TM) 是一款开源的 Web 应用程序入侵检测和预防引擎。它也可以称为 Web 应用程序防火墙。它嵌入到 Web 服务器中,充当强大的保护伞,保护应用程序免受攻击。
您可以从以下位置下载 mod_security http://www.modsecurity.org/download/
ModSecurity 配置指令直接添加到您的配置文件(通常是 httpd.conf)中。
<IfModule mod_security.c>
# mod_security configuration directives
# ...
</IfModule>
您可以通过以下方式配置来防止攻击
跨站点脚本攻击
SecFilter "<script"
SecFilter "<.+>"
第一个过滤器仅能防止使用标签进行 JavaScript 注入。第二个过滤器更为通用,不允许参数中包含任何 HTML 代码。
SQL/数据库攻击
SecFilter "delete[[:space:]]+from"
SecFilter "insert[[:space:]]+into"
SecFilter "select.+from"
它可以保护您免受大多数与 SQL 相关的攻击。这些只是示例,您需要根据您使用的实际数据库引擎仔细设计过滤器。
像这样的过滤器:
SecFilterSelective ARGS "bin/"
将检测尝试执行位于 Unix 相关操作系统上各个文件夹中的二进制文件的行为。
缓冲区溢出攻击
SecFilterByteRange 32 126
它将只接受由该范围内的字节组成的请求。
如果你想支持多个范围,正则表达式可以帮你解决这个问题。你可以使用类似这样的表达式:
SecFilterSelective THE_REQUEST "!^[\x0a\x0d\x20-\x7f]+$"
有关 mod_security 的更多信息,请参阅以下 URL
http://modsecurity.org/documentation/modsecurity-apache/1.9.3/html-multipage/index.html
答案2
正确的做法是不是阻止恶意机器人扫描您的网络服务器内容的尝试。
专注于阻止扫描以实现隐秘的安全不会对真正的攻击者提供任何形式的保护,甚至无法抵御在你的对策启动之前的前几次尝试中猜出有漏洞的 URL 的机器人 - 更不用说真实用户陷入僵尸网络的影响了。
相反,您需要努力的是确保您向世界展示的内容是安全的。
了解您的网络足迹,保护它,并相信机器人可以全天扫描您的网络状态而不会造成任何损害。
答案3
我建议你看一下 fail2ban - 它最常用于阻止 ssh 攻击 - 但它可以与任何写入可解析日志文件的东西一起工作。fail2ban 守护进程(通常)注入新的 iptables 规则,这比尝试在用户空间中应用过滤要高效/可扩展得多。但 fail2ban 并不排除基于用户空间中更复杂的代码进行过滤的可能性,例如使用 referer、浏览器、cookie 等。
您可以将其设置为仅查找高比例的 404 错误 - 或者在目标 URL 中放入一个脚本,促使 fail2ban 关闭门户。
答案4
也许最简单、最容易的方法是做一个访问控制。我也渴望了解可能存在的以自动化方式完成此操作的工具 :)