Python para Administradores de Redes Linux

Emprego prático e teórico da linguagem de programação Python na resolução de problemas e desafios da administração de redes.

Trabalhos Finais

O objetivo do trabalho final é avaliar o aprendizado dos alunos em relação ao desenvolvimento de programas em Python para a administração de redes Linux.

Os trabalhos abordam temas complementares que não puderam ser estudados em profundidade durante o curso, e envolvem a pesquisa e implementação de programas que devem ser padronizados, seguros, estáveis, com código legível, simples de se manter e estender, afinal, como são útilizados ambientes Linux e tiramos proveito de programas open-source, devemos também criar códigos que sejam úteis e de fácil entendimento para outros usuários/desenvolvedores.

Alunos

  • Criar pelo menos dois módulos plugáveis para o framework de análise de segurança em Python HnTool.
  • Eles devem ser implementados de modo a se integrarem automaticamente com o framework, adicionando os resultados de suas análises à saída da execução em modo texto e modo HTML do HnTool.
Repositório: https://github.com/labredesdeconhecimento/HnTool
  • Criar um "sensor" para monitoramento de salas de servidores, utilizando webcam.
  • O programa deve monitorar a imagem do ambiente e, ao detectar o movimento de alguma pessoa no local, deve enviar um email com a foto anexada para o administrador de redes. A sensibilidade do programa deve ser ajustada para não dar falsos positivos.
  • O administrador de redes poderá pausar o monitoramento e também obter uma foto do ambiente no momento, remotamente.
Repositório: https://github.com/labredesdeconhecimento/SEMON
  • Desenvolver um programa para execução de comandos remotos em diversos hosts simultaneamente. Útil para atualizações e instalação de pacotes nas várias máquinas de um laboratório.
  • A comunicação com os hosts remotos (IPs definidos no arquivo de configuração) deverá ser efetuada através de uma conexão SSL criptografada com autenticação.
  • Poderá ser enviado um comando individual via linha de comando ou ser informado um arquivo com uma série de comandos. O retorno dos comandos de cada host deverá ser exibido a medida que são executados.
Repositório: https://github.com/labredesdeconhecimento/gerenciadorsnmp
  • Desenvolver um programa para execução de comandos remotos em diversos hosts simultaneamente. Útil para atualizações e instalação de pacotes nas várias máquinas de um laboratório.
  • A comunicação com os hosts remotos (IPs definidos no arquivo de configuração) deverá ser efetuada através de uma conexão SSL criptografada com autenticação.
  • Poderá ser enviado um comando individual via linha de comando ou ser informado um arquivo com uma série de comandos. O retorno dos comandos de cada host deverá ser exibido a medida que são executados.
Repositório: https://github.com/labredesdeconhecimento/sslcmd
  • Desenvolver um programa do tipo daemon que interaja com um celular, monitorando o recebimento de SMS.
  • Ao receber uma mensagem de texto, ele deverá checar no arquivo de configuração se o remetente está cadastrado. Em caso afirmativo, deverá executar o comando enviado no SMS e retornar outro SMS com as informações sobre a execução do programa (em um formato minimalista, para caber em uma mensagem).
Repositório: https://github.com/labredesdeconhecimento/AdminSMS
  • Implementar uma API para automatizar tarefas no MSDN.
  • Deve ser criado um pacote pymsdn que forneça as funções de manipulação como cadastro de usuário, modificação e inserção de dados, etc.
  • Desenvolver um servidor de backup remoto. Quando executado ele checará seu arquivo de configuração e coletará os arquivos definidos que estão em máquinas remotas.
  • Os arquivos coletados serão compactados e armazenados como backup.
  • A comunicação do servidor de backup com os clientes deverá utilizar autenticação (sem intervenção do usuário) e transferência criptografada de dados.
Repositório: #
  • Implementar um monitor de DoS/DDoS em tempo real para o servidor web Apache. O programa deverá ler periodicamente os logs de acesso do servidor web, e em caso de anomalias (acessos em massa), detectar o IP ou IPs envolvidos no ataque.
  • Quando um ataque for detectado, deverá ser enviado um e-mail para o administrador de redes (informado no arquivo de configuração) avisando que um ataque DoS ou DDoS está em curso e o(s) IP(s) envolvido(s).
  • No arquivo de configuração deverá ser possível determinar, além das informações como o endereço de e-mail, se o(s) IP(s) que está(ão) realizando o atque será(ão) bloqueado(s) através de uma regra DROP no iptables.
Repositório: https://github.com/labredesdeconhecimento/DDoS-Reporter
  • Desenvolver um webservice REST que forneça informações de uso de disco, memória principal e CPU no formato JSON.
  • Implementar uma app Android que consuma este webservice e exiba as informalções na forma de gráficos.
Repositório: https://github.com/labredesdeconhecimento/WSDroid
  • Desenvolver um daemon em Python que gerencie a taxa de recebimento de emails advindos de um SMTP segundo a reputação do endereço IP remetente, obtido através do serviço senderscore.org.
  • O estouro da taxa no intervalo de 1 hora gerará o não recebimento temporário do mesmo, indicando o excesso de envios.
Repositório: https://github.com/labredesdeconhecimento/postpolicy
  • Desenvolver um programa para sincronização de diretórios remotos em máquinas Linux.
  • Será utilizado um servidor de sincronização centralizado, e cada host possuirá um cliente de sincronização, que a cada modificação no diretório informado (no arquivo de configuração) notificará o servidor, que atualizará suas informações e os diretórios dos outros clientes remotos.
Repositório: https://github.com/labredesdeconhecimento/Syncbox