Как заблокировать прямой IP-доступ к моему веб-серверу без кода ошибки ответа?

Как заблокировать прямой IP-доступ к моему веб-серверу без кода ошибки ответа?

Надеюсь, кто-нибудь поможет мне с этим вопросом.

Пример:

Мое доменное имя: example.com

Мой IP-адрес 103.103.103.103

Когда люди пытаются подключиться к моему IP через порт 80, он не отвечает ни на один запрос.

Должно отобразиться: подключение (в браузере)... без ответа. (Будет выглядеть так, будто не удалось подключиться)

Я пытался изменить httpd.conf (я использую Apache 2.4), но пока безуспешно.

Я пробовал гуглить, но по моему вопросу нет результатов.

Спасибо

решение1

Предполагая, что вы хотите, чтобы запросыhttp://example.comдля обслуживания вашего веб-сайта и запросы наhttp://103.103.103.103чтобы вас явно исключили, у вас есть 2 основных варианта, о которых я знаю.

1) использоватьmod_securityМодуль и dropцель. Такая конфигурация;

    <VirtualHost *:80>
        ServerName default.only
        SecRuleEngine On
        SecRule REMOTE_ADDR "^\d" id:'1234',drop,phase:1
    </VirtualHost>

    <Directory /var/www/example.com >
      Options FollowSymLinks
      AllowOverride FileInfo Options
      Order allow,deny
      Allow from all
    </Directory>

    <VirtualHost *:80>
        ServerName example.com
        DocumentRoot /var/www/example.com
    </VirtualHost>

возвращает веб-сайт, если вы зайдете наhttp://example.com

# wget -O-  http://example.com
--2018-03-09 15:35:35--  http://example.com/
Resolving example.com (example.com)... 127.0.0.1
Connecting to example.com (example.com)|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24 [text/html]
Saving to: ‘STDOUT’

и если вы попробуете зайти на сайт по умолчанию через iphttp://127.0.0.1

# wget -O-  http://127.0.0.1
--2018-03-09 15:35:28--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... No data received.

Соединение разорвано.

2) Второй вариант — использовать stringмодуль дляiptablesи сбрасывать соединения с заголовком, соответствующимHost: 103.103.103.103

iptables -A INPUT -m string --string "Host: 103.103.103.103" -j DROP

(Я не проверял правила iptables... так что вам придется проверить документацию для правильного заклинания...) Однако я думаю, что опция mod_security проще

Связанный контент