Недавно я начал использовать эластичный поиск, 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) и отбрасывает все остальные подключения.