0

我现在在 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

4 回答 4

4

在 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
于 2015-09-03T08:32:40.300 回答
2

好的,您面临两个问题,第一个是 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
于 2014-03-12T17:09:36.177 回答
1

明白了,

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

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

不知道是否可以使用另一个目录,但目前问题已解决

于 2013-12-06T17:06:22.953 回答
0

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

错误日志 /var/log/httd/mydomain_error.log

CustomLog /var/log/httpd/mydomain_access.log

解决方案:

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

为此,您需要按照以下步骤操作。

1) 检查 SELinux 状态

状态

输出将是这样的

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 模式从 target 更改为 permissive:

sudo setenforce 0

你可以在这里看到更多:https ://linuxize.com/post/how-to-disable-selinux-on-centos-7/

于 2018-12-06T06:34:49.843 回答