我已经设置了路由器,将流量从特定端口转发到充当反向代理的服务器。该服务器基于 CentOS 7 和 Apache 2.4.6。我的一个后端服务器也是基于 CentOS 的,并且正在运行 ownCloud 实例。
我的目标是使用 fail2ban 阻止多次尝试输入错误密码(暴力破解)的公共 IP。为此,我已确保使用 X-Forwarded-For 将公共 IP 从反向代理传递到 ownCloud 服务器。我还可以从 fail2ban 状态中看到,多次尝试输入错误密码的公共 IP 确实被阻止了。
但是...由于流量是从反向代理传递的(而不是直接从外部世界传递),即使在 ownCloud 服务器上被阻止,公共 IP 仍可以继续访问 ownCloud 服务器。
在上述设置中,有什么方法可以阻止此类公共 IP?如果我没有记错的话,这可以在 NGINX 反向代理中通过添加“set_real_ip_from rev.proxy.ip.add.”来实现,但我没有找到与 apache 相关的任何内容。
我的代理配置,以备不时之需
ServerName my.domain.com
SSLEngine On
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol -All +TLSv1.2
SSLHonorCipherOrder On
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyRequests Off
ProxyPreserveHost On
SSLCertificateFile /etc/letsencrypt/live/my.domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/my.domain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/my.domain.com/chain.pem
Header always set Strict-Transport-Security "max-age=15552000; includeSubdomains;"
Header always set X-Frame-Options DENY
Header set X-Content-Type-Options "nosniff"
ProxyPass https://backend.ip/
ProxyPassReverse https://backend.ip/