Prévia do material em texto
01/08/2021 AVA UNINOVE https://aapa.uninove.br/seu/AAPA/topico/container_impressao.php 1/11 Logs e monitoramento ineficientes MOSTRAR AS FALHAS DE SEGURANÇA EM RELAÇÃO AO MONITORAMENTO DE SISTEMAS E AUSÊNCIA DE LOGS DE TRANSAÇÕES. AUTOR(A): PROF. EDSON MELO DE SOUZA 1. Introdução Neste tópico será discutido aspectos sobre problemas de falta de geração de Logs e monitoramento ineficiente de servidores e sistemas. 2. Mecanismos de Logs Chegar a uma definição do que significa um Log não é uma tarefa simples, porque a maioria das pessoas - usuários de sistemas - não fazem a mínima ideia do que se trata e, portanto, se torna algo obscuro. 01/08/2021 AVA UNINOVE https://aapa.uninove.br/seu/AAPA/topico/container_impressao.php 2/11 Digamos que, de forma geral, o Log é um arquivo que guarda dados relacionados a quaisquer operações relevantes que ocorram em um sistema computacional. O registro de um Log é de fundamental importância para qualquer sistema, na medida em que se torna um meio que facilita a procura de erros, facilita o desenvolvimento de software e permite que sistemas sejam auditados. Imagine o seguinte cenário hipotético onde existem diversos operadores de crédito que liberam diariamente empréstimos consignados. Além dos dados da transação, deve ser registrado, em um arquivo ou sistema separado da aplicação, dados sobre: qual usuário fez a transação, em qual horário, houve sucesso ou fracasso na gravação do banco de dados, quem fez a liberação do crédito, entre outros. Esses dados serão gravados nos arquivo de Log, pois para cada tipo de necessidade, vários arquivo diferentes devem ser criados e alimentados. Um outro exemplo é a realização de Backups, onde devem ser registrados todos os dados relacionados a horário, quem o realizou, qual a quantidade de dados gravados, verificação de integridade, entre outros. Esse procedimento é necessário, pois caso haja algum problema, este também deverá ser gravado, fornecendo condições de ser realizada uma análise nos dados. Em sistemas transacionais que exigem Controle de Acesso, é obrigatória a utilização de Logs, de forma que o registro de dados como número de tentativas sem sucesso, qual senha foi utilizada, qual o nome do usuário, entre outras. Esse tipo de registro permite que o acesso ao sistema seja constantemente monitorado e, caso ocorra algum problema no futuro, há condições de rastrear o problema. Além disso, o monitoramento constante dos Logs permite a correção de problemas de maneira muito rápida. A imagem a seguir mostra um fragmento de um Log do sistema operacional Windows. 01/08/2021 AVA UNINOVE https://aapa.uninove.br/seu/AAPA/topico/container_impressao.php 3/11 Legenda: TELA COM OS DADOS DE UM LOG DO DNS DO WINDOWS 3. Proteção com Logs e Monitoramento Quando falamos de aplicações web é importante você ter em mente que o ambiente é agressivo e qualquer tipo de ataque, por mais simples que seja, pode causar severos prejuízos. Portanto, utilizar os Logs de forma correta, aplicando Criptografia, Serialização e Monitoramento são maneiras de manter uma aplicação segura. A seguir é mostrado no vídeo um pequeno sistema de registro de Logs que “guarda informações” de Controle de Acesso, permitindo realizar algumas análises nos registros gravados. O vídeo também mostra como realizar o monitoramento do sistema em busca de anormalidades no sistema operacional, neste caso Windows. No exemplo anterior você pode conferir com implementar uma rotina simples para a criação de Logs de Acesso. A seguir é apresentado o código fonte utilizado no vídeo. 01/08/2021 AVA UNINOVE https://aapa.uninove.br/seu/AAPA/topico/container_impressao.php 4/11 1. Arquivo: login.php 2. 3. <?php 4. 5. # dados para acesso ao banco de dados 6. define('HOSTNAME', 'localhost'); 7. define('DB_TYPE', 'mysql'); 8. define('DB_NAME', 'teste_tseg'); 9. define('DB_USER', 'root'); 10. define('DB_PASSWORD', ''); 11. define('DB_CHARSET', 'utf8'); 12. 13. # caso ocorram erros, serão mostrados no navegador 14. ini_set('display_errors', 1); 15. ini_set('display_startup_erros', 1); 16. error_reporting(E_ALL); 17. 18. # abre um bloco de tratamento de erros para conexão com o banco de dados 19. try { 20. # cria uma nova conexão com a biblioteca PDO e configura o ambiente 21. $PDO = new PDO( 22. DB_TYPE . ":host=" . 23. HOSTNAME . ";dbname=" . 24. DB_NAME, DB_USER, DB_PASSWORD 25. ); 26. $PDO->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); 27. $PDO->setAttribute(\PDO::ATTR_PERSISTENT, FALSE); 28. $PDO->setAttribute(\PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf-8"); 29. $PDO->exec("set names utf8"); 30. 31. # recupera os valores enviados pelo formulário com filtragem 32. $usuario = filter_input(INPUT_POST, 'usuario', FILTER_SANITIZE_STRING); 33. $senha = filter_input(INPUT_POST, 'senha', FILTER_SANITIZE_STRING); 34. 35. # cria astring SQL 36. $sql = "SELECT * FROM usuarios WHERE " 37. . "usuario = :usuario AND senha = :senha LIMIT 1"; 38. 39. # prepara a consulta 40. $sth = $PDO->prepare($sql); 01/08/2021 AVA UNINOVE https://aapa.uninove.br/seu/AAPA/topico/container_impressao.php 5/11 41. 42. # atribui os valores recuperados para as variáveis internas na instrução SQL 43. $sth->bindValue(":usuario", $usuario); 44. $sth->bindValue(":senha", $senha); 45. $sth->execute(); 46. 47. # executa a consulta 48. $result = $sth->fetchAll(); 49. 50. # se retornou mais de um registro, alguma coisa está errada 51. # ou então, não houve sucesso no login 52. if ($sth->RowCount() != 1) { 53. 54. # captura o ip do visitante e gravar no banco juntamente com os demais da 55. # salva o IP do visitante (só não funciona em localhost) 56. $ip = $_SERVER['REMOTE_ADDR']; 57. 58. # salva a data e hora atual (formato MySQL) 59. $data_hora = date('Y-m-d H:i:s'); 60. 61. if(empty($usuario)){ 62. $usuario = "vazio"; 63. } 64. if(empty($senha)){ 65. $senha = "vazio"; 66. } 67. 68. # string SQL para gravar no banco 69. $sql = "INSERT INTO log_acesso (ip, data_hora, usuario, senha, descricao) 70. . "(:ip, :data_hora, :usuario, :senha, :descricao)"; 71. $sth = $PDO->prepare($sql); 72. $sth->bindValue(":ip", $ip); 73. $sth->bindValue(":data_hora", $data_hora); 74. $sth->bindValue(":usuario", $usuario); 75. $sth->bindValue(":senha", $senha); 76. $sth->bindValue(":descricao", "Tentativa de Login sem Sucesso"); 77. $sth->execute(); 78. 79. # implementar a lógica para guardar o IP e o número de tentativas 80. print 'Acesso Negado!<br><br>'; 81. print '<a href="index.php"><<< Voltar</a>'; 01/08/2021 AVA UNINOVE https://aapa.uninove.br/seu/AAPA/topico/container_impressao.php 6/11 SAIBA MAIS! Ferramentas para Gerenciamento de Logs: https://blog.mandic.com.br/artigos/as-5-ferramentas- mais-populares-para-gerenciamento-de-log/ (https://blog.mandic.com.br/artigos/as-5- ferramentas-mais-populares-para-gerenciamento-de-log/) Análise e Interpretação de Logs: https://www.cert.br/docs/palestras/nbso-gter15-tutorial2003.pdf (https://www.cert.br/docs/palestras/nbso-gter15-tutorial2003.pdf) A seguir você pode conferir as recomendações OWASP para Logs e Monitoramento Ineficientes. Agentes de Ameaça Falhas de Segurança Impacto Aplicação Específica Exploraç ão: 2 Prevalência: 3 Detecção: 1 Técnico: 2 Comercial 82. 83. } else { 84. # mostra o registro 85. print 'Usuário: ' . $result[0]['usuario'] . '<br>'; 86. print 'Nome...: ' . $result[0]['nome'] . '<br>'; 87. } 88. } catch (PDOException $ex) { 89. # caso ocorra um erro na conexão, mostrará a mensagemdo erro 90. echo $ex->getMessage(); 91. } https://blog.mandic.com.br/artigos/as-5-ferramentas-mais-populares-para-gerenciamento-de-log/ https://www.cert.br/docs/palestras/nbso-gter15-tutorial2003.pdf 01/08/2021 AVA UNINOVE https://aapa.uninove.br/seu/AAPA/topico/container_impressao.php 7/11 Agentes de Ameaça Falhas de Segurança Impacto A exploração de registros e monitoramento insuficientes é o alicerce de quase todos os incidentes importantes. Os atacantes confiam na falta de monitoramento e resposta pontual para alcançar seus objetivos sem serem detectados. Esse problema está incluído no Top 10 (https://owasp.blogspot.com/2017/08/owas p-top-10-2017-project-update.html) com base em uma pesquisa do setor. Uma estratégia para determinar se você tem monitoramento suficiente é examinar os logs após o teste de penetração. As ações dos testadores devem ser registradas suficientemente para entender quais danos elas podem ter infligido. A maioria dos ataques bem- sucedidos começa com a análise de vulnerabilidade. Permitir que essas investigações continuem pode aumentar a probabilidade de exploração bem-sucedida para quase 100%. Em 2016, a identificação de uma violação levou uma média de 191 dias (https://www- 01.ibm.com/common/ssi/cgi- bin/ssialias? htmlfid=SEL03130WWEN&) - tempo suficiente para que os danos causasse prejuízos. Logging insuficiente, detecção, monitoramento e resposta ativa ocorrem a qualquer momento: De acordo com o risco dos dados armazenados ou processados pelo aplicativo: Eventos auditáveis, como logins, logins com falha e transações de alto valor não são registrados. Certifique-se de que todas as falhas de login, controle de acesso e de validaçã entrada do lado do servidor possam ser registradas com contexto de usuário sufic para identificar contas suspeitas ou mal-intencionadas e mantidas por tempo sufic para permitir análise forense atrasada. Avisos e erros geram mensagens de log inadequadas ou pouco claras. Logs de aplicativos e APIs não são monitorados para atividades suspeitas. Assegure-se de que os logs sejam gerados em um formato que possa ser facilm consumido por uma solução centralizada de gerenciamento de logs. https://owasp.blogspot.com/2017/08/owasp-top-10-2017-project-update.html https://www-01.ibm.com/common/ssi/cgi-bin/ssialias?htmlfid=SEL03130WWEN& 01/08/2021 AVA UNINOVE https://aapa.uninove.br/seu/AAPA/topico/container_impressao.php 8/11 Logging insuficiente, detecção, monitoramento e resposta ativa ocorrem a qualquer momento: De acordo com o risco dos dados armazenados ou processados pelo aplicativo: Os logs são armazenados apenas localmente e os limites de alerta apropriados e processos de escalonamento de resposta não estão em vigor ou efetivos. Assegure que as transações de alto valor tenham uma trilha de auditoria com cont de integridade para impedir adulterações ou exclusões, como tabelas de banco de d somente de anexação ou semelhantes. O aplicativo não consegue detectar, escalar ou alertar para ataques ativos em tempo real ou quase em tempo real. Você está vulnerável a vazamentos de informações se tornar os eventos de registro e alerta visíveis para um usuário ou um invasor (consulte A3: 2017 Sensitive Data Exposure (https://www.owasp.org/index.php/Top_ 10-2017_A3-Sensitive_Data_Exposure)) Estabeleça monitoramento e alertas eficazes, de modo que atividades suspeitas s detectadas e respondidas em tempo hábil. Estabelecer ou adotar uma resposta a incidentes e um plano de recuperação, co NIST 800-61 rev 2 (https://csrc.nist.gov/publications/detail/sp/800-61/rev-2/fina posterior. Existem estruturas de proteção de aplicativos comerciais e de código aberto, OWASP AppSensor (https://www.owasp.org/index.php/OWASP_AppSensor_Pro firewalls de aplicativos da Web, como o ModSec (https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_P ct), com o Conjunto de Regras Principais do OWASP ModSecurity e softwar correlação de logs com painéis e alertas personalizados. Traduzido de forma livre por Edson Melo de Souza. Original: https://www.owasp.org/index.php/Top_10-2017_A10-Insufficient_Logging%26Monitoring (https://www.owasp.org/index.php/Top_10-2017_A10-Insufficient_Logging%26Monitoring) Resumo Neste tópico você aprendeu como realizar a criação de Logs de Monitoramento e como realizar o Monitoramento de forma eficiente. Também aprendeu como observar algumas leituras do sistema operacional para melhorar a segurança dos dados. Caso tenha ficado alguma dúvida, releia o tópico e consulte os links de apoio. Se ainda persistir alguma dúvida, poste-a no fórum para que os colegas e o tutor possa lhe ajudar. Bons estudos! https://www.owasp.org/index.php/Top_10-2017_A3-Sensitive_Data_Exposure https://csrc.nist.gov/publications/detail/sp/800-61/rev-2/final https://www.owasp.org/index.php/OWASP_AppSensor_Project https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project https://www.owasp.org/index.php/Top_10-2017_A10-Insufficient_Logging%26Monitoring 01/08/2021 AVA UNINOVE https://aapa.uninove.br/seu/AAPA/topico/container_impressao.php 9/11 ATIVIDADE FINAL Uma das vantagens em utilizar um sistema de Logs é: A. Permitir que sejam registrados eventos importantes do sistema. B. Deixar o sistema mais robusto e com menor possibilidade de falhas. C. Auxiliar no treinamento de funcionários. D. Deixa o sistema mais profissional. Um Log pode ser definido como: A. Um arquivo que guarda dados relacionados a quaisquer operações relevantes que ocorram em um sistema computacional. B. Um sistema de monitoramento computacional. C. Uma tecnologia voltada para aplicações web. D. Um sistema que permite evitar invasões. O registro de dados de acesso em Logs é obrigatório em: A. Controles de Acesso. B. Sistemas Windows. C. Sistemas Linux. D. Acessos permitidos para usuários cadastrados. REFERÊNCIA ASSUNÇÃO, Marcos Flávio Araújo. ANÁLISE DE EFICIÊNCIA NA DETECÇÃO DE VULNERABILIDADES EM AMBIENTES WEB COM O USO DE FERRAMENTAS GRATUITAS. Projetos e Dissertações em Sistemas de Informação e Gestão do Conhecimento, v. 4, n. 1, 2015. DE HOLANDA, Maristela Terto; FERNANDES, Jorge Henrique Cabral. Segurança no desenvolvimento de aplicações. Gestão da Segurança da Informação e Comunicações-CEGSIC2009-2011, 2009. FORBELLONE, André Luiz Villar; EBERSPÄCHER, Henri Frederico. Lógica de programação: a construção de algoritmos e estruturas de dados. São Paulo: Makron Books, 1993. MARINHO, Carlos et al. Experiências no Uso da Metodologia Coding Dojo nas Disciplinas Básicas de Programação de Computadores em um Curso Interdisciplinar do Ensino Superior. In: Anais dos Workshops do Congresso Brasileiro de Informática na Educação. 2016. p. 1097. MOURÃO, Andreza. Uma proposta da eficiência do uso da Metodologia Ativa Baseada em Problemas, utilizando Dojo de Programação, aplicada na disciplina de Lógica de Programação. In: Anais do Workshop de Informática na Escola. 2017. p. 667. 01/08/2021 AVA UNINOVE https://aapa.uninove.br/seu/AAPA/topico/container_impressao.php 10/11 OWASP. Open Web Application Security Project. Disponível em: <https://www.owasp.org/index.php/About_The_Open_Web_Application_Security_Project (https://www.owasp.org/index.php/About_The_Open_Web_Application_Security_Project)>. Acesso em: 12 out. 2018. OWASP. Top 10 Most Critical Web Application Security Risks. Disponível em: <https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project (https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project)>. Acesso em: 12 out. 2018. PRESSMAN, Roger; MAXIM, Bruce. Engenharia de Software-8ª Edição. McGraw Hill Brasil, 2016. SICA, Carlos; REAL, Petter. Programação Segura utilizando PHP. São Paulo: STALLINGS, William. Criptografia e segurança em redes, v. 4, 2007. SOMMERVILLE, Ian; ARAKAKI, Reginaldo; MELNIKOFF, Selma Shin Shimizu. Engenharia de software. Pearson Prentice Hall,2008. VIANA, Sidney et al. SEGURANÇA NO DESENVOLVIMENTO DE APLICAÇÕES WEB COM A QUALIDADE DOS DADOS. Revista de Sistemas e Computação-RSC, v. 3, n. 2, 2013. https://www.owasp.org/index.php/About_The_Open_Web_Application_Security_Project https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project 01/08/2021 AVA UNINOVE https://aapa.uninove.br/seu/AAPA/topico/container_impressao.php 11/11