Запретить доступ к сайтам по IP-адресу
По умолчанию, при открытии IP-адреса сервера в адресной строке браузера, будет открыт первый сайт в конфигурации веб-сервера или тот сайт, что был назначен сайтом по умолчанию.
Чтобы изменить эту стандартную логику работы веб-серверов, необходимо создать любой сайт, например с имемнем place.holder
, и внести изменения в его конфигурацию. Если вы пользуетесь панелью ispmanager, предварительно назначьте его сайтом по умолчанию.
Также предварительно потребуется создать самоподписанный сертификат, чтобы сайт-заглушка принимал запросы и по HTTPS. Для этого выполните следующие команды:
mkdir /root/placeholder-ca
openssl genrsa -out /root/placeholder-ca/place.holder.key 2048
openssl req -new -x509 -days 3650 -key /root/placeholder-ca/place.holder.key -out /root/placeholder-ca/place.holder.crt
При генерации сертификата будут запрошены данные - их можно не заполнять и пропустить каждое поле нажатием клавиши Enter.
Если вы пользуетесь панелью ispmanager, создайте сертификат Let's Encrypt в разделе SSL-сертификаты для этого сайта - факт его выпуска не важен.
При использовании Nginx
Приведите конфигурационный файл сайта к следующему виду:
server {
server_name catchall;
return 403;
listen IP-АДРЕС_СЕРВЕРА:80 default_server;
}
server {
server_name catchall;
ssl_certificate "/root/placeholder-ca/place.holder.crt";
ssl_certificate_key "/root/placeholder-ca/place.holder.key";
ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_dhparam /etc/ssl/certs/dhparam4096.pem;
listen IP-АДРЕС_СЕРВЕРА:443 ssl http2 default_server;
return 403;
}
Если сертификат для сайта был выпущен посредством панели ispmanager, вносить изменения в директивы ssl_certificate
и ssl_certificate_key
не нужно.
Для директивы return
вы можете использовать любой другой код ошибки, если это необходимо.
Перезагрузите веб-сервер, если вы вносили изменения вручную через консоль:
systnemctl reload nginx
При использовании Apache
Приведите конфигурационный файл сайта к следующему виду:
<VirtualHost IP-АДРЕС_СЕРВЕРА:80>
ServerName catchall
<Location />
Redirect 403 /
</Location>
</VirtualHost>
<VirtualHost IP-АДРЕС_СЕРВЕРА:443>
ServerName catchall
SSLEngine on
SSLCertificateFile "/root/placeholder-ca/place.holder.crt"
SSLCertificateKeyFile "/root/placeholder-ca/place.holder.key"
SSLHonorCipherOrder on
SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 +TLSv1.3
SSLCipherSuite EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4
<Location />
Redirect 403 /
</Location>
</VirtualHost>
Если сертификат для сайта был выпущен посредством панели ispmanager, вносить изменения в директивы SSLCertificateFile
и SSLCertificateKeyFile
не нужно.
Для директивы return
вы можете использовать любой другой код ошибки, если это необходимо.
Перезагрузите веб-сервер, если вы вносили изменения вручную через консоль:
systnemctl reload apache2
Для RHEL-based систем используйте команду:
systnemctl reload httpd