CentOS,mod_evasive日志写入权限和电子邮件问题

时间:2013-12-06 15:52:49

标签: email logging centos apache2 mod-evasive

我现在在CentOS 6.5上, 不久前安装了mod_evasive,但电子邮件通知和日志记录从未奏效...

进入消息日志我有很多这样的行...

mod_evasive[4548]: Couldn't open logfile /var/log/httpd/evasive/dos-157.xxx.xxx.xxx: Permission denied
在CentOS上我认为目录/ var / log / httpd / evasive的所有者应该是“apache”,那就是755 .. 没办法......

然后,mailx已经安装并更新了......有人说看看mod_evasive20.c但我在CentOS上找不到这个mod_evasive20.c文件......哪里可以?是否可以使用sendmail而不是mailx发送?感谢

4 个答案:

答案 0 :(得分:2)

在CentOS / var / log / httpd上有权限700并且由root拥有,因此你需要将/ var / log / httpd / evasive移动到/ var / log / evasive并执行:

chown 0:apache /var/log/evasive
chmod 770 /var/log/evasive

如果您使用SELinux:

semanage fcontext --add -t httpd_sys_rw_content_t "/var/log/evasive(/.*)?"
restorecon -r /var/log/evasive

并将此行添加到/etc/httpd/conf.d/mod_evasive.conf:

DOSLogDir /var/log/evasive

答案 1 :(得分:1)

理解,

谁有同样的问题希望这有帮助...

如果mod_evasive无法在dir上写,它甚至不会发送电子邮件 如此注释掉DOSLogDir,所以它写入tmp ...

不知道是否可以使用其他目录但目前问题已解决

答案 2 :(得分:1)

好的,你面临两个问题,第一个文件是mod_evasive logdir的权限,第二个是找不到邮件命令。

1)“DOSLogDir”的文件权限

您必须确保apache的用户通过整个目录树执行和写入权限,以“DOSLogDir”为目标。 请参阅ubuntu系统中的此示例

root@ubuntu:/var/log# ll
drwxr-xr-x  3 root   adm    4096 Mar 10 14:06 apache2/

root@ubuntu:/var/log# ll apache2
drwxrwxr-x 2 root www-data   4096 Mar 10 14:25 mod_evasive/

root@ubuntu:/var/log# ll apache2/mod_evasive/
-rw-r--r-- 1 www-data www-data    5 Mar 10 14:25 dos-172.16.245.1
-rw-r--r-- 1 www-data www-data    5 Mar 10 14:19 dos-172.16.245.129

2)访问邮件二进制文件

邮件二进制文件在mod_evasive20.c中定义,第45行:

    #define MAILER  "/bin/mail %s"

尝试在mailx上使用mod_evasive

使用的符号链接
ln -s $(which mailx) /bin/mail

答案 3 :(得分:0)

在centos7中创建新项目时,我遇到了同样的问题。

ErrorLog /var/log/httd/mydomain_error.log

CustomLog /var/log/httpd/mydomain_access.log

解决方案:

您需要禁用SELinux,问题将得到解决。

您需要遵循以下步骤。

1)检查SELinux状态

  

sestatus

OutPut会像这样

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

2)禁用SELinux

您可以使用以下命令将SELinux模式从目标临时更改为许可:

sudo setenforce 0

您可以在此处查看更多信息:https://linuxize.com/post/how-to-disable-selinux-on-centos-7/