Рейтинг:0

Заблокировать доступ напрямую через IP на сервере Apache

флаг bf
Tom

У меня есть балансировщик нагрузки, предоставленный Digital Ocean, с общедоступным IPv4, к которому любой пользователь может получить доступ через HTTP и HTTPs (нет возможности заблокировать источник).

Чтобы пользователи и скрипты не обращались к серверу напрямую по IP, я добавил правило в VirtualHost на серверах Apache (VPS).

В моих тестах всегда возвращается 403, то есть теоретически сработала блокировка доступа по IP.

Но я заметил, что был доступ с частного IP-адреса балансировщика нагрузки (LAN VPS), который вернул код HTTP 200, то есть человек/скрипт смог успешно подключиться (Public-IPv4-Load-Balancer > Local Network > Мой VPS).

Ниже приведено ограничение в VirtualHost 000-default.conf как для HTTP, так и для HTTPS (эта настройка одинакова на обоих серверах Apache (VPS)).

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        LogLevel notice core:info
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog syslog:local1

        Header append X-FRAME-OPTIONS "SAMEORIGIN"

</VirtualHost>

<VirtualHost *:80>
    ServerName VPS-PUBLIC-IP
    Redirect 403 /
    ErrorDocument 403 "The operation had an error."
    DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
    ServerName LOAD-BALANCER-PUBLIC-IPV4
    Redirect 403 /
    ErrorDocument 403 "The operation had an error."
    DocumentRoot /var/www/html
</VirtualHost>

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html

        ServerName LOAD-BALANCER-PUBLIC-IPV4
        Redirect 403 /
        ErrorDocument 403 "The operation had an error."

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on

        SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile   /etc/ssl/private/ssl-cert-snakeoil.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
        </Directory>

    </VirtualHost>
</IfModule>

Это журнал успешного доступа.

PRIVATE-IP-LOAD-BALANCER - - [15/Jun/2021:11:20:10 -0300] "GET / HTTP/1.0" 200 1223 "-" "https://example.com:Company-Censured Analyse Provide ."

Есть ли какие-либо настройки на моем сервере, которые неверны?

ezra-s avatar
флаг ru
Почему бы вам просто не «Требовать все отказы» вместо «Перенаправить 403/»? Кроме того, ВСЕГДА определяйте ServerName на всех виртуальных хостах.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.