我在Web服务器上托pipe了一堆PHP网站。 尽pipe我采取了所有的预防措施来保护所有的港口,但80港口的具体攻击仍在继续。 我想禁止任何在任何网页上有活跃兴趣的IP地址,而不是一小时内说200或一分钟内15。 我假设一个用户不能在一分钟内冲浪15页,除非他的理由确实值得怀疑。
理想情况下,我希望将IP地址login到禁止的数据库中,并且对于属于我的客户端的那些IP地址也具有白名单IP地址。
有没有现成的工具可以做到这一切。 我看到了fail2ban,它没有达到目的…
你需要做的是这样的:1)注意访问Apache日志2)阻止你在防火墙上的IP地址(通过脚本)。
fail2ban 会做你想做的,比阅读Googlesearch标语更多的工作。
如何使用现有的服务,如项目蜜jar ?
这适用于运行Linux和PHP版本的Raspberry Pi:
要从php运行iptables,请将以下内容添加到/ etc / sudoers www-data ALL =(ALL)NOPASSWD:/ sbin / iptables
有些人不喜欢把www-data访问到iptables。 他们说这是一个安全风险。 但是我觉得没关系,因为他们被禁止了。
<?php // Get the ip address of the client. $remote_addr = $_SERVER['REMOTE_ADDR']; // Ban them. if (is_ip($remote_addr)) { ban_ip($remote_addr); // Save the banned IP address. $logfile = '/run/shm/banned.txt'; file_put_contents($logfile,$remote_addr."\n",FILE_APPEND); } // Returns true if $ip is a valid ip address. function is_ip($ip) { $count = strlen($ip); $valid = '0123456789.:'; for($loop=0;$loop<$count;$loop++) { if (strpos($valid,substr($ip,$loop,1))===false) { return false; } } return true; } // Bans an ip address. function ban_ip($ip) { $cmd = 'sudo /sbin/iptables -A INPUT -s ' . $ip . ' -j DROP'; exec($cmd); return; } ?>