Попытка ограничить доступ к экземпляру Dockerized Redis с помощью firewalld - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть докеризованный экземпляр Redis, работающий на CentOS 7 VPS, и я хочу настроить правила брандмауэра, чтобы к нему можно было обращаться из других докеризованных экземпляров, работающих на самом сервере, но не из внешнего мира.

Я прочитал это сделать c на Docker и iptables , а затем этот комментарий . Подводя итог:

  1. Docker манипулирует iptables, чтобы разрешить подключения ко всем его контейнерам при запуске.
  2. Docker будет учитывать цепочку iptables "DOCKER -USER", и оставьте эти правила в покое.

Так что я следовал этим инструкциям и сделал следующее:

# Removing DOCKER-USER CHAIN (it won't exist at first)
firewall-cmd --permanent --direct --remove-chain ipv4 filter DOCKER-USER

# Flush rules from DOCKER-USER chain (again, these won't exist at first; firewalld seems to remember these even if the chain is gone)
firewall-cmd --permanent --direct --remove-rules ipv4 filter DOCKER-USER

# Add the DOCKER-USER chain to firewalld
firewall-cmd --permanent --direct --add-chain ipv4 filter DOCKER-USER

# Add rules (see comments for details)
firewall-cmd --permanent --direct --add-rule ipv4 filter DOCKER-USER 0 -j REJECT -i eth0 -dport 6379

Так что каждое соединение происходит от eth0 (который является сетевым интерфейсом для внешний мир) отвергается. И тогда я перезагрузился. Если я сейчас проверю правила брандмауэра, то получу:

firewall-cmd --permanent --direct --get-rules ipv4 filter DOCKER-USER
0 -j REJECT -i eth0 -dport 6379

... и, тем не менее, после всего этого, если я попытаюсь удаленно подключить lnet к порту 6379 моего сервера, Redis все равно ответит.

Что происходит?

...