Como forçar o tráfego de usuários VPN a passar pelo proxy SOCKS5?

1

Eu tenho um Raspberry Pi que estabelece um proxy SSH para um servidor remoto (VPS) e abre uma porta no Pi para que eu possa usá-lo como um proxy SOCKS. Este é o comando que eu uso para estabelecer o túnel:

ssh -D 1080 -f -C -q -N user@hostname

Isso mostra como deve funcionar:

                        ______________________________
                       |                              |
                       |            Client            |
                       |______________________________|
                                       |
                                       | L2TP over IPSEC
                       ________________|_______________ __ 
                      |                                |  |
                      |       VPN (192.168.1.XXX)      |  |
                      |________________________________|  |
                       ________________|_______________   |-RaspberryPi
                      |                                |  | 
                      |    SOCKS5 (127.0.0.1:1080)     |  |
                      |________________________________|__|
                                       |
                                       | SSH tunnel
                       ________________|________________
                      |                                 |
                      |         VPS (Amazon EC2)        |
                      |_________________________________|
                                       |
                                      / \
                                     /   \
                                  the internet 

Estas são as minhas tabelas de IP:

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.42.0/24 -o eth+ -j MASQUERADE
-A POSTROUTING -s 192.168.43.0/24 -o eth+ -m policy --dir out --pol none -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol none -j DROP
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m multiport --dports 500,4500 -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol ipsec -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -j DROP
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -i eth+ -o ppp+ -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ppp+ -o eth+ -j ACCEPT
-A FORWARD -s 192.168.42.0/24 -d 192.168.42.0/24 -i ppp+ -o ppp+ -j ACCEPT
-A FORWARD -d 192.168.43.0/24 -i eth+ -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.43.0/24 -o eth+ -j ACCEPT
-A FORWARD -j DROP
COMMIT

O script " setup-ipsec-vpn " foi usado para fazer a VPN.

Então, minha pergunta é: Como posso alterar essas tabelas de IP para eliminar todos os pacotes de saída dos clientes VPN, a menos que esteja usando o proxy SOCKS5 no Raspberry Pi (: 1080)

    
por user3573987 09.04.2017 / 14:17

1 resposta

0

A resposta depende, em parte, de você configurar seus clientes.

Em outras palavras, você pretende que o proxy SOCKS seja explícito ou transparente?

Se você puder configurar seus aplicativos clientes para usar um proxy explícito, ele deverá ser bastante simples (embora você queira que seu SOCKS ouça na interface VPN - ou crie uma regra DNAT).

-A INPUT -s 192.168.1.0/24 -d 192.168.1.1 -m tcp -p tcp --dport 1080 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -j DROP
-A FORWARD -s 192.168.1.0/24 -j DROP

Se você quisesse ter um proxy transparente, acho que pode valer a pena considerar a introdução do haproxy.

Este haproxy A postagem do blog fornece uma visão geral de como configurar a vinculação transparente, o que parece funcionar em seu caso de uso.

Nesse caso, você pode achar mais fácil ter SSH no modo de túnel do que SOCKS (ou adicionar outra conexão VPN entre Pi e gateway).

A regra específica que está causando o seu 'problema' agora é, eu acho, esta:

-A FORWARD -i ppp+ -o eth+ -j ACCEPT

Em geral, parece que você pode querer reescrever suas regras de firewall para obter o que deseja.

    
por 09.04.2017 / 14:43