Como posso bloquear todo o tráfego para apenas uma porta? Tome a seguinte situação:
- Ubuntu Desktop VM
- O navegador tem acesso à internet (a porta 80 permanece aberta)
- Os serviços de atualização do Ubuntu funcionam normalmente (não podem ser bloqueados)
- Cliente gráfico do MySQL instalado
Em uma configuração normal, o cliente MySQL pode se conectar a um servidor mysql hospedado, como no Amazon EC2, porque o tráfego de saída é permitido.
Eu tenho a seguinte configuração agora. Eu pensei que isso iria bloquear 3306, mas eu ainda posso fazer conexões com a Amazon usando o cliente MySQL. Eu reiniciei para ter certeza de que todas as regras foram aplicadas.
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 80 ALLOW IN Anywhere
[ 3] 5900 ALLOW IN Anywhere
[ 4] Anywhere DENY IN 3306
[ 5] 3306 DENY IN Anywhere
[ 6] 22 ALLOW IN Anywhere (v6)
[ 7] 80 ALLOW IN Anywhere (v6)
[ 8] 5900 ALLOW IN Anywhere (v6)
[ 9] Anywhere (v6) DENY IN 3306
[10] 3306 DENY IN Anywhere (v6)
Mais algumas explicações ...
Eu uso uma VM para testar um aplicativo da web existente. Eu faço uma cópia do ambiente ao vivo, restaure isso na VM. O aplicativo ao vivo está hospedado no Amazon EC2. O servidor de banco de dados para o aplicativo ativo não é localhost, mas outro servidor. Com a Amazon, você pode usar um endereço público para a string de conexão, algo como 12.34.56.78.eu-west-1.compute.amazonaws.com
. Internamente, eles captam isso e um endereço IP interno é usado. Isso tem a vantagem de que, quando uma instância falha e você precisa criar outra instância com outro endereço IP interno, a string de conexão não precisa ser alterada.
Esse endereço funciona de fora da AWS, por isso funciona na minha VM. Eu posso conectar da minha VM ao banco de dados de produção. Estou ciente disso e sei que devo editar a string de conexão. Às vezes eu esqueço e depois o banco de dados de produção é usado. Eu prefiro receber uma mensagem de erro grande e feia do meu ambiente de teste, informando que a conexão com o banco de dados falhou. (Se de alguma forma, outro cliente na rede local gostaria de se conectar ao servidor mysql na VM, isso não é realmente um problema.)
Então, como posso fazer isso funcionar? Eu pensei que bloquear a porta 3306 no firewall poderia fazer o trabalho.