Alura > Cursos de DevOps > Cursos de Segurança > Conteúdos de Segurança > Primeiras aulas do curso Segurança de rede: proxy reverso, SSH e DNS

Segurança de rede: proxy reverso, SSH e DNS

Acesso remoto - Apresentação

Boas-vindas ao Curso de Segurança de rede: proxy reverso, SSH e DNS!

Eu sou a Camila, mas pode me chamar de Mila! Serei a sua instrutora ao longo deste curso de Segurança Defensiva.

Camila Fernanda é uma mulher com os olhos castanhos escuros, cabelos pretos e encaracolado. Veste uma blusa azul marinho de tecido liso e está sentada em um ambiente com uma parede branca com a iluminação na cor azul.

Neste treinamento vamos aprender um pouco mais sobre segurança defensiva, sendo uma área englobada dentro do campo de cibersegurança.

Cibersegurança

Recapitulando um pouco sobre cibersegurança: temos o blue team, sendo o responsável pela parte de defensiva e o red team, responsável pela ofensiva.

O que vamos aprender?

Neste curso aprenderemos como efetuar um acesso remoto via SSH (Secure Shell Protocol) em outros servidores. Faremos a aplicação de segurança em camadas, colocando alguns firewalls menos robustos na rede interna, como, por exemplo, o iptables.

Após isso, faremos a configuração do WAF com o proxy-reverso. Ele será responsável por encaminhar as requisições do usuário para o nosso servidor interno, protegendo os IPs dos servidores. E também, usaremos o Nginx no WAF e no servidor interno. Além disso, subiremos uma aplicação para colocá-la no ar.

Pré-requisitos

Faça este curso e...

Na VM VirtualBox, adicionaremos mais uma máquina, a DVWA. Esta é a aplicação que vamos subir no lugar do servidor web. Por meio dessa aplicação, que acessaremos via consulta DNS, vamos acessá-la pelo navegador com o domínio "site.lab".

DVWA (damn vulnerable web application, em português "maldito aplicativo web vulnerável")

Dessa forma, vamos visualizar a interface da DVWA e realizar um teste para analisar se o nosso sistema está seguro. Além disso, usaremos o GrayLog, para visualizarmos o bloqueio do ataque e faremos mais algumas configurações no firewall (pfSense). Neste, criaremos mais regras na DMZ e na DMZ EXT.

Efetuaremos o acesso remoto via SSH diversas vezes para fazer algumas regras e instalações do iptables, um firewall menos robusto na nossa DMZ interna.

Ficou interessado(a) neste conteúdo?

Te espero na próxima aula!

Acesso remoto - Acesso SSH

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.

Diagrama visual do funcionamento entre intranet, internet, Server Web, Firewall, WAF e DMZ com as redes. Na parte central do diagrama, há o ícone do Firewall, acompanhado do texto "Firewall". Este possui quatro setas saindo dele. Logo abaixo, temos o escrito "iface host-only 192.168.56.10/24" na cor vermelha. Abaixo desse texto, há uma seta que aponta para a parte inferior, em que temos um ícone de servidor com uma nuvem acompanhado do texto "Intranet". Acima do Firewall, temos o escrito "iface BRIDGE" na cor vermelha, e acima desse uma seta que aponta para cima com o ícone  de um servidor da internet com o texto "Internet". À esquerda do Firewall, temos o escrito "iface Rede interna DMZ 172.100.1.10/24" na cor vermelha. Do lado esquerdo desse texto, há uma seta que aponta para a esquerda em que há um ícone do Server Web, acompanhado do texto "Web", em azul abaixo e com o escrito "DMZ Web" acima, na cor preta. À direita do Firewall, temos o escrito  "iface Rede interna DMZ 172.100.2.10/24" na cor vermelha. Do lado direito desse texto, há uma seta que aponta para à direita em que há um ícone de servidor escrito "WAF" abaixo e com o escrito "DMZ Externa".

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.

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:

ssh root@192.168.56.10

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

NameValuesDescriptionActions
PORT_WEB80, 443Portas 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

Na seção "Ports", clicaremos no terceiro botão verde "+ Add Port", para adicionar a porta 22.

Ports

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

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:

ssh root@192.168.56.10

Password for root@lab.local:

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!

Acesso remoto - Acesso para atualização

No último vídeo acessamos o firewall via SSH, o gateway do nosso sistema. Isto é, ele está conectado a todas as máquinas da nossa rede, e através dele conseguimos nos conectar via SSH com outras máquinas.

O nosso objetivo é incluir um firewall menos robusto, o iptables, na nossa rede interna, o servidor web. Vamos recapitular o que temos nessa rede.

Ao acessarmos o firewall via SSH (aula anterior), nos retorna informações de todas as interfaces de rede.

INTERNET (wan)em0v4/DHCP4: 192.168.100.188/24
INTRANET (Ian)em1v4: 192.168.56.10/24
DMZ (opt1)em2v4: 172.100.1.10/24
DMZEXT (opt2)em3v4: 172.100.2.10/24

Perceba que a DMZ está no range de IP 172.100.1.10, com a máscara de rede 24.

Nessa rede temos o servidor web e o Graylog (está na rede interna). Em uma aula do curso anterior aplicamos o NAT para reconhecer e acessar pelo navegador. Vamos rever o endereço IP deles e para isso, vamos voltar ao firewall (pfSense).

https://192.168.56.10

À direita do dashboard, em "Interfaces", temos as mesmas interfaces que vimos pelo cmd: Internet, Intranet, DMZ e DMZEXT.

No Graylog, usamos o endereço "192.168.56.11:9000". Porém, este é o endereço após aplicarmos o nat, logo não é o caminho real da máquina do Graylog. Para pegarmos esse caminho, voltamos no pfSense e acessamos pelo cabeçalho "Firewall > NAT", e clicamos na aba ""1:1.

Na tabela exibida, na coluna "Internal IP", temos o endereço real do Graylog, o 172.100.1.101 e, também, o nat que fizemos para o WAF, sendo o 172.100.2.100 - na DMZEXT. Na coluna "External IP", temos o IP 192.168.100.183 que usamos para acessar pelo navegador - lembrando que esse IP da instrutora difere do que você está usando.

Voltando ao pfSense, com o IP do Graylog podemos usá-lo e incluir o iptables nele. Afinal, as regras do firewall serão as mesmas para toda a interface, logo tanto faz incluir o iptables no Graylog ou no servidor web.

Para acessar o Graylog, voltaremos ao cmd e executaremos o comando:

ssh user@172.100.1.101

Por ser uma máquina Linux, usaremos o usuário padrão user. Será solicitado a senha, em que digitaremos "qwerty" e apertaremos a tecla "Enter".

Agora, vamos acessar o Graylog como usuário root. Logo, usaremos o comando su -, será solicitada a senha novamente, "qwerty". Com isso, conseguimos acessar via SSH o Graylog e podemos tentar instalar o iptables.

Mas antes, vamos atualizar os pacotes do Linux. Para isso, usaremos o comando apt update.

0% Trabalhando

Esse processo é um pouco demorado, e será gerada uma mensagem de erro. Esse erro acontece porque o Graylog não possui acesso à internet, isso porque o firewall tem, por padrão, o block geral. Como o Graylog está na rede interna, ele não possui acesso à internet, e para ele obter esse acesso precisamos montar, no pfSense, uma regra para autorizar essa conexão.

No pfSense, vamos acessar por meio do cabeçalho as opções "Firewall > Rules", na aba "DMZ" - sendo onde está o Graylog e o servidor web. Abaixo e à direita da tabela, temos alguns botões, em que clicaremos no primeiro botão verde "↑ Add".

Na página que abrir, vamos inserir as seguintes configurações:

Edit Firewall Rule

Source

Destination

Extra Options

Em seguida, clicaremos no botão azul "Save", na parte inferior.

Após selecionar o botão, seremos redirecionados para a parte superior da página, em que aparecerá a seguinte mensagem: "The firewall rule configuration has been changed. The changes must be applied for them to take effect.".

À direita da mensagem, temos um botão "Apply changes", clicaremos nele. Perceba que agora a mensagem exibida mudou para: "The changes have been applied successfully. The firewall rules are now reloading in the background.". Isso significa que a configuração foi salva.

No cmd, tentaremos novamente rodar o comando apt update para fazermos a atualização com a nova regra. Note que ele fica com a mensagem "0% Trabalhando", mas já adianto que ele vai seguir gerando o erro.

Falhou ao buscar http://security.debian.org/debian-security/dists/bullseye-security/InRelease Falha temporária resolvendo "security.debian.org".

Ele está tentando acessar alguns endereços, como o "security.debian.org" e mesmo com o acesso à internet, esse erro persiste.

Vamos investigar e entender o motivo desse erro no próximo vídeo. Te espero lá!

Sobre o curso Segurança de rede: proxy reverso, SSH e DNS

O curso Segurança de rede: proxy reverso, SSH e DNS possui 141 minutos de vídeos, em um total de 37 atividades. Gostou? Conheça nossos outros cursos de Segurança em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Segurança acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas