Homepage

 

Que dois-je apprendre pour créer un programme VPN ?

J'ai décidé d'écrire mon propre serveur VPN léger en Java. Du point de vue de la programmation, il me semble qu'un serveur VPN n'est qu'un proxy de passage qui crypte le trafic du client et le décrypte sur le serveur. Quelqu'un peut-il m'indiquer un squelette d'écriture de ce type de serveur ?

Je sais qu'il y en a beaucoup qui sont prêts à l'emploi et même des logiciels libres, mais malheureusement, même si je connais plusieurs langages de programmation web, les exemples de code C que j'ai vus ne sont pas documentés/structurés de manière à ce que je puisse les comprendre.
Les éléments dont j'imagine avoir besoin sont les suivants

Une fabrique de threads pour les objets clients
Un connecteur de socket pour les clients
Méthode de création de l'en-tête d'authentification IPSec (AH)
Une méthode pour créer l'Encapsulating Security Payload (ESP) d'IPSec.
Quelque chose pour le protocole ISAKMP (Internet Security Association and Key Management Protocol)
Un échange de clés Internet (IKE)
Modules d'authentification de certificats PKI
Un référentiel de certificats (SQLLite)
Génération de clés Oakley (pour IKE et ISAKMP)
Une prévention anti-rejeu des paquets

Les parties pour lesquelles je prévois d'utiliser des modules génériques (et de créer des adaptateurs) sont les algorithmes cryptographiques (AES de préférence, bien qu'il semble que Windows préfère DES / 3DES - Noobs).

Si quelqu'un peut ajouter plus de détails sur les parties qui sont nécessaires pour un serveur vpn IPSec, n'hésitez pas à contribuer. Puisqu'il est nécessaire d'exécuter ceci sur le matériel linux plus ancien de ce que je peux dire, le serveur devrait être IPSec par opposition à un hotness SSLVPN. La plateforme cible est une vieille boîte Intel 1.5 Ghz que j'ai gonflée avec 2 GB de RAM DDR2, un disque dur miroir de 100 GB et 2 Gigabit Nic.

Le bon côté des choses, c'est qu'il y a tellement de types de VPN côté client que je suis presque sûr de ne pas avoir à en fabriquer un pour mes besoins.

Il y a beaucoup de programmes VPN déjà disponibles si vous voulez savoir comment ils fonctionnent, je vous recommanderais de regarder dans les bibliothèques Java pour les VPN. Puis probablement les méthodes de cryptage.

Si vous cherchez sur Google les bibliothèques Java VPN, vous devriez trouver beaucoup de choses.

Quelles sont les utilisations d'un VPN ?

L'idée principale des VPN est de fournir une connexion sécurisée à l'internet et d'aider à contourner toutes sortes de restrictions en ligne ou, en d'autres termes plus poétiques, de lutter pour un internet ouvert et libre. Il faut donc toujours chercher à avoir le meilleur vpn possible pour se protéger.

Mais il y a en fait plus d'avantages d'un VPN et tout le monde ne les connaît pas. Voici les plus importants pour tout le monde :

La sécurité de votre identité en ligne. L'objectif principal d'un VPN est de crypter votre trafic et de garantir la sécurité et l'anonymat en ligne. Cela garantit votre sécurité contre le vol de données, le suivi, la surveillance et également le ciblage commercial.

Sécurité sur le wi-fi public. Personne ne sait à quel point le wi-fi public peut être dangereux. En fait, il est très dangereux car les pirates peuvent facilement le pirater et voler les informations des utilisateurs qui sont connectés au wi-fi. Le VPN crypte votre trafic et garantit qu'aucune de vos données ne sera volée.

Sécuriser la banque en ligne et les crypto-monnaies. Je pense que l'actif le plus important que nous devrions garder en sécurité en ligne est nos informations de compte bancaire, cela peut être facilement volé lorsque vous êtes connecté à un wi-fi public (comme mentionné ci-dessus) ou si votre ordinateur est infecté par un logiciel malveillant. Là encore, le cryptage VPN nous protège de telles menaces. Il en va de même pour nos crypto-monnaies, dont la sécurité dépend essentiellement de nous.

La sÚcuritÚ pendant les jeux. Cela peut sembler amusant au premier abord, mais les comptes de jeu sont en fait très précieux et très attrayants pour les pirates. Donc si vous ne voulez pas perdre votre compte, le VPN vous aidera.

Blocage des publicités. Tous les VPN ne proposent pas de telles fonctionnalités, mais la plupart d'entre eux le font. De nombreux VPN ont des bloqueurs de publicité intégrés, une protection contre les logiciels malveillants et les traqueurs. Donc, en gros, le VPN gardera votre expérience Internet propre et sans publicités ennuyeuses partout.

Contourner les restrictions géographiques des plateformes de streaming. C'est l'une des raisons les plus populaires pour lesquelles les gens utilisent les VPN, outre la sécurité. Le VPN peut aider à débloquer davantage de bibliothèques Netflix ou à accéder à des plateformes de streaming telles que BBC iPlayer ou Disney+, qui ne sont disponibles que dans certaines régions.

Contourner la censure. L'un des plus grands exemples est le Grand Firewall de Chine. En changeant votre adresse IP, le VPN peut vous aider à contourner les restrictions de l'internet comme celle-ci en Chine. Ou vous permet simplement d'accéder à toutes sortes de sites web qui ne sont pas autorisés ou pris en charge dans votre pays.

Contourner l'étranglement des FAI et augmenter la vitesse d'Internet. Le VPN aide simplement à contourner l'étranglement du FAI, qui se produit lorsque votre fournisseur d'accès à Internet limite votre vitesse Internet à dessein pour différentes raisons, généralement pour limiter votre quantité de streaming, de téléchargement ou simplement pour vous empêcher d'accéder à des sites Web spécifiques.

Torrenting anonyme. Ce n'est pas un secret que le torrenting est illégal dans de nombreux pays et que vous pouvez recevoir d'énormes amendes. Le VPN change votre adresse IP et vous pouvez faire du torrent de manière anonyme.

Contourner la discrimination des prix. Il s'agit d'une fonctionnalité que peu de gens connaissent. Le VPN peut en fait vous aider à acheter certains articles et services moins chers. Par exemple, des billets d'avion moins chers, puisque le prix de ceux-ci varie en fonction de votre emplacement et de votre adresse IP. Vous pouvez également acheter des jeux vidéo, réserver des hôtels, acheter des cours en ligne et de nombreux services et articles moins chers en ligne avec l'aide d'un VPN.

A savoir

Vous n'avez pas besoin de programmer quoi que ce soit. Il suffit d'utiliser un serveur VPN, de l'installer où vous voulez et de modifier les paramètres en fonction de vos besoins. Ensuite, installez / modifiez le client VPN intégré sur les appareils pour qu'ils se connectent à l'adresse de ce serveur.

Le serveur le plus simple et le plus répandu est probablement OpenVPN.

. Presque tous ces services VPN Proxy l'utilisent. Ils l'installent sur leurs serveurs, modifient les paramètres pour qu'il agisse différemment d'un VPN normal (il ne se connecte pas aux ressources locales mais agit simplement comme un relais proxy). Ensuite, il suffit d'utiliser le code client pour OpenVPN et de l'intégrer dans leur interface utilisateur pour le lier à leur serveur - cette dernière partie étant la seule "programmation" nécessaire (c'est-à-dire un peu de conception d'interface utilisateur et l'appel de fonctions de la bibliothèque).

Si vous voulez vraiment en faire un à partir de zéro, c'est une chose assez complexe. Vous devez vous connecter au système sur lequel votre serveur et votre client vont fonctionner. Cela signifie probablement que vous devez écrire un pilote pour chaque client que vous souhaitez autoriser - disons un pilote réseau Windows, un macOS, un Android, un iOS, et peut-être aussi un Linux. Cela vous obligera probablement à utiliser le langage requis pour ce SDK particulier, voire une multitude de langages différents. C, Swift, Java, Python, tout ce qui peut être utilisé et nécessaire - ne vous attendez pas à ce qu'un seul langage fasse tout pour vous.

Le côté serveur est en fait moins restrictif et alambiqué. Vous pouvez utiliser le langage que vous voulez. Il s'agit simplement d'un logiciel qui écoute les connexions sur un port spécifique. La partie la plus complexe serait le relais vers le réseau réel. Pour l'idée du proxy, c'est en fait beaucoup moins complexe.

Le cryptage et l'authentification peuvent se faire de différentes manières, mais je vous conseille de chercher des bibliothèques bien implémentées et testées plutôt que de créer votre propre bibliothèque.

Ce qui précède ressemble à beaucoup d'efforts pour recréer une roue, sauf que la nouvelle roue aurait besoin de beaucoup d'ajustements pour la transformer d'un carré en quelque chose qui fonctionne bien. Je vous recommande vivement de commencer par un logiciel libre comme OpenVPN, et d'étendre ses fonctionnalités si vous pensez vouloir quelque chose de différent ou de meilleur.

Tous les langages de programmation qui sont complets pour Turing et qui ont un moyen de créer et d'accepter des connexions vers/depuis l'internet. Cela inclut C, C++, Java, Python, Pascal, Fortran, et à peu près tous les langages utiles. Si vous écrivez un wrapper, vous pouvez utiliser tous les langages existants, même Brainfuck.

HOME | © 2014 |