A Digital Ocean é uma empresa de cloud computing que está sempre com novidades e um ponto que chama atenção é a contínua melhora da plataforma. A empresa está sempre lançando novos recursos que são documentados através de uma comunicação clara com os desenvolvedores, seja através do blog, documentação ou contato direto com a comunidade. Outro fator relevante é a facilidade de se usar os novos recursos e esse é, certamente, outro ponto forte da plataforma.
Segurança na nuvem
Ao configurar qualquer servidor ligado na internet a segurança é uma das primeiras coisas que devemos pensar. Antes da Digital Ocean possuir o recurso Cloud Firewalls que veremos nesse artigo, era necessário configurar iptables manualmente no Linux. O grande problema da configuração manual não está quando temos apenas uma máquina para rodar determinado serviço, mas quando várias máquinas são utilizadas ou quando existe uma rede com Load Balancers e outros recursos dentro da plataforma e aí esse trabalho de configuração manual pode se tornar bastante complexo.
Em outras plataformas a utilização de firewall padrão não é novidade, por exemplo, na AWS e no Google Cloud Plataform esse recurso já existe há algum tempo.
Curso Linux - Fundamentos para desenvolvedores
Conhecer o cursoConceitos básicos do Cloud Firewalls
Antes, alguns aspectos que precisamos conhecer:
- No firewall existem as regras de entrada e as regras de saída;
- Dentro de uma regra é possível selecionar o protocolo, porta única ou range de portas e quem terá permissão de acesso;
- Por fim, temos as VPSs e tags que esse firewall será aplicado. Um VPS pode ter muitos firewalls e um firewall pode ser aplicado a vários VPS’s;
Veremos na prática alguns exemplos.
Gerenciamento do Firewall
Para criar um novo firewall podemos acessar o gerenciador de 2 modos, na tela principal no menu Networking > Firewalls ou nas configurações de uma Droplet específica no menu Networking > Firewalls > Manage Firewalls. No gerenciador basta clicar em Create Firewall para criar um novo.
Por padrão, o firewall aceita conexões na porta 22 (SSH) de qualquer IP, seja IPv4 ou IPv6. Veja a imagem:
Vamos supor que você queira liberar a porta do SSH somente para um IP específico (e essa prática é encorajada):
Outro recurso legal é o uso de Tags. Dentro da plataforma é possível criar tags para agrupar recursos, por exemplo, vamos supor que você queira liberar o acesso à porta do MySQL somente para as droplets que possuam a tag servidor-web
:
Nas regras de saída temos algo bem parecido:
Por padrão as regras de saída são:
- Permite tráfego ICMP de qualquer endereço IPv4 e IPv6
- Permite tráfego de saída TCP para todas as portas em qualquer endereço;
- Permite tráfego de saída UDP para todas as portas em qualquer endereço;
É possível configurar essas regras para ficarem mais restritivas, apesar do tráfego de saída não ser tão perigoso como o de entrada.
Por fim, deve ser escolhido o local onde o firewall será aplicado, pode ser em um ou mais Droplets ou Tags:
No exemplo acima está sendo aplicado a todos os recursos com a Tag servidor-web
e ao Droplet treinaweb-test
.
Conclusão
Um dos princípios de segurança mais importantes é a permissão mínima. Sempre que for configurar seu firewall libere apenas as permissões mínimas necessárias para as conexões usadas no seu servidor. Serviços como SSH e MySQL preferencialmente devem ser liberados para acesso somente ao IP do administrador ou de alguma outra máquina que acesse esse serviço e, com isso, restringe-se a maioria dos ataques possíveis.
Por fim, vale destacar os limites do Firewall da Digital Ocean:
- Quantidade total de regras de entrada e saída de um firewall: 50
- Quantidade de Droplets por Firewall: 10
- Firewalls por Droplet: Ilimitado
- Tags por Firewall 5.
- Droplets por tag: Ilimitado
Caso queira mais de detalhes, você pode acessar o exemplo oficial.