Tag Archives: vpn

[NodeJS] Créer un proxy privé en 2 minutes

private proxy

Depuis quelques temps je traîne sur les forums SEO et Webmarketing anglais et français. Une question revient sans cesse: où se procurer de bons proxies privés pour pas cher.

J’ai donc décidé de répondre à cette question en essayant plusieurs fournisseurs de private proxies. Très rapidement je me suis rendu compte que les proxies soit disant privés, c’est à dire exclusivement réservé à leur acheteur, ne le sont pas du tout. Plutôt dommage pour un service facturé entre 1 et 4€ par proxy !

Alors comment faire lorsque les proxies publiques ne conviennent pas pour faire du SEO Google.

Utilisateur de Scrapebox, SEnuke, ZennoPoster et GSA, il me faut absolument de bons proxies qui répondent et qui sont rapides. Pour une utilisation normale de Scrapebox, il me faut au minimum 30 proxies, alors que pour référencer mes sites j’utilise au moins 30 proxies dans GSA.

Et j’ai trouvé la solution parfaite: lancer mes propres serveurs proxies privés sur des VPS !

Bilan de l’année 2012

Voilà l’année 2012 s’achève et il est temps pour nous de faire un petit bilan concernant le Blog.

Ce qui c’est passé en 2012

Tout d’abord le blog ZeM.fr a été lancé en Mars 2012 avec pour objectif de vous faire partager mes geekeries quelle qu’elles soient: programmation, bidouilles, électroniques, bon plans, etc…

En 9 mois, j’ai posté environ 80 articles traitant des nouvelles technologies (Raspberry Pi, Arduino), de programmation (PHP, Dotnet) ou bien encore de systèmes d’exploitation (Linux, Windows).

Le site a mis du temps à se lancer mais je n’ai fait aucune campagne de référencement, et j’ai laissé faire le temps et le référencement naturel, en espérant que la qualité des articles rencontre un certain succès.

Voici l’évolution des visites du site ZeM.fr pour l’année 2012:

zem analytics 2012

 

Comme on peut le voir le site croit lentement mais progressivement, ce qui est très encourageant. Notre blog a été ainsi visité par 15000 personnes qui ont consulté plus de 30000 pages.

Les projets menés en 2012

Plusieurs projets ont été menés en 2012. En voici un bref listing:

  • Sortie d’un logiciel de monitoring de ressources pour Windows. Cette solution, NetSysInfo, a été téléchargée environ 1000 fois et a connu deux sorties majeures.
  • Découverte du RaspberryPi
  • Mise en place de RAID sous Linux
  • Réalisation d’une imprimante 3D
  • Partage de morceau de code dans différents langages
  • Fabriquation d’une alimentation de laboratoire
  • Fabriquation d’une tap Ethernet

Le programme pour 2013

Plusieurs gros projets vont être réalisés en 2013. En voici une liste non exhaustive:

  • terminer notre imprimante 3D RepRap Prusa Mendel v2 afin de pouvoir imprimer des objets en plastique PLA. J’espère être capable d’imprimer des chassis de robots d’ici quelques mois.
  • réaliser un cube 3D composé de 512 leds (8x8x8). Nous verrons comment utiliser un Arduino et des Shift Register 74HC595 pour effectuer du multiplexage de leds.
  • sortir une nouvelle version du logiciel de statistiques système NetSysInfo. Cette version sera orientée Cloud, ce qui permettra l’accès à vos statistiques via Internet. Évidemment cette version sera totalement gratuite.
  • construire un robot autonome (baptisé AntQuad  pour sa première version) à base de arduino et de servos. Ce robot devra être capable de marcher grace à ses 4 pattes et d’éviter les obstacles.
  • intégrer simplement de la domotique dans son appartement ou sa maison. Nous utiliserons des prises télé-commandables et un Arduino (ou un RaspberryPi) pour réaliser l’interface Homme / Machine.
  • partager des exemples de code dans différents langages de programmation: PHP, Dotnet, C++, … Nous découvrirons entre autres un moteur de template pour PHP, des snippets pour Arduino, des classes en VB.Net, …
  • comprendre certaines notions de la web sphère tels que le domaining, le référencement ou bien encore le WebSeo.
  • fabriquer un système Ambilight maison.
  • développement d’un logiciel de calcul de résistances car je ne me souviens jamais comment calculer la puissance des résistances via leur code couleur.

Il y aura évidemment d’autres projets (enfin j’espère :p).
L’année 2013 va s’orienter vers l’électroprogrammation, qui est l’interaction entre l’électronique (voir la robotique) et la programmation (qui est mon cœur de métier).

J’espère atteindre plusieurs objectifs au cours de l’année 2013:

  • réussir à attirer 300 visiteurs uniques par jour (soit environ 100000 visiteurs sur l’année).
  • proposer des services gratuits, tel que le futur NetSysInfo orienté Cloud.
  • proposer certains services payants tel que la location de VPN, du développement à la demande ou bien du consulting.
  • optimiser l’intéraction entre ZeM.fr et les réseaux sociaux. Vous pouvez remarquer qu’un popup Facebook apparait une fois par jour sur le site 🙂
  • améliorer le référencement de ZeM.fr sur certains mots clé ciblés tels que RaspberryPi, Arduino ou bien encore robotique.

Cette année, le blog nous a couté 140€ répartis ainsi:

  • 8€ pour le nom de domaine
  • 132€ pour l’hébergement (11€ TTC par mois)

Pour l’année 2013, nous allons essayer de rendre le blog autonome financièrement. Plusieurs pistes sont en train d’être étudiées:

  • vente de software (sur un mode pro dans NetSysInfo par exemple)
  • vente de VPN
  • publicité non intrusive sur le blog
  • système de donation via Paypal ou Sms

Rassurez vous, cela ne gênera aucunement la navigation sur le site.

Concernant la gestion et le développement du blog, je suis à la recherche d’un co-blogueur afin de m’aider dans la rédaction d’articles. Je cherche une personne motivé avec des compétences en informatique, un débordement de curiosité et un esprit de geek.
Cette fonction n’est évidemment pas rémunérée mais il peut y avoir des contreparties en nature (hébergement, vpn, bouncer, …).

Dans tous les cas, je vous souhaite une excellente année 2013.

Installer un serveur VPN sur Ubuntu (Serveur Kimsufi)

PETITE NOTE: Je vends des accès à mon serveur VPN pour 5€ par mois, sans aucune restrictions. Postez un commentaire si vous êtes intéressés.

La sécurité sur Internet est quelque chose de primordiale, c’est pourquoi j’ai décidé d’installer un serveur VPN sur mon serveur dédié Kimsufi.

Je pensai faire çà en 5 minutes mais j’ai rencontré plusieurs soucis. Je vais donc tenter de vous expliquer comment faire pour installer un serveur OpenVpn sur une machine Debian ou Ubuntu.

Mais commençons par voir ce qu’est un VPN.

Présentation et utilité d’un serveur VPN

Un VPN, ou Virtual Private Network (pour réseau privé virtuel) vous permet de créer une connexion sécurisée entre votre ordinateur et le serveur VPN. Cette connexion étant cryptée, vous allez pouvoir naviguer sur Internet par exemple en utilisant le serveur VPN comme relai.

Cette sécurité, ce cryptage est valable pour une connexion filaire ou Wifi et empêche toute malveillance ou surveillance.

Un des gros avantages d’utiliser un serveur VPN est que toutes les données qui passent par ce serveur VPN, aussi bien des données entrantes que des données sortantes, sont cryptées. Il vous sera donc possible de naviguer sur Internet de manière totalement anonyme puisque c’est le serveur VPN qui fera le relai entre votre machine et les différents hôtes distants.

Le schéma suivant illustre le fonctionnement d’un serveur VPN:

fonctionnement vpn

 

Pourquoi utiliser un serveur VPN ?

Comme je vous le disai plus haut, l’utilisation d’une connexion sécurisée grâce à l’utilisation d’un serveur VPN va vous assurez un minimum de sécurité:

  • données cryptées
  • adresse ip camouflée par celle du serveur VPN
  • anonymat sur Internet
  • navigation plus rapide qu’au travers d’un proxy
  • téléchargements sécurisés (pour éviter de se faire piquer avec Hadopi si on télécharge des torrents par exemple :p)
  • contourner les restrictions de certains réseaux (universités, certains pays, etc…)

Il existe de nombreuses offres sur Internet vous proposant d’utiliser des serveur VPN payants maix ceux-ci coûtent chers si l’on souhaite un VPN de qualité avec un minimum de peering et de bande passante. Evidemment on trouve également des VPN pour quelques euros par mois, voir gratuit mais vous serez vite déçu.

Pour ceux qui souhaitent utiliser un VPN pour télécharger des torrents, sachez que les offres du net ne sont vraiment pas concluantes.

Dans mon cas je souhaite utiliser un serveur VPN pour pouvoir faire du téléchargement, du torrent, du surf anonyme et de l’analyse de flux. Aucune offre en ligne de location de VPN ne convient à mes besoins car j’ai environ 3To de données entrantes par mois.

J’ai donc décidé de faire moi même un VPN low cost en installant OpenVPN sur un serveur dédié Kimsufi.

Installer OpenVPN sur Ubuntu ou Debian

Il existe plusieurs solutions gratuites pour installer un serveur VPN sur Linux mais la plus répandue et probablement la plus stable est OpenVPN.

Comme son nom l’indique, OpenVPN est un logiciel libre permettant de créer un réseau privé virtuel. OpenVPN est un VPN SSL qui va créer un tunnel IP (UDP ou TCP au choix) authentifié et chiffré avec la bibliothèque OpenSSL.

OpenVPN est relativement intéressant car il est possible de l’utiliser sur des réseaux NAT sans avoir à le configurer. De plus, il fournit divers clients VPN pour Windows, Mac, Linux ou bien Android.

Nous allons donc voir comment l’installer sur un serveur dédié Kimsufi tournant sous Ubuntu ou Debian, l’objectif étant par la suite de sécuriser mes ordinateurs sous Windows.

Pour la suite du tutoriel sur l’installation d’un serveur OpenVPN, vous devez disposez des droits d’administrateur (root).

Installation d’un serveur OpenVPN

L’installation du serveur OpenVPN peut se faire à partir des dépôts officiels:

apt-get install openvpn
mkdir /etc/openvpn/easy-rsa/
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
chown -R $USER /etc/openvpn/easy-rsa/

 

Les scripts installés sont désormais disponibles ici:

/etc/openvpn/easy-rsa/

Configuration du serveur OpenVPN

Nous allons éditer le fichier /etc/openvpn/easy-rsa/vars:

export KEY_COUNTRY="FR"
export KEY_PROVINCE="44"
export KEY_CITY="Nantes"
export KEY_ORG="zem.fr"
export KEY_EMAIL="an@nyme.fr"

Puis on génère les différentes clés et certificats nécessaires pour le cryptage des données:

cd /etc/openvpn/easy-rsa/
source vars
./clean-all
./build-dh
./pkitool --initca
./pkitool --server server
openvpn --genkey --secret keys/ta.key

Une fois les clés et les certificats générés, on va les rendre disponibles pour le serveur en les copiant dans le répertoire /etc/openvpn/

cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh1024.pem /etc/openvpn/

Ensuite on crée les répertoires /etc/openvpn/jail (pour chrooter le processus d’OpenVPN) et /etc/openvpn/clientconf (qui contiendra les configurations des clients):

mkdir /etc/openvpn/jail
mkdir /etc/openvpn/clientconf

Il ne reste plus qu’à créer le fichier de configuration /etc/openvpn/server.conf:

# Serveur TCP/443
mode server
proto tcp
port 443
dev tun
# Cles et certificats
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
tls-auth ta.key 0
cipher AES-256-CBC
# Reseau
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 4.4.4.4"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
# Securite
user nobody
group nogroup
chroot /etc/openvpn/jail
persist-key
persist-tun
comp-lzo
# Log
verb 3
mute 20
status openvpn-status.log
; log-append /var/log/openvpn.log

Dans ce fichier de configuration, on voit clairement que l’on va créer un serveur VPN SSL basé sur le port 443 et sur le protocol TCP. Le port 443 étant généralement utilisé par le protocole HTTPS, cela vous permettra de passer aux travers de la plupart des firewalls et autres sécurités.

On note également que l’ensemble des clients qui se connecteront au serveur VPN utiliseront obtiendront une ip dans le range 10.8.0.0/24.

Désormais, on peut tester si l’installation et la configuration ont fonctionné:

cd /etc/openvpn
sudo openvpn server.conf

Si le message “Initialization Sequence Completed” apparait c’est que la configuration s’est correctement déroulée.

Il se peut que vous ayez le problème suivant:

Note: Cannot open TUN/TAP dev /dev/net/tun: Permission denied (errno=13)
Note: Attempting fallback to kernel 2.2 TUN/TAP interface
Cannot open TUN/TAP dev /dev/tun0: No such file or directory (errno=2)

 

Pour le résoudre, il faut rentrer les commandes suivantes:

mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun

 

Pour vérifier que le problème est corrigé, entrez la commande suivante:

cat /dev/net/tun

 

Elle devrait retourner le message “File descriptor in bad state”. Il ne vous reste plus relancer le serveur OpenVPN.

Une fois la configuration effectuée et testée, on édite le fichier /etc/openvpn/server.conf pour décommenter la ligne suivante:

log-append /var/log/openvpn.log

Vous pouvez alors relancer le serveur OpenVPN:

/etc/init.d/openvpn start

Configuration du routage

Un fois le serveur OpenVPN démarré, il faut configurer le routage afin que les clients puissent se connecter et obtenir une adresse ip. Pour cela, entrez cette commande:

sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Vous pouvez rendre ce paramétrage permanent (même après un redémarrage de votre serveur) en éditant le fichier /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Ensuite on configure la gestion des adresses ip NAT, car votre serveur OpenVPN fonctionnera comme un routeur:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Pour rendre persistante cette règle de routage NAT, il faut entrer cette commande:

sh -c "iptables-save > /etc/iptables.rules"

Puis vous devrez éditer le fichier /etc/network/interfaces en y ajoutant la ligne suivante après la définition de votre interface réseau principale (“iface eth0 inet…”):

pre-up iptables-restore < /etc/iptables.rules

Création d’un compte client sur le serveur OpenVPN

Maintenant le serveur OpenVPN est correctement configuré et que le routage est fonctionnel, nous allons créer un compte client pour pouvoir nous connecter dessus et l’utiliser. L’exemple suivant va créer un compte pour l’utilisateur “jhd”.

cd /etc/openvpn/easy-rsa
source vars
./build-key jhd

3 fichiers ont été générés dans le répertoire /etc/openvpn/easy-rsa/keys:

  • jhd.crt: Certificat pour le client
  • jhd.csr: Certificat à garder sur le serveur
  • jhd.key: Clés pour le client

Nous allons copier ces fichiers dans un sous répertoire du dossier /etc/openvpn/clientconf/ puis on se place dans ce dossier:

mkdir /etc/openvpn/clientconf/jhd/
sudo cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/jhd.crt keys/jhd.key /etc/openvpn/clientconf/jhd/
cd /etc/openvpn/clientconf/jhd/

On créé le fichier client.conf en remplaçant A.B.C.D par l’adresse publique de votre serveur dédié:

# Client
client
dev tun
proto tcp-client
remote A.B.C.D 443
resolv-retry infinite
cipher AES-256-CBC
# Cles
ca ca.crt
cert jhd.crt
key jhd.key
tls-auth ta.key 1
# Securite
nobind
persist-key
persist-tun
comp-lzo
verb 3

Le client Windows d’OpenVPN a besoin d’un fichier ayant l’extension .ovpn. On va donc copier le fichier de configuration client.conf vers client.ovpn:

cp client.conf client.ovpn

Il ne nous reste plus qu’à zipper le répertoire du client afin de pouvoir le récupérer sur notre ordinateur client:

zip jhd.zip *.*

 Configuration du client OpenVPN pour Windows

Pour pouvoir vous connecter à votre serveur OpenVPN sous votre ordinateur Windows, vous devez télécharger le client OpenVPN disponible ici.

Procédez à son installation puis récupérer le fichier jhd.zip que l’on a généré précédemment sur le serveur dédié.

Dézippez le contenu du fichier dans le répertoire “config” du dossier d’installation de votre client OpenVPN (chez moi c’est “C:\Program Files (x86)\OpenVPN\config”).

Il ne vous reste plus qu’à lancer le client “OpenVPN GUI” puis à vous connecter.

Monitorer les connections sur votre serveur OpenVPN

Si comme moi vous avez plusieurs ordinateurs, il peut être intéressant de savoir qui est connecté et avec quelle adresse ip.

Pour surveiller votre serveur OpenVPN, vous pouvez exécuter la commande suivante:

tail /etc/openvpn/openvpn-status.log

 

Ce qui vous retournera la liste des clients connectés au serveur OpenVPN:

Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
jhd,88.185.245.66:63459,3599574,15267172,Sat Dec 29 15:18:31 2012
jhdserver,85.182.248.56:61435,679353858,15417087657,Sat Dec 29 11:54:59 2012
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.6,jhd,88.185.245.66:63459,Sat Dec 29 16:31:22 2012
10.8.0.10,jhdserver,85.182.248.56:61435,Sat Dec 29 16:31:26 2012
GLOBAL STATS
Max bcast/mcast queue length,0
END

Dans l’exemple ci-dessus, on voit que 2 clients sont connectés:

  • jhd avec l’adresse ip 88.185.245.66 qui a pour adresse privée 10.8.0.6
  • jhdserver avec l’adresse ip 85.182.248.56 qui a pour adresse privée 10.8.0.10

Voilà j’espère que cela vous aidera 🙂

PETITE NOTE: Je vends des accès à mon serveur VPN pour 5€ par mois, sans aucune restrictions. Postez un commentaire si vous êtes intéressés.