Controle de acesso através do tcpd

O programa tcpd é utilizado pelo TCP Wrappers para implementar controle de acesso baseado na origem da conexão, além de registrar em log as tentativas de conexão no serviço. Esse controle é feito através dos arquivos /etc/hosts.allow e /etc/hosts.deny, que irão monitorar e filtrar pedidos de conexão para serviços como FTP, telnet, rlogin entre outros.

O arquivo /etc/hosts.allow especifica quais computadores tem permissão para utilizar os servidores inicializados via inetd/xinetd enquanto o arquivo /etc/hosts.deny especifica quais computadores não têm permissão.

A sintaxe desses arquivos é:

<serviço>: <máquinas> <opções>

Onde:

  • serviço – lista com um ou mais serviços ou palavras-chaves separados por espaços ou vírgulas.
  • máquinas – Lista com um ou mais endereços IP, nome de máquinas, padrões ou palavras-chaves.
  • opções – comandos opcionais que o tcpd executa quando uma comparação ocorre.

As palavras-chaves que podem ser utilizadas nos campos serviços e computadores são:

  • ALL – Corresponde a tudo. Pode ser usado tanto com a lista de serviços como com a lista de máquinas.
  • EXCEPT – Define uma exceção à regra.
  • KNOW – Todos computadores conhecidos, isto é, que possuem resolução DNS são válidos.
  • LOCAL – Faz a correspondência de qualquer host que não contenha um ponto (.), como, por exemplo, localhost.
  • PARANOID – Derruba as conexões dos computadores, mesmo ante de verificar as tabelas de controle.
  • UNKNOW – Todos computadores desconhecidos, isto é, que não possuem resolução DNS são válidos.

Os padrões utilizados no campo computadores são:

  • ? – Utilizado para selecionar um nome de computador ou um endereço IP
  • * – Utilizado para selecionar um nome de computador ou um endereço IP
  • . – Define um grupo de computadores

O arquivo /etc/hosts.allow tem preferência sobre o arquivo /etc/hosts.deny. Isso quer dizer que se você bloquear um computador para acesso a um determinado serviço, mas ele estiver liberado no arquivo /etc/hosts.allow, o bloqueio será ignorado; além disso, se não houver nenhuma regra aplicada ao serviço nos dois arquivos, assume-se que o acesso é permitido.

Exemplos de utilização

/etc/hosts.deny

É sempre uma boa ideia bloquear todo o acesso inicialmente e depois liberar o serviço somente para as máquinas que deseja. No exemplo abaixo, ao adicionar a linha no arquivo /etc/hosts.deny irá bloquear todo acesso ao telnet:

in.telnetd : ALL

/etc/hosts.allow

Após ter bloqueado o acesso no arquivo /etc/hosts.deny, liberamos as máquinas que desejamos que tenham acesso ao serviço (separadas por espaço), adicionando a linha abaixo no arquivo /etc/hosts.allow:

in.telnetd: 192.168.0.100

Fazendo um teste:

Minha máquina tem o IP 192.168.0.103, irei tentar o acesso no servidor telnet (IP 192.168.0.108):

$ telnet 192.168.0.108
Trying 192.168.0.108…
Connected to 192.168.0.108.
Escape character is ‘^]’.
Connection closed by foreign host.

No log da máquina do servidor telnet, minha tentativa de conexão ficou registrada:

# tail -f /var/log/syslog
Apr 29 13:39:47 nixi xinetd[2890]: libwrap refused connection to telnet (libwrap=in.telnetd) from 192.168.0.103

Ao tentar a conexão do IP liberado no arquivo /etc/hosts.allow:

# telnet 192.168.0.108
Trying 192.168.0.108…
Connected to 192.168.0.108 (192.168.0.108).
Escape character is ‘^]’.
Debian GNU/Linux 5.0
nixi login: nixi
Password:
Last login: Fri Apr 29 13:42:52 BRT 2011 from 192.168.0.100 on pts/1

No syslog do servidor telnet, não indica nenhum bloqueio e a conexão foi realizada. Para checar a autenticação, podemos olhar o arquivo /var/log/auth.log que registrou a conexão:

# tail -f /var/log/auth.log
Apr 29 13:43:49 nixi login[3014]: pam_unix(login:session): session opened for user nixi by (uid=0)
Apr 29 13:45:55 nixi login[3014]: pam_unix(login:session): session closed for user nixi

Outro exemplo:

Bloquear o acesso SSH para toda rede 192.168.0.0, exceto para o IP 192.168.0.103, adicionando a linha abaixo no arquivo /etc/hosts.deny:

sshd: 192.168.0. EXCEPT 192.168.0.103

Fazendo um teste de conexão ssh da máquina 192.168.0.100 para a máquina 192.168.0.108:

# ssh root@192.168.0.108
ssh_exchange_identification: Connection closed by remote host

A tentativa de conexão é registrada no servidor:

# tail -f /var/log/auth.log
May  1 12:10:42 nixi sshd[2916]: refused connect from 192.168.0.100 (192.168.0.100)

Teste de conexão ssh da máquina 192.168.0.103 (máquina que foi liberado o acesso) para 192.168.0.108:

$ ssh root@192.168.0.108
root@192.168.0.108’s password:

A tentativa da conexão é registrada no servidor:

# tail -f /var/log/auth.log
May  1 12:13:57 nixi sshd[2917]: Connection from 192.168.0.103 port 37268
May  1 12:13:58 nixi sshd[2917]: Failed none for root from 192.168.0.103 port 37268 ssh2
May  1 12:13:58 nixi sshd[2917]: Failed publickey for root from 192.168.0.103 port 37268 ssh2
May  1 12:13:59 nixi sshd[2917]: Accepted password for root from 192.168.0.103 port 37268 ssh2
May  1 12:13:59 nixi sshd[2917]: pam_unix(sshd:session): session opened for user root by (uid=0)

Conclusão

Esse post foi uma visão geral do que aprendi no meu lab sobre tcpwrappers. Para conhecer mais, a leitura da página do manual dos arquivos hosts.allow e hosts.deny é um bom ponto de partida:

# man 5 hosts.access

O uso do tcpwrappers ajuda a aumentar a segurança do sistema, porém não deve ser a única ferramenta de controle, é necessário também a configuração de um firewall para controlar de forma granular os pacotes que entram ou saem da rede.

Embora segurança não se faça somente com tecnologias e produtos, é importante que o administrador conheça o máximo de ferramentas para utilizar na proteção do seu ambiente da melhor forma possível.

Referências e leituras:

  • man 5 hosts_access
  • FERREIRA, R. E. Linux – Guia do Administrador do Sistema. São Paulo: Editora Novatec., 2003.
  • NEMETH, E., Synder, G., Hein, T. R. Manual Completo do Linux – Guia do Administrador. São Paulo: Pearson Makron Books., 2004.

0 Responses to “Controle de acesso através do tcpd”



  1. Deixe um comentário

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




Follow Nix on WordPress.com
maio 2011
S T Q Q S S D
« abr   jun »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Flickr Photos

Morning Silence

Mais fotos

%d blogueiros gostam disto: