hosts.allow: Não é necessário ao usar o iptables?

1

Estou tentando configurar a caixa que estou usando como gateway / proxy / firewall para permitir o mascaramento de IP e, finalmente, alternar o uso de um proxy. É um sistema de squeeze debian.

Atualmente, meu arquivo hosts.allow está vazio (e hosts.deny diz ALL: PARANOID ), porque o squid permite solicitações nas portas necessárias de qualquer maneira (e também, eu posso fazer ssh na caixa).

O iptables funciona da mesma maneira, ou seja, o arquivo hosts.allow permanece vazio quando o iptables está configurado corretamente?

    
por zebonaut 22.02.2013 / 20:29

3 respostas

3

Os arquivos hosts.* não são necessários ao usar o iptables. Ambos têm a capacidade de negar / permitir o acesso, mas funcionam de maneiras muito diferentes.

       Network
          |
       IPTables
         /  \  
TCPWrapper  Squid/Daemon
  Daemon

O Iptables é uma estrutura de filtragem de pacotes de base do kernel que opera em uma camada abaixo de tcpwrappers. Se você DROP ou REJEITA algo com iptables , o pacote nunca alcançará o espaço do usuário. Não importa qual seja o programa ou como está escrito, o pacote nunca existirá do ponto de vista dele.

Programas que usam TCPwrappers e sua funcionalidade hosts.* são executados no espaço do usuário e precisam ser construídos com libwrap para fazer uso dos arquivos, ou emulá-lo lendo os arquivos hosts e fechando conexões que eles recebem de clientes negados.

O Squid não lê os arquivos hosts.deny|allow . Ele tem sua própria implementação para o controle de acesso especificado com acl's em squid.conf . Da mesma forma que você pode configurar o controle de acesso do squids no topo do iptables, você pode usar o hosts.deny / allow no topo do iptables. Essas regras só entram em jogo se o iptables permitir o tráfego. Não que muitos programas suportem tcp_wrappers atualmente, inetd , o super servidor, era o principal um bit que está lentamente desaparecendo.

    
por 22.02.2013 / 23:28
5

Resposta curta: sim. TCPwrappers (que é o que consulta hosts.allow e hosts.deny) é um método de controle de acesso separado do iptables, usando um não requer ou impede o uso do outro. A única preocupação será garantir que o acesso necessário seja permitido através de ambos, se ambos estiverem ativos no sistema.

    
por 22.02.2013 / 21:23
3

A razão pela qual você ainda é capaz de se conectar ao SSH com hosts.allow vazio é provavelmente porque por padrão o tcpwrappers permite todas as conexões a menos que você as negue explicitamente.

Uma forma de obter o comportamento oposto (padrão negar) é adicionar a seguinte linha a /etc/hosts.deny (cuidado para não se desligar!)

ALL: ALL


O Tcpwrappers (hosts.allow e hosts.deny) não funciona para todos os serviços de rede, como o iptables faz.

Você pode ver muitas vezes se um daemon suporta tcpwrappers, verificando se ele está vinculado ao libwrap, desta forma:

$ ldd /usr/sbin/sshd | grep libwrap
    libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f389b5a2000)

Se não houver saída, é provável que tcpwrappers não seja suportado por esse daemon.

Em uma nota final, acho que uma configuração muito comum é apenas usar o iptables e deixar os tcpwrappers não configurados.

    
por 23.02.2013 / 00:29