Назад | Перейти на главную страницу

Заблокировать доступ к порту напрямую, но разрешить доступ через поддомен

Недавно я начал использовать эластичный поиск, Logstash и Kibana для визуализации журналов на моем сервере.

Это отлично работает, но единственная загвоздка в том, что все это общедоступно при доступе к ним через их порты на моем сервере. например example.com:9200 или example.com:5601.

Я нашел способ ограничить эластичный поиск только локальным трафиком, но мне нужен способ ограничить общий доступ к Kibana.

Я хочу сделать его общедоступным, чтобы я мог получить к нему доступ, но поместил его перед некоторой базовой аутентификацией, используя htaccess. Я успешно реализовал это, поэтому, если я перейду к kibana.example.com он попросит у меня имя пользователя и пароль перед тем, как пройти. Однако я все еще могу получить к нему доступ напрямую, используя example.com:5601 и не запрашивать аутентификацию.

Оглядываясь вокруг, кажется, что iptables - лучший способ решить эту проблему. Я пробовал использовать sudo iptables -A INPUT -p tcp --dport 5601 -j DROP и это блокирует весь доступ к порту, но также блокирует трафик, который я хочу разрешить при перенаправлении через kibana.example.com.

Как я могу изменить приведенное выше правило, чтобы разрешить доступ через kibana.example.com а заблокировать доступ при попытке зайти в порт напрямую?

На моем сервере работает Debain Jessie, и я использую Apache 2.2 в качестве своего веб-сервера.

Я сделал это с помощью этого iptable правило:

iptables -A INPUT ! -s 127.0.0.1 -p tcp -m tcp --dport 5601 -j DROP

Он принимает все подключения к порту 5601 с localhost (что было сделано через мой прокси-сервер Apache) и отбрасывает все остальные подключения.