172 похожих чатов

Всем гуру докера привет! Подскажите возможно с тривиальным вопросом, но

долгое время не могу найти на него ответ.

В общем есть VPS с докером, портейнером и nginx прокси. Все настроил, SSL подцепил по доменному имени заходит спокойно. НО! Если указать прямой ip вместо доменного имени, на сервисы можно попать по http.

Вопрос: Как заблокировать возможность входа на ВСЕ докер контейнеры с использованием прямого ip и разрешить только через nginx прокси?

5 ответов

16 просмотров

Наверное стоит запускать контейнеры без публикации портов просто)

Для решения вашей задачи с ограничением доступа к Docker контейнерам только через Nginx прокси и блокировкой прямого доступа по IP, вам необходимо настроить правила сетевой безопасности на вашем VPS. Вот несколько способов, как это можно сделать: Настройка Брандмауэра на Уровне Хоста: Используйте брандмауэр, например iptables или ufw на хостовой машине, чтобы блокировать входящий трафик на порты, используемые Docker контейнерами, кроме портов, используемых Nginx. Настройте правила так, чтобы разрешить доступ только на порты Nginx (обычно 80 и 443 для HTTP и HTTPS соответственно) и заблокировать доступ ко всем остальным портам. Настройка Сетевых Правил в Docker: Настройте сети Docker так, чтобы контейнеры были недоступны извне, не подключая их к сети bridge по умолчанию. Используйте внутренние сети (--internal) при создании сетей Docker, чтобы ограничить доступ к контейнерам. Использование Docker Compose: Если вы используете docker-compose, убедитесь, что сервисы не экспонируют порты напрямую на хост машине, за исключением Nginx. В docker-compose.yml укажите expose для внутренних портов сервисов, и используйте ports только для Nginx. Настройка Nginx: Убедитесь, что ваш Nginx прокси настроен правильно для перенаправления запросов на нужные сервисы. Настройте Nginx так, чтобы он слушал только на портах 80 и 443.

Gleam Glide- Автор вопроса
Егор Мурлыков
Для решения вашей задачи с ограничением доступа к ...

пробовал через iptables. проблема в том, что докер создает динамически правила, и даже если я укажу требуемое правило и воткну в нужное место, то при создании нового контейнера или перезапуске правило drop вылетает на первое место и блокирует вообще доступ к контейнерам. К тому же он создает кучу цепочек которые затрудняют работу с iptables

Gleam Glide
пробовал через iptables. проблема в том, что докер...

Держи доку по твоей темке https://docs.docker.com/network/packet-filtering-firewalls/ и сеньорский мой совет Понимаю вашу проблему. Docker действительно автоматически манипулирует iptables, создавая и изменяя правила при старте и остановке контейнеров, что может затруднять ручное управление правилами. Вот несколько решений и подходов, которые могут помочь: Используйте DOCKER-USER цепочку в iptables: Docker предоставляет специальную цепочку DOCKER-USER в iptables, предназначенную для пользовательских правил. Правила в этой цепочке применяются до автоматически созданных правил Docker. Добавьте свои правила в цепочку DOCKER-USER, чтобы они не были перезаписаны Docker. Например, чтобы запретить весь входящий трафик на определенный IP, кроме трафика через Nginx, можно использовать следующее правило: bash Copy code iptables -I DOCKER-USER -i eth0 ! -s [NGINX_IP] -j DROP Замените [NGINX_IP] на IP-адрес, который должен быть разрешен. Использование --iptables=false в Docker: Можно запустить Docker с параметром --iptables=false, чтобы предотвратить автоматическое управление iptables Docker'ом. Это позволит вам полностью контролировать правила iptables. Однако, это потребует ручной настройки сетевых правил для обеспечения сетевой связности контейнеров, что может быть довольно сложно. Создание Специфических Сетей в Docker: Создайте пользовательские сети в Docker для каждого сервиса и настройте сетевые правила соответствующим образом. Это может помочь изолировать трафик между различными сервисами и облегчить управление правилами. Использование выделенного брандмауэра или маршрутизатора: В качестве альтернативы, можно рассмотреть возможность использования выделенного брандмауэра или маршрутизатора перед вашим сервером, который будет управлять всеми правилами доступа. Регулярная Проверка и Обновление Правил: Независимо от выбранного подхода, регулярно проверяйте и обновляйте правила iptables, чтобы убедиться, что они соответствуют вашим требованиям безопасности. Документация и Сообщество Docker: Рекомендую также обратиться к документации Docker и сообществу. Возможно, у кого-то из сообщества была похожая проблема и они нашли уникальное решение. Помните, что работа с iptables может быть сложной, и неправильные настройки могут привести к потере доступа к вашему серверу. Убедитесь, что у вас есть доступ к консоли восстановления или другой способ доступа к серверу на случай проблем.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта