Simule o OpenVPN “não cliente-cliente” usando iptables

1

Eu preciso configurar uma VPN multi-máquina com as seguintes características:

  • 1 hub (10.170.0.1) que é a base da VPN
  • 20 usuários (10.170.0.0/16)
  • 5 administradores (10.171.0.0/16)

A primeira parte, o hub e os 20 usuários, estão funcionando conforme necessário. Nesta configuração eu preciso:

  • Conecte-se do hub a todos os usuários
  • Conecte-se de todos os usuários ao hub
  • Rejeitar conexão entre usuários.

Configuração simples do OpenVPN sem usar o cliente para o cliente.

Agora eu quero adicionar os 5 administradores com algumas superpotências de conexão. Nesta nova configuração eu preciso:

  • Conecte-se dos administradores ao hub.
  • Conecte-se de todos os administradores a todos os usuários (talvez seja necessário restringir determinados administradores a determinados usuários).
  • Rejeitar conexão entre usuários e administradores (exceto os originados dos administradores).
  • Rejeitar conexão entre administradores.

Acho que, para obter essa granularidade de controle, preciso ativar o client-to-client no server.conf . Ao fazer isso eu já tenho usuários (170.0.0 / 16) e administradores (10.171.0.0/16) falando. O problema é que preciso impor as restrições acima. Tenho certeza que isso deve ser um problema do iptables, mas eu tenho tentado por mais horas que eu gostaria de admitir e não posso fazer isso funcionar. Até agora, meu iptables.conf é assim:

*filter
:INPUT DROP [1000:900000]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -s 127.0.0.1 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 389 -j ACCEPT
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 13 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -m icmp --icmp-type 30 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.170.0.0/16 -d 10.170.0.1 -j ACCEPT
-A FORWARD -s 10.170.0.0/16 -d 10.171.0.0/16 -j ACCEPT
-A FORWARD -s 10.170.0.0/16 -d 10.170.0.0/16 -j REJECT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable 
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
COMMIT

Acho que o forwards na mesma sub-rede é o problema ... mas nem sei por onde começar.

    
por Ricardo Marimon 27.07.2010 / 03:03

1 resposta

1

Isso pode ficar bastante complicado. A opção "client-to-client" no OpenVPN simplesmente atua como algo que de outra forma poderia ser feito com o roteamento, então eu realmente não usaria isso, já que isso lhe daria mais controle.
Quando um cliente se conecta usando o OpenVPN, isso cria efetivamente um túnel com sua própria sub-rede de quatro endereços. O endereço mais baixo é o endereço de rede, então você tem um endereço para cada um dos dois lados e, finalmente, o endereço de broadcast. Então, nesse caso, ativar o fluxo de tráfego dos administradores para os usuários, mas não o contrário, é uma questão simples de colocar uma regra como essa:

-A FORWARD -s 10.170.0.0/16 -d 10.171.0.0 -m state --state NOVO, ESTABELECIDO, RELACIONADO -j ACCEPT
-A FORWARD -s 10.171.0.0/16 -d 10.170.0.0 -j ACCEPT

Isso garante que qualquer tráfego dos usuários de volta para os administradores seja aceito somente se for em resposta a um pacote que tenha sido enviado de outra forma. Então isso corrige isso. Você pode precisar de algumas regras de roteamento, também para isso, mas geralmente elas devem ser colocadas em funcionamento pelo daemon do OpenVPN automaticamente. Como você ainda não está usando "cliente-para-cliente", os administradores também não podem ver um ao outro.
Por enquanto, tudo bem. O problema agora é permitir conexões entre alguns administradores, mas não outros. Para isso, você provavelmente terá que estabelecer alocações de endereços pré-determinadas para cada máquina conectada à VPN e, em seguida, colocar regras de firewall específicas para ativar / desativar o tráfego entre elas (com base no modelo acima).

    
por 27.07.2010 / 12:26