我们正在尝试设置Apache Mod Evasion,以防止将来对我们的一台服务器进行DOS攻击。在电子邮件通知之外,一切似乎都运行良好。该堆栈在 Ubuntu Server 16.04 上运行 PHP 7.1 和 Apache2.4。
电子邮件通过测试命令工作正常:
sudo su - www-data -s /bin/bash -c 'echo "this is the body" | mail -s "Subject" webdev@domain.edu webdev@domain.edu'
这是mod evasion.conf:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 1
DOSSiteCount 1
DOSPageInterval 10
DOSSiteInterval 10
DOSBlockingPeriod 10
DOSEmailNotify root
#DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
DOSLogDir "/var/log/mod_evasive"
</IfModule>
这是 ssmtp.conf 文件:
root=webdev@domain.edu
FromLineOverride=YES
Debug=YES
UseSTARTTLS=YES
UseTLS=YES
mailhub=email-smtp.us-east-1.amazonaws.com:465
AuthUser=#######
AuthPass=#######
AuthMethod=LOGIN
下面是 revaliases 文件:
root:noreply@domain.edu:email-smtp.us-east-1.amazonaws.com:25
www-data:noreply@domain.edu:email-smtp.us-east-1.amazonaws.com:25
mod_evasive有一个邮件程序调用的硬编码命令,定义为源代码中的MAILER
,并且在例如此错误报告中也提到过。
#define MAILER "/bin/mail %s"
发送邮件时,%s
由指令DOSEmailNotify
的值替换。但是,如今在大多数系统上都不使用/bin/main
,您可能希望改用sendmail。您可以做的是创建一个包装脚本作为/bin/mail
(假设此二进制根本不存在或未使用(。
#!/bin/bash
if [ "$1" != "" ]
then
/usr/sbin/sendmail -t "$1"
fi
调整sendmail
二进制文件的路径,最后使用 chmod 0755 /bin/mail
使脚本可执行。