Projeto Integrador III Tema: Planejamento de Segurança da Informação Disciplina: Serviços IP . Prof. Dinaílton Serviços IP's: ● Levantamento. ● Descrição. ● Recomendações para segurança nos Serviços IP. Levantamento: A disciplina “Serviços IP” por meio de experimentos em uma rede de computadores ofereceu subsídios para o conhecimento, configuração e controle de serviços IP inclusive remotamente. Os protocolos de serviços IP's estão na camada de aplicação e os abordados no semestre foram: HTTP → Apache (logs webalizer)→ proxy (conf. squid - logs com Sarg; SquidGuard) SSH → protocolo de login remoto NFS → acesso a arquivos remotos por meio da rede SMTP → protocolo que gerencia envio de mensagens através de correio eletrônico DHCP → protocolo de configuração dinâmica em redes SMB → protocolo de compartilhamento de arquivos e impressoras de rede. As vulnerabilidades surgem de erros em aplicativos de software ou de ativos malconfigurados; eles são imperfeições inerentes do software ou más configurações de sistema permitindo que código malicioso comprometa o sistema.Se exploradas, as vulnerabilidades podem causar impacto sobre as organizações em miríades de modos – desde afetar a continuidade dos negócios até influenciar a confiança dos clientes. SSH (Secure Shell) Descrição: É uma interface de comando baseado em Unix e protocolo de segurança para obter acesso a um computador remoto, bastante flexível em relação a algoritmos usados na conexão que são negociados entre cliente e servidor. Versão mais recente SSH2 (IETF). O SSH usa criptografia de chave pública RSA tanto para conexão e autenticação. São usados algoritmos de criptografia Blowfish, DES e IDEA (padrão). Recomendações de segurança: ● ● ● ● ● ● ● ● ● ● ● Escolher uma senha forte; Instalar o DenyHosts para bloqueio automático de intrusos; Modificar a porta padrão; Desabilitar protocolo inseguro; Desabilitar login como root; Reduzir o número da conexões autenticadas; Reduzir o tempo de espera para login; Autorizar somente específicos usuários e/ou grupos; Autorizar conexões de um único IP; Somente autorizar usuários com chaves, proibir o uso de senhas; Ligar o SSH a uma interface de rede específica. Referências SECURE SHELL (SSH). Disponível em: < http://searchsecurity.techtarget.com/definition/Secure-Shell >. Acesso em: 28/05/2015. SSH Completo . Disponível em: <www.vivaolinux.com.br>. Acesso em: 26/05/2015. HTTP (Hypertext Transfer Protocol) Descrição: É um protocolo de comunicação para a troca ou transferência de hipertexto, base para comunicação de dados da World Wide Web. O conceito básico é o seguinte: as páginas web se encontram em um servidor web, onde podem estar várias outras páginas. O cliente ou usuário acessa essa página através de um navegador que interpreta o código HTML e constrói a página a ser visualizada por ele. O cliente faz uma requisição de uma página ao servidor através do protocolo HTTP e o servidor responde ao cliente com a página solicitada. Um navegador é um programa que pode exibir uma página web, localizando a página por meio da URL (identificadores universais da página) que são como ponteiros que apontam para um determinado local (página da web). Segundo (TANEMBAUM, 2003) quando um usuário clica em um Hyperlink, o navegador executa uma série de etapas realizadas em sequência, para buscar a página indicada pelo Hyperlink. A sequência de passos que o navegador realiza é a seguinte: 1. O navegador determina o URL (verificando o que foi selecionado). 2. O navegador pergunta ao DNS qual e o endereço IP de www.unematcolider.org . 3. O DNS responde com 200.140.76.75. 4. O navegador estabelece uma conexão TCP com a porta 80 em 20.140.76.75. 5. Em seguida, o navegador envia um comando solicitando o arquivo /site/. 6. O servidor www.unematcolider.org envia o arquivo /site/. 7. A conexão TCP e encerrada 8. O navegador exibe todo o texto de /site/ . 9. O navegador busca e exibe todas as imagens que o arquivo contém. As mensagens de requisição e resposta do protocolo HTTP seguem um padrão (GET HEAD e POST), uma requisição e constituída de uma linha informando o método a ser executado em seguida de um cabeçalho que pode ter mais de uma linha e por último o corpo da mensagem caso seja necessário. Segundo (TANEMBAUM, 2003) o método GET é uma solicitação ao servidor de envio de página ou objeto exemplo: GET /index.html HTTP/1.1//tipo do método, arquivo solicitado e modelo HTTP Host: www.unemat.br //endereço do host, onde está hospedado o objeto Connection: close //tipo de conexão não persistente Useragent: Mozilla/4.0 //browser utilizado Acceptlanguage: fr //linguagem solicitada A resposta do servidor deve ser: HTTP/1.1 200 OK //estado Ok enviando o objeto Connection: close //conexão não persistente Date: Mon, 12 Dec 2005 04:15:03 GMT //Data de acesso ao objeto Server: Apache/1.3.0 (Unix) //tipo de servidor web LastModified: Sun. 5 May 2005 09:25:23 GMT//data da última alteração ContentLength: 6821 //tamanho do arquivo ContentType: text/html //tipo de arquivo A relação dos métodos usados: GET: Método que solicita algum recurso ou objeto ao servidor HEAD: Solicita informações de um determinado objeto sem que esse seja enviado ao cliente apenas para testa a validade do último acesso. POST: Método usado para envio de arquivo dados ou formulário HTML ao servidor. OPTIONS: Por meio desse método o cliente obtém as propriedades do servidor. DELETE: Informa por meio do URL o objeto a ser deletado. TRACE: Para enviar mensagens do tipo loopback para teste. PUT: Aceita criar ou modificar algum objeto do servidor. CONNECT: Comunicar com servidores Proxy. SQUID Conforme Silva (2015), é um programa proxy HTTP que faz cache, pois armazena os dados visitados, faz filtragem mas não pode ser considerado como um sistema firewall. Seu benefício é evidente quando o mesmo dado é requisitado várias vezes, pois armazena uma cópia num cache de disco local. Vantagens: ● É suportado em vários sistemas operacionais; ● Diminuição do uso de largura de banda; ● Rapidez de carregamento de páginas guardadas na cache; ● Filtragem de conteúdo usando o SquidGuard; ● Possibilidade de verificar a utilização da rede através dos geradores de relatórios (SARG); ● Autenticação de usuários; ● Controle de acesso à internet centralizado. Desvantagens: ● Consome bastante recursos; ● Demora no carregamento de páginas que não estejam guardadas no cache; ● Configura complexa; ● Otimização difícil. SARG e Webalizer: Ferramenta para administradores obter maiores informações sobre como os usuários estão acessando a rede. É um interpretador de logos para o Squid, assim como o Webalizer é para o Apache. Sempre que executado, ele cria um conjunto de páginas, divididas por dia, com uma lista de todas as páginas que foram acessadas e a partir de que máquina da rede veio cada acesso. Recomendações de Segurança: De forma semelhante ao sistema operacional a configuração de um servidor HTTP (apache ou IIS) pode ser ajustada em termos de segurança limitando a quantidade de informações exibidas sobre o servidor. ● Utilização do protocolo HTTPS Os acessos a páginas da internet geralmente são realizados pelo protocolo HTTP, onde as informações trafegam em texto claro, sem o uso de criptografia e podem ser interceptados, coletados, modificados ou retransmitidos. O HTTP não é indicado para transmissões que envolvem informações sigilosas, como senhas, números de cartão de crédito e dados bancários, e deve ser substituído pelo HTTPS, que oferece conexões seguras, que utiliza certificados digitais para assegurar a identidade, tanto só site d destino como a sua própria. Também utiliza métodos criptográficos e outros protocolos, como o SSL (Secure Sockets Layer) e o TLS (Transport Layer Security), para assegurar a confidencialidade e a integridade das informações. ● Remover funcionalidades desnecessárias Em sua instalação, servidores HTTP irão habilitar uma série de funcionalidades e configurações nem sempre necessárias: módulos para autenticação, redirecionamentos, páginas pessoais de usuários. Uma falha de segurança em um módulo ou configuração desnecessária pode por em risco a segurança de todo o servidor. ● Configurar corretamente o LOG O registro de funcionamento (acessos), bem como dos erros ocorridos em um servidor HTTP é de extrema importância. Um LOG bem configurado armazena o máximo de informações, em arquivos independentes para cada VirtualHost existente no servidor. ● Mitigando Ataques de HPP (Parameter Pollution) ● Em linhas gerais, os ataques baseados em HPP são falhas no processo de validação de entradas de dados (como os * Injection), tendo o processo de mitigação que passar pela análise dos delimitadores de “query strings”; ● Todas as tentativas de mitigação passam pelo conhecimento de como cada aplicação trata as “query strings”; ● Escolha (e conhecimento) da tecnologia utilizada; ● Validação de dados (análise de entradas “estranhas”); ● Filtragem (nível de aplicação) = WAF (Firewalls de Aplicações Web); ● Atualizar serviços e aplicar patches sempre é uma das ações obrigatórias. Referências HTTP . Disponível em: <http://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol>. Acesso em: 26/05/2015. CARTILHA DE SEGURANÇA PARA INTERNET . Disponível em: < http://cartilha.cert.br/ >. Acesso em: 26/05/2015. GALVÃO, Ricardo Kléber M. Entendendo e Mitigando Ataques Baseados em HTTP. Rio Grando Norte : IFECTRN, 2009. TANEMBAUM, Andrew S. Redes de Computadores, 7a Edicao, Editora Campus, Rio de Janeiro – RJ, 2003. TEIXEIRA, Mário A. M., Suporte a serviços diferenciados em servidores web: modelos e algoritmos . Disponivel em: < http://www.deinf.ufma.br/~mario/producao/tese_swds.pdf >. Acesso em: 29/05/2015. SILVA, Dinailton José da. Proxy – Squid. Laboratório de Administração de Redes. 12/02/2015. NFS Descrição: Segundo informação da Red Hat, computadores mostram seu poder quando estão em rede, compartilhando arquivos. Os arquivos centralizados em rede, podem fornecer acesso aos mesmos por um número ilimitado de usuários em qualquer lugar do mundo como se fossem locais. NFS é o núcleo do compartilhamento de arquivos e diretórios do sistema Linux, tornando o trabalho sem limites físicos, mais fácil e produtivo. No entanto, exige-se uma configuração adequada para mitigar os riscos de usá-lo. Figura 1: Representação de compartilhamento de estrutura de pasta de arquivos NFS opera usando o comum modelo cliente-servidor . Servidores NFS pode exportar sistemas de arquivos inteiros, eventualmente tornando-os disponíveis publicamente. Clientes NFS em seguida, montar os sistemas de arquivos exportados. Uma vez montado, sistema de arquivos remoto do servidor está ligado ao sistema de arquivos local do cliente. Quando ocorrer qualquer alteração de arquivos no sistema de arquivos NFS, o cliente NFS envia as modificações para o servidor NFS para processamento. Recomendações de Segurança: NFS evoluiu em uma época em que a segurança não era a principal preocupação. Consequentemente, há pouco mecanismo dentro NFS para proteger contra o uso indevido. Problemas de segurança comuns associados com NFS: 1. Especificando incorretamente as informações de acesso tcpd. O Linux envolve portmap (e, portanto, NFS) com acesso tcpd , permitindo que o administrador identifique determinados hosts ou redes que têm acesso. Especificar incorretamente as informações de acesso tcpd é uma exposição comum. tcpd: um programa que oferece segurança baseada em host para muitas aplicações de Internet do Linux. Suponha que um usuário com um ID de 242 possui alguns arquivos em seu servidor NFS. Qualquer cliente NFS com um ID do usuário de 242 pode acessar esses arquivos, independentemente de saber se é o mesmo usuário 242 ou não. É muito mais fácil evitar problemas de segurança do que tentar resolvê-los uma vez que eles aparecem. Algumas sugestões, poderá ajudar a evitar intrusões: 1. Criar restrições de acesso sensatas em / etc / exports . Pense sobre seus usuários NFS e apenas dar o mínimo de acesso apropriado aos usuários. 2. Nunca exportar a raiz ( / filesystem) porque este expõe muito da configuração do seu sistema. Se você absolutamente deve exportar o diretório raiz, exportálo somente leitura. 3. Use curingas somente quando absolutamente necessário. Meliantes poderiam ter acesso aos seus arquivos por falsificação de DNS, e um curinga só aumenta suas chances de ser bem sucedido. Spoofing: Fingindo um nome de host para ignorar um ou mais mecanismos de segurança. 4. Em /etc/hosts.deny , negar todo o acesso ao portmap serviço. Em /etc/hosts.allow , permitir o acesso apenas aos hosts e redes para a qual você quer dar serviços NFS. 5. Certifiquese de IDs de usuário e grupo são iguais tanto no servidor NFS e clientes. Referências Network File System (NFS). Disponível em: < http://www.redhatlinuxsysadmin.com/redhat-linux-system-administration/module5/intro-netw orkFile-services.php >. Acesso em: 01/06/2015. SILVA, Dinaílton José da. NFS: Network File System. Serviço IP – Fundamentação Teórica. Arquivo em PDF. 23/03/2015. SMTP (Simple Mail Transfer Protocol) Descrição: Trata-se de um protocolo padrão que permite transferir o correio de um servidor a outro em conexão ponto a ponto. As mensagens podem então ser recuperadas como um cliente de e-mail usando POP ou IMAP uma vez que o SMTP é limitado em sua capacidade de fila de mensagens no final de recebimento. A utilização do POP e IMAP permite ao usuário salvar mensagens em uma caixa de correio servidor e transferi-los periodicamente a partir do servidor. Em suma, usuários usam um programa que usa SMTP para o envio de e-mail e POP ou IMAP para receber e-mail. Normalmente é implementado utilizando a porta 25. Segundo a RFC 821, o objetivo do SMTP é a transferência de correio confiável e eficiente. É independente do subsistema de transmissão e requer apenas um canal de fluxo de dados. Figura 1: Como ocorre uma comunicação utilizando o protocolo SMTP Existem diversos tipos de Ataques ao Servidor/Cliente de Correio Eletrônico, por exemplo: ● Denial of Service (DoS) Attacks (Negação de Serviço → tornar o serviço indisponível) ● Mailbox stuffing or rejection overloads (Enchimento de caixa → envio de inúmeros emails) ● SMTP Auth Attacks ( usar um servidor de email qualquer para enviar mensagens) ● Mail Relay ● Open Mail Relay ( MTAs disponíveis na rede para uso externo) ● Bounce Attack ( quando alguém envia um spam de uma conta externa, usando um domínio existente, porem chegando como mensagens de notificação) ● Directory Harvest Attack ( um spammer envia diversos testes para saber quais contas de email são existente e bombardear a conta existente de mensagens) ● Email Spoofing ( um spammer envia diversos mensagens para contas aleatórias de um determinado domínio se passando por uma conta de email valida) ● Spam (publicidade em massa) ● Phishing (Email falso, solicitando que acesse algum site para alterar cadastro → coleta de dados) Recomendações de Segurança: Por padrão, o protocolo SMTP não é seguro, o que permite que um usuário envie mensagens, fazendo-se passar por outro usuário, prática conhecida como "forjar os cabeçalhos das mensagens". Geralmente, quem utilizase dessa prática são usuários mal intencionados, os quais pretendem burlar sistemas de segurança para fazer com que suas mensagens cheguem ao seu destino como se fossem originadas em uma fonte confiável. Um exemplo de quem utilizase de tal recurso são os praticantes de SPAM (envio de mala direta comercial não solicitada através de correio eletrônico). ● Autenticação de acesso ao serviço SMTP Dessa forma ao conectar a um servidor SMTP para enviar mensagens, será preciso se identificar fornecendo credenciais de acesso (login e senha), certificando-se que as mensagens encaminhas pelos servidores tiveram origem em um cliente legítimo com registro de qual conta foi utilizada para a autenticação em cada sessão de envio de mensagens. ● Utilizar o protocolo SSMTP SSMTP envia a mensagem de uma forma segura utilizando TLS (Transport Layer Security (São protocolos utilizados para verificar a segurança da Internet.) ● Medidas anti-spam (filtragem de mensagens não solicitadas) Configurar os servidores de e-mail, mais exatamente, os agentes de transporte de e-mails (MTA – Mail transporte agentes), para despachar somente mensagens oriundas de máquinas pertencentes ao seu domínio. ● Análise de subject Para identificar com maior precisão mensagens Spam não basta analisar seus endereços, mas também o seu subject (assunto) e o corpo. Por exemplo, se o subject se repetir em muitas mensagens, é bastante provável que se trata de spam. Isso pode ser feito através de programas denominados de E-mail Proxies , que interceptam e analisam as mensagens. Exemplo: spam assassin, maildrop, freewares e mailsweeper. ● Medidas técnicas de orientação a usuários quanto a utilização de e-mail. Ignorar mensagens de spam, nunca se deve responde-las ou mesmo abri-las pois isso pode confirmar a validade de seu e-mail. Não participar de listas abertas. Evitar divulgar o endereço de e-mail em páginas públicas. Informar o e-mail como uma pequena imagem. Criar e-mail auxiliar, para preencher cadastros temporários, se inscrever em listas e entrar em discussões públicas, etc. ● Medidas anti-vírus Fazer configurações adicionais ao MTA e interceptação por um E-mail Proxy. O MTA executa um programa adicional para fazer a varredura da mensagem, o vírus scanner, antes de processá-la. ● Proteção e segurança através de filtragem de mensagens Definir em que horários as mensagens são despachadas de acordo com o seu tamanho. Proibir anexos de alguns tipos de arquivos (.exe, .zip, .gif, etc) por serem normalmente portadores de vírus. Referências SMTP Autenticado . Disponível em: < http://www.pss.com.br/smtp_autenticado.php >. Acesso em: 29/05/2015. SMTP. Disponível em: < http://www.webopedia.com/TERM/S/SMTP.html >. Acesso em: 29/05/2015. SMTP. Disponível em: < http://searchexchange.techtarget.com/definition/SMTP >. Acesso em: 29/05/2015. POSTEL, Jonathan B. Simple Mail Transfer Protocol. RFC 821. University Sciences Institute California, 1982. TÓPICOS AVANÇADOS DE REDE. Correio Eletrônico e suas Vulnerabilidades. Disponível em: http://topicosavancadosredes.blogspot.com.br/2012/03/correio-eletronico-e-suas.html . Acesso em: 29/05/2015. DHCP (Dynamic Host Configuration Protocol) Descrição: Conforme a Technet (site) tratase de um protocolo cliente / servidor que fornece automaticamente um endereço IP a um host na rede e outras informações de configuração relacionadas, como a máscara de subrede e um gateway padrão. Em seguida, o DHCP libera e renova esses endereços conforme os dispositivos saem e voltam a aderir à rede. Ambientes DHCP requer um servidor DHCP, em ambientes domésticos provavelmente o roteador serve a esse propósito. O DHCP deve ser configurado com os parâmetros de configuração adequados para a rede dada. O banco de dados do servidor incluem o intervalo de DHCP ou "pool" de endereços IP disponíveis , máscaras de subrede corretas, além de gateway de rede e endereços de servidor de nome. No Linux o serviço do Dhcpd (servidor dhcpd) implementa este protocolo. A possibilidade da aplicação dinâmica de endereços IP leva a vantagem de que as máquinas podem ser movidas de uma rede DHCP para outra rede DHCP sem a necessidade de qualquer configuração nos computadores movidos, bastando conectar o cabo de rede na máquina e liga-la para tudo funcionar sem que o administrador de redes necessite reconfigurar cada máquina movida. Recomendações de Segurança: Ataques DHCP consiste em enviar pedidos DHCP com um endereço MAC falso. Se forem enviados pedidos suficientes é possível levar à exaustão o espaço existente nos servidores DHCP por um certo período. Isto pode fazer com que o atacante possa criar o seu servidor DHCP e ter acesso ao tráfego da rede. ● Recomenda-se que os administradores mantenham seus sistemas e aplicativos sempre atualizados, de acordo com as últimas versões e correções oferecidas pelos fabricantes. ● Verificar se o servidor DHCP não está presente na instalação padrão. ● Habilitar se o registro de logs do DHCP está ativo na instalação padrão. ● Bloquear portas 67/UDP e 68/UDP no firewall de borda de rede. ● Mover os serviços de DHCP para Windows 2000 Server ou versões mais novas. ● O serviço DHCP só deverá estar disponível para a rede interna. Por isso só deverá aceitar ligações pela interface interna (eth0, neste caso), o que é definido no arquivo de configuração /etc/default/isc-dhcp-server. Referências What is DHCP? Disponível em: https://technet.microsoft.com/en-us/library/cc781008%28v=ws.10%29.aspx . Acesso em: 01/06/2015. DHCP. Disponível em: http://compnetworking.about.com/cs/protocolsdhcp/g/bldef_dhcp.htm . Acesso em: 01/06/2015. Ataques DHCP . Disponível em: http://www.hacks.pt/ferramentas/redes/ataques-dhcp/ . Acesso em: 01/06/2015. SMB (Server Message Block) Descrição: Microsoft desenvolveu o seu primeiro protocolo de compartilhamento de arquivos, o Server Message Block (SMB), para permitir que os serviços de arquivo e impressão de rede para todos os sistemas operacionais da Microsoft. Este protocolo é por vezes referido como LanManager ou NetBIOS . Depois de ser reformulado para que pudesse ser encapsulado no mais popular do TCP / IP, foi rebatizado o Common Internet File System (CIFS). O Samba é uma coleção de programas que implementa SMB no Linux. Embora a suíte Samba consiste de vários programas, dois componentes principais do Samba são smbd e nmbd. SMBD é o Samba Server Message Block Daemon, que fornece todos os serviços de arquivos e impressão de rede para sistemas operacionais Windows. O /etc/smb.conf arquivo descreve os serviços smbd oferece, e ele deve ser configurado de forma adequada para a sua rede. Figura 1: representação da comunicação do protocolo SMB. Conforme Russo (2003), toda sua configuração se concentra em apenas um único arquivo smb.conf, além de ser totalmente configurável e pode ser refeita remotamente. Recomendações de Segurança: Todas as atuais versões do samba 4.x.x são vulneráveis a execução de código remoto no daemon do serviço nmbd NetBios. Um usuário malicioso pode enviar pacotes que podem reescrever na heap do daemon do serviço de nome nmbd NetBios. Com isso pode ser possível gerar uma vulnerabilidade de execução remota de código como superusuário (Root). A maioria das recomendações de segurança para o Samba é manter a versão instalada sempre atualizada. Referências SAMBA SERVER. Disponível em: < http://www.redhatlinuxsysadmin.com/redhat-linux-system-administration/module6/install-sam ba-server.php >. Acesso em: 01/06/2015. RUSSO, Bruno T. Configurando o Samba. Mackenzie, SP. 2003.