Bonjour,
Tout d'abord je voulais remercier Gothax et Oniric pour ce tuto.
Mais je voudrais prévenir ceux qui ne l'auraient pas déjà compris qu'utiliser le client VPN dans ce contexte rend votre NAS complètement accessible depuis Internet sans filtrage IP.
Si vous êtes prudent vous avez surement paramétré votre boxADSL (ou autre) pour qu'elle ne translate que quelques ports entrants restreints vers votre NAS.
Vous avez également dû paramétrer correctement le firewall intégré du Synology pour le protéger de tentatives d'accès indésirables, y compris depuis le LAN.
Mais le fait d'utiliser le client VPN décrit dans le tuto ci-dessus (ou tout autre fournisseur VPN) va mettre à mal toutes ces protections. En effet une fois le tunnel VPN monté vers votre fournisseur, votre Synology se retrouve avec une nouvelle interface logique (tun0) qui prend l'adresse IP publique fournie par le fournisseur VPN.
Et le firewall du Synology ne s'applique par à cette nouvelle interface (il ne s'applique qu'a eth0). Quand à votre boxADSL, elle est complètement transparente puisque toutes les connexions faites sur l'adresse IP du VPN passent dans le tunnel, sur lequel la box n'a pas d'action filtrante.
Pour un peu plus de technique, vous pouvez voir vos interfaces avec la commande : ifconfig
Voir vos règles firewall du NAS avec : iptables -L -v
Vous verrez alors que vos règles firewall ne s'appliquent que sur l'interface eth0 et qu'il n'y en a aucune sur tun0.
Pour confirmer, utilisez un scanner IP sur votre adresse VPN publique.
Regardez ce que j'ai trouvé sur une adresse IP proche de celle que m'a attribué VPNtunnnel.se :
> nmap -Pn -v 5.254.139.XXX
Scanning dhcp-5-254-139-XXX.cust.vpntunnel.se (5.254.139.XXX) [1000 ports]
Discovered open port 80/tcp on 5.254.139.XXX
Discovered open port 139/tcp on 5.254.139.XXX
Discovered open port 445/tcp on 5.254.139.XXX
Discovered open port 21/tcp on 5.254.139.XXX
Discovered open port 22/tcp on 5.254.139.XXX
Discovered open port 25/tcp on 5.254.139.XXX
Discovered open port 5432/tcp on 5.254.139.XXX
Discovered open port 5001/tcp on 5.254.139.XXX
Discovered open port 50001/tcp on 5.254.139.XXX
Discovered open port 631/tcp on 5.254.139.XXX
Discovered open port 50002/tcp on 5.254.139.XXX
Discovered open port 3493/tcp on 5.254.139.XXX
Discovered open port 5000/tcp on 5.254.139.XXX
Discovered open port 3689/tcp on 5.254.139.XXX
Discovered open port 49152/tcp on 5.254.139.XXX
Discovered open port 515/tcp on 5.254.139.XXX
Completed SYN Stealth Scan at 20:39, 31.76s elapsed (1000 total ports)
Nmap scan report for dhcp-5-254-139-XXX.cust.vpntunnel.se (5.254.139.XXX)
Host is up (0.21s latency).
Not shown: 983 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
515/tcp open printer
631/tcp open ipp
1720/tcp filtered H.323/Q.931
3493/tcp open nut
3689/tcp open rendezvous
5000/tcp open upnp
5001/tcp open commplex-link
5432/tcp open postgresql
49152/tcp open unknown
50001/tcp open unknown
50002/tcp open iiimsf
Evidemment c'était un Syno, en DSM 4.0. J'ai envoyé un petit message sur son imprimante pour prévenir cet utilisateur inconscient.
Si vous êtes un minimum précautionneux, cela devrait vous alarmer. Il est donc nécessaire de vous faire un petit script pour iptables pour limiter les ports en écoute sur l'interface tun0.
Autrement dit, réduire l'exposition de votre NAS pour ceux qui tenteront de le joindre en remontant dans le tunnel VPN.
Voici un script extrêmement simple qui n'ouvre que les ports pour le tracker BitTorrent du download station. A vous d'adapter le script en fonction de vos besoins.
#!/bin/sh
#
iptables="/sbin/iptables"
### Ouverture des deux ports entrant pour BT ###
$iptables -A INPUT -i tun0 -p tcp --destination-port 6881 -j ACCEPT
$iptables -A INPUT -i tun0 -p udp --destination-port 45678 -j ACCEPT
### On interdit tout autre port entrant ###
$iptables -A INPUT -i tun0 -p tcp -j DROP
$iptables -A INPUT -i tun0 -p udp -j DROP
$iptables -A INPUT -i tun0 -p icmp -j DROP
Ce script fonctionne très bien en le lançant à la main une fois le tunnel VPN monté.
Mais idéalement il faudrait que ce script s'active automatiquement quand on monte le tunnel VPN, ou quand le tunnel VPN se remonte tout seul suite à une rupture accidentelle.
J'ai fait quelques tests à la recherche de cet automatisme, mais ils n'ont pas été concluants. Si quelqu'un voit comment faire pour automatiser l'exécution du script avec le montage du VPN je suis preneur.