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.
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.
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.
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!
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.
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.
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
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
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
<check>
Enable Secure ShellApó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!
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) | em0 | v4/DHCP4: 192.168.100.188/24 |
---|---|---|
INTRANET (Ian) | em1 | v4: 192.168.56.10/24 |
DMZ (opt1) | em2 | v4: 172.100.1.10/24 |
DMZEXT (opt2) | em3 | v4: 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
check
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á!
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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.