Люди могут использовать Nginx дляproxy_passна мой домен и в браузере содержимое мое, но в адресной строке это их домены.
Как определить, когда запросы проходят через proxy_pass, и отклонить их?
Например, когда я намеренно использую proxy_pass для google.com, я получаю ошибку 404.
server {
listen 80;
server_name test.com;
location / {
proxy_pass https://google.com;
}
}
Кажется, что это невозможно предотвратить, например, эти люди заставляют прокси вести себя как обычный браузер. Однако как предотвратить, если они просто используют простой Nginx proxy_pass?
решение1
Теоретически это возможно, но не без больших усилий.
Предположим, вы используете веб-сайт, поддерживающий HTTP/2.
Обнаружение proxy_pass
вашего веб-сайта может основываться на том факте, что эти соединения всегда будут возникать через HTTP/1.x
, а не через HTTP/2
.
Затем вы можете сопоставить это с возможностями браузера.
Таким образом, по сути, если вы видите браузер с поддержкой HTTP/2, подключающийся к вашему сайту по старому протоколу HTTP/1.x, вы можете с уверенностью предположить, что он подключается через NGINX proxy_pass
или какой-то другойдругойпрокси (кроме NGINX).
Так что, хотя это и может сработать, вы отключите всех клиентов, которые просто просматривают веб-страницы через какой-либо прокси-сервер...
Это пассивный подход.
Активный подход заключается в простой проверке нескольких подключений с одного и того же IP-адреса. Вы будете проверять журналы (например, Fail2ban или другие сканеры журналов) на наличие множества подключений с одного и того же IP-адреса, имеющих разных пользовательских агентов (или ни одного).
IP-адрес с большим количеством различных пользовательских агентов/доступов, скорее всего, является своего рода прокси-сервером.
Наконец, вы можете выполнить проверку RDNS/запросы whois, чтобы узнать, исходит ли запрос от известного хостинг-провайдера.