Как заблокировать домен с помощью 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>
Другие вопросы по тегам