У меня есть балансировщик нагрузки, предоставленный 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 ."
Есть ли какие-либо настройки на моем сервере, которые неверны?