Apache网站:如何防止URLtesting

我有一个运行在Apache上的Linux网站。 我可以在访问日志文件中看到几个IP地址试图访问一些常见的和众所周知的应用程序,如PhpMyAdmin,如果发现可能会破解服务器。

当然,我没有公开提供phpmyadmin,但我想知道如何防范这种攻击。 也许有一个Linux下的工具,能够检测到这一点,并自动阻止IP地址? 也许另一个工具可以发送邮件时自动检测到。

那是什么艺术?

感谢您的帮助。

正确的方法是阻止恶意机器人扫描您的Web服务器的内容。

专注于阻止扫描以实现安全隐蔽不会对真正的攻击者产生任何保护,甚至不会在对抗措施开始之前,在第一对情侣尝试中猜测到一个易受攻击的URL的机器人 – 更不用提一个真正的用户被僵尸networking的影响。

相反,你所需要的努力是确保你公开给世界的内容是安全的。

了解您的网站足迹,确保它的安全,并确信这些漫游器可以整天扫描您的网站,而不会造成任何破坏。

ModSecurity(TM)是一个开源的入侵检测和预防引擎的Web应用程序。 它也可以被称为Web应用程序防火墙。 它运行embedded到Web服务器,作为一个强大的保护伞,屏蔽应用程序免受攻击。

你可以从http://www.modsecurity.org/download/下载mod_security

ModSecurityconfiguration指令直接添加到configuration文件(通常是httpd.conf)中。

<IfModule mod_security.c> # mod_security configuration directives # ... </IfModule> 

您可以通过以下几种方式来防止攻击

跨站点脚本攻击

  SecFilter "<script" SecFilter "<.+>" 

第一个filter只保护标签的JavaScript注入。 第二个filter更通用,不允许在参数中使用任何HTML代码。

SQL /数据库攻击

  SecFilter "delete[[:space:]]+from" SecFilter "insert[[:space:]]+into" SecFilter "select.+from" 

它可以保护您免受大多数与SQL相关的攻击。 这些只是示例,您需要根据您使用的实际数据库引擎小心制作filter。

像这样的filter:

  SecFilterSelective ARGS "bin/" 

将检测在Unix相关操作系统上执行驻留在各种文件夹中的二进制文件的尝试。

缓冲区溢出攻击

  SecFilterByteRange 32 126 

它只会接受由这个范围内的字节组成的请求。

如果你想支持多个范围,正则expression式来救援。 你可以使用像这样的东西:

  SecFilterSelective THE_REQUEST "!^[\x0a\x0d\x20-\x7f]+$" 

有关mod_security的更多信息,请参阅以下URL

http://modsecurity.org/documentation/modsecurity-apache/1.9.3/html-multipage/index.html

我build议看一下fail2ban – 它最常用于阻止ssh攻击 – 但它可以处理任何写入可parsing日志文件的东西。 fail2ban守护进程(通常)注入新的iptables规则,比在用户空间中应用过滤更有效率/可伸缩性。 但是fail2ban并不排除基于用户空间中的复杂代码进行过滤的可能性,例如使用引用者,浏览器,cookies等。

你可以设置它只是寻找404错误的比例很高 – 或者在脚本中放置一个脚本,这些脚本是用来打开fail2banclosures的。

可能最简单和最简单的方法就是进行访问控制 。 我也渴望通过自动化的方式了解可能存在的工具:)