Насколько мне известно, на моем производственном сервере Apache отключены все функции mod_proxy. Как можно это проверить или подтвердить? Глядя на мой httpd.conf, я могу сказать вам, что любая строка, в которой есть «прокси», комментируется, чего бы это ни стоило.
Причина, по которой я спрашиваю, заключается в том, что сегодня утром я видел это в своем отчете logwatch:
Connection attempts using mod_proxy:
81.88.124.30 -> 64.12.202.116:443: 1 Time(s)
81.88.124.30 -> 64.12.202.15:443: 1 Time(s)
81.88.124.30 -> 64.12.202.1:443: 1 Time(s)
81.88.124.30 -> 64.12.202.22:443: 1 Time(s)
81.88.124.30 -> 64.12.202.29:443: 1 Time(s)
81.88.124.30 -> 64.12.202.36:443: 1 Time(s)
81.88.124.30 -> 64.12.202.43:443: 1 Time(s)
81.88.124.30 -> 64.12.202.50:443: 1 Time(s)
81.88.124.30 -> 64.12.202.8:443: 1 Time(s)
Requests with error response codes
403 Forbidden
64.12.202.116:443: 1 Time(s)
64.12.202.15:443: 1 Time(s)
64.12.202.1:443: 1 Time(s)
64.12.202.22:443: 1 Time(s)
64.12.202.29:443: 1 Time(s)
64.12.202.36:443: 1 Time(s)
64.12.202.43:443: 1 Time(s)
64.12.202.50:443: 1 Time(s)
64.12.202.8:443: 1 Time(s)
Не то, что обычно в моих отчетах. Так что похоже, что он получил 403-е за попытки, что, я думаю, хорошо. Но что заставило его почувствовать, что стоит попробовать?
Возможно, он / она / оно пытался понять, стоит ли пытаться. Им ничего не стоит просто отправить прокси-запрос на сервер и посмотреть, работает ли он, поэтому обычно они отправляют эти запросы без разбора.
К вашему сведению, один верный способ убедиться, что mod_proxy отключен, - это убедиться, что строка
LoadModule mod_proxy.so proxy_module
закомментирован. Это должно появиться в файлах конфигурации только один раз, но для этого не помешает выполнить grep. Также вы можете запустить
apache2ctl -M
(или, возможно, какой-то эквивалент для вашей системы, в моем случае это /etc/init.d/apache2 modules
), чтобы вывести список загруженных модулей и убедиться, что прокси-модуль отсутствует в списке.
В Apache 2.x по умолчанию, даже если модуль mod_proxy включен, проксирование отключено с помощью следующего значения директивы по умолчанию;
ProxyRequests Off
Если вы установите для него значение «Вкл», то вы открытый прокси-сервер - в противном случае, AFAIK вы должны быть в безопасности.
https://httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxyrequests
Чтобы убедиться, что вы не являетесь открытым прокси-сервером, просто подключитесь к порту 80 и отправьте:
GET http://www.google.com/ HTTP/1.0
(вам нужно два двухстрочных возврата в конце, но его съедают). Вы должны вернуться на страницу 404. Если вы вернетесь в Google, вы открыты.
Вы можете отключить ProxyRequests, не загружать mod_proxy и по-прежнему получать ответ 200. Я столкнулся с конфигурацией на клиентском веб-сервере, которая вызвала такое поведение - виртуальный хост по умолчанию имел директиву .htaccess, которая отправляла все запросы через скрипт php, а страница «страница не найдена» вернула код ответа 200. Вы можете запросить буквально что угодно и никогда не получить ошибку 404. Не идеальная ситуация, но и не открытый прокси. Это ад для индексаторов поисковых систем .. LOL
FWIW, лучший способ убедиться, что он не загружен, - это удалить модуль с вашего диска, а затем перезапустить apache.