Как ограничить доступ к порту Docker с помощью IPTables: несколько методов, объясненных примерами кода

В этой записи блога мы обсудим несколько методов ограничения доступа к порту Docker с помощью IPTables. IPTables — мощный инструмент для управления правилами брандмауэра в системах Linux, позволяющий определять правила фильтрации сетевого трафика. Применяя правила IPTables, вы можете обеспечить контроль доступа на основе IP к определенному порту Docker, разрешая доступ к службе только определенному IP-адресу или диапазону IP-адресов. Мы рассмотрим различные подходы к достижению этой цели и предоставим примеры кода для каждого метода.

Метод 1: внесение в белый список одного IP-адреса
Если вы хотите разрешить доступ только с одного конкретного IP-адреса, вы можете использовать следующее правило IPTables:

sudo iptables -A DOCKER-USER -p tcp --dport <port_number> -s <specific_ip> -j ACCEPT
sudo iptables -A DOCKER-USER -p tcp --dport <port_number> -j DROP

Замените <port_number>фактическим номером порта вашего контейнера Docker, а <specific_ip>— IP-адресом, который вы хотите разрешить.

Метод 2: белый список диапазонов IP
Если вы хотите разрешить доступ из диапазона IP-адресов, вы можете использовать нотацию CIDR IPTables. Вот пример:

sudo iptables -A DOCKER-USER -p tcp --dport <port_number> -s <start_ip>/<subnet_mask> -j ACCEPT
sudo iptables -A DOCKER-USER -p tcp --dport <port_number> -j DROP

Замените <start_ip>на начальный IP-адрес диапазона и <subnet_mask>на маску подсети.

Метод 3: внесение нескольких IP-адресов в белый список
Чтобы разрешить доступ с нескольких конкретных IP-адресов, вы можете создать отдельные правила IPTables для каждого IP-адреса:

sudo iptables -A DOCKER-USER -p tcp --dport <port_number> -s <ip_address_1> -j ACCEPT
sudo iptables -A DOCKER-USER -p tcp --dport <port_number> -s <ip_address_2> -j ACCEPT
...
sudo iptables -A DOCKER-USER -p tcp --dport <port_number> -j DROP

Добавьте столько IP-адресов, сколько необходимо, и завершите правилом DROP, чтобы запретить доступ к любому другому IP-адресу.

Метод 4: Цепочка IPTables
Вы можете создать отдельную цепочку IPTables для реализации более сложных правил. Вот пример:

sudo iptables -N DOCKER-WHITELIST
sudo iptables -A DOCKER-WHITELIST -s <ip_address_1> -j RETURN
sudo iptables -A DOCKER-WHITELIST -s <ip_address_2> -j RETURN
...
sudo iptables -A DOCKER-WHITELIST -j DROP
sudo iptables -I DOCKER-USER -p tcp --dport <port_number> -j DOCKER-WHITELIST

Замените <ip_address_1>, <ip_address_2>и т. д. на нужные IP-адреса. Этот метод позволяет легко управлять IP-адресами из белого списка и изменять их отдельно.

Внедрение контроля доступа на основе IP к порту Docker с помощью IPTables — эффективный способ повысить безопасность сети. Следуя методам, описанным в этой статье, вы можете ограничить доступ к вашим контейнерам Docker, разрешив подключение только определенным IP-адресам или диапазонам IP-адресов. Не забудьте адаптировать примеры кода в соответствии с вашими конкретными требованиями и конфигурациями.