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

XAMPP запрещает доступ с определенного внешнего IP-адреса

Мне нужна помощь с защитой моего тестового сервера XAMPP, так как пока ничего из того, что я пробовал, похоже, не работает. Я запускаю Apache 2.4.7 на машине с Windows 7.

Настройка следующая:

Я перенаправляю весь трафик, поступающий на IP-адрес моего сервера, порт 80, в приложение Java, работающее на localhost:5000.

Код, делающий все это в httpd-vhosts.conf файл следующий:

<VirtualHost *:80> 
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName demo.website.com
  ServerAlias website.com
  ProxyPass / http://localhost:5000/
  ProxyPassReverse / http://localhost:5000/
  <Proxy *>
        Order deny,allow
        Allow from all
  </Proxy>
</VirtualHost>

Вопрос в том, как мне deny трафик с определенного внешнего IP-адреса?

Кажется, я не могу использовать .htaccess потому что запросы на порт 80 перенаправляются в приложение java, а не в папку xampp, содержащую веб-контент.

Кроме того, приведенный ниже код тоже не работает:

<Proxy *>
    order allow,deny
    deny from 193.37.XXX.XX
    allow from all
</Proxy>

Какие еще есть варианты?

Какие-либо предложения?

РЕДАКТИРОВАТЬ:

После ответов, которые я получил, похоже, что я делал обратный прокси-сервер совершенно неправильно, открывая уязвимые места на сервере. На основании полученного ответа я изменил свой исходный код.

Поскольку я использую аналогичный небезопасный код для порта 443 и не могу запустить apache после новых модификаций, я разместил новый вопрос. ВОТ.

Как уже прокомментировал @MichaelHampton: немедленно удалите следующие настройки:

<Proxy *>
    order allow,deny
    deny from 193.37.XXX.XX
    allow from all
</Proxy> 

Это не нужно для обратный прокси но вместо этого используется для настройки вперед доверенное лицо , открыта практически для всех, что позволит злоупотреблять вашим сервером. (К счастью, вы все еще использовали ProxyRequests off )

Кстати, когда вам нужен прямой прокси, пожалуйста, не используйте Apache httpd, а более конкретный продукт.


Кажется, я не могу использовать .htaccess ...

ИМХО, вы уже идете в неправильном направлении с намерением создать .htaccess файлы, что меня беспокоит, цитируется из руководство по .htaccess файлы:

Вам следует избегать использования .htaccess файлы полностью если у вас есть доступ к конфигурации главного сервера httpd файл. С помощью .htaccess файлы замедляют ваш http-сервер Apache. Любая директива, которую вы можете включить в .htaccess файл лучше установить в Directory блок в основном файле (ах) конфигурации Apache, так как он будет иметь тот же эффект с лучшей производительностью) и объединить это с

Но причина того, что в этом случае .htaccess не будет работать, заключается в том, что они применяют настройки к ресурсам в локальной файловой системе из каталога, а с обратным прокси-сервером контент извлекается из другого места с помощью Apache httpd.


Решение вашей реальной проблемы, например, как применить дополнительные элементы управления доступом и белый / черный список IP-адресов на URL обратного прокси: вы помещаете ProxyPass директивы и дополнительные директивы в <Location> блок в вашей конфигурации (который также начиная с Apache 2.4 является синтаксисом конфигурации, который обеспечивает лучшую производительность) и добавить к ограничению IP-адреса с помощью Require директива в это место:

<VirtualHost *:80> 
  ServerName demo.website.com
  ServerAlias website.com

  <Location />
    <RequireAll>
      # Block IP-addresses from the 193.37.0.0/16 and 10.9.8.0/24 networks 
      Require not ip 193.37 10.9.8
      # Allow all other IP's
      Require all granted
    </RequireAll> 
    ProxyPass http://localhost:5000/
    ProxyPassReverse http://localhost:5000/
  </Location>

</VirtualHost>