我的 Apache 日志中有许多这样的记录:
[Tue Dec 20 01:31:45 2011] [error] [client 192.0.79.172] File does not exist: /var/www/user/data/www/example.com/phpMyAdmin-2.5.4
其中 192.0.79.172 是我在 eth0 上配置的服务器外部 IP 地址。显然,有人正在扫描 phpmyadmin 漏洞相关的服务器。但为什么所有这些日志条目都显示我自己的服务器 IP 地址而不是攻击者的 IP 地址?我想阻止此类扫描。我觉得我错过了什么。如果重要的话,我使用 CentOS 5.7。
谢谢。
更新
grep proxy /etc/httpd/conf/httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
# enable the proxy server:
#<IfModule mod_proxy.c>
# CacheRoot "/var/cache/mod_proxy"
# End of proxy directives.
我应该提到我在 Apache 之前就拥有 nginx,但这并没有改变任何事情。在我们部署 nginx 作为反向代理之前也发生过同样的情况。
答案1
使用默认设置,Apache 日志中始终会有服务器 IP,因为 Nginx 在这里是客户端。您可以尝试向 Nginx 添加一些选项来传递真实 IP:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
或者您可以启用并检查 Nginx 日志。
答案2
听起来你需要mod_rpaf。我回答了一个关于这个问题几分钟前。
这phpMyAdmin 扫描相当正常。如果您安装了 phpMyAdmin,则应使用 HTTP Basic Auth 或 IP 地址限制来限制对它的访问,如果您没有安装它,这些将只是无害的 404。
您还可以在 nginx 日志中找到原始 IP 地址。