Guide pratique des tunnels crypt*s utilisant SSH et MindTerm Duane Dunston <[1]duane@duane.yi.org> Revision History Revision 1.01 2001-06-13 Revised by: PDD Format de date modifi* (YYYY-MM-DD) Ce document d*crit comment utiliser SSH et le programme Java MindTerm pour cr*er des tunnels de type VPN rapides et s*curis*s sur des r*seaux non s*curis*s. -------------------------------------------------------------------------- Table of Contents 1. [2]Introduction 1.1. [3]Informations sur le copyright 1.2. [4]Avis de non responsabilit* 1.3. [5]Nouvelles versions 1.4. [6]Remerciements 1.5. [7]Vos impressions 2. [8]Avant de commencer 2.1. [9]Introduction * MindTerm et SSH 2.2. [10]MindTerm et SSH 2.3. [11]Comment MindTerm et SSH fonctionnent ensemble 3. [12]Installation du logiciel 4. [13]Configurations du serveur et du client 4.1. [14]Configuration du serveur 4.2. [15]Configuration du client 5. [16]Cr*ation des tunnels 6. [17]MindTerm sur le web 7. [18]Remarques sur la s*curit* 8. [19]Conclusion 9. [20]R*f*rences 10. [21]Foire Aux Questions 1. Introduction Pour diverses raisons, cette toute nouvelle version a pour nom de code la version release. De nouveaux noms de code feront leur apparition selon les directives des standards de l'industrie, pour mettre en valeur l'aspect "*tat de l'art" du document. J'ai *crit ce document suite * une suggestion qui m'avait *t* faite de fournir un mod*le * remplir pour faire de nouveaux guides pratiques. Ce mod*le a *t* fait * l'origine en extrayant la structure du guide pratique "Multi Disk HOWTO" qui est un guide pratique plut*t volumineux. Ce mod*le a ensuite *t* largement r*vis*. Ce petit rappel du contexte me permet de d*marrer mon introduction. Tout d'abord, un peu de jargon juridique. L'*volution r*cente montre que c'est assez important. -------------------------------------------------------------------------- 1.1. Informations sur le copyright Le copyright de ce document est (c) 2001 Duane Dunston et il est distribu* sous la licence Linux Documentation Project (LDP) mentionn*e plus bas. Il est demand* que toutes corrections et/ou commentaires soient communiqu*s au responsable de suivi du document. Sauf mention contraire, le copyright des Guides pratiques Linux (HOWTO) sont *tablis par leurs auteurs respectifs. Les Guides pratiques Linux peuvent *tre reproduits ou distribu*s en tout ou partie, sur tout support, qu'il soit physique ou *lectronique, tant que ce copyright reste mentionn* sur toutes les copies. Les redistributions commerciales sont autoris*es et encourag*es ; cependant, l'auteur aimerait *tre notifi* de toute distribution de la sorte. Toutes traductions, travaux d*riv*s ou tout ensemble de travaux incorporant un des Guides pratiques Linux doivent *tre explicitement couverts par ce copyright. Cela veut dire que nul n'est autoris* * produire un travail d*riv* d'un guide pratique et imposer des restrictions suppl*mentaires sur sa distribution. Des exemptions * ces r*gles peuvent *tres accord*es sous certaines conditions ; veuillez prendre contact avec le coordinateur du Guide pratique Linux * l'adresse donn*e plus bas. En bref, nous souhaitons promouvoir la diss*mination de cette information par autant de canaux que possible. Cependant, nous tenons * garder le copyright sur les guides pratiques, et aimerions *tre notifi*s de tout projet de redistribution des Guides pratiques HOWTO. Si vous avez des questions, veuillez contacter <[22]duane@duane.yi.org> -------------------------------------------------------------------------- 1.2. Avis de non responsabilit* Nous ne pouvons *tre tenus responsables du contenu de ce document. Vous utilisez les concepts, exemples et autres contenus * vos risques et p*rils. Comme il s'agit d'une nouvelle r*vision de ce document, il se peut qu'il y ait des erreurs et des inexactitudes qui peuvent bien s*r endommager votre syst*me. Agissez avec prudence, et bien que cela soit tout * fait improbable que vous le fassiez, l'auteur d*cline toute responsabilit* quant * cela. Sauf mention contraire, tous les copyrights sont d*tenus par leurs auteurs respectifs. L'utilisation d'un terme dans ce document ne doit pas *tre consid*r*e comme portant sur la validit* d'une quelconque marque commerciale ou de prestataire de service. La mention de produits ou de marques particuliers ne doit pas *tre consid*r*e comme une publicit* pour ce produit ou cette marque. Il vous est fortement conseill* d'effectuer une sauvegarde de votre syst*me avant toute installation d'envergure ainsi que des sauvegardes * intervalles r*guliers. -------------------------------------------------------------------------- 1.3. Nouvelles versions Ce document a subi de nombreuses r*visions puique je l'ai entam* comme projet final pour la certification SANS GIAC. Le num*ro de version le plus r*cent de ce document peut *tre trouv* sur la page principale du [23]Linux Documentation Project ou sur [24]la page de l'auteur. Si vous *tes comp*tent en la mati*re, ce serait bien de rendre le guide pratique disponible dans un certain nombre de formats. -------------------------------------------------------------------------- 1.4. Remerciements Dans cette version, j'ai le plaisir de remercier : Patti Pitz pour sa r*vision et son aide dans l'organisation de l'article. Doug Eymand pour le c*t* technique de la r*vision. -------------------------------------------------------------------------- 1.5. Vos impressions Vos r*actions sur ce document sont attendues avec le plus grand int*r*t. Sans vos propositions et vos contributions, ce document n'aurait jamais exist*. Je vous prie d'envoyer les points que vous voudriez ajouter, vos commentaires et vos critiques * l'adresse suivante : <[25]duane@duane.yi.org>. -------------------------------------------------------------------------- 2. Avant de commencer 2.1. Introduction * MindTerm et SSH De nos jours, les entreprises, les *coles, et les particuliers ont plus que jamais besoin de services r*seau s*curis*s. Le commerce en ligne s' accroissant, il y a plus de gens qui continuent * avoir acc*s * des donn*es sensibles d'entreprise au travers de r*seaux non s*curis*s. Les entreprises utilisent Internet comme moyen principal pour communiquer avec leurs employ*s en d*placement dans le pays et * l'*tranger, envoient des documents et des courriels non crypt*s * leurs agences et partenaires de par le monde ; ces communications peuvent *tre riches en informations que n'importe quelle personne mal intentionn*e peut potentiellement intercepter et vendre ou donner * une entreprise rivale. De bonnes politiques de s*curit* * la fois pour les utilisateurs et les administrateurs r*seau peuvent aider * minimiser les probl*mes li*s * l'interception ou au vol d'informations * l'int*rieur de leur organisation par des personnes mal intentionn*es. Dans cet article, nous allons aborder l'utilisation de Secure Shell (SSH) et MindTerm pour s*curiser la communication par Internet au sein d'une organisation. Les utilisateurs * domicile et les voyageurs d'affaires acc*dent * des donn*es d'entreprise et envoient des donn*es sensibles au travers de r*seaux non s*curis*s. Cela cr*e toute une cat*gorie de nouveaux probl*mes de s*curit* pour les administrateurs syst*me ("Securing the home office sensible and securely"), particuli*rement depuis qu'on estime que le nombre de personnes travaillant * domicile avec un acc*s haut d*bit "va plus que doubler, passant de 24 millions en 2000 * 55 millions en 2005" ("Broadband Access to Increase in Workplace"). Le nombre d'a*roports et d'h*tels offrant un acc*s Internet, en particulier un acc*s haut d*bit, est en croissance et on s'attend * ce qu' il grandisse dans l'avenir ("Broadband Moving On Up"). Ceci peut aussi laisser une porte grande ouverte * une personne mal- intentionn*e qui pourrait pirater ou voir le trafic Internet d'autres personnes et acc*der * leurs entreprises. Cette personne malintentionn*e peut ne pas *tre int*ress*e par les travaux de l'employ*, mais veut seulement acc*der * un serveur tr*s rapide pour lancer des attaques, stocker des fichiers ou pour un autre usage. Les hommes d'affaires courent de grands risques car ils ne savent pas qui surveille leur connexion Internet * l'h*tel, * l'a*roport ou n'importe o* pendant leur d*placement. Les utilisateurs des nouvelles connexions haut d*bit ne sont en g*n*ral pas form*s * des protocoles de s*curit* adapt*s, et certaines entreprises ne disposent pas du personnel pour aider les utilisateurs * domicile et les voyageurs d'affaires * mettre en place une connexion s*curis*e. Les particuliers et, *tonnamment, certaines entreprises ont cette mentalit* "Je n'ai rien qui pourrait int*resser les autres". Ceci est tr*s inqui*tant quand on consid*re la quantit* d'informations sensibles qui voyage * travers Internet depuis le domicile d'un employ* ou lors de d*placements. Ce qui est plus inqui*tant est la disponibilit* de logiciels gratuits pour effectuer ce genre d'attaques et la facilit* d' utilisation de ces logiciels. Dsniff ( [26]http://www.monkey.org/~dugsong/dsniff/) est un programme disponible gratuitement qui poss*de des fonctionnalit*s permettant * n'importe qui avec un ordinateur connect* * un r*seau de pirater un r*seau local et surveiller ce que les autres font et r*cup*rer des mots de passe et d'autres donn*es sensibles. Dans son livre "Secrets and Lies : Digital Security in a Networked World", Bruce Schneier affirme que la propagation des techniques et une des principales menaces * la s*curit* des r*seaux : "Internet est [...] un m*dia parfait pour propager des outils d'attaque qui marchent. Il suffit que le premier attaquant soit un sp*cialiste ; tous les autres peuvent utiliser son logiciel" (Schneier). L'objectif de cet article n'est pas de savoir comment s*curiser des ordinateurs, mais comment mettre en place des tunnels virtuels pour effectuer des communications s*curis*es, que ce soit pour envoyer des documents ou des courriels. Les voyageurs d'affaires devraient lire les articles de [27]Jim Purcell, Frank Reid, et Aaron Weissenfluh sur la s*curit* au cours des d*placements. Les utilisateurs * domicile ayant un acc*s haut d*bit devraient lire [28]l'article de Ted Tang pour avoir des informations sur la fa*on de s*curiser un ordinateur avec acc*s haut d*bit. Je recommanderais la nombreuse documentation disponible sur [29]www.sans.org, [30]www.securityfocus.com, ou [31]www.securityportal.com avec des tutoriels sur la fa*on de s*curiser vos ordinateurs et serveurs. Le moyen pour s'assurer que les donn*es sensibles sont transmises de mani*re rapide et s*curis*e est d'utiliser des m*thodes crypt*es de transmission de donn*es. Cela peut se faire par le moyen d'un courriel crypt*, en utilisant des services web s*curis*s de messagerie *lectronique, ou en *tablissant des tunnels crypt*s entre deux ordinateurs. De plus, un logiciel fiable et facile * installer doit *tre utilis* pour permettre aux utilisateurs inexp*riment*s d'*tablir rapidement des canaux de communication s*curis*s. [32]Secure Shell et [33]MindBright Technology's MindTerm de Taten Ylonen sont une solution rapide, facile d'utilisation et fiable pour s*curiser les communications sur Internet. -------------------------------------------------------------------------- 2.2. MindTerm et SSH SSH (Secure Shell) peut remplacer en toute s*curit* les programmes de connexion * distance et de transfert de fichiers comme telnet, rsh et ftp qui transmettent les donn*es en texte clair, lisible par toute personne. SSH utilise une m*thode d'authentification * cl* publique pour *tablir une connexion crypt*e et s*curis*e entre la machine de l'utilisateur et la machine distante. Une fois la connexion s*curis*e *tablie, les nom d'utilisateur, mot de passe et toutes les autres informations sont envoy*s au travers de cette connexion s*curis*e. Vous trouverez plus d'informations sur la fa*on dont SSH fonctionne, les algorithmes utilis*s et les protocoles impl*ment*s pour qu'il reste * un haut niveau de s*curit* et de confiance sur le site web de ssh : [34]www.ssh.com. L'*quipe OpenBSD a cr** un *quivalent libre qui s'appelle OpenSSH, disponible sur [35]www.openssh.com. Il conserve les normes *lev*es de s*curit* de l'*quipe OpenBSD et des sp*cifications de l' IETF pour Secure Shell (voir les [36]documents de travail Secure Shell de l'IETF), sauf qu'il utilise des algorithmes libres du domaine public. SSH est en train de devenir un standard pour l'administration de connexions * distance. Il a rencontr* un tel succ*s qu'il y a de nombreux ports SSH pour diverses plateformes, et des clients gratuits disponibles pour se connecter * un serveur SSH sous diverses plateformes *galement. Voir [37]http://linuxmafia.com/pub/linux/security/ssh-clients pour avoir une liste des clients. Securityportal.com a un excellent article en deux parties sur SSH et sur les liens vers des ports pour diff*rentes plateformes ; il est disponible sur [38]http://www.securityportal.com/research/ssh-part1.html. Il y a des programmes qui utilisent *galement un utilitaire qui s'appelle Secure Copy (SCP) en fond qui fournit les m*mes fonctionnalit*s qu'un client FTP complet, tels que [39]WinSCP et le [40]client Java SSH/SCP, qui a une interface SCP modifi*e pour MindTerm. Veuillez lire les licences avec pr*caution pour voir si vous avez l'autorisation l*gale de t*l*charger SSH dans votre pays. SSH est libre pour les *coles et les universit*s. Veuillez lire les licences disponibles sur le site web ssh.com. MindTerm est un client SSH *crit enti*rement en Java par MindBright Technology. Une des pratiques cl*s dans le d*veloppement de logiciels de s*curit* est une impl*mentation ad*quate des algorithmes sous-jacents et des protocoles utilis*s. MindBright Technology a tr*s bien impl*ment* le protocole SSH dans ce petit fichier d'application. C'est une archive autonome qui n*cessite juste d'*tre d*compress*e dans un r*pertoire de votre choix, et qui est pr*te * *tre utilis*e. Le client peut *tre utilis* comme programme autonome ou comme applet de page web, ou les deux. Il est disponible sur : [41]http://www.mindbright.se/download/. MindTerm est un client excellent et peu co*teux pour s*curiser les communications vers et depuis un emplacement local et distant. Le programme MindTerm situ* * l'adresse de t*l*chargement pr*c*dente est disponible gratuitement pour une utilisation non commerciale et dans l'enseignement, la possibilit* d'une utilisation commerciale *tant *tudi*e au cas par cas. Cependant, les modifications apport*es par [42]ISNetwork "sont bas*es sur le code source de MindTerm 1.21, que MindBright a publi* sous GPL [General Public Licence - voir [43]http://www.gnu.org]. Comme notre version a *t* publi*e sous GPL, vous pouvez l'utiliser gratuitement * des fins commerciales" (Eckels). L'impl*mentation d'ISNetworks a toutes les fonctionnalit*s du MindTerm de MindBright, except* qu'elle a une interface SCP plus sympathique pour des transferts de fichier plus conviviaux. MindTerm a quand-m*me l'inconv*nient de ne pas prendre en charge les tunnels UDP. Pour s*curiser le trafic UDP, un programme qui s'appelle Zebedee ( [44]http://www.winton.org.uk/zebedee/) fera tr*s bien l'affaire. Les programmes serveur et client de Zebedee sont disponibles pour les plateformes Windows et Linux. Il est distribu* gratuitement sous licence GPL *galement. Vous pouvez vous connecter aussi bien aux machines Windows que Linux avec Zebedee. MindTerm ne v*rifiera pas si votre syst*me est s*curis*. C'est aux administrateurs et aux utilisateurs de prendre le soin de s*curiser leurs syst*mes informatiques. Il est facile * impl*menter et il est tr*s efficace pour ce qui est de garder le haut niveau de s*curit* impl*ment* dans le protocole SSH. Nous verrons dans cet article * quel point cela est facile de mettre en place et d'*tablir des canaux de communication s*curis*s pour et par quasiment n'importe quel utilisateur. Les documents, courriels et autres communications de donn*es peuvent *tre envoy*s facilement et en toute s*curit* * des utilisateurs * l' autre bout du monde ou * quelques pas de l*. -------------------------------------------------------------------------- 2.3. Comment MindTerm et SSH fonctionnent ensemble SSH et MindTerm fonctionneront ensemble pour utiliser une technique appel*e redirection de port [port forwarding]. La redirection de port consiste * rediriger du trafic d'un h*te et un port donn*s, vers un autre h*te et port. En d'autres termes, l'application MindTerm va ouvrir un port sur la machine du client (machine locale) et toute connexion * ce port local est redirig*e vers l'h*te distant et son port d'*coute au travers d'une session SSH crypt*e. Le fait que la connexion soit accept*e ou pas d*pend du type de requ*te qu'on envoie * l'h*te distant. Par exemple, on ne redirigerait pas des requ*tes POP vers un h*te distant *coutant sur le port 21, car le port 21 est r*serv* aux requ*tes FTP. La redirection de port est *galement utilis*e pour permettre la connexion * un serveur situ* derri*re un pare-feu et/ou qui a une adresse IP priv*e. Essentiellement, cela s'appelle cr*er un r*seau virtuel priv* [Virtual Private Network] (VPN). Un VPN est "un r*seau de donn*es priv*es faisant usage de l' infrastructure de t*l*communications publique, en prot*geant la vie priv*e par l'emploi d'un protocole de tunnel et de proc*dures de s*curit*" ([45]www.whatis.com). La redirection de port ne peut *tre effectu*e qu'avec des services TCP. -------------------------------------------------------------------------- 3. Installation du logiciel Pour pouvoir suivre ce tutoriel, vous devrez installer quelques paquetages [packages]. Ce tutoriel part du principe que SSH est d*j* install* sur votre serveur ou station de travail. Si ce n'est pas le cas vous pouvez lire la documentation livr*e avec le paquetage SSH ou OpenSSH pour avoir des instructions d'installation pour votre plateforme. Pour les exemples suivants, OpenSSH a *t* install* sur un serveur RedHat 7.0 et sur une station de travail. OpenSSH a *t* install* sur RedHat 6.0 * 7.0 et fonctionne de la m*me fa*on. La machine client utilis*e dans ce tutoriel est une machine Windows 2000. Des stations de travail Windows 95/98, NT 4.0, NT 5.0, RedHat 6.0-7.0 ont toutes *t* test*es comme machines client et ont fonctionn* de la m*me fa*on. Entre parenth*ses, exactement la m*me archive JAR MindTerm a *t* utilis*e sur tous les syst*mes client test*s. * SSH ou OpenSSH * MindTerm * Client FTP - N'importe quel client FTP devrait marcher pour ce tutoriel. Ws-FTP et Leech-FTP sont les deux plus populaires pour Windows. * Netscape Communicator - ou n'importe quel autre client de messagerie devrait marcher. * Optionnel: [46]NTOP * Optionnel: [47]vlock -------------------------------------------------------------------------- 4. Configurations du serveur et du client 4.1. Configuration du serveur D'abord, assurez-vous que votre serveur est s*curis*. Bien que le trafic soit crypt* pendant qu'il circule sur Internet, il peut *tre renifl* si quelqu'un a un acc*s root sur la machine locale et utilise un programme tel que [48]ngrep pour renifler le trafic sur une machine locale. Par exemple, utilis*e conjointement avec le programme DSniff mentionn* plus haut, la commande suivante pourrait renifler tout le trafic sur le r*seau d'interface locale : ngrep -d lo. Cependant, la s*curisation du serveur n'entre pas dans le cadre de cet article. Nous utiliserons les services POP (port 110), IMAP (port 143), SMTP (port 25), VNC (Virtual Network Computing) (5901+), et NTOP (port 3000 par d*faut) pour cet exemple. Tout le trafic sera redirig* vers le port respectif de chaque service sur l'h*te distant o* tourne le serveur SSH. Tous les services *coutant sur l'h*te distant *coutent sur toutes les interfaces, * moins que le service soit li* * un port par d*faut ou qu'il soit configur* manuellement. Pour montrer * quel point cette technique de tunnel SSH est efficace, nous n'autoriserons que des services pr*cis * *couter sur l'interface locale. Cependant,vous n'avez pas * changer vos configurations de s*curit* courantes. Nous utiliserons tcp_wrappers, qui est install* par d*faut sur RedHat 7.0 (et les versions pr*c*dentes), pour nous connecter aux services r*seau. Dans le fichier /etc/hosts.deny, ajoutez la ligne suivante : ALL : ALL Et dans votre fichier /etc/hosts.allow ajoutez les lignes suivantes : sshd : ALL in.ftpd : 127.0.0.1 ipop3d : 127.0.0.1 imapd : 127.0.0.1 Avec ce param*trage, sshd (le serveur SSH) autorisera les connexions depuis n'importe quelle adresse IP. Les autres services n'autorisent les connexions que depuis l'interface locale. On peut v*rifier cela tout de suite en configurant un client de messagerie pour qu'il se connecte au serveur POP ou IMAP distant, et/ou un client FTP pour qu'il se connecte au serveur FTP. La connexion ne sera pas autoris*e. Il faudra *galement param*trer tout compte utilisateur devant avoir acc*s * ces services.(Note : le param*trage ci-dessus n'est utile que si les services sont pour un usage interne uniquement, et que les utilisateurs distants ont besoin d'acc*der * des services internes pour envoyer et recevoir des courriels ou transf*rer des fichiers. Les services peuvent *tre disponibles pour un usage publique et *tre crypt*s avec SSH et MindTerm.) En vue d'une utilisation de MindTerm sur le web pour cr*er des tunnels ou utiliser les fonctionnalit*s GUI de Secure Copy, un environnement d'ex*cution Java (JRE) devra *galement *tre install* sur le serveur o* tourne SSH. -------------------------------------------------------------------------- 4.2. Configuration du client La seule configuration n*cessaire pour le client est de s'assurer qu'un JRE est install* sur votre plateforme. Windows et MacOS 8 et plus ont d*j* un JRE install*. Il est recommand* d'installer le JRE de Sun sur Windows. IBM a une liste des ports des JRE des diff*rentes plateformes : [49]http://www-105.ibm.com/developerworks/tools.nsf/dw/java-devkits-byname , ainsi que Sun : [50]http://java.sun.com/cgi-bin/java-ports.cgi. (Vous n'avez pas besoin de tout le paquetage Java avec les d*bogueurs et les compilateurs, juste la machine virtuelle Java (JVM) pour lancer des applications Java.) De plus, pour le tutoriel qui suit, d*compressez l'archive MindTerm, impl*mentation MindBright ou ISNetwork, dans c:\mindterm pour Windows. -------------------------------------------------------------------------- 5. Cr*ation des tunnels MindTerm peut *tre d*marr* de plusieurs mani*res. Si vous avez JRE install*, alors vous pouvez double-cliquer sur le fichier d'application mindtermfull.jar. Une autre mani*re consiste * ouvrir une invite de commande DOS et * taper la commande : jview -cp c:\mindterm\mindtermfull.jar mindbright.application.MindTerm ou javaw -cp c:\mindterm\mindtermfull.jar mindbright.application.MindTerm ou java -cp c:\mindterm\mindtermfull.jar mindbright.application.MindTerm (jview s'utilise si vous *tes sous Windows et que vous n'avez pas t*l*charg* le JRE. Javaw est livr* avec le t*l*chargement de JRE sous Windows et est utilis* car une invite de commande DOS n'est pas n*cessaire pour lancer MindTerm, ce qui fait une fen*tre ouverte en moins) MindTerm 2.0 est maintenant disponible. L'argument pour le lancer a l*g*rement chang*. A la place de la commande ci-dessus : java -cp c:\mindterm\mindtermfull.jar mindbright.application.MindTerm cela d*marrera MindTerm en ligne de commande : java -cp c:\mindterm\mindtermfull.jar com.mindbright.application.MindTerm Seul le "com." a *t* ajout* au param*tre de l'applet. Cela d*marrera le programme MindTerm et ensuite vous pourrez taper le nom du serveur quand vous y serez invit* et on vous demandera ensuite "[51]Save as Alias" (enregistrer en tant qu' alias). Vous pouvez entrer un nom de serveur court, comme *a quand vous lancerez l'applet * nouveau vous n'aurez qu'* taper l'Alias que vous aurez cr**. On vous demandera ensuite votre identifiant de connexion. Apr*s l'avoir tap*, tapez Entr*e et une bo*te de dialogue appara*tra pour vous informer que l'h*te n'existe pas et vous demandera d'en cr*er un. Cliquez sur Yes. Une autre bo*te appara*tra pour vous demander si vous voulez ajouter cet h*te * votre fichier known_host. Cliquez sur Yes. On vous demande ensuite votre mot de passe. Tapez votre mot de passe puis Entr*e. Si vous avez entr* l'identifiant et le mot de passe ad*quats, vous devriez vous trouver en ligne de commande sur le serveur que vous avez sp*cifi*. Nous allons d'abord cr*er un tunnel vers le serveur POP et SMTP. Quand vous serez connect* avec succ*s (et aurez *ventuellement activ* vlock), cliquez sur [52]Tunnels dans le menu et ensuite sur [53]Basic. Une bo*te de dialogue appara*tra. Ajoutez respectivement les r*glages suivants dans chaque bo*te : * Local port: 2010 * Remote Hosts: Votre h*te distant (*a devrait *tre le serveur sur lequel tourne sshd). * Remote port: 110 Maintenant cliquez sur Add (ajouter). Il devrait appara*tre une bo*te de dialogue disant "[54]The tunnel is now open and operational (le tunnel est maintenant ouvert et op*rationnel) ". (Remarque : si vous s*lectionnez un port d*j* ouvert, un message d' erreur vous dira [55]Could not open tunnel. Error creating tunnel. Error setting up local forward on port XXXX, Address in use - Le tunnel n'as pas pu *tre ouvert. Erreur lors de la cr*ation du tunnel. Erreur lors de la mise en place de la redirection local sur le port XXXX, Adresse en cours d'utilisation.) Cliquez sur OK et la configuration du tunnel devrait maintenant appara*tre dans une bo*te. Cliquez sur Close Dialog (fermer la bo*te de dialogue). Ouvrez le menu des options ou pr*f*rences de votre client de messagerie. Nous utiliserons Netscape Messenger pour cet exemple. 1. Ouvrez Netscape 2. Cliquez sur Edit -> Preferences. 3. Sur la colonne de gauche cliquez sur Mail " Newsgroups , si le contenu n'est pas d*j* affich*. 4. Cliquez sur Identity et entrez vos informations dans chaque bo*te. 5. Cliquez sur Mail Servers dans la colonne de gauche. L'installation par d*faut de Netscape affiche "mail" dans la bo*te en-dessous de "Incoming mail servers" (serveurs de r*ception de mails) 6. Cliquez sur mail. 7. Cliquez sur Edit * droite de cette bo*te et une bo*te de dialogue devrait appara*tre. 8. Si POP n'est pas d*j* s*lectionn* dans cette bo*te d*roulante, s*lectionnez-le maintenant. 9. Dans la bo*te "Server Name" tapez localhost:2010 (rappelez-vous qu'on a choisi ce port local dans le menu de cr*ation de tunnel de MindTerm pour rediriger vers le port POP (110) des serveurs distants) et ensuite votre nom d'utilisateur. R*glez toute option qui vous semble convenir. 10. Cliquez sur OK. 11. Dans la bo*te Outgoing mail (SMTP) server (serveur d' envoi de messages) tapez le nom de votre serveur SMTP et en-dessous tapez votre nom d'utilisateur pour le serveur de messages sortants. 12. Cliquez sur OK. (Ne touchez pas * l'option "Use Secure Socket Layer (SSL) or TLS for outgoing messages" - utiliser SSL ou TLS pour les messages sortants). 13. Maintenant cliquez sur Communicator dans le menu. 14. Cliquez sur Messenger. 15. Vous devriez ensuite *tre invit* * entrer votre mot de passe. Tapez votre mot de passe puis Entr*e. Si vous avez du courrier, vous devriez maintenant *tre en mesure de le lire. Tant que vous avez une session SSH MindTerm ouverte, cela devrait marcher avec quasiment tous les clients de messagerie. Rappelez-vous que le nom du serveur distant ou du serveur POP sera "localhost:". Si l'on vous demande le serveur POP et le port s*par*ment, alors ajoutez-les en cons*quence. Dans cet exemple, toute connexion au port local 2010 sera redirig*e vers le port 110 de l'h*te distant. Si vous configurez un client FTP pour se connecter au port 2010 de l' h*te local, *a ne marcherait pas. Pourquoi? Le protocole POP ne comprend pas le protocole FTP. Pour que le tunnel aboutisse, seuls les clients POP peuvent *tre redirig*s vers le port 2010 de l'h*te local. Un serveur POP ne sert * rien si vous n'avez pas de serveur SMTP. Si vous avez un programme de messagerie comme Postfix ( [56]www.postfix.net), Qmail ( [57]www.qmail.org), ou Sendmail ( [58]www.sendmail.org) un tunnel s*curis* peut *tre *galement cr**. Le client MindTerm tournant encore, cliquez sur "Tunnels" * nouveau, puis sur "Basic" et ajouter ces r*glages. * Local Port: 2025(vous pouvez *craser les r*glages d'avant) * Remote Host: Votre serveur SMTP distant. * Remote Port: 25 Cliquez sur Add. Cliquez ensuite sur OK dans le menu de confirmation. Maintenant SMTP devrait *tre ajout* * la liste en-dessous des r*glages pour POP. Dans les r*glages du serveur de messagerie dans Netscape Messenger, ajoutez : localhost:2025 comme *tant votre Outgoing mail (SMTP) server (serveur de messages sortants). Tous les courriels que vous enverrez * l'h*te distant seront crypt*s. Cependant, si vous envoyer un message * quelqu'un en-dehors du serveur de messagerie de l' h*te distant, votre courriel sera crypt* seulement de votre machine locale * votre serveur SMTP distant. Du serveur SMTP distant * n'importe quel autre h*te, il ne sera pas crypt*, * moins que vous ayez configur* un tunnel vers les autres h*tes. Pour permettre des sessions FTP crypt*es, ajoutez ces informations * un nouveau tunnel. * Local Port: 2021 (vous pouvez *craser les r*glages d'avant) * Remote Host: Votre serveur FTP distant. * Remote Port: 21 Cliquez sur Add. Ensuite cliquez sur OK dans le menu de confirmation. Maintenant FTP (voir [59]l'exemple leech ftp et wsftp - [60]image 1 et [61]image 2) devrait *tre ajout* * la liste en-dessous des r*glages SMTP. R*glages Imap : * Local Port: 2043 (vous pouvez *craser les r*glages d'avant) * Remote Host: Votre serveur IMAP distant. * Remote Port: 143 Cliquez sur Add. Ensuite cliquez sur OK dans le menu de configuration. Maintenant IMAP devrait *tre ajout* * la liste en-dessous des r*glages SMTP. Tous ces r*glages peuvent *tre automatis*s dans un fichier batch. Ajoutez simplement ce qui suit dans un script de d*marrage pour cr*er automatiquement un tunnel vers votre serveur POP apr*s authentification : jview (ou java ou javaw) -cp c:\mindterm\mindtermfull.jar mindbright.application.MindTerm -server -local0 2010:localhost:110 Voici un exemple bas* sur ce que nous avons fait plus haut. Ajoutez ce qui suit * un fichier dans un *diteur : jview (ou java ou javaw) -cp c:\mindterm\mindtermfull.jar mindbright.application.MindTerm -server -local0 2010:localhost:110 -local1 2025:localhost:25 -local2 /ftp/2021:localhost:21 -local3 2043:localhost:143 Maintenant sauvegardez-le avec une extension .bat. Double-cliquez dessus. On devrait vous demander votre identifiant de connexion lorsque MindTerm d*marre, ensuite entrez votre mot de passe. Apr*s vous *tre authentifi*, cliquez sur le menu Tunnels puis sur Basic. Vous devriez voir les tunnels dans la bo*te qui s' ouvre. C'est une mani*re simple de permettre * des utilisateurs distants de d*marrer les tunnels sans trop de configuration de leur part. Ils n'ont qu'* double-cliquer sur le fichier .bat et entrer leur nom d' utilisateur et mot de passe, et accessoirement lancer vlock. Leur logiciel client peut *tre pr*-configur* pour les profils distants qui se connectent aux tunnels automatiquement. Quand vous avez fini d'utiliser MindTerm, veillez * bien fermer toutes les applications utilisant un tunnel. Si vous oubliez de fermer les programmes utilisant un tunnel, MindTerm affichera un message lorsque vous essaierez de quitter depuis la console ou de quitter le programme. Qu'en est-il de VNC et NTOP? Ces services fonctionnent de la m*me fa*on. Ici, le serveur VNC tournait sur une station de travail RedHat 7.0. Quand vous d*marrez le serveur VNC, il commence par *couter sur le port 5901, puis chaque serveur suivant incr*mente d'un port, de telle fa*on que la 2*me instance de VNC *coutera sur le port 5902, la 3*me sur 5903, etc. Sous Linux, vous pouvez lancer plusieurs serveurs VNC et les gens peuvent se connecter indiff*remment * chaque serveur VNC. Dans MindTerm, vous pouvez ajouter un tunnel VNC simplement, avec les r*glages suivants : * Local Port: 2001 * Remote Host: Le nom de votre serveur VNC distant. * Remote Port: 5901 (s'il s'agit de la 1*re instance de serveur qui tourne) Cliquez sur Add. Cliquez ensuite sur OK dans le menu de confirmation. Lancez l'application vncviewer sur votre machine locale et tapez : localhost:2001, puis, quand cela est demand*, le mot de passe pour le bureau VNC, et vous avez une session VNC crypt*e. NTOP fonctionne de la m*me mani*re. Si vous voulez ex*cuter NTOP en mode web en tant que moniteur r*seau, vous pouvez faire emprunter aux connexions un tunnel vers votre machine locale et visualiser les statistiques dans votre navigateur local, sans avoir * installer un serveur web ou ouvrir le port 3000 sur votre serveur distant. Par d*faut, NTOP en mode web *coute sur le port 3000 et attend une connexion HTTP pour afficher des statistiques r*seau. Cr*ez simplement un tunnel vers le serveur ex*cutant le serveur SSH et NTOP. Ex*cutez d'abord NTOP en mode web : ntop -d -w 3000 . Puis ajoutez ces r*glages au tunnel MindTerm : * Local Port: 2080 * Host: Serveur ex*cutant NTOP. * Remote Port: 3000 Cliquez sur Add. Cliquez ensuite sur OK dans le menu de confirmation. Ouvrez ensuite votre navigateur web et tapez dans la barre d'URL : http://localhost:2080 Vous devriez maintenant voir les pages de statistiques r*seau pour NTOP (voir le manuel NTOP pour ajouter un acc*s prot*g* par mot de passe * l'affichage NTOP). Idem, si vous voulez installer un serveur web pour utiliser les applications web pour pouvoir contr*ler votre serveur ou pare-feu, cr*ez simplement un tunnel vers le port 80. Vous n'avez pas * ouvrir un port sur l'interface publique. Il faut simplement relier le serveur web * l'interface locale et cr*er un tunnel vers le port 80 de l'h*te distant. Pour Apache, *ditez le fichier httpd.conf et remplacez l'option BindAddress * par BindAddress 127.0.0.1. Ajoutez ensuite localhost * la directive ServerName : ServerName localhost. Enfin, remplacez la directive Listen par : Listen 127.0.0.1:80 Comme vous pouvez le voir * pr*sent, MindTerm peut s*curiser * peu pr*s n'importe quel service TCP. Il peut *tre utilis* sur un serveur distant pour ex*cuter [62]Webmin, qui est une excellente application web pour administrer vos serveurs. Celle-ci est livr*e avec ses propres serveurs web bas*s sur du perl, et *coute par d*faut sur le port 10000. Cr*ez simplement un tunnel vers celui-ci en utilisant MindTerm et *a devrait marcher sans modifier votre application Webmin ou votre navigateur web local. Le fichier zip MindTerm en t*l*chargement contient de nombreux exemples utiles, comme son utilisation depuis une ligne de commande ou une explication de toutes les options du menu. MindTerm poss*de plus de fonctionnalit*s que ce qui est d*crit dans ce tutoriel, mais l'option concernant le tunnel vaut vraiment la peine d'y passer du temps. -------------------------------------------------------------------------- 6. MindTerm sur le web MindTerm peut *tre *galement utilis* sur le web. Les utilisateurs n'ont pas * t*l*charger l'application. Copiez simplement le fichier mindtermfull.jar dans un r*pertoire du r*pertoire web et les utilisateur pourront l'utiliser simplement comme une application int*gr*e ou comme une applet Java autonome. Par exemple, cr*ez un dossier nomm* mindterm dans votre r*pertoire web. Copiez le fichier mindtermfull.jar utilis* plus haut, dans le dossier mindterm du r*pertoire web. Ajoutez ensuite le fichier index.html dans le r*pertoire avec le contenu suivant (repris du README ) : MindTerm 2.0 est maintenant disponible. L'argument pour d*marrer l'applet web a l*g*rement chang*. A la place des param*tres d'applet ci-dessus, et de l' exemple de code ci-dessous, modifiez la ligne : comme ceci : Seul le com. doit *tre ajout* au param*tre code= de l'applet. Le code ci-dessous sera donc modifi* comme ceci : Naviguez jusqu'* l'emplacement du r*pertoire dans votre navigateur web (http:///mindterm/index.html), assurez-vous que Java est activ* dans votre navigateur et vous devriez pouvoir vous connecter au serveur maintenant. Pour pouvoir cr*er des tunnels, la version la plus r*cente de MindTerm doit *tre t*l*charg*e depuis le site web de MindBright, version 1.99. Cette archive contient une applet sign*e par MindBright qui peut *tre utilis*e dans votre page web pour cr*er des tunnels comme expliqu* plus haut. Apr*s avoir t*l*charg* la version la plus r*cente, ajoutez le fichier mindterm_ns.jar au r*pertoire mindterm dans votre serveur web. Maintenant ajoutez un fichier qui s'appelle standapplet.html au r*pertoire mindterm et ajoutez le code suivant pour d*marrer MindTerm comme client * part pour cr*er des tunnels. (Remarque : l'archive contient une applet pour * la fois Netscape et Explorer) Maintenant naviguez jusqu'* l'emplacement du r*pertoire dans votre navigateur web (http:///mindterm/standapplet.html) . Cela d*marrera MindTerm en tant qu'applet Java autonome, comme si elle *tait lanc*e depuis une ligne de commande. Des tunnels peuvent *tre cr**s en utilisant les balises de l'applet de fa*on * ce que les utilisateurs n'aient rien d'autre * faire que naviguer jusqu'* la page et se connecter. Ensuite il auraient acc*s * leurs services comme expliqu* dans les exemples pr*c*dents. Ils peuvent cependant cr*er leurs propres tunnels ou de nouveaux tunnels depuis le menu Tunnels comme expliqu* plus haut. Le README livr* avec l'archive zip MindTerm poss*de de nombreux autres param*tres d'applet qui peuvent *tre ajout*s. Quand vous cr*ez des tunnels, vous pouvez alors cliquer sur File puis sur Save pour que les tunnels que vous avez cr**s soient conserv*s quand vous vous identifiez * nouveau. Quelques consignes de s*curit* : vous ne pouvez pas vous connecter * un autre serveur en utilisant l'applet d'identification initiale. Vous ne pouvez vous connecter que sur le serveur o* l'applet est situ*e. Cependant, apr*s vous *tre connect* avec succ*s, vous pouvez alors vous connecter sur un autre serveur en ligne de commande. De plus, cette applet MindTerm est sign*e par MindBright, donc il faut contacter [63]le d*partement de ventes chez MindBright pour obtenir une signature cryptographique pour votre organisation. Cela dit, si c'est n*cessaire. -------------------------------------------------------------------------- 7. Remarques sur la s*curit* Lorsqu'une session SSH d*marre, les cl*s publiques sont envoy*es au travers d'une connexion non s*curis*e jusqu'* ce que le proc*d* d'authentification soit *tabli. Cela peut permettre * une personne d'intercepter une session SSH et de placer sa propre cl* publique dans le processus de connexion. SSH est con*u pour avertir l'utilisateur si une cl* publique a chang* par rapport * ce qui existe dans son propre fichier known_host. L'avertissement donn* ne passe pas du tout inaper*u et SSH annulera la connexion si les cl*s publiques sont diff*rentes, mais l'utilisateur peut quand m*me faire confiance au certificat car il peut penser que son entreprise a chang* les cl*s publiques du serveur. Ce type d'attaque n'est pas difficile car le paquetage dsniff mentionn* plus t*t contient les outils pour l'effectuer. Cette attaque est plus commun*ment appel*e "attaque de l'homme du milieu" [man-in-the-middle attack] (The End of SSL and SSH). Un correctif temporaire et facile pour cela consiste * d'abord apprendre * l'utilisateur comment reconna*tre les signes indiquant que la cl* de l'h*te a chang*, et comment faire pour r*cup*rer la bonne cl* publique. Deuxi*mement, il faudrait poster la cl* publique du serveur SSH sur un site web, serveur FTP ou la distribuer d'une autre fa*on pour que les utilisateurs puissent y avoir acc*s n'importe quand. -------------------------------------------------------------------------- 8. Conclusion SSH et MindTerm ensemble peuvent fournir aux utilisateurs locaux et distants un haut niveau de s*curit* * l'aide d'une simple petite application qui se lance sans installation pr*alable. Ils peuvent *galement *tre utilis*s depuis * peu pr*s n'importe quelle plateforme disponible. Java a *t* choisi pour son interop*rabilit* entre plateformes. S'il existe un JRE disponible pour une plateforme utilis*e par une personne, cette personne peut utiliser l' application MindTerm pour communiquer de mani*re s*re sur de longues distances. Comme SSH est en train de devenir le standard pour l'administration et l'identification * distance, bient*t quasiment toutes les plateformes seront capables de faire tourner un serveur SSH. MindBright travaille actuellement sur un serveur SSH Java. Ce tutoriel montre *galement comment quelqu'un peut faire un tunnel au travers d'un pare-feu. Ce n'est pas du tout le but de cet article. On esp*re que les gens l'utiliseront comme un rempla*ant de type VPN s*r, rapide et gratuit pour l'administration * distance, pour les gens en voyage d'affaire ; on esp*re aussi que d'autres secteurs verront l'utilit* de cet excellent programme. Tant que vous serez autoris* * effectuer des connexions SSH vous pourrez faire passer des services vers une machine distante au travers d'un tunnel. Les administrateurs syst*me et s*curit* devraient *tablir une politique contre la cr*ation de tunnels au travers des pare-feu car cela peut causer des br*ches de s*curit* internes en cas de mauvaise utilisation. Rappelez-vous que la communication est s*curis*e, mais que les commandes et fichiers auxquels vous acc*dez et/ou t*l*chargez sont quand-m*me ex*cut*s sur vos machines locale et distante. De plus, toute commande que vous tapez est *galement journalis*e sur la plupart des serveurs. SSH prot*ge les donn*es sur le r*seau ou l'Internet, mais ce qui est fait sur les machines distantes peut *tre journalis*. SSH et MindTerm ne prot*geront pas contre quelqu'un essayant d'obtenir l'acc*s * l'ordinateur d'un utilisateur distant, et installant des programmes enregistreurs de frappe ou d'autres outils de surveillance. Il est tr*s simple et rapide d'*tablir une communication s*curis*e, mais le seul moyen pour les utilisateurs d'accro*tre l'utilisation de communications s*curis*es est d'encourager leurs entreprises, les institutions financi*res, les services m*dicaux et autres entreprises * offrir des services s*curis*s. -------------------------------------------------------------------------- 9. R*f*rences Broadband Access to Increase in Workplace. 25 Jan. 2001. CyberAtlas. 12 Mar. 2001 <[64]http://cyberatlas.internet.com/markets/broadband/article/0,,10099_570571,00.html>. Broadband Moving On Up. 10 Jan. 2001. CyberAtlas. 12 Mar. 2001. <[65]. http://cyberatlas.internet.com/markets/broadband/article/0,,10099_556391,00.html>. Connolly, P.J. "Secure the home office sensible and easily" Infoworld. 8 Mar. 2001. 22 Mar. 2001. <[66]http://www.infoworld.com/articles/tc/xml/01/03/12/010312tcsoho.xml>. Eckels, Josh. "Commercial Use" E-mail to Josh Eckels. 13 Mar. 2001 MindTerm: README. MindBright Technology. 3 March 2001 <[67]. http://www.mindbright.se/documentation/README>. Schneier, Bruce. Secrets and Lies: Digital Security in a Networked World. New York:Wiley & Sons, 2000. Seifried, Kurt. "The End of SSL and SSH" 18 Dec. 2000. SecurityPortal. 12 March 2001 <[68]http://www.securityportal.com/cover/coverstory20001218.html>. virtual private network: [Definition]. 6 Oct. 2000. Whatis.com. 15 Mar. 2001. <[69]http://whatis.techtarget.com/definitionsSearchResults/1,289878,sid9,00.html?query=virtual+private+network>. -------------------------------------------------------------------------- 10. Foire Aux Questions Rien pour l'instant. References Visible links 1. mailto:duane@duane.yi.org 2. file:///home/fevrier/MindTerm-SSH-HOWTO.html#INTRO 3. file:///home/fevrier/MindTerm-SSH-HOWTO.html#COPYRIGHT 4. file:///home/fevrier/MindTerm-SSH-HOWTO.html#DISCLAIMER 5. file:///home/fevrier/MindTerm-SSH-HOWTO.html#NEWVERSIONS 6. file:///home/fevrier/MindTerm-SSH-HOWTO.html#CREDITS 7. file:///home/fevrier/MindTerm-SSH-HOWTO.html#FEEDBACK 8. file:///home/fevrier/MindTerm-SSH-HOWTO.html#BEFORE-START 9. file:///home/fevrier/MindTerm-SSH-HOWTO.html#MINDTERM-INTRO 10. file:///home/fevrier/MindTerm-SSH-HOWTO.html#MINDTERM-SSH 11. file:///home/fevrier/MindTerm-SSH-HOWTO.html#MINDTERM-WORK 12. file:///home/fevrier/MindTerm-SSH-HOWTO.html#SOFTWARE-INSTALL 13. file:///home/fevrier/MindTerm-SSH-HOWTO.html#CONFIGURATIONS 14. file:///home/fevrier/MindTerm-SSH-HOWTO.html#SERVER-CONFIG 15. file:///home/fevrier/MindTerm-SSH-HOWTO.html#CLIENT-CONFIG 16. file:///home/fevrier/MindTerm-SSH-HOWTO.html#CREATING-TUNNELS 17. file:///home/fevrier/MindTerm-SSH-HOWTO.html#MINDTERM-WEB 18. file:///home/fevrier/MindTerm-SSH-HOWTO.html#SECURITY 19. file:///home/fevrier/MindTerm-SSH-HOWTO.html#CONCLUSION 20. file:///home/fevrier/MindTerm-SSH-HOWTO.html#REFERENCES 21. file:///home/fevrier/MindTerm-SSH-HOWTO.html#FAQ 22. mailto:duane@duane.yi.org 23. http://www.linuxdoc.org/ 24. http://cfcc.net/ddunston/mindterm.html 25. mailto:duane@duane.yi.org 26. http://www.monkey.org/~dugsong/dsniff/ 27. http://www.sans.org/infosecFAQ/travel/travel_list.htm 28. http://www.sans.org/infosecFAQ/start/free.htm 29. http://www.sans.org/ 30. http:// www.securityfocus.com/ 31. http://www.securityportal.com/ 32. http://www.ssh.com/ 33. http://www.mindbright.se/ 34. http://www.ssh.com/ 35. http://www.openssh.com/ 36. http://www.ietf.org/ids.by.wg/secsh.html 37. http://linuxmafia.com/pub/linux/security/ssh-clients 38. http://www.securityportal.com/research/ssh-part1.html 39. http://winscp.vse.cz/ 40. http://www.isnetworks.com/ssh/ 41. http://www.mindbright.se/download/ 42. http://www.isnetworks.net/ 43. http://www.gnu.org/ 44. http://www.winton.org.uk/zebedee/ 45. http://www.whatis.com/ 46. http://www.ntop.org/ 47. http://www.redhat.com/swr/src/vlock-1.3-3.src.html 48. http://www.packetfactory.net/Projects/ngrep 49. http://www-105.ibm.com/developerworks/tools.nsf/dw/java-devkits-byname 50. http://java.sun.com/cgi-bin/java-ports.cgi 51. file:///home/fevrier/minddialog.jpg 52. file:///home/fevrier/tunnelmenu.jpg 53. file:///home/fevrier/tunnelmenubasic 54. file:///home/fevrier/tunnelconfirm.jpg 55. file:///home/fevrier/tunnelerror.jpg 56. http://www.postfix.net/ 57. http://www.qmail.org/ 58. http://www.sendmail.org/ 59. file:///home/fevrier/leech.jpg 60. file:///home/fevrier/wsftp.jpg 61. file:///home/fevrier/wsftpadvanced.jpg 62. http://www.webmin.com/webmin 63. mailto:sales@mindbright.se 64. http://cyberatlas.internet.com/markets/broadband/article/0,,10099_570571,00.html 65. http://cyberatlas.internet.com/markets/broadband/article/0,,10099_556391,00.html 66. http://www.infoworld.com/articles/tc/xml/01/03/12/010312tcsoho.xml 67. http://www.mindbright.se/documentation/README 68. http://www.securityportal.com/cover/coverstory20001218.html 69. http://whatis.techtarget.com/definitionsSearchResults/1,289878,sid9,00.html?query=virtual+private+network