
O que são TCP wrappers e como configurá-los para restringir o acesso a serviços de rede executados em um servidor Linux?
A palavra Wrapper tem o sentido de empacotar, embrulhar algo. Nesse artigo falamos no sentido de proteger um serviço contra acesso por programas não autorizados.
TCP Wrappers é uma forma de controlar o acesso baseado em host e não é uma medida de segurança definitiva para o seu sistema! Falamos que é baseado em host porque indicamos quais computadores ou dispositivos terão ou não acesso digitando seus nomes ou endereços IPs.
Ao usar um firewall e TCP wrappers juntos você garantirá que seu servidor fique com uma camada à mais de segurança contra pontos de falhas.
Falando sobre os Arquivos hosts.allow e hosts.deny
TCP wrappers usam os arquivos hosts.allow e hosts.deny que localizados dentro de /etc para determinar se o programa cliente que solicita alguma requisição deve ter permissão para usar um determinado serviço no servidor.
Por padrão, esses arquivos estão vazios, todos comentados ou não existem. Assim, tudo é permitido através da camada TCP wrappers e seu sistema é deixado para contar com o firewall para proteção total. Como isso não é desejado, pelo motivo que mencionamos na introdução, certifique-se de que ambos os arquivos existam:
# ls -l /etc/hosts.allow /etc/hosts.deny
A sintaxe de ambos os arquivos é a mesma:
<serviços> : <clientes> [: <opção1> : <opção2> : ...]
onde,
- services é uma lista separada por vírgulas de serviços aos quais a regra atual deve ser aplicada.
- os clientes representam a lista de nomes de host ou endereços IP separados por vírgulas afetados pela regra. Os seguintes curingas são aceitos:
- ALL corresponde a tudo. Aplica-se tanto a clientes como a serviços.
- LOCAL corresponde a hosts sem um ponto em seu FQDN , como localhost.
- KNOWN indica uma situação em que o nome do host, o endereço do host ou o usuário são conhecidos.
- DESCONHECIDO é o oposto de CONHECIDO .
- PARANOID faz com que uma conexão caia se pesquisas reversas de DNS (primeiro no endereço IP para determinar o nome do host, depois no nome do host para obter os endereços IP) retornarem um endereço diferente em cada caso.
- Por fim, uma lista opcional de ações separadas por dois pontos indica o que deve acontecer quando uma determinada regra é acionada.
Você pode querer ter em mente que uma regra que permite o acesso a um determinado serviço tem /etc/hosts.allow
precedência sobre uma regra que /etc/hosts.deny
o proíbe. Além disso, se duas regras se aplicarem ao mesmo serviço, apenas a primeira será considerada.
Infelizmente, nem todos os serviços de rede suportam o uso de TCP wrappers. Para determinar se um determinado serviço os suporta, faça:
# ldd /caminho/para/binário | grep libwrap
Se o comando acima tiver retorno, ele pode ser encapsulado por TCP Wrappers. Um exemplo disso são sshd e vsftpd , conforme mostrado aqui:
Como usar TCP Wrappers para restringir o acesso aos serviços
Ao editar /etc/hosts.allowe /etc/hosts.deny, certifique-se de adicionar uma nova linha sempre pressionando Enter após a última linha.
Para permitir o acesso SSH e FTP apenas para 192.168.0.102 e localhost e negar todos os outros, adicione estas duas linhas em /etc/hosts.deny:
sshd,vsftpd : ALL ALL : ALL
e a seguinte linha em /etc/hosts.allow:sshd,vsftpd:
sshd,vsftpd: 192.168.0.102,LOCAL
Essas alterações ocorrem imediatamente sem a necessidade de reiniciar.Na imagem a seguir você pode ver o efeito de remover a palavra LOCALda última linha: o servidor FTP ficará indisponível para localhost . Depois de adicionarmos o curinga de volta, o serviço ficará disponível novamente.
Para permitir todos os serviços para hosts onde o nome contém example.com
, adicione esta linha em hosts.allow
:
ALL: .example.com
e para negar acesso ao vsftpd para máquinas em 10.0.1.0/24 , adicione esta linha em hosts.deny:
vsftpd: 10.0.1.
Nos dois últimos exemplos, observe o ponto no início e no final da lista de clientes. É usado para indicar “TODOS os hosts e/ou clientes onde o nome ou o IP contém essa string”.Este artigo foi útil para você? voce tem alguma pergunta ou comentario? Sinta-se à vontade para nos enviar uma nota usando o formulário de comentários abaixo.