/
/
Запретить доступ к сайтам по IP-адресу

Запретить доступ к сайтам по 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