Category: Segurança

Microsoft Azure – Criando servidor de NAT para subnet privada

Microsoft Azure – Criando servidor de NAT para subnet privada

O post de hoje tem como pré requisito a leitura do post de criação de Virtual Network com subnet pública e privada.

A necessidade de um NAT para a subnet privada criada anteriormente na Azure é para a saída de pacotes oriundos da subnet privada para a internet.

A arquitetura final ao termino do post será como a da imagem a seguir:

Para o servidor de NAT e para o servidor de teste usaremos um servidor com o S.O CentOS 7.

Para não tornar o post extenso, vamos partir do pressuposto que o leitor já sabe criar servidores na Azure.

De acordo com o desenho da infraestrutura, o servidor de NAT deve ficar na subnet pública, deve conter um IP público estático e deve conter as seguintes regras de segurança aplicadas:

  • Porta 22 aberta para o IP de sua rede;
  • Todas as portas liberadas para o range de IP da sua Virtual Network, no nosso caso é para 10.40.0.0/16.

Para o servidor de teste criado na subnet privada, não é necessário nem recomendado ter um IP público para o servidor. As regras de segurança para esse servidor ficarão da seguinte forma:

  • Todas as portas liberadas para o range de IP da sua Virtual Network, no nosso caso é para 10.40.0.0/16.

Após criar o servidor de NAT, é necessário fazer algumas instalações/ configurações nele.

Acesse o seu servidor de NAT, com sua chave ou sua senha através do SSH, em seguida, se torne root com o comando:

Para gerenciamento do forward dos pacotes da subnet privada para a internet usaremos o IPTables, para isso precisamos instala-lo no servidor e habilitá-lo com os seguintes comandos:

Depois precisamos habilitar no kernel do servidor a feature de forward de pacotes usando o comando:

e depois trocando no aquivo /etc/sysctl.conf a opção  net.ipv4.ip_forward = 0 para net.ipv4.ip_forward = 1.

Feito as configurações do IPtables, precisamos dizer a ele quais são suas rules, no nosso caso vamos usar a seguinte regra:

Observe que depois que adicionamos a regra, é necessário salvá-la para não perde-la caso tenha algum restart do serviço de IPTables ou reboot do servidor.

O servidor de NAT está pronto e configurado, agora é preciso adicionar a rota para 0.0.0.0/0 apontando para o IP privado do servidor de NAT na tabela de roteamento da Subnet Privada e pronto 🙂

Acesse seu servidor de teste na subnet privada fazendo um jump pelo servidor de NAT e faça o teste pingando o site de google por exemplo.  

Bom pessoal, espero que tenham gostado do post, abraços.

 

Ansible Vault: Criptografando arquivos sensíveis

Ansible Vault: Criptografando arquivos sensíveis

A ideia desse post é ser breve porém falar sobre um importante mecanismo do ansible para quem precisa criptografar arquivos sensíveis contendo senhas ou chaves. Vamos falar do ansible vault.

Os comandos para o ansible vault são: create, decrypt, edit, encrypt, rekey, view

Abaixo estão alguns exemplos de utilização do ansible vault:

Para criar um novo arquivo criptografado:
ansible-vault create foo

Para criptografar um arquivo já existente:
ansible-vault encrypt foo

Para descriptografar um arquivo criptografado:
ansible-vault decrypt foo

Para editar um arquivo criptografado:
ansible-vault edit foo

Para alterar a senha de criptografia de um arquivo:
ansible-vault rekey foo

Para visualizar um arquivo criptografado:

ansible-vault view foo

Em um cenário real, isso é amplamente utilizado para mantermos a segurança de alguns arquivos contendo senhas de databases, por exemplo. Vou usar como exemplo a utilização do ansible vault na subida desse blog. Em uma das receitas utilizamos credenciais de acesso ao nosso banco de dados, para deixarmos essas senhas mais seguras, utilizamos o ansible vault da seguinte forma:

Criamos um arquivo dentro do diretório group_vars com variáveis contendo as credenciais de acesso ao nosso banco de dados (credentials);

Feito isso, criptografamos o arquivo utilizando
ansible-vaul encrypt credentials

Após concluído o processo de criptografia, basta fazer as chamadas das variáveis na main do playbook.

Na execução da receita existem algumas formas de especificar que você utilizou o ansible vault, uma delas é utilizar o parâmetro “–ask-vault-pass

ansible-playbook site.yml --ask-vault-pass

Esse método só é válido se todas as senhas de criptografias são iguais. Caso os arquivos foram criptografados com senhas diferentes você pode utilizar o parâmetro “–vault-password-file

ansible-playbook site.yml --vault-password-file ~/.vault_pass.txt

Nesse segundo método as senhas ficam especificadas em um arquivo local sendo interessante definir as permissões do arquivo por questões de segurança.

Esse é apenas um exemplo do que dá para ser feito com o ansible vault. Usem e adequem de acordo com sua necessidade.
Para mais informações acesse a documentação.

Espero que tenham gostado! Até mais =D