Boas-vindas! Sou a Camila, mas pode me chamar de Mila. Sou instrutora na Alura e vou te acompanhar neste curso de Segurança de rede: manipule logs e dashboards.
Camila é uma mulher com olhos castanho-escuros, e cabelos pretos e cacheados. Está usando uma blusa de cor preta com estampas do logo das siglas "HP" de Harry Potter. Está sentada em uma cadeira preta e ao fundo tem uma parede lisa com iluminação azul.
Neste curso continuaremos o desenvolvimento de um projeto abordando conceitos de segurança defensiva, que está dentro da grande área de cibersegurança.
Recapitulando: em empresas encontramos alguns times como Blue Team, focado em segurança defensiva, e Red Team, que pratica o ataque e visa as vulnerabilidades da aplicação. Neste curso, continuaremos focados na atuação do Blue Team.
Continuaremos no mesmo projeto do curso anterior. Faremos uma nova configuração voltada para segurança: criação de um certificado SSL autoassinado, ele vai criptografar todos os dados que nosso usuário colocar na nossa aplicação.
Além disso, trabalharemos com monitoramento. Para facilitar o monitoramento da nossa infraestrutura trabalharemos com filtros de logs, vamos melhorar as mensagens que víamos listadas no Graylog; e também vamos trabalhar com dashboards no Graylog.
Vamos também utilizar uma ferramenta chamada Wireshark para fazer análise de tráfego.
Para você tirar maior proveito desse curso, é interessante que você tenha conhecimentos de redes e tenha feito os dois cursos anteriores a esse, daremos continuidade a um projeto que começamos nesses cursos.
Neste curso nós vamos virtualizar o processo, teremos todas as máquinas sendo executadas na VirtualBox. Vamos executar o WAF, o firewall, o Graylog e DVWA. Em seguida, colocaremos um certificado SSL no site.lab, o DVWA.
Vamos configurar o acesso à nossa aplicação na web via HTTPS e vamos emitir um certificado que vai criptografar o que inserirmos nele. Também veremos se essa criptografia está funcionando, por meio de análise de tráfego com o Wireshark.
Vamos instalar o Wireshark na nossa máquina. Visualizaremos as informações de pacotes do nosso sistema. Quando tentamos ver um pacote específico o texto aparece criptografado porque o certificado SSL está criptografando tudo no nosso sistema. Mas também veremos como fica sem o certificado SSL.
Além disso, para facilitar o monitoramento, vamos usar o Graylog. Faremos algumas dashboards, selecionaremos os top 10 IPs de destino, de origem, saber qual endereço IP mais acessa o nosso sistema e também selecionaremos um top 10 possíveis atacantes, listaremos o endereço IP de quem mais está tentando fazer um ataque ao nosso sistema.
Separe a sua água para você aproveitar muito bem esse curso e bora estudar!
Recapitulando, no curso anterior fizemos mais algumas configurações no sistema de redes virtualizado.
Nesse sistema temos o firewall, usamos o pfSense. 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, é onde temos a nossa aplicação DVWA que subimos no curso anterior. E temos a internet representada, que é onde estarão os usuários que vão acessar a nossa aplicação.
Tudo por intermédio do WAF que está na DMZ Externa, que possui algumas regras de segurança como o ModSecurity, que pode parar um ataque de SQL Injection, por exemplo.
Por meio dessas configurações, já conseguimos acessar a aplicação no navegador usando o endereço http://site.lab/ e abre automaticamente na página de login (http://site.lab/login.php) da nossa aplicação DVWA.
Note que usando o navegador Chrome para entrar neste endereço aparece à esquerda da barra de endereços a mensagem "Não seguro" ao lado do ícone de uma placa indicando perigo.
Ao clicar nessa mensagem "Não seguro" abre uma janela de aviso:
Sua conexão com esse site não é segura. É recomendado não fornecer informações confidenciais a esse site (por exemplo, senhas ou cartões de crédito) porque elas podem ser roubadas por invasores. Saiba mais...
Isso acontece porque ainda não colocamos uma certificação na nossa aplicação.
Um exemplo de aplicação segura é o site que estou utilizando para exibir os slides desse curso, o Google Docs. Antes da URL aparece o ícone de um cadeado à esquerda da barra de endereços do navegador, ao clicarmos nesse cadeado ele informa: "a conexão é segura" e, ao clicarmos nesta frase, veremos uma breve explicação e abaixo teremos um campo informando que o certificado é válido.
Vamos clicar neste campo onde está escrito "O certificado é válido". Abrirá uma janela contendo informações de para quem o certificado foi emitido e porque ele foi emitido. Foi emitido pelo próprio Google, pela GTS, uma seção do Google que emite certificados para deixar a aplicação segura. Ele informa a data de emissão e a data em que ele expira, está sempre sendo atualizado. E , ao final, exibe a assinatura digital desse certificado.
Certificador do certificado *.google.com
Emitido para
Nome comum (CN) *.google.com O (Organização) <Não faz parte do certificado> Unidade organizacional (OU) <Não faz parte do certificado>
Emitido por
Nome comum (CN) GTS CA 1C3 O (Organização) Google Trust Services LLC Unidade organizacional (OU) <Não faz parte do certificado>
Período de validade
Emitido em segunda-feira, 12 de setembro de 2022 05:17:04 Expira em segunda-feira, 5 de dezembro de 2022 05:16:59
Assinaturas Digitais
Assinatura digital SHA-256 AB EF 3C EE CF AE 60 B0 F5 DC 15 B1 AE C7 08 B8 52 C4 BC 58 3C 39 29 7F 71 1B 0E A4 23 CE AB 85
Assinatura digital SHA-1 B4 B4 14 59 B2 62 3D 11 1E 57 51 E0 86 6F 98 1C 98 91 C2 B1
Esse certificado se chama SSL (Secure Sockets Layer). Mas, afinal, o que ele faz? Como ele deixa nossas informações confidenciais?
Imagine o seguinte diálogo: de um lado temos o usuário que está acessando a nossa aplicação na máquina dele e do outro lado está o servidor que armazena a aplicação.
A primeira coisa que a máquina do usuário faz é uma conexão para acessar nosso aplicativo. Então, o usuário pergunta e o servidor responde:
Usuário: Sua conexão é segura?
Servidor: Claro, estou enviando o certificado agora!
Nesse caso o servidor respondeu positivamente, deve enviar um certificado SSL. Em seguida, o usuário continua o diálogo:
Usuário: Jóia! Pronto para estabelecer uma conexão segura?
Servidor: Só 1 minuto, vou criptografar o caminho agora e liberar quando estiver seguro!
Essa é a função do certificado, criptografar todo o caminho da conexão. Os dados que o usuário colocar, será criptografado se o nosso servidor tiver um certificado. Atualmente estamos acessando o nosso endereço com o http://
, quando ele estiver certificado acessaremos com https://
, que é uma indicação de que o servidor tem certificado.
Devemos usar o certificado SSL quando o usuário precisa fazer alguma autenticação, por exemplo, colocar uma senha.
O certificado SSL também garante a confiabilidade da nossa aplicação. Não passa uma boa impressão quando o usuário entra no nosso site e vê que ele não é seguro, o próprio navegador vai informar que não tem esse certificado.
Além disso, ao desenvolvermos aplicações que possuem transação de compras com cartão de crédito, por exemplo, devem estar de acordo com alguns padrões como o PCI (Payment Card Industry).
Esses são alguns exemplos. Existem diferentes tipos de SSL, alguns mais seguros e outros não. A maioria deles são pagos, mas em breve veremos um tipo de SSL gratuito que podemos usar na nossa aplicação.
Bons estudos e até o próximo vídeo!
Agora veremos algumas formas de colocar um certificado SSL na nossa aplicação.
Existem diversas organizações pagas que vão podem credenciar esse certificado e também existe a opção de fazermos um certificado autoassinado, ou seja, nós mesmos assinaremos o certificado. Nesse caso não é preciso pagar para usá-lo na nossa aplicação.
Existem alguns tutorias na internet com instruções de como criar um certificado autoassinado, veremos o tutorial do site Linuxize que mostra como criar um certificado SSL autoassinado.
Primeiro, precisaremos instalar um openssl
na nossa máquina usando o seguinte comando (para Ubuntu e Debian):
sudo apt install openssl
Ao instalar essa ferramenta conseguimos autoassinar um certificado e conseguiremos acessar a nossa aplicação via HTTPS. Mas neste caso, como é autoassinado, a entregadora ainda não vai reconhecer a organização, que no caso somos nós mesmo, vai aparecer a mensagem. Mas a prática é válida para acessarmos nossa aplicação via HTTPS.
Para instalar o openssl
vamos acessar a nossa máquina via SSH, remotamente no nosso CMD.
Recapitulando, para acessar o CMD devemos fazer o comando ssh root@192.168.56.10
, este é o endereço do nosso firewall pfSense, e por meio dele conseguiremos acessar qualquer outra máquina do nosso sistema.
Em seguida, selecionamos a opção 8) Shell
para termos acesso ao Shell do firewall.
Agora, em qual máquina devemos colocar o certificado SSL? Qual conexão queremos criptografar?
A primeira conexão que o usuário acessa para entrar na nossa aplicação é o WAF, então é essa conexão que devemos criptografar para evitar que os dados do usuário apareçam para alguém que está tentando interceptar a conexão.
Para isso, vamos acessar nossa máquina WAF:
ssh user@172.100.2.100
Em seguida, colocaremos a senha: qwerty
. E acessaremos como sudo com o comando su -
e novamente a senha qwerty
.
Agora que temos acesso ao Shell da nossa aplicação vamos executar os comandos do tutorial do site Linuxize para criação de certificado SSL autoassinado:
sudo apt install openssl
Na minha máquina ele não reconheceu o sudo porque estou como root, então vou colocar apenas apt install openssl
. Após pressionarmos "Enter" ele fará a instalação.
Para criar um certificado SSL autoassinado, usaremos o comando openssl reql
. Primeiro ele chama o openssl
, faz uma requisição e insere uma chave chamada rsa:4096
. E esse código insere outras informações da chave, como se fossem caminhos do diretório dela. E depois ele informa um -days 3650
, que é a quantidade de dias em que esse certificado permanecerá válido.
Em seguida, ele carrega alguns módulos com o comando -nodes
e indica um arquivo no qual ele vai salvar as chaves, -out example.crt
. Depois, ele vai salvar a saída da chave no arquivo example.key
. No tutorial foi usado "example", mas podemos colocar o nome que preferirmos.
openssl req -newkey rsa:4096 \
-x509 \
-sha256 \
-days 3650 \
-nodes \
-out example.crt \
-keyout example.key
Mas onde devemos fazer esse comando? Em qual diretório ele vai salvar todas essas chaves?
No nosso WAF temos aquele servidor Nginx, que tem os arquivos de configuração, vamos colocar tudo na pasta nginx
. Com este comando vamos para a pasta nginx:
cd /etc/nginx/
Primeiro, vamos criar a pasta onde colocaremos as chaves. Usaremos o mkdir
para criar um diretório intitulado "ssl":
mkdir ssl
E vamos entrar nesta pasta "ssl" recém-criada:
cd ssl
Agora sim, vamos colar o comando que vimos no tutorial do Linuxize:
openssl req -newkey rsa:4096 \
-x509 \
-sha256 \
-days 3650 \
-nodes \
-out example.crt \
-keyout example.key
Ao pressionarmos "Enter" ele começará a gerar, vai pedir algumas informações e colocaremos o seguinte:
Após preenchermos esses campos, aparentemente está criado o nosso certificado SSL autoassinado.
Vamos para o navegador, testar se conseguimos acessas a aplicação via HTTPS. Na barra de endereço colocaremos o endereço https://site.lab.
Mas o navegador informa que "Não é possível acessar esse site". No próximo vídeo veremos o que mais devemos fazer para conseguirmos acessar a página da nossa aplicação com o HTTPS.
O curso Segurança de rede: manipule logs e dashboards possui 137 minutos de vídeos, em um total de 44 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.