Para proteger nosso servidor temos como opções um Firewall e SELinux, há muitas maneiras de tornar nossos servidores mais seguros contra ataques, para isso podemos também utilizar TCP Wrapper. Este recurso é ativado automaticamente.
Pode ser utilizado para permitir ou bloquear acesso a diversos serviços utilizando regras simples em 2 arquivos, /etc/hosts.allow e /etc/hosts.deny.
No arquivo /etc/hosts.allow temos as regras de liberação do cliente ao serviço especificado, e no /etc/hosts.deny as regras de bloqueio do cliente ao serviço. As regras contidas em /etc/hosts.allow tem precedência sobre /etc/hosts.deny.
Caso o cliente tente acesso a algum serviço que não esteja listado nesses arquivos, o mesmo terá acesso garantido.
Formato:
lista_serviços : lista_clientes [ : comandos_shell ]
lista_serviços – Quais os serviços, ou coringas, serão afetados pela regra. Os serviços podem ser separados por vírgulas. Pode ser utilizado o coringa ALL para todos os serviços.
lista_clientes – Uma lista de um ou mais hostnames, endereços, padrões ou coringas para casar com a regra. A lista pode ser separada por espaço ou vírgula. Com excesão dos netgroups NIS (YP), todas as checagens de controle de acesso não diferenciam maiúsculas e minúsculas.
CORINGAS
ALL – Todos
LOCAL – Coincide com qualquer host cujo nome não contém um caractere de ponto.
UNKNOWN – Corresponde a qualquer usuário cujo nome é desconhecido, e combina com qualquer host cujo nome ou endereço é desconhecido. Esse padrão deve ser usado com cautela, pois os servidores de nomes podem apresentar falha temporária.
KNOWN – Corresponde a qualquer usuário cujo nome é conhecido, e combina com qualquer host cujo nome e endereço são conhecidos. Esse padrão deve ser usado com cautela pois os servidores de nomes podem estar indiponíveis temporariamente.
PARANOID – Coincide com qualquer host cujo nome não corresponde ao seu endereço. Normalmente tcpd é compilado com -D PARANOID (esse é o padrão), nesse modo a conexão cai antes mesmo de ser analisada qualquer tabela de controle de acesso.
OPERADOR
EXCEPT – Permite a utilização de exceção, tanto em lista_serviços quanto em lista_clientes. Esta técnica permite a utilização de apenas um dos arquivos para liberação ao serviços especificados.
COMANDOS DO SHELL
Se a regra casar com padrão especificado e houver um comando após a lista_clientes, alguns dados da conexão serão repassados para as macros precedidas por %, a listagem a seguir lista algumas das macros utilizadas:
%a (%A) – O endereço do cliente (servidor).
%c – Informações do cliente, tais como: usuário@host, usuário@IP.
%d – O nome do daemon.
%h (%H) – O nome ou endereço do cliente (servidor).
%n (%N) – O hostname do cliente (servidor). Exibe “unknown” se o mesmo não estiver disponível e “paranoid” se o endereço e o host não correspondem.
%p – O PID do precesso do serviço (daemon).
%s – Informações do servidor: daemon@host, daemon@IP.
%u – O nome do usuário, ou exibe “unknown” se não puder obter o nome.
OBS.: A entrada (stdin), saída padrão (stdout) e de erro (stderr) são conectadas a /dev/null. Especifique um ‘&’ no final do comando, se você não quiser esperar até que tenha terminado.
ARMADILHA
O exemplo a seguir permite que solicitações TFTP de hosts no domínio local (note o ponto inicial). Os pedidos de outros hosts são negados. Em vez de o arquivo solicitado, um finger é enviado para o host agressor. O resultado é enviado para o superusuário.
1 2 |
/etc/hosts.allow in.tftpd: LOCAL, .meu.dominio |
1 2 3 |
/etc/hosts.deny in.tftpd: ALL: (/usr/sbin/safe_finger -l @%h | \ /usr/bin/mail -s %d-%h root) & |
Caso você utilize um servidor finger, o comando safe_finger vem com tcpd wrapper e deve ser instalado em local adequado. Isso limita os danos possíveis a partir dos dados enviados pelo servidor finger padrão.
Outros Exemplos:
1 2 3 |
/etc/hosts.allow ALL : .exemplo.com.br telnetd : 192.168.0.0/255.255.255.0 EXCEPT 192.168.0.79 |
Na primeira linha o domínio exemplo.com.br tem acesso a todos os serviços. Na próxima linha o serviço telnet só pode ser acessado pelo rede 192.168.0.0/24 exceto pelo endereço 192.168.0.79
1 2 3 |
/etc/hosts.deny ALL EXCEPT in.tftpd : .exemplo.com.br telnetd : ALL EXCEPT 192.168.1.10 |
Na primeira linha todos os serviços exceto o ftp estão liberados para o domínio exemplo.com.br. Na segunda o serviço telnet está negado a todos os hosts exceto para o endereço 192.168.1.10
Fonte: manpage
Espero que tenham gostado do post e aproveitem para assinar a nossa newsletter.