2

У меня есть база данных MySQL на сервере (я использую Percona в контейнере Docker ) с несколькими сетевыми интерфейсами.

Моя система Ubuntu 16.04.2 LTS.

ifconfig

eth0      Link encap:...
          inet addr:95.*.*.*

eth1      Link encap:...
          inet addr:10.*.*.*

Можно ли ограничить доступ с помощью ufw к базе данных на интерфейсе eth0 но разрешить на eth1?

Так что будет иметь доступ к БД с 10.*.*.*:6603 и не сможет получить доступ с 95.*.*.*:6603 .

Обновление (04.03.2017):

Я использовал эту команду, чтобы добавить правило:

sudo ufw deny in on eth0 to any port 6603 from any proto tcp

Статус:

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
6603/tcp on eth0           DENY        Anywhere
6603/tcp (v6) on eth0      DENY        Anywhere (v6)

Но я, несмотря на запретное правило, могу войти в свою БД с клиентом MySQL .

Но порт 6603 все еще открыт:

nmap -p 6603 95.85.54.75

Starting Nmap 7.01 ( https://nmap.org ) at 2017-03-04 16:14 UTC
Nmap scan report for 95.85.54.75
Host is up (0.0012s latency).
PORT     STATE SERVICE
6603/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 0.65 seconds

2 ответа2

1

Проблема заключалась в том, что Docker вмешивался в правила брандмауэра.

Согласно этим постам (Опасность UFW + Docker, Как настроить Docker 1.12+, чтобы НЕ мешать IPTABLES/FirewallD):

  • Я создал файл /etc/docker/daemon.json с содержанием:

    {
        "iptables": false
    }
    
  • Я добавил правило в UFW:

    sudo ufw allow in on eth1 to any port 6603 
    

    разрешить соединения только от UFW.

  • перезагрузить демон докера

    sudo service docker stop
    sudo service docker start
    

Примечание: это исправление работает только для контейнеров, созданных с помощью docker run... Для контейнеров, созданных с помощью Docker Swarm, это исправление не работает.

1

Вместо использования ufw , вы можете привязать MySQL к одному интерфейсу.

В файле конфигурации mysqld (обычно в /etc/mysql/my.cnf) есть опция bind-address которая позволяет вам установить один IP-адрес (например, 10.0.4.25), чтобы MySQL прослушивал только этот интерфейс ,

Однако это не является пуленепробиваемым решением, поскольку на хостах, использующих модель слабого хоста (например, некоторые дистрибутивы Linux), можно подключаться к сервисам, привязанным к одному интерфейсу из другого.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .