我们正在使用 nginx,需要阻止访问服务器上不存在的某些 URL 或 URL 部分,这些 URL 或 URL 部分正在被黑客用来探测服务器。
为了有效阻止这些 URL,我们决定将它们放在防火墙上。以下是一些阻止措施:
iptables -I INPUT -p tcp -m string --string "/myaccount" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/login" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string ".action" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string ".asp" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/admin" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/connectors/" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/default/" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/filemanager/" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/editor/" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/include/" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/convert/" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "wp-json" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/wp-admin" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/administrator" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/wp/" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/modules/" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/new/" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/old/" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/wordpress/wp-admin" --algo kmp -j DROP
iptables -I INPUT -p tcp -m string --string "/test/" --algo kmp -j DROP
缺点是设置这些规则后,nginx 变得无法访问。它要么给出 402 错误,要么给出 403 错误。
任何想法?
编辑
问题可能出在规则本身而不是放置规则的地方。尝试将它们放在 nginx 下,但它停止响应:
location ~ ^/(wp-admin|wp-login|old/|new/|modules/|wp/|administrator|wordpress/wp-admin|test/|wp-json|convert/|include/|editor/|filemanager/|default/|connectors/|admin|login|myaccount) {
deny all;
}