Neste artigo vamos mostrar como funciona o programa 'tcp
wrapper' ou tcpd. Ele controla os acessos aos serviços
de seu servidor, bloqueando ou permitindo de forma segura as
conexões, e logando todas as entradas para uma
monitoração preventiva.
Esse recurso foi implementado pela Eindhoven University,
depois de vários ataques sofridos, e a versão atual
é bem antiga. Esse recurso existe em quase todas
distribuições de Unix, e claro no Linux.
Primeiramente vamos entender o que acontece quando uma
conexão é feita em nosso servidor. Como ele vai
chamar o programa certo, quando por exemplo alguém tenta
dar um telnet para nosso servidor. O sistema TCP/IP é
baseado em conexão cliente-servidor. Quando damos um
telnet para um servidor, este ao receber a conexão chama
o telnetd, que seria o telnet-server, e depois autentica o
usuário e etc. Mas o telnetd não se auto-carrega
sozinho, para isso existe o inetd, aonde estão a maioria
dos serviços disponíveis na máquina e suas
respectivas configurações, como por exemplo, qual
programa chamar ao receber uma conexão na porta 23
(telnet). Nessa hora que entra o tcpd ou tcp wrapper, o inetd
antes de chamar o telnetd, chama o tcpd que por sua vez chama
o telnetd. Dessa forma nada muda para o usuário e nada
muda para o lado servidor. Os programas continuam rodando da
mesma forma que rodavam antes `e o usuário não nota
diferença nenhuma nos serviços oferecidos.
Entendendo o conceito acima fica fácil notar que o
tcpd pode muito bem fazer algumas verificações
antes de chamar o telnetd (do nosso exemplo). E é
exatamente isso que ele faz, ele loga a conexão usando o
syslogd (você sabe o que é, certo?), e consulta os
arquivos /etc/hosts.* para saber se aceita a conexão ou
não, mediante a configuração de regras
previamente estabelecidas.