J'ai un ordinateur derrière un routeur avec une configuration de redirection de port. Le port 22 pour SSH fonctionne parfaitement. Je peux me connecter et tout. Ce que j'essaie de faire est de laisser ce PC se connecter à un VPN et autoriser uniquement le trafic sur un réseau local ou via la connexion VPN (pour un accès Internet). Cela fonctionne aussi très bien. Dès que la connexion VPN est interrompue, le PC n’est plus connecté à Internet. Maintenant, je fais cela avec IPTABLES, le problème est que je n'arrive pas à faire en sorte que le SSH entrant fonctionne depuis des sources externes via la redirection de port du routeur. Je suis capable de SSH au PC à partir du réseau local.
Voici ce que j'ai essayé:
# Allow traffic to VPN SERVER
sudo iptables -A INPUT -s $REMOTE_IP -j ACCEPT
# Allow ssh traffic
iptables -A INPUT -i eth1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
# Allow local traffic.
sudo iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT
sudo iptables -A INPUT -s 172.16.0.0/12 -j ACCEPT
sudo iptables -A INPUT -s 192.168.0.0/16 -j ACCEPT
# Disallow everything else.
sudo iptables -A INPUT ! -i tun+ -j DROP
# Allow traffic from VPN SERVER.
sudo iptables -A OUTPUT -d $REMOTE_IP -j ACCEPT
# Allow local traffic.
sudo iptables -A OUTPUT -d 10.0.0.0/8 -j ACCEPT
sudo iptables -A OUTPUT -d 172.16.0.0/12 -j ACCEPT
sudo iptables -A OUTPUT -d 192.168.0.0/16 -j ACCEPT
# Disallow everything else.
sudo iptables -A OUTPUT ! -o tun+ -j DROP
sudo openvpn --config client.cfg --auth-user-pass client.cred --daemon
Voici ma sortie iptables -vL -n: (Remplacé le serveur VPN par XX.XX.XX.XX)
Chain INPUT (policy ACCEPT 25674 packets, 4792K bytes)
pkts bytes target prot opt in out source destination
78848 11M ACCEPT all -- * * XXX.XXX.XXX.XXX 0.0.0.0/0
3176 318K ACCEPT tcp -- eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW,ESTABLISHED
0 0 ACCEPT all -- * * 10.0.0.0/8 0.0.0.0/0
0 0 ACCEPT all -- * * 172.16.0.0/12 0.0.0.0/0
2517 231K ACCEPT all -- * * 192.168.0.0/16 0.0.0.0/0
35 12374 DROP all -- !tun+ * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 32187 packets, 4374K bytes)
pkts bytes target prot opt in out source destination
3681 2443K ACCEPT tcp -- * eth1 0.0.0.0/0 0.0.0.0/0 tcp spt:22 state ESTABLISHED
70697 10M ACCEPT all -- * * 0.0.0.0/0 XXX.XXX.XXX.XXX
0 0 ACCEPT all -- * * 0.0.0.0/0 10.0.0.0/8
0 0 ACCEPT all -- * * 0.0.0.0/0 172.16.0.0/12
27 5787 ACCEPT all -- * * 0.0.0.0/0 192.168.0.0/16
2265 150K DROP all -- * !tun+ 0.0.0.0/0 0.0.0.0/0
Et oui, si je fais un ifconfig, je n'ai qu'un eth1 et pas un eth0, donc ce n'est pas ça.
Voici également la sortie de netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 XX.XXX.242.128 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth1
XX.XXX.193.107 192.168.1.1 255.255.255.255 UGH 0 0 0 eth1
XX.XXX.242.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
128.0.0.0 XX.XXX.242.128 128.0.0.0 UG 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
iptables -vL
, voyez-vous un nombre de paquets pour les règles 4, 5, 6 et 9, 10, 11? Toute personne de votre serveur VPN a un accès complet à votre hôte. Pouvez-vous montrer unroute -n
ounetstat -rn
?