Назад | Перейти на главную страницу

mod_proxy - стоит ли нервничать?

Насколько мне известно, на моем производственном сервере 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.