2.3. TCP Wrappers e xinetd
Controlar o acesso aos serviços de rede é uma das tarefas de segurança mais importantes para um administrador de servidor. O Red Hat Enterprise Linux fornece diversas ferramentas para este propósito. Por exemplo, um firewall baseado em
iptables
filtra pacotes de rede indesejados dentro da pilha de rede do kernel. Para serviços de rede que os utilizam, os TCP Wrappers adicionam uma camada a mais de proteção definindo quais hosts são ou não são permitidos conectar aos serviços de rede "envolvidos (wrapped)". Um tipo de serviço de rede wrapped é o xinetd
super server. O serviço é chamado super server porque ele controla conexões de um subconjunto de serviços de rede e refina ainda mais o controle de acesso.
A Figura 2.4, “Controle de Acesso para Serviços de Rede” é uma ilustração básica de como estas ferramentas trabalham juntas para proteger os serviços de rede.
Figura 2.4. Controle de Acesso para Serviços de Rede
Este capítulo foca na função de TCP Wrappers e
xinetd
no controle de acesso aos serviços de rede e revisa como estas ferramentas podem ser usadas para melhorar tanto a autenticação e gerenciamento de utilização. Consulte a Seção 2.6, “IPTables” para informações sobre usar firewalls com iptables
.
2.3.1. TCP Wrappers
Os pacotes de TCP Wrappers (
tcp_wrappers
e tcp_wrappers-libs
) são instalados por padrão e fornecem controle de acesso baseado no host para serviços de rede. O componente mais importante do pacote é a biblioteca /lib/libwrap.a
ou /lib64/libwrap.a
. Em termos gerais, um serviço TCP wrapped é um que foi compilado para a biblioteca libwrap.a
.
Quando uma tentativa de conexão é feita a um serviço TCP Wrapper, o serviço primeiro referencia os arquivos de acesso ao host (
/etc/hosts.allow
e /etc/hosts.deny
) para determinar se o cliente é permitido ou não se conectar. Na maioria dos casos, ele então usa o syslog daemon (syslogd
) para gravar o nome do cliente solicitante e do serviço solicitado em /var/log/secure
ou /var/log/messages
.
Se um cliente é permitido se conectar, os TCP Wrappers liberam o controle da conexão para o serviço solicitado e não participa mais na comunicação entre o cliente e o servidor.
Além de controlar o acesso e autenticação, os TCP Wrappers podem executar comandos para interagir com o cliente antes de negar ou liberar controle da conexão ao serviço de rede solitictado.
Pela razão que os TCP Wrappers são uma adição valiosa a qualquer arsenal de ferramentas de segurança de um administrador de servidor, a maiorias dos serviços de rede dentro do Red Hat Enterprise Linux são ligados à biblioteca
libwrap.a
. Algumas dessas aplicações incluem /usr/sbin/sshd
, /usr/sbin/sendmail
, and /usr/sbin/xinetd
.
Nota
Para determinar se um serviço de rede binária está ligado ao
libwrap.a
, digite o seguinte comando como usuário root:
ldd <binary-name> | grep libwrap
Substitua o <binary-name> com o nome do serviço de rede binário.
Se o comando retornar diretamente ao prompt sem nenhum resultado, então o serviço de rede não é ligado ao
libwrap.a
.
O exemplo seguinte indica que o
/usr/sbin/sshd
está ligado ao libwrap.a
:
[root@myServer ~]# ldd /usr/sbin/sshd | grep libwrap libwrap.so.0 => /lib/libwrap.so.0 (0x00655000) [root@myServer ~]#
2.3.1.1. Vantagens do TCP Wrappers
Os TCP Wrappers fornecem as seguintes vantagens sobre outras técnicas de controle de serviço de rede:
- Transparências tanto aos clientes e serviços de rede wrapped — Ambos clientes em conexão e o serviço de rede wrapped não estão atentos que os TCP Wrappers estão em uso. Usuários legítimos são autenticados e conectados ao serviço solicitado enquanto conexões de clientes banidos falham.
- Gerenciamento Centralizado de múltiplos protocolos — Os TCP Wrappers operam separadamente dos serviços de rede que protegem, permitindo muitas aplicações de servidor compartilhar um conjunto comum de arquivos de configurações de controle de acesso, para um gerenciamento mais simples.