Recapitulando o que fizemos no curso anterior: montamos um sistema de rede, em que configuramos para ficar mais seguro, representando uma empresa que desenvolve aplicativos web.
Montamos um firewall, usamos o pfSense que está filtrando alguns pacotes e implementando algumas regras, e também, há o IPS (Intrusion Prevention System) e IDS (Intrusion Detection System), o snort que detecta possíveis ataques e aplica ações de prevenção, como o bloqueio.
Temos a interface de rede (intranet) que representa a nossa equipe de desenvolvimento. Além disso, há o servidor web, dado que desenvolvemos aplicativos web, que estão em uma rede interna, na interface DMZ Interna. Este servidor web ainda não possui aplicação, está apenas com o Nginx instalado.
DMZ: Demilitarized Zone ou zona desmilitarizada, em português.
Temos, também, a internet que representa toda rede. Estamos conectados a ela em modo bridge, pelo nosso roteador. Por último, temos a DMZ Externa, o WAF que funciona como um proxy-reverso. Isto é, ele captura as requisições dos usuários na internet e encaminha para o servidor web. Dessa forma, ele protege os endereços dos nossos servidores internos.
Para aplicarmos tudo isso, usamos a virtualização. Para simular a nossa rede, na Virtualbox temos, à esquerda, as máquinas: WAF, server, firewall e Graylog.
- WAF: representa um proxy-reverso, em que temos o Nginx instalado com algumas regras para reconhecer alguns ataques, o security mode.
- server: servidor web com Nginx instalado, recebe a aplicação que as pessoas desenvolvedores irão fazer.
- firewall: responsável por rodar o pfSense, que funciona como filtro de pacotes e com algumas regras configuradas.
- Graylog: exibe os logs do que está acontecendo por trás dessa rede.
Como acessamos todas essas máquinas? Primeiro, precisamos executá-las, para isso basta clicar duas vezes na máquina. Agora, para acessá-las usamos o navegador, por exemplo, o pfSense, com o endereço "https://192.168.56.10".
Caso seja exibido uma página de login, as credenciais são:
Usuário: admin
senha: qwerty
Para acessar o Graylog usamos o IP "http://192.168.11:9000/search", sendo 9000 a porta. Caso seja exibida uma página de login, as credenciais são as mesmas que usamos para o pfSense.
Temos, também, o servidor web que está somente com o Nginx instalado. Para acessá-lo, usamos o endereço "192.168.100.183". Será exibida uma página com as boas-vindas ao Nginx. Por ser conforme a rede do roteador, o seu será diferente.
Pensando em todo o nosso sistema de rede, em questão de segurança, o que mais podemos configurar?
Supondo que, na intranet, temos um funcionário que acessou um endereço suspeito e acabou sofrendo um ataque cibernético. Com isso, o atacante pode conseguir acessar as outras máquinas, outros computadores e o nosso servidor web e WAF, caso não tenha nenhum mecanismo de segurança. Isto é um perigo que não podemos correr.
Por isso, usaremos o conceito de segurança em camadas e chegamos até a implementar as DMZs, porém elas apenas identificam quem são as redes, fisicamente. Dessa forma, o atacante pode estar acessando e pulando de uma máquina para outra.
Para resolver isso, podemos implementar alguns firewalls menos robustos. Por exemplo, podemos colocar um firewall no servidor web, um firewall no WAF e outro na intranet. E qual seria esse firewall?
O pfSense será o nosso firewall principal, o da borda. No caso, para separar a rede interna da internet e podemos incluir esses outros firewalls menores na máquina.
Um exemplo disso, seria o netfilter, como as nossas máquinas estão no Linux, no kernel do Linux temos o netfilter. No caso, é associada a um iptables, sendo um firewall que filtra os pacotes, assim, podemos colocar algumas regras como em casos de endereços diferentes do que não queremos que esteja na máquina não acesse outra dentro da nossa rede. Isso é feito por linhas de comando.
Documentação: netfilter "iptables" project
Para não precisarmos abrir cada terminal de cada máquina, usaremos o nosso próprio cmd do computador.
Começando pelo servidor web, para acessá-lo usaremos o protocolo SSH, em que conseguimos efetuar essa conexão via SSH, utilizando linhas de comando. Ou seja, podemos rodar as linhas de comando de qualquer máquina pelo próprio prompt de comando.
Uma maneira simples de realizar isso, é acessar o gateway - o firewall principal, o pfSense - e, por meio dele, acessar os outros, visto que ele está conectado a tudo na rede.
Logo, para acessar o firewall usaremos o seguinte comando:
Perceba que este comando apenas carrega e não exibe nada. Nesses casos, podemos esperar um connection timeout (tempo limite de conexão).
Após aguardar um tempo, é exibido o seguinte retorno:
ssh: connect to host 192.168.56.10 port 22: Connection timeout
Ele está tentando se conectar pela porta 22. Lembrando da configuração que usamos para acessar o firewall, fizemos somente para acessar pelo navegador nas portas 80 e 443, HTTP e HTTPS, respectivamente. Por isso, vamos alterar no firewall.
Para isso, vamos acessar pelo navegador o endereço https://192.168.56.10 e no cabeçalho clicaremos nas opções "Firewall > Aliases > Ports", sendo as portas que inserimos.
Firewall Aliases Ports
| Name | Values | Description | Actions |
|---|
| PORT_WEB | 80, 443 | Portas WEB | ✎ ❐ |
Clicaremos no ícone de lápis, à direita, para editar. Vamos inserir a porta 22 para acessarmos, para isso, deixaremos com as seguintes configurações:
Properties
- Name: PORT_ADM
- Description: Portas Administração
- Type: Port(s)
Na seção "Ports", clicaremos no terceiro botão verde "+ Add Port", para adicionar a porta 22.
Ports
- 80 - HTTP
- 443 - HTTPS
- 22 - SSH
Em seguida, vamos selecionar o botão "Save", na parte inferior esquerda. Após selecionar o botão, vamos ser redirecionados para a parte superior da página, em que aparecerá a seguinte mensagem: "The alias list has been changed. The changes must be applied for them to take effect.".
À direita da mensagem, temos um botão "Apply changes", selecionaremos ele. Perceba que agora a mensagem exibida mudou para: "The changes have been applied successfully. The firewall rules are now reloading in the background.".
Para conferir, no cabeçalho selecionaremos as opções "Firewall > Rules", na aba "INTERNET". Perceba que é exibido o "PORT_ADMIN" na tabela.
Além dessa, é necessário fazermos outra configuração. Para isso, vamos em "System > Advanced", na aba "Admin Access". Descendo a página, na seção "Secure Shell", marcaremos a opção "Enable Secure Shell" e salvaremos clicando no botão "Save" na parte inferior da página.
Secure Shell
- Secure Shell Server:
<check> Enable Secure Shell
Após isso, seremos redirecionados para o topo da página, em que* teremos a mensagem: "*The changes have been applied successfully".
Agora, voltaremos para o cmd e rodaremos o seguinte comando para estabelecer a conexão:
Password for [email protected]:
Na senha, digitaremos "qwerty" e depois clicaremos na tecla "Enter". Será exibido um retorno de boas-vindas, com as informações de interface de rede que ele está conectado. Abaixo temos algumas opções para selecionarmos, de 0 até 16. Para fins didáticos, não exibiremos o retorno completo, apenas a mensagem de boas-vindas:
Welcome to pfSense 2.6.0- RELEASE (amd64) on lab
Com isso, conseguimos acessar o nosso firewall via SSH.
No cmd, podemos digitar o número "8" por ser a opção "Shell" e clicar na tecla "Enter". Dessa forma, temos acesso ao terminal de comando do firewall, e com ele acessaremos o servidor web, sendo o que queremos usar o netfilter e o iptables para colocar um firewall menos robusto.
Aprenderemos tudo isso no próximo vídeo. Até mais!