Tôi có một Cân bằng tải do Digital Ocean cung cấp có IPv4 công khai, bất kỳ người dùng nào cũng có thể truy cập qua HTTP và HTTP (không có cách nào để chặn tại nguồn).
Để ngăn người dùng và tập lệnh truy cập trực tiếp vào máy chủ qua IP, tôi đã thêm một quy tắc trong VirtualHost trên máy chủ Apache (VPS).
Trong các thử nghiệm của tôi, kết quả trả về luôn là 403, nghĩa là về mặt lý thuyết, khối truy cập IP đã hoạt động.
Nhưng tôi nhận thấy rằng có một quyền truy cập đến với IP riêng của bộ cân bằng tải (LAN của VPS) trả về mã HTTP 200, nghĩa là người/tập lệnh có thể kết nối thành công (Public-IPv4-Load-Balancer > Local Network > VPS của tôi).
Dưới đây là giới hạn trong VirtualHost 000-default.conf, cho cả HTTP và HTTPS (Cài đặt này giống nhau trên cả hai máy chủ 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>
Đây là nhật ký truy cập thành công.
PRIVATE-IP-LOAD-BALANCER - - [15/Jun/2021:11:20:10 -0300] "GET / HTTP/1.0" 200 1223 "-" "https://example.com:Company-Censured Analyze Cung cấp ."
Có bất kỳ cài đặt nào trên máy chủ của tôi không chính xác không?