我正在设置一个apache2 Web服务器,并添加一些安全措施来阻止恶意攻击。我本来打算使用mod_evasive,并有另一个文件来运行禁止和取消禁止用户的命令。我的配置如图所示。
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 20
DOSPageInterval 1
DOSSiteInterval 3
DOSBlockingPeriod 60
#DOSSystemCommand "/opt/mod_evasive/ban.sh %s"
DOSSystemCommand "/bin/echo testing >> /var/log/mod_evasive/test.txt"
DOSLogDir "/var/log/mod_evasive"
</IfModule>
我可以运行我的ban.sh文件作为www数据非常好。我在那里测试第二个DOSSystemCommand。它不会回显到/tmp或日志文件夹。有什么地方我做得不对吗?
我的DOSSystemCommand也有问题。以下是对我有效的解决方案:
sudo mkdir /var/log/mod-evasive/
sudo chown -R www-data:root /var/log/mod_evasive
目录和文件的所有者必须是www数据。
DOSSystemCommand "IP=%s; echo $(date +'%%Y-%%m-%%d %%T')' : '${IP} >> /var/log/mod_evasive/mod_evasive.log;"
如果您还想结束电子邮件通知,请添加以下
DOSSystemCommand "IP=%s; echo $(date +'%%Y-%%m-%%d %%T')' : '${IP} >> /var/log/mod_evasive/mod_evasive.log; echo 'Blacklisted IP '${IP}' by mod_evasivenhttp://www.ip-adress.com/whois/'${IP} | mail -s 'Blacklisted IP '${IP}' by mod_evasive' user@domain.com;