vendredi 2 janvier 2015

WebVpn, Synology et compagnie

Application pratique du Webvpn : accès à un serveur NAS.


Il existe des applications qui le font et elles seront certainement plus simples à configurer. Cependant, en passant par un routeur vous augmentez les chances de survie de votre serveur sur le Net, d'une part car il ne sera pas en première ligne pour subir des attaques et d'autre part car vous allez pouvoir sécuriser votre routeur aux petits oignons

Mon matériel : un routeur CISCO 1841 et un serveur NAS Synology 212j.

L'atout majeur de ce routeur est tout d'abord son coût (40 euros sur ebay). On peut facilement obtenir de la mémoire (de la vielle DIMM de portable)  et il intègre un module physique de chiffrement, en claire les opérations WebVPN ne pèseront pas sur le processeur du routeur.


But du jeux : accéder aux répertoires partagés sur mon NAS de n'importe où.

J'annonce tout de suite qu' il ne sera pas question ici d'utiliser du port-forwarding : mon routeur beug ... à cause d'un certificat CISCO lié au lancement de l'application JAVA. 


Le principe

Ma box étant complètement débile, il n'est pas possible de configurer de redirection de ports dessus. J 'ai donc mis en place une DMZ pointant vers mon routeur. Cela signifie que la totalité du trafic entrant est redirigé vers celui-ci : on fait ça à la fin forcément. Je ne vous dis pas toutes les tentatives de connections que je voies avec des utilisateurs root, user et j'en passe. Attention à la force de vos mots de passe et à la configuration de vos line vty ... Pour ce qui est des boulets qui essaient d'accéder à mon NAS ... pfff !!!! arrêter de m’emmerder avec vos techniques débile merdiques :(

Pour des raisons pratiques sur mon LAN, mon routeur et mon NAS sont interconnectés via un switch. Et oui, ça marche quand même : nous ne sommes pas obligés de connecter le serveur derrière le routeur. Pas top pour la bande passante et design pourri me direz vous ? Pas faux mais si qqn sait comment configurer une route statique sur une tablette Archos ... je suis preneur !


La configuration

Si vous voulez trouvez votre Webvpn sur le net il va vous falloir une adresse IP fixe ou DynDNS. J'utilise la deuxième option via l'application de synology. Mon nom de domaine sera donc qqch.synology.me.

Notre routeur va s'authentifier auprès du client via un certificat qu'il va nous falloir créer. Ici j' utilise un certificat self-signed mais qui va répondre à l’identité de qqch.synology.me. Je suis face à un problème technique quand je créer mon certificat via SERVER 2012, à priori CISCO n'est pas son meilleur ami .... affaire à suivre ..... On doit installer son certificat sur chaque machine que l'on va utiliser pour se connecter. Avoir son certificat sur une clef USB n'est pas super pratique, on peut utiliser un serveur PKI tiers.

Nous allons exécuter une double authentification : la première pour se loguer sur le portail WebVPN et une deuxième pour se connecter au partage. Nous utilisons pour cela le service RADIUS du NAS. Plusieurs intérêts à cela : tout d'abord le compte utilisateur de connexion sur le Webvpn n'a absolument aucun droit sur le NAS et sur le portail. De plus, en utilisant un deuxième compte utilisateur nous pouvons spécifier des droits en lecture ou lecture/écriture ou rien du tout sur nos espaces partages. On sécurise, on sécurise ... le plus possible. Plus on en fait et mieux c'est, une connexion donnant accès à vos fichiers personnels dur Internet n'est vraiment pas à prendre à la légère. Vous devrez gérer ces autorisations sur le serveur, vous n'avez pas la possibilité de le faire dans la configuration du routeur.

Configuration du routeur

Ici pas de soucis, et si il y en a, merci de vous référer aux anciens posts.
Attention tout de même au nom fqdn !!!

Vous comprendrez bien ici que tous ce qui peut toucher aux ACL, aux services à déactiver est manquant ...

On configure le nom du routeur, le nom de domaine et on créer une clef RSA avec ici un label Webvpn.

crypto pki trustpoint Webvpn
 enrollment selfsigned
 fqdn none
 subject-name CN=qqch.synology.me
 revocation-check crl
 rsakeypair Webvpn 2048
 hash sha512

Vous remarquerez ici que je spécifie le hash à 512. Par défaut le protocole utilisé est du md5. Le hic est que votre navigateur vous enverra une notification de sécurité comme quoi votre certificat est pourri moisi si vous le laissez par défaut !
On oublie pas de faire un crypto pki enrol nom du serveur pour que notre routeur genere des certificats.


webvpn gateway Acces
 hostname Acces
 ip address 192.168.0.9 port XXX
 ssl encryption rc4-md5
 ssl trustpoint Webvpn
 logging enable
 inservice

Rien de particulier ici, si ce n'est l'encryption utilisée. On DOIT spécifier RC4-md5 même si ce n 'est pas la plus forte : vous pouvez remercier Windows. Pour ceux qui utilisent d'autres systèmes, je vous invite à tester !


Comment votre routeur trouve les fichiers partagés sur votre réseau ? Il utilise le système tout pourri Netbios ... Le gros glop est que vous devez avoir un serveur Wins qui tourne ! Pour les heureux possesseurs d'un synology, pas de soucis : il tourne d'office.

Nous allons maintenant créer un contexte. Il peut y en avoir plusieurs selon vos choix de configuration.

webvpn context Home
 ssl authenticate verify all
 aaa authentication list Distant
 gateway Acces
 max-users 5
 logging enable
 inservice


On spécifie dans le contexte bon nombre d'options générales dont la manière d'authentifier les utilisateurs. Ici j'utilise une aaa "Dsitant" qui fait référence à une authentification Radius via le NAS.

On configure l @IP de notre serveur Wins :

nbns-list "Server"
   nbns-server 192.168.0.20

Nous pouvons enchaîner sur la configuration des différents partages :

cifs-url-list "NAS"
   url-text "Partage_Priv" url-value "cifs://192.168.0.20/partage"
   url-text "Video" url-value "cifs://192.168.0.20/video"
   url-text "Zic" url-value "cifs://192.168.0.20/music"
   url-text "Partage_Publique" url-value "cifs://192.168.0.20/Publique"

Le champs url-text est la valeur affichée dans le navigateur. Url-value spécifie le chemin pour trouver le partage.

Passons maintenant à la configuration des policies :

policy group Acces
   cifs-url-list "NAS"
   nbns-list "Server"
   functions file-access
   functions file-browse
   functions file-entry


Nous avons en résumé :



webvpn gateway Acces
 hostname
Acces 
 ip interface FastEthernet0/1 port 443 (si utilisation de DHCP sur l'interface)
 ssl encryption rc4-md5
 ssl trustpoint
Webvpn 
 logging enable
 inservice
 !

 !
webvpn context Home
 ssl authenticate verify all
 !
  !

nbns-list "Server"
   nbns-server 192.168.0.20
 !


cifs-url-list "NAS"
   url-text "Partage_Priv" url-value "cifs://192.168.0.20/partage"
   url-text "Video" url-value "cifs://192.168.0.20/video"
   url-text "Zic" url-value "cifs://192.168.0.20/music"
   url-text "Partage_Publique" url-value "cifs://192.168.0.20/Publique"
 !

policy group Acces
   cifs-url-list "NAS"
   nbns-list "Server"
   functions file-access
   functions file-browse
   functions file-entry
 virtual-template 1
 aaa authentication list
Distant
 gateway
Acces
 max-users 5
 logging enable
 inservice


Voilà la configuration du routeur. Si jamais le port-forwarding fonctionne, je vous promet un autre POST !

Export du certificat

N'oubliez pas d'exporter le certificat du routeur sur votre station et d'installer celui-ci dans les Autorités de certification racine.
Le plus simple pour obtenir une copie de certificat est d'utiliser le navigateur Firefox.

Pour le NAS

Le service de partage de fichier doit être activé en fonction de votre système :


Chose pratique, en activant le journal de partage on peut voir qui à fait quoi

Divers :
Configurer le service radius du NAS comme un Radius windows Fournissez une clef secrète partagée entre votre routeur et votre NAS et bastaN'oubliez pas de créer deux utilisateurs : un sans accès aux répertoires qui va uniquement se loguer au porta et l'autre qui va accéder au partage

En cas de soucis, n'hésitez pas à demander

Bon clic à tous,

Aucun commentaire:

Enregistrer un commentaire