É possível restringir a conexão ao banco de dados no contêiner do Docker em uma interface específica no Ubuntu 16?

2

Eu tenho banco de dados MySQL em um servidor (eu uso Percona no contêiner Docker ) com várias interfaces de rede.

Meu sistema é Ubuntu 16.04.2 LTS .

ifconfig

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

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

É possível restringir o acesso com ufw a um banco de dados na interface eth0 , mas permitir eth1 ?

Então, ele poderá acessar o banco de dados com 10.*.*.*:6603 e não poderá acessar com 95.*.*.*:6603 .

Atualização (04.03.2017):

Eu usei esse comando para adicionar uma regra:

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

Status:

$ sudo ufw status
Status: active

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

Mas apesar de negar a regra, posso entrar no meu banco de dados com MySQL client.

Mas 6603 port ainda está aberto:

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
    
por Roman Cherepanov 03.03.2017 / 09:17

2 respostas

1

O problema é que o Docker interfere nas regras do firewall.

De acordo com essas postagens ( Os perigos do UFW + Docker , Como para ajustar o Docker 1.12+ para NÃO interferir com IPTABLES / FirewallD ):

  • Eu criei o arquivo /etc/docker/daemon.json com o conteúdo:

    {
        "iptables": false
    }
    
  • Eu adicionei regra ao ufw:

    sudo ufw allow in on eth1 to any port 6603 
    

    para permitir conexões somente do ufw.

  • reinicie o daemon do docker

    sudo service docker stop
    sudo service docker start
    

Observação: essa correção funciona apenas para contêineres criados com docker run... . Para contêineres criados com o Docker Swarm, essa correção não funciona.

    
por 04.03.2017 / 19:17
1

Em vez de usar ufw , você pode ligar o MySQL a uma única interface.

O arquivo de configuração do mysqld (geralmente em /etc/mysql/my.cnf ) tem uma opção chamada bind-address que permite que você defina um único endereço IP (como 10.0.4.25, por exemplo) para forçar o MySQL a escutar apenas nessa interface. / p>

No entanto, não é uma solução à prova de balas, porque nos hosts que usam o modelo host fraco (como algumas distribuições linux) é possível conectar-se a serviços ligados a uma interface de outra.

    
por 03.03.2017 / 09:42