Пробросить порт 2222 в Docker, но не пробрасывать 22.

Вопрос или проблема

У меня есть машина с установленной Linux и docker-образом, предоставляющим доступ к SFTP через порт 2222. Машина на Linux также предоставляет доступ к SSH и SFTP через порт 2222. Как мне настроить, чтобы принимать только SSH на порту 22, перенаправляя порт 2222 внутрь docker и не отвечая на хосте?

Ответ или решение

Для решения задачи перенаправления порта 2222 к контейнеру Docker, не затрагивая порт 22, потребуется корректная настройка сети и конфигурации Docker. Рассмотрим пошаговую инструкцию по этому процессу.

Шаг 1: Понимание архитектуры

  1. Linux-хост: Обеспечивает работу SSH-сервера на порту 22 для удаленного доступа и должен продолжать это делать, не взаимодействуя с портом 2222.

  2. Docker-контейнер: Экспонирует SFTP-сервис через порт 2222 и требует прямого доступа из внешней сети, который будет организован с помощью перенаправления порта.

Шаг 2: Настройка Docker

Для настройки Docker следует убедиться, что контейнер запущен с правильной конфигурацией портов.

  1. Запуск контейнера с перенаправлением порта:

    docker run -d -p 2222:2222 <имя_или_id_образа>

    Здесь -p 2222:2222 указывает на то, что порт 2222 на хосте перенаправляется на порт 2222 в контейнере.

Шаг 3: Настройка брандмауэра

Для того чтобы порт 2222 не принимал подключения на хосте, необходимо настроить правила брандмауэра, например, с использованием iptables.

  1. Разрешение соединений на порт 22 для SSH:

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  2. Перенаправление трафика на порт 2222 только в Docker:

    sudo iptables -A DOCKER ! -i docker0 -p tcp --dport 2222 -j DNAT --to-destination 172.17.0.2:2222

    Здесь 172.17.0.2 должен быть заменен на IP-адрес Docker-контейнера.

  3. Блокировка входящих соединений на порт 2222 хоста:

    sudo iptables -A INPUT -p tcp --dport 2222 -j DROP

Шаг 4: Обновление системных настроек

Проверьте, что настройка сохранилась и активна после перезагрузки:

  1. Записать правила iptables в конфигурационный файл, например, /etc/iptables/rules.v4 или используйте iptables-save.

Дополнительные рекомендации

  • Использование IP Whitelisting: Защитите сервера, установив фильтрацию входящих IP для ещё большей безопасности.

  • Мониторинг и логирование: Настройте системы мониторинга для отслеживания активности на открытых портах.

Следуя этим шагам, вы сможете безопасно передать порт 2222 контейнеру Docker, сохраняя при этом работу SSH на порту 22 на вашем Linux-хосте.

Оцените материал
Добавить комментарий

Капча загружается...