Jump to content

TCP Wrapper


billlcosta

Recommended Posts

Introdução

 

Controlar acessos a aplicações/serviços de uma rede vem se tornado um das tarefas mais importantes de um Sys Admin. Em ambientes Unix Like, podemos fazer tal controle utilizando por exemplo Firewalls iptables/nftables,ipfw, no qual realizaram filtro de pacotes que trafegam pelo sistema. 

Entretanto, sabemos que apenas Firewalls não são capazes de prover todo o controle de segurança. Felizmente, existe o TCP Wrappers, desenvolvido para aplicar uma camada a mais de proteção em serviços de rede que utilizam de tal solução. 

O funcionamento TCP Wrapper basicamente consiste em realizar o controle de acesso em aplicações que suportam esta ação (como xinetd), permitindo ou não tal acesso. Para tal, são utilizados dois arquivos.: 

 

  • /etc/hosts.allow - arquivo responsável por liberar acessos
  • /etc/hosts.deny - arquivo responsável por bloquear acessos

 

   Nota
   
   O TCP Wrapper se tornou parte muito valiosa do arsenal de ferramentas de segurança de um Sys Admin. Desta forma, diversos serviços estão ligados a biblioteca 
   libwrap, responsável pelo funcionamento do TCP Wrapper.
   
   Para validar se um serviço dá suporte ao TCP Wrapper, a maneira mais fácil é executar o comando ldd <binary-name> | grep libwrap substituindo o 
   '<binary-name> pelo path completo do binário.

 

Funcionamento

 

Como dito anteriomente, o TCP Wrappers possui dois arquivos de configurações, o hosts.allow e o hosts.deny, ambos armazenados no /etc. Ao receber uma solicitação de acesso a um determinado serviço, o TCP Wrapper realiza os seguintes passos.: 

 

  • Consulta o /etc/hosts.allow - o primeiro passo é consultar o hosts.allow para validar se o mesmo existe alguma entrada liberando a entrada do cliente em questão. Caso exista, a liberação de acesso é realizada. Caso contrário, passa para o próximo passo.
  • Consulta o /etc/hosts.deny - o segundo e último passo é validar no arquivo hosts.deny se existe alguma entrada bloqueando o acesso. Caso exista uma entrada, o acesso ao serviço é bloqueado. Do contrário, o acesso é liberado.

 

Importante.: Devido ao fato das regras do hosts.allow serem processadas primeiro, o mesmo possui prioridade sobre hosts.deny. Desta forma, caso haja uma entrada para um cliente nos dois arquivos, o acesso do mesmo será liberado. 

 

Construindo Regras de Acesso

 

A sintaxe das regras de acesso para ambos arquivos (hosts.allow e hosts.deny) são as mesmas. Para criar regras, o formato básico é.: 

 

 <daemon list>: <client list> [: <option>: <option>: ] 

 

<daemon list> é a lista de daemons separada por vírgula (não são nome dos serviços) ou caracter coringa (como * ALL). <client list> é a lista de clientes (IP, FQDN) ou caracteres coringas separados por vírgula que terão acesso liberado/bloqueado. <option> opção adicional ou uma lista de opções separada por dois pontos para realizar ações em uma determinada regra. 

Caracteres coringas

 

  • ALL — Corresponde a tudo. Ele pode ser usado para ambas listas de daemons e lista de clientes.
  • LOCAL — Corresponde a qualquer host que não contém um ponto (.), como o localhost.
  • KNOWN — Corresponde a qualquer host onde o hostname e endereço de host são conhecidos ou onde o usuário é conhecido (CUIDADO: Depende de resolução DNS).
  • UNKNOWN — Corresponde a qualquer host onde o hostname ou endereço de host são desconhecidos ou onde o usuário é desconhecido (CUIDADO: Depende de resolução DNS).
  • PARANOID — Corresponde a qualquer host onde o hostname não corresponde ao endereço de host (CUIDADO: Depende de resolução DNS).

 

Exemplos/Modelos

 

Nota.: Todos os exemplos/modelos repassados abaixo, poderão ser utilizados tanto no hosts.allow quanto no hosts.deny, dependendo apenas da ação desejada. 

  • Libera/bloqueia o acesso a qualquer serviço para qualquer hosts (.) do dominio minasnetworking.com.br.
 ALL: .minasnetworking.com.br 

 

  • Libera/bloqueia o acesso ao serviço de SSH (daemon SSHD) para qualquer host que inicie com o range 192.168.
 sshd: 192.168. 

 

  • Libera/bloqueia o acesso a qualquer serviço para qualquer hosts da rede 192.168.1.0.
 ALL: 192.168.1.0/255.255.255.0

 

  • Libera/bloqueia o acesso ao serviço de HTTP (daemon HTTPD) para qualquer host/cliente gerando uma mensagem de log
 httpd: ALL  \ : spawn /bin/echo `/bin/date` access allowed/denied >> /var/log/message \ : deny|allow

 

Referências

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...