iptables bloqueia somente o OpenVPN na inicialização do servidor

1

Atualmente, estou no processo de configuração do OpenVPN em vários datacenters no Linode. A configuração do OpenVPN está funcionando muito bem e agora estou me concentrando em configurar meu firewall para que meus IPs públicos e privados fornecidos pela Linode sejam protegidos.

No entanto, parece que estou tendo um problema com isso. No meu servidor VPN, quando configuro meu firewall e reinicializo o servidor VPN, o firewall é carregado na inicialização automaticamente, no entanto, nenhum dos meus clientes VPN parece conseguir fazer ping no servidor VPN (localizado em 10.8.0.1 ). Quando eu derrubar meu firewall no servidor VPN ( iptables -F ), os clientes são capazes de fazer ping no servidor VPN. Quando eu restabelecer meu firewall no servidor ( iptables-restore < /etc/iptables.up.rules ), os clientes ainda poderão executar ping no servidor VPN.

Eu diria que o firewall bloquearia ou não e não consigo descobrir por que esse comportamento ocorre.

Estes são meus iptables no servidor VPN:

*filter

# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
# You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows SSH connections
#
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
#
-A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT

# prevent attacks on port 22.
-I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
-I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 90 --hitcount 4 -j DROP


# OpenVPN
-A INPUT -i eth0:0 -m state --state NEW -p udp --dport 1194 -j ACCEPT
-A INPUT -i eth0:1 -m state --state NEW -p udp --dport 1194 -j ACCEPT

# Allow TUN interface connections to OpenVPN server
-A INPUT -i tun+ -j ACCEPT

# Allow TUN interface connections to be forwarded through other interfaces
-A FORWARD -i tun+ -j ACCEPT
-A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT

COMMIT

# NAT the VPN client traffic to the internet
*nat

-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

COMMIT
    
por Luke 08.01.2015 / 00:46

1 resposta

2

O firewall não bloqueará conexões VPN já estabelecidas porque você tem a seguinte regra no topo:

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Isso significa que conexões que já estão no estado ESTABLISHED (do ponto de vista do módulo conntrack do netfilter) continuarão passando.

Além disso, o mais provável é que sua INPUT chain tenha uma "política" de ACCEPT ; é por isso que fazer iptables -F abriu seu firewall, permitindo que o OpenVPN faça a conexão.

Observe que, mesmo quando as regras do netfilter são liberadas, as conexões ainda estão sendo rastreadas.

Em resumo, o que aconteceu foi:

  1. Tentativa de conexão do OpenVPN bloqueada pelo firewall
  2. As regras foram liberadas
  3. O OpenVPN pode se conectar == > transições de estado para ESTABLISHED
  4. As regras foram restabelecidas
  5. O tráfego do OpenVPN pode ser retomado porque o estado já é ESTABLISHED
por 09.01.2015 / 11:47