Seguranca da Informação - Filtros/tcpd
Upcoming SlideShare
Loading in...5
×
 

Seguranca da Informação - Filtros/tcpd

on

  • 2,193 views

 

Statistics

Views

Total Views
2,193
Views on SlideShare
2,191
Embed Views
2

Actions

Likes
1
Downloads
46
Comments
0

1 Embed 2

http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Seguranca da Informação - Filtros/tcpd Seguranca da Informação - Filtros/tcpd Presentation Transcript

  • 1 Filtro TCP Wrapper - tcpd Luiz Arthur Verificação da configuração do filtro TCP Wrappers (tcpd) Servidores Linux, como o Slackware, implementam um recurso conhecido como TCP wrappers, uma técnica projetada para proteger serviços implementados usando-se o superdaemon de ligação entre redes (inetd ou xinetd). O TCP wrappers é implementado usando-se dois arquivos, um que controla o que é especificamente aceito na rede (/etc/hosts.allow) e outro que especifica negativas das redes (/etc/hosts.deny). Muitos programas têm a capacidade de oferecer suporte a TCP wrapper, incluindo FTP e telnet, assim como outros protocolos conhecidos, porém outros como HTTP e o X Windows System usam seus próprios sistemas de logon e controle de acesso. Alguns aplicativos de código fonte aberto possuem suporte incorporado para tcp_wrappers. Um bom exemplo é o Samba, cujo controle de tcp_wrappers é efetuado usando-se instruções de controle dentro de seu arquivo de configuração. Os dois parâmetros que efetuam tal controle são hosts allow e hosts deny. A configuração padrão do Linux não inclui regras e, portanto, permite que todas as comunicações ocorram. O comportamento padrão do tcp_wrappers é negar acesso a serviços definidos em hosts.deny, a menos que haja uma regra especifica em hosts.allow para permitir isso. Cada regra é avaliada do inicio ao fim, de modo que uma regra posterior possa substituir uma regra anterior.
  • 2 Filtro TCP Wrapper - tcpd Luiz Arthur O software de encapsulamento TCP wrapper conhecido também como tcpd é executado pelo inetd ou xinetd. Usar tcpd em um sistema Linux é fácil porque as entradas no arquivo /etc/inetd.conf já apontam para o programa tcpd. As seguintes entradas são do arquivo /etc/inetd.conf em um sistema Linux: ftp stream tcp nowait root /usr/sbin/tcpd vsftpd telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd shell stream tcp nowait root /usr/sbin/tcpd in.rshd -L login stream tcp nowait root /usr/sbin/tcpd in.rlogind talk dgram udp wait root /usr/sbin/tcpd in.talkd Como mostra este exemplo, o caminho para tcpd é usado em lugar do caminho de cada daemon de serviço da rede. Então, quando o inetd recebe uma solicitação para um serviço ele inicia o tcpd. O tcpd então registra a solicitação do serviço, verifica a informação de controle de acesso, e (se autorizada) inicia o daemon real para manipular a solicitação. O programa tcpd executa duas funções básicas: registrar solicitações para serviços de rede, e fornecer um mecanismo de controle de acesso para estes serviços. Solicitações de registro para serviços de rede específicos é uma função de monitoramento útil, especialmente se você estiver procurando intrusos.
  • 3 Filtro TCP Wrapper - tcpd Luiz Arthur O tcpd usa a facilidade authpriv do syslogd para registrar suas mensagens (para maiores informações procure pelo arquivo /etc/syslog.conf). Normalmente as mensagens de registro geradas pelo tcpd são armazenadas em /var/log/secure. Jun 3 17:25:40 darkstar login[4547]: ROOT LOGIN on `tty6' Jun 6 12:06:08 darkstar in.telnetd[6587]: connect from 10.0.0.1 (10.0.0.1) May 9 14:05:27 darkstar vsftpd[5458]: connect from 192.168.73.10 (192.168.73.10) May 9 14:10:50 darkstar vsftpd[5467]: connect from 192.168.73.6 (192.168.73.6) O arquivo /var/log/secure, não apresenta somente arquivos do tcpd, mas também mensagens para login. Mas podemos ver na segunda mensagem de 6 de junho que houve um acesso ao serviço telnetd feito pela máquina 10.0.0.1 e nas duas últimas linhas são apresentadas acessos ao servidor vsftpd vindo da rede 192.168.73.0. Se o tcpd apenas registrasse acessos ele já seria muito útil. Mas o real poder desta ferramenta é sua habilidade para controlar acesso a serviços de rede. Arquivos de controle de acesso tcpd Dois arquivos definem controles de acesso para o tcpd: O arquivo /etc/hosts.allow, lista os hosts que estão autorizados a acessar os serviços do sistema; O arquivo /etc/hosts.deny lista os hosts aos quais são negados o serviço.
  • 4 Filtro TCP Wrapper - tcpd Luiz Arthur Se estes arquivos não forem encontrados (não estiverem no sistema) ou estiverem em branco, o tcpd irá permitir a todo host ter acesso ao sistema, e simplesmente registra a solicitação de acesso. Quando os arquivos estão presentes no sistema, o tcpd lê o arquivo /etc/hosts.allow primeiro e depois lê o arquivo /etc/hosts.deny. O tcpd pára assim que encontra uma combinação para host e o serviço em questão. Então, o acesso dado pelo arquivo /etc/hosts.allow não pode ser anulado pelo arquivo /etc/hosts.deny. O formato de entradas de ambos os arquivos é o mesmo: services : clients [: shell-comand] service - é uma lista separada por vírgula, de serviços de rede ou a palavra- chave ALL:ALL é usada para indicar todos os serviços da rede. Caso contrário, cada serviço individual é identificada por seu nome de processo, que é o nome segue no arquivo /etc/inetd.conf. clients – é uma lista separada por vírgula de nomes de host, nome de domínio, o endereço IP, e a palavra LOCAL. Alternativamente, pode ser a palavra chave ALL para especificar todos os hosts. shell-command - é um comando de shell opcional que o tcpd executa quando uma comparação ocorre.
  • 5 Filtro TCP Wrapper - tcpd Luiz Arthur Alguns exemplos podem ilustrar a variedade e modos válidos nos quais podem ser descritos services e clients em uma entrada de controle de acesso tcpd. ALL : LOCAL, .empresa.com.br in.ftpd, in.telnetd : micro1.rede.com A palavra-chave ALL no campo services indica que a primeira regra se aplica a todos os serviços de rede. No campo clients, a palavra LOCAL indica que todos os nomes de hosts sem uma parte de domínio são aceitas, e .empresa.com.br compara todos os nomes de hosts neste domínio. A segunda regra dá acesso ftp e telnet a usuários ao sistema remoto chamado de micro1.rede.com. A sintaxe de um arquivo de controle de acesso tcpd padrão pode ser um pouco mais complicada, tal como segue: imapd, ipopd3 : 172.5.4. ALL EXCEPT impad, ipopd3: ALL A palavra EXCEPT é usada para excluir itens de uma lista e também pode ser usada no lado clients de uma regra de acesso. Por exemplo: ALL: .empresa.com.br EXCEPT gateway.empresa.com.br
  • 6 Filtro TCP Wrapper - tcpd Luiz Arthur A primeira regra colocada em um arquivo de controle do TCP wrapper é a regra ALL:ALL em /etc/hosts.deny, tal regra nega todos os serviços, mas uma regra melhor é bloquear todos os serviços não definidos explicitamente é criar a ultima entrada em /etc/hosts.allow como ALL:ALL:DENY eliminando a necessidade de um arquivo /etc/hosts.deny. Tipos de entradas do hosts deny e allow: Endereço IP: 192.168.0.100 corresponde a um IP único; 193.168.0. corresponde à rede inteira 192.168.0.0 se uma poção é deixada de lado toda a porção a direita é tratada como zero Nome do host: segurança.dominio.com.br corresponde a qualquer solicitação do host segurança.dominio.com.br .dominio.com.br corresponderia a qualquer solicitação de qualquer coisa dentro do domínio dominio.com.br Rede/Máscara da rede: 192.168.0.0/255.255.255.0 corresponderia a tudo na rede de classe C 192.168.0.0. Netgroups NIS (YP): Tudo com @ como caractere à esquerda é tratado como netgroups NIS
  • 7 Filtro TCP Wrapper - tcpd Luiz Arthur Note que, quando são usados nomes de domínio ou nomes de hosts, as falhas de DNS podem causar problemas no acesso às máquinas, por isso é recomendado usar endereços IPs. É possível utilizar o operador EXCEPT para permitir excluir determinados clientes de uma correspondência. # vi /etc/hosts.allow sshd: .dominio.com.br EXCEPT bad.dominio.com.br in.telnetd: 192.168.0.6, 10.0.0.0/255.0.0.0 EXCEPT 10.0.0.5 portmap: 192.168.0.100 ALL:ALL:DENY Caracteres curinga TCP Wrappers: Caracteres curinga ALL Corresponde a todos KNOWN Corresponde a um host cujo nome e endereço são conhecidos (via serviços de nome). LOCAL Qualquer nome que não contenha ponto. PARANOID Corresponde a um host cujo nome não corresponde ao endereço (colocando-se ALL:PARANOID em /etc/hosts.allow seria negado acesso a todas as máquinas cujo IP não corresponde ao seu IP) UNKNOWN Quando um nome de host ou endereço é desconhecido porque não pode ser resolvido usando-se as chamadas de sistema que implementam resoluções de nome.
  • 8 Filtro TCP Wrapper - tcpd Luiz Arthur Um outro recurso interessante do TCP wrappers é que ele pode executar comandos quando uma condição é correspondida. Por exemplo, você pode colocar a seguinte linha no seu arquivo /etc/hosts.deny para enviar um e-mail para administrador@dominio.com.br toda vez que há falha de conexão: # vi /etc/hosts.deny ALL:ALL : spawn (/bin/echo Alerta de segurança no host: %a no serviço %d na ‘date’ | tee –a /var/log/security_Alert | mail administrador@dominio.com.br) Se algo não corresponde a nenhuma das regras em /etc/hosts.allow e corresponde à condição ALL:ALL em /etc/hosts.deny deverá ser escrito: Alerta de segurança no host: %a no serviço %d na data E está enviando isso para /var/log/security_Alert assim como enviando por e-mail as informações para administrador@dominio.com.br . O %a e %d dentro do comando gerado com spawn são expansões disponíveis em TCP wrappers.
  • 9 Filtro TCP Wrapper - tcpd Luiz Arthur Expansões de TCP Wrapper Expansão Descrição %a Endereço do host cliente %A Endereço do host servidor %c Todas as informações de clientes disponíveis %d Informações de processos daemon %h Nome do host ou endereço se não houver nome disponível %H Node do servidor ou endereço %n Nome do host do cliente %N Nome do host do servidor %p ID de processo daemon %s Todas as informações de servidor disponíveis %u Nome de usuário do cliente Extensões de linguagem de controle de acesso opcionais Se o tcpd for compilado com PROCESS_OPTIONS habilitado no Makefile, a sintaxe da linguagem de controle de acesso é alterada e estendida. A sintaxe de comando estendida é: services : clients : option : option
  • 10 Filtro TCP Wrapper - tcpd Luiz Arthur O campo services e o campo clients são definidos exatamente do mesmo modo com eles estavam na sintaxe Wrapper original. O campo option é novo e assim é o fato de múltiplas opções serem permitidas para cada regra. Há várias opções possíveis, sendo algumas: allow – Permite o serviço solicitado. deny - Nega o serviço solicitado. spawn shell-command – Executa o comando shell como um processo filho. twist shell-command – Executa o comando shell ao invés do serviço solicitado. keepalive – Envia mensagens keepalive ao cliente. Se o cliente não responder, a conexão é fechada. liger seconds – Especifica quanto tempo o sistema deve tentar entregar dados depois do servidor fechar a conexão. rfc931[timeout] – Usa o protocolo IDENT para procurar o nome de usuário do cliente. Timeout (intervalo) define quantos segundos o servidor deve esperar pela resposta do cliente. banners path – Exibe os conteúdos de um arquivo de mensagens para o cliente sendo path o caminho ao arquivo de banner.
  • 11 Filtro TCP Wrapper - tcpd Luiz Arthur nice [number] – ajusta o valor de nice para o processo de serviço de rede. O valor nice é usado para calcular uma prioridade de execução. O valor padrão é 10. umask mask – Ajusta um valor de umask para arquivos criados pelo processo iniciado pelo tcpd. user user[.group] – Executa o processo de serviço de rede com o ID de usuário de ID de grupo especificados indiferente ao que está definido em /etc/inetd.conf. setenv name value – ajusta uma variável de ambiente para o ambiente do momento de execução do processo. Com a sintaxe nova, não há nenhuma necessidade de ter dois arquivos, pois a opção ALLOW e DENY podem existir em único arquivo. Usando as opções ALLOW e DENY, este comando: ALL: .empresa.org EXCEPT micro1.empresa.org pode ser reescrito como: ALL: micro1.empresa.org :DENY ALL: .empresa.org : ALLOW
  • 12 Filtro TCP Wrapper - tcpd Luiz Arthur O exemplo de comando shell que usa a sintaxe original é quase a mesma: in.rsh : ALL : spawn (safe_finger -l @%h | mail -s %d - %h root) & : DENY Uma variação mais interessante no tema de comando shell vem de usar a opção twist. Em vez de passar um comando ao shell para execução, o comando twist executa um programa para o cliente – mas não o programa que o cliente espera. Por exemplo: in.ftpd : ALL: twist /bin/echo 421 FTP não é permitido para %h : DENY Neste caso, quando o sistema remoto tenta iniciar o daemon FTP, echo é iniciado no lugar. O programa echo então envia a mensagem ao sistema remoto e termina a conexão.
  • 13 Filtro TCP Wrapper - tcpd Luiz Arthur fim