Simular Disponibilidade de Serviço e Monitoramento Básico
Nesta etapa, você explorará o princípio da Disponibilidade, o terceiro componente da tríade de segurança CIA. A disponibilidade garante que sistemas e serviços estejam operacionais e acessíveis quando necessário. Você simulará um serviço web simples, aprenderá a verificar se ele está em execução, simulará uma falha de serviço e, em seguida, escreverá um script de monitoramento básico para automatizar a verificação de disponibilidade.
Primeiro, certifique-se de estar no diretório ~/project.
Usaremos o servidor web integrado do Python para simular um serviço em execução. Este comando iniciará um servidor web na porta 8000 e servirá os arquivos no diretório atual. O & no final executa o processo em segundo plano, para que você possa continuar usando seu terminal.
python3 -m http.server 8000 &
Você verá uma mensagem indicando que o processo foi iniciado, juntamente com seu ID de Processo (PID).
[1] 12345
Pressione Enter para continuar.
Seu serviço agora está em execução. Uma maneira básica de verificar se um serviço está em execução é ver se seu processo existe. Podemos usar o comando pgrep para encontrar o PID de um processo pelo nome.
pgrep -f http.server
Isso deve retornar o PID do processo do servidor, confirmando que ele está em execução na memória.
12345
No entanto, um processo em execução não garante que o serviço esteja funcionando corretamente. Uma verificação melhor é tentar se conectar a ele, assim como um usuário faria. Usaremos o comando curl para enviar uma solicitação ao nosso servidor local.
curl http://localhost:8000/confidential_data.txt
Como o serviço está disponível, ele responderá com o conteúdo do arquivo que você criou nas etapas anteriores.
Top Secret Details
This is an unauthorized modification.
Agora, vamos simular uma falha de serviço. Usaremos o comando kill para encerrar o processo do servidor web. Você precisará do PID que encontrou anteriormente.
## Substitua 12345 pelo PID real do comando pgrep
kill 12345
Após executar kill, você poderá ver uma mensagem "Terminated" (Terminado) para o trabalho em segundo plano. Agora, vamos tentar acessar o serviço novamente com curl.
curl http://localhost:8000/confidential_data.txt
Desta vez, o comando falhará porque o serviço não está mais em execução e não pode aceitar a conexão. Isso demonstra uma falta de disponibilidade.
curl: (7) Failed to connect to localhost port 8000 after 0 ms: Connection refused
Finalmente, vamos criar um script de monitoramento simples para automatizar essa verificação. Crie um novo arquivo chamado monitor.sh usando nano.
nano monitor.sh
Insira o seguinte script no editor. Este script usa curl para verificar o serviço. Se ele receber uma resposta bem-sucedida (200 OK), ele relata que o serviço está "UP" (Ativo); caso contrário, relata "DOWN" (Inativo).
#!/bin/bash
## Verifica se o serviço em localhost:8000 está respondendo
if curl -s --head http://localhost:8000 | grep "200 OK" > /dev/null; then
echo "Service Status: UP"
else
echo "Service Status: DOWN"
fi
Salve o arquivo e saia do nano pressionando Ctrl+X, depois Y e Enter.
Torne o script executável usando chmod:
chmod +x monitor.sh
Agora, execute seu script de monitoramento. Como o serviço está parado, ele deve relatar "DOWN".
./monitor.sh
Service Status: DOWN
Agora você aprendeu como iniciar um serviço, verificar sua disponibilidade, simular uma falha e criar um script básico para monitorá-lo.