OpenVPN

Dans le cadre d’un petit projet, il m’a fallut étudier le VPN et faire quelques testes à l’aide d’OpenVPN. Je n’ai pas rencontré de réelle soucis concernant la configuration, cependant une petite précision sur les « push » peut être utile.

Dans le cas que je vais vous montrer, l’adresse du réseau local côté client est 157.26.77.0, côté serveur c’est 192.168.1.0 et le VPN sera 192.168.25.0. De plus, on ne gérera qu’un seul client.

Serveur VPN

Si vous désirez lancer OpenVPN en ligne de commande (sans utiliser de fichier config) pour établir un VPN simple et sans cryptage sur un serveur, la commande devrai ressembler à ceci mais ne fonctionnera pas:

openvpn –port 8147 –dev tun1 –ifconfig 192.168.25.1 192.168.25.2 –comp-lzo –verb 5 –push « route 192.168.1.0 255.255.255.0″

–port 8147: c’est le port sur lequel openvpn va dialoguer.

–dev tun1: c’est pour le mode routed

–ifconfig 192.168.25.1 192.168.25.2: donne l’adresse 192.168.25.1 au serveur VPN dans le réseau VPN et 192.168.25.2 au client.

–comp-lzo: compression des donnéess

–verb 5: niveau de détail des logs

–push « route 192.168.1.0 255.255.255.0″: permet de dire au client se connectant « Toutes les ip’s appartenant au réseau 192.168.1.0 doivent être redirigé à travers le VPN ». Cette option ne fonctionne SEULEMENT si le client utilise le paramètre « –pull ». De plus, « –pull » et « –push » implique un cryptage TLS des la connexions VPN.

Cette exemple n’a pas pour but de fonctionner, c’était juste la commande que je tentais d’utiliser en vain. Ce qu’il faut retenir: si vous voulez faire une connexion simple et non-crypté, la commande « –push » ne fonctionnera pas, ce sera à vous d’ajouter les règles de routage manuellement du côté du client.

Client

Au niveau du client, la commande pourrait ressembler à ceci:

openvpn –remote www.example.ch port 8147 –dev tun1 –ifconfig 192.168.25.2 192.168.1.25.1 –comp-lso –verb 5 –float

Côté client, les adresses du ifconfig sont inversées.

–float: Utile si vous avez des problèmes d’adresses IP dynamiques.

Categories: Non classé Tags:

Bonnie++

Vous connaissez HD Tune pour Windows? C’est un utilitaire qui teste, entre autre, la vitesse de lecture sur un disque dur/clé usb. Il existe un « équivalent » dans le monde de Linux qui s’appelle: « Bonnie++ »

Il permet de faire des testes de lecture/écriture sur un disque et donne pas mal d’infos. Pour que les résultats soient plus lisibles, on peut les mettre en page dans un tableau dans un fichier texte ou html. Pour ce faire, deux petites commandes fort sympathique:

bonnie++ -s 32104 -u firebird  |  bon_csv2txt > bonie_test.txt
bonnie++ -s 32104 -u firebird  |  bon_csv2html > bonie_test.html

Source

Categories: Non classé Tags:

PhpMyAdmin et l’UTF-8

31/05/2010 Gagou7 un commentaire

Votre site internet est en UTF-8? Les balises meta le sont? Le fichier même est en UTF-8 sans dom? vous faites bien un « SET NAMES ‘UTF8′ » avant un enregistrement dans la BDD? dans PhpMyAdmin, le jeux de caractère est en UTF-8? les interclassements aussi? lorsque vous affichez des caractères spéciaux tiré de la base de donnée ça s’affiche sans problème?

Et pourtant lorsque vous aller dans PMA, vous apercevez certains caractères bizarre comme é qui remplace des « é » ou des « à » par exemple? Et lorsque vous faites des modification depuis PMA, votre site web affiche des petits losanges noir avec un point d’interrogation?

Si ces symptômes vous semble familier, sachez qu’il y a une solution. Une petite bidouille à faire dans les fichiers de PhpMyAdmin.

C’est par !

Categories: Non classé Tags:

Sécurisation des Virtualhosts sous Apache (Https)

Si tout comme moi vous êtes un peu parano avec la sécurité de vos données, vous allez surement apprécier ce qui suit. Par exemple, lorsque j’accède à mon serveur en http depuis mon école et que j’utilise une identification de type htaccess, je peux, à l’aide de Wireshark, sniffer ce qui transite (user et password) entre moi et mon serveur… Embêtant tout ça… Seulement voilà, il existe une solution: les certificats ! Bon, la première fois vous aurez droit à une page disant que le certificat n’est pas valable car auto-signé, mais ça on s’en fout puisque les données qui circulent sont entièrement cryptées !

Comment faire? C’est par là.

Categories: Non classé Tags:

Température/Voltage CPU/HDD sous Debian avec carte mère ASUS

Vous savez surement comment récupérer la température ainsi que pleins d’autres informations intéressantes ( voltage, vitesse ventilo,…), non? Oui, il suffit d’installer et d’utiliser « lm-sensors ». Seulement voilà, avec les cartes mères ASUS, c’est un poile plus compliqué.

Bref, je ne vais pas réinventer la roue, donc voici le forum avec la solution.

PS: Si vous voulez afficher la liste hardware de votre machine avec toutes les informations possibles et imaginables, essayez donc « dmidecode » :-)

Categories: Non classé Tags:

Problème de cache avec Javascript et XMLHttpRequest

Voici un problème que j’ai rencontré il y a longtemps dont j’ai trouvé la solution récemment. Imaginons qu’un programme génère une page html toutes les minutes et que l’on veuille afficher son contenu dans une div pour n’importe quelles raisons. Le code javascript ira chercher la page html générée dans le cache du navigateur. Voici la solution pour que le javascript prenne toujours la page du serveur.

C’est ici que ça se passe.

Le problème de mémoire cache

L’anté-mémoire fonctionne mal avec l’objet. Le fichier chargé par la méthode GET n’est pas toujours la dernière version mais le plus souvent une version conservée en mémoire cache.
Si le fichier n’est pas trop gros, cela peut se résoudre en ajouter un paramètre à la commande. Remplacer:

xhr.open("GET", "data.xml", true);

par

 xhr.open("GET", "data.xml?nocache=" + Math.random(), true);
Categories: Non classé Tags:

Fonction php system()

Il vous est surement déjà venu l’idée de lancer un programme ou une commande via une page php, non? C’est parfaitement faisable, sauf qu’il faut faire attention à certaine chose.

Pour des commandes comme « ls » qui ne font qu’afficher des informations, pas de problème. Par contre pour lancer un programme qui enregistre ou effectue des tâches spéciales, il faut faire attention.

Si vous voulez écrire dans un dossier, sachez que par défaut la page php sera exécuté avec les droits de l’utilisateur « www-data » et donc que le dossier devra être « chmodé » en conséquence ainsi que les éventuelles fichiers à modifier/supprimer.

Par exemple:

Lancer un programme comme PlowDown (télécharger automatiquement des fichiers sur Megaupload et cie) et faire qu’il continue de tourner après l’arrêt du script php est très simple avec screen.
system('/bin/bash -c "/usr/bin/screen -dmS MU_Download /usr/local/bin/plowdown -o /var/www/download/plowshare/complete http://www.megaupload.com/?d=UP7T9Q31"');

Categories: Non classé Tags:

Debian-serveur: Tunnel SSH

Moi qui croyait que c’était compliqué…en faite c’est tout simple ! Je pars du principe que vous avez déjà établit une connection SSH sur votre serveur à l’aide de Putty.

Vous avez la méthode char d’assaut qui consiste à faire du « X11 forwarding » depuis votre serveur sur votre client en lançant Epiphany a distance… Un peu foireux, je vous l’accorde.

Sinon, il y a le tunnel SSH !

Si vous n’êtes point effrayé par la langue de Shakespeare, je vous renvoie à ce site.

Pour les autres, voici la traduction:

Il y a un moment où vous voudrez vous connecter à internet par un réseau inconnu et/ou insécuriser comme un hotspot WiFi par exemple. Si vous n’êtes pas prudent, une personne mal intentionnée pourrait sniffer votre connexion avec Ettercap et voler ainsi de précieuses données.

Un des meilleurs moyens pour sécuriser votre connexion est de passer par un VPN, mais ce n’est pas très pratique. Alors il y a un autre moyen permettant de surfer en sécurité simplement en ayant un client SSH et une machine distante que vous contrôlez.

Nécessaire:

- PuTTy lancé sur votre machine locale.

- Une machine distante utilisant OpenSSH (exemple: ordinateur linux à la maison).

- Firefox.

  1. Créer une nouvelle session PuTTY

Lancez PuTTy et créez une nouvelle session dans PuTTY pour vous connectez à votre machine distante exécutant OpenSSH. Entrez l’adresse de la machine distante, le port et soyez sur que SSH est coché, donnez lui un nom de session et cliquez « Sauver ».

  1. Configurer un tunnel sécurisé

Cliquez sur « Tunnels » à gauche. Entrez le port « 7070″ comme port source et laissez le port destination vide. Cochez encore « Dynamic » et « Auto » plus bas. Cliquez « Add » pour ajouter le port. Vous devriez voir « D7070″ listé.

C’est tout pour le tunnel ! N’oubliez pas de revenir à « Session » à gauche et de sauvegarder les changements.

  1. Connexion SSH a une machine distante.

Double-cliquez sur le profile de connexion et entrez votre nom d’utilisateur et mot de passe lorsqu’ils vous seront demandés.

  1. Configurer Firefox

Allez dans « Outils », « Options… », « Avancé » et cliquez sur « Paramètres… » dans Connexion.

Cliquez « Configuration manuelle du proxy » et laissez tous les champs blancs sauf pour le SOCKS où vous entrerez « 127.0.0.1″ avec le port « 7070″ et cochez « SOCKS v5″.

Categories: Non classé Tags:

Debian-Serveur: Passer de RAID1 à RAID10

Cet article est plus ou moins identique au précédent à la différence qu’il part du principe que vous disposez d’un système de RAID1 déjà fonctionnel avec de précieuses données.

On dispose d’un système de RAID1 (/dev/md0) avec deux disques dur (/dev/sda et /dev/sdb).

Lorsque l’on regarde l’état de notre système:

cat /proc/mdstat

On a quelque chose comme ça:

Personalities : [raid1] [raid0]

md0 : active raid1 sda1[0] sdb1[1]
1953519744 blocks [2/2] [UU]

unused devices: <none>

Dans un premier temps on crée une partition de type « FD » sur l’un et la copie sur l’autre (voir l’article précédant pour plus d’infos).

Puis on crée notre deuxième système de RAID1 avec nos tous nouveaux disques dur tous neufs (/dev/sdc et /dev/sdd):

sudo mdadm --create /dev/md1 --level=raid1 --raid-devices=2 /dev/sdc1 /dev/sdb1

On enlève un des disques dur du RAID1 précédent qui contient nos précieuses données:

sudo mdadm --manage /dev/md0 --fail /dev/sda1 --remove /dev/sda1

On crée un nouveau système de RAID0 cette fois-ci contenant nos deux autres systèmes de RAID1:

sudo mdadm --create /dev/md2 --level=raid0 --raid-devices=2 /dev/md0 /dev/md1

On le formate comme il se doit et on le monte:

sudo mkfs.ext3 /dev/md2

Grâce a un « watch cat /proc/mdstat » on attends que la synchronisation soit faite et on continu.

On monte notre système de RAID10.

sudo mkdir /mnt/md2
sudo mount /dev/md2 /mnt/md2

On monte le disque dur que l’on a enlevé précédemment:

sudo mkdir /mnt/sda1
sudo mount -t ext3 /dev/sda1 /mnt/sda1

On copie les données dans notre système RAID10

cp -vR /mnt/sda1/* /mnt/md2

Une fois la copie terminé, on ajouter le disque dur /dev/sda1 à sa place de départ:

sudo mdadm --manage /dev/md0 --add /dev/sda1

Et voilà, tout devrait fonctionner correctement. À noter que c’est seulement pour les données des disques dur, si vous voulez aussi que la partie bootable de vos disques fonctionne, je vous renvoie à ce super tuto.

Categories: Non classé Tags:

Debian-Serveur: 4 Disque dur en RAID10

J’ai un système de mirroring qui est déjà en place (RAID1) avec deux disque dur de 1 To. Mon objectif est de passer en RAID10 avec deux disques dur de 1 To en plus pour un total de place utilisable de 2 To.

Pour faire du RAID10, y a plusieurs solutions:

- Utiliser l’option --level=raid10 de mdadm et spécifier les quatre disques dur à monter en RAID10
- Toujours avec mdadm, créer deux périphériques de type RAID1 et les inclure dans un RAID0
- Avec mdadm, créer deux périphériques de type RAID1 et les « agglomérer » en un seul avec LVM

Un poste de linuxquestions.org très intéressant.

Pour ma part, le raid10 avec mdadm est plus facile a mettre en oeuvre, mais déstabilisant car on ne sait pas vraiment quelles sont les disques en RAID1 et RAID0. De plus, lorsque l’on retire et ajoute un nouveau, c’est pas très clair. LVM je ne connais pas et si je peux tout faire avec un seul programme, je trouve ça mieux. C’est pour cela que j’ai opté pour la solution « deux RAID1 dans un RAID0″ que je vais décrire ci-dessous.

Créer les partitions

J’ai quatre disque dure de 1 To (sda, sdb, sdc et sdd). On crée une partition:

sudo cfdisk /dev/sda

Vous sélectionner « New », puis « Primary » et laisser par défaut la taille si vous voulez prendre une partition sur tous le disque dur. Aller ensuite dans « Type » et appuyer sur Enter jusqu’à arriver a « Enter filesystem type: » (si vous êtes en plein écran, il n’y aura pas besoin d’appuyer sur Enter). Entrer comme type de partition « FD » puis Enter. Finalement, aller dans « Write », répondez par « yes » et attendez qu’il ait finit. Enfint « Quit » pour ressortir.

Votre première partition est prête, il faut maintenant que les autres disques dur aient le même partition. Faites alors ceci:

sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdb
sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdc
sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdd

Créer les périphériques RAID1

Toute vos partition sont prête, il suffit de créer les deux système de RAID 1.

sudo mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sda /dev/sdb
sudo mdadm --create /dev/md1 --level=raid1 --raid-devices=2 /dev/sdb /dev/sdc

Créer le périphérique RAID0

Il suffit de créer un système de RAID0 et d’y inclure les deux RAID1 précédemment créé.

sudo mdadm --create /dev/md2 --level=raid0 --raid-devices=2 /dev/md0 /dev/md1

Formater-le et le tour est joué.

sudo mkfs.ext3 /dev/md2

Vous pouvez dès à présent le monter où vous voulez:

sudo mkdir /mnt/md2
sudo mount /dev/md2 /mnt/md2

Voilà c’est terminé !

Categories: Non classé Tags: