Filtrando pacotes VPN Strongswan de entrada com iptables

1

Estou usando um servidor VPN Strongswan em uma máquina do Debian Squeeze. Os clientes VPN de entrada obtêm um IP da sub-rede 192.168.99.0/24.

Como estou usando essa VPN principalmente para ter criptografia ao usar WLANs não criptografadas, estou fazendo uma fonte NAT na Internet usando o iptables. (Eu prefiro fonte NATing porque o servidor tem um endereço IPV4 estático.)

No momento, estou usando o seguinte comando iptables

# used for StrongSWAN
iptables -t nat -I POSTROUTING -s 192.168.99.0/24 -o eth0 -j SNAT --to-source <public IP adress of server>

Minha pergunta é: ao usar esta regra, todo tráfego recebido dessa sub-rede 192.168.99.0/24 agora é aceito e NATted. Eu gostaria de ser mais específico que apenas o tráfego que entrou no servidor através deste túnel VPN é aceito por esta regra.

Em uma configuração clássica de roteador com dois dispositivos de rede, eu verificaria se o dispositivo de entrada conseguiria isso. Existe algo equivalente no Strongswan (por exemplo, dispositivos de rede virtual)?

Como posso filtrar os pacotes que chegaram ao servidor através do túnel para que apenas esses pacotes sejam NAT?

    
por GorillaPatch 15.12.2012 / 08:27

1 resposta

5

Você deve dar uma olhada no módulo de política do iptables, que corresponde aos pacotes com base em sua relação com as diretivas IPsec (consulte man 8 iptables ou man 8 iptables-extensions para obter detalhes).

Como o módulo é melhor aplicado, realmente depende de como o resto do seu firewall está configurado e quais são seus requisitos exatos. Por exemplo, configurar a política padrão (firewall) para as cadeias INPUT e FORWARD para DROP (atenção ao fazer isso via SSH, como você poderia bloquear você da sua máquina) e, em seguida, usar o script updown padrão do strongSwan ( leftfirewall=yes ) basicamente fará tudo relacionado aos túneis IPsec para você. O script adicionará automaticamente as regras apropriadas de entrada e encaminhamento (usando o módulo de política) para permitir somente tráfego de / para a sub-rede encapsulada através de túneis IPsec (na verdade, para road-warriors somente IPs atribuídos serão permitidos, nem mesmo a sub-rede inteira) .

Se você não quiser fazer o acima, adicione algumas regras manualmente. Com as opções a seguir, você pode combinar os pacotes que chegaram por meio de qualquer conexão IPsec (use --dir in|out para especificar a direção):

-m policy --dir in --pol ipsec

Portanto, se você simplesmente deseja descartar pacotes com um IP de origem da sub-rede que NÃO chegou via IPsec, você pode adicionar as seguintes regras:

iptables -A INPUT -s 192.168.99.0/24 ! -m policy --dir in --pol ipsec -j DROP 
iptables -A FORWARD -s 192.168.99.0/24 ! -m policy --dir in --pol ipsec -j DROP
    
por 23.12.2012 / 15:12