Protegendo serviços com TCP Wrappers

Share

terminalSegurança deve ser uma parte essencial de qualquer sistema, seja ele para um servidor em execução no departamento de defesa, ou um computador empoeirado velho sentado no canto conectado à internet. O problema é que, a maioria das pessoas não têm um bom entendimento de como se proteger de ataques indesejados, e até mesmo alguns dos especialistas em Linux podem ser pegos de surpresa de vez em quando. Duas das mais importantes chaves para proteger seu sistema Linux, não importa o que

distribuição estão usando são ter várias camadas de segurança e atualizar o sistema freqüentemente. TCP Wrappers é um excelente exemplo de como você pode adicionar uma camada adicional de segurança ao seu sistema com muito pouco esforço de sua parte.

O conceito de TCP wrappers é bastante simples. Quase toda máquina Linux rodando na internet estará funcionando um serviço de algum tipo, particularmente aqueles que estão atuando como servidores. Serviços estão constantemente escutando as conexões e como resultado eles podem facilmente dar informações sobre seu sistema ou ser explorados por um hacker. Na realidade, apenas um punhado de serviços deve ser acessível ao público e todos os outros devem ser obscurecidos, é nisso que TCP wrappers é utilizado. É simplesmente uma forma de controle de acesso que permite aos administradores para permitir ou negar acesso aos serviços.

O TCP Wrappers usa dois arquivos de regras primárias para exploração, /etc/hosts.allow e /etc/hosts.deny, que pode ser usado para permitir ou negar acesso a determinados serviços. Foi usado principalmente para serviços xinetd tais como telnet e TFTP, mas devido à sua crescente popularidade, pode trabalhar com muitos outros serviços também. Em alguns casos, os serviços funcionarão em linha reta fora da máquina com TCP wrappers, outros podem precisar que seja compilado com a biblioteca libwrap.

Ele está incluído por padrão em muitas distribuições de Linux e BSD, assim, na maioria dos casos, não precisará ser instalado. 

Em seguida, uma boa idéia para descobrir quais os serviços que estão sendo executados para que você possa começar a negar o acesso, é o comando “netstat -ltap” ou “netstat -lutan”, que irá listar os serviços em execução no sistema.

2-co

Como você pode ver na screenshot meu servidor tem um número de serviços em execução. Alguns dos serviços não devem ser bloqueados, porque queremos que todos sejam capazes de acessá-los, mas outros podem ser bloqueados, porque não são utilizados pelo público.

 

Você pode, então, verificar se um serviço é compilado com libwrap usando o seguinte comando:

 

ldd /path/to/service | grep wrap


1-co

Se a saída está em branco, então não é compilado com libwrap, mas se ele mostrar a biblioteca libwrap, então ele pode ser usado com TCP wrappers.

Neste exemplo vou bloquear o acesso a MySQL para todos, exceto o localhost e bloquear SSH para ser apenas acessível a partir de uma certa faixa de IP. Gostaria também de salientar que, se você for usar TCP wrappers com o MySQL você precisa compilar o código fonte com a biblioteca libwrap.

Começando com o MySQL você primeiro precisa abrir o seu arquivo /etc/hosts.deny e acrescente a seguinte linha ao arquivo.

mysql: ALL EXCEPT localhost

 

Da mesma forma você também pode negar tudo para MySQL no hosts.deny

mysql: ALL

 

 Então, para hosts.allow você pode aceitar conexões da máquina local usando a seguinte linha

 mysql: localhost

 Isto é porque tudo permitido em hosts.allow é capaz de substituir hosts.deny, o que lhe permite bloquear todo o tráfego e selecione os hosts que você deseja permitir.

Vamos ao nosso SSH. Se por exemplo não temos um endereço IP estático, mas em vez disso o nosso provedor conecta-se usando um range IP em um ISP. Se sabemos que a faixa de IP que o ISP irá nos das cada vez que nos conectarmos, podemos limitar o acesso ao SSH somente aos usuários do mesmo ISP como nós mesmos. Isto pode ser particularmente útil para bloquear o acesso a países que são mais propensos a hackers.

 Há duas principais maneiras de se fazer isso. Em primeiro lugar, podemos simplesmente especificar os primeiros dígitos de um endereço IP no hosts.deny.

 sshd: 123,123.

 Alternativamente também podemos usar o endereço de rede e máscara de rede para especificar o intervalo de rede que é permitido para se conectar.

 sshd: 192.168.1.0/255.255.255.0

 

Em muitos outros serviços podem ser usado TCP Wrappers, analise seu cenário e implemente esta camada a mais de segurança.

 

 

Fonte: unixmen.com