Как заблокировать домен с помощью Apache?
У нас есть веб-сайт example.com на Digital Ocean. Кажется, что есть пользователь, который использовал наш IP-адрес, который включал маскировку домена для своего сайта, или он просто указывает на свой домен domain.com для нашего sute. Мы не хотим, чтобы domain.com отображал наш сайт, поэтому я хотел бы заблокировать domain.com.
Я попытался использовать это руководство: https://perishablepress.com/eight-ways-to-blacklist-with-apaches-mod_rewrite/, но, похоже, это не работает с маскировкой домена.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)?domain(-|.).*$ [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>
Я видел этот пример: https://serverfault.com/questions/796674/block-masking-url-from-nginx/, но я не знаю, как перевести это на Apache.
1 ответ
@arkascha Предложил мне использовать виртуальные хосты Apache для выполнения этой работы.
Идея состоит в том, чтобы заставить ваш хост по умолчанию запретить доступ, а затем добавить еще один виртуальный хост, который разрешит доступ к вашему домену. Это означает, что черного списка нет, а есть белый. Это предотвращает и будущие или неизвестные домены, вызывающие подобные проблемы.
Вот содержимое моего файла etc/apache2/sites-available/000-default.conf, который успешно блокировал трафик с domain.com и разрешал трафик с example.com:
<VirtualHost *:80>
ServerName catchall
<Location />
Require all denied
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www/html/public
<Directory /var/www/html/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>