Category Archives: Linux

ESXi et disque dur de 10To

vmware esxi issue

Aujourd’hui j’ai reçu mes 4 disques dur Seagate IronWolf de 10to qui vont venir dans mon microserveur HP Gen 8 en remplacement des disques dur Seagate Desktop 4to.

Je pensais que le remplacement des disques durs au niveau d’ESXi se ferait sans souci mais j’ai rencontré des difficultés notamment pour ajouter les disques dur 2, 3 et 4.

Je vous propose donc de revenir sur les problèmes que j’ai eu et sur la procédure pour installer les 4 disques durs de 10to Seagate IronWolf dans mon serveur HP Gen 8.

Installer un serveur VPN en 5 minutes sur votre VPS

VPN

Cela fait désormais quelques années que l’on entend parler de VPN. Un VPN (Virtual Private Network) permet de cacher votre adresse IP. Il s’agit tout simplement d’un tunnel sécurisé et généralement crypté entre votre connexion et un serveur.

L’utilisation de serveurs VPN s’est démocratisée car l’anonymat est devenu un élément indispensable d’une navigation Internet sécurisée. Les accès VPN sont notamment utilisés par les downloaders pour se protéger des sanctions Hadopi par exemple.

Mais l’utilisation d’un serveur VPN ne se limite pas à aux téléchargements illégaux de vidéos n’ayant pas été filmées pendant vos vacances :p

Monitorer vos serveurs Linux facilement

monitorix-logo

La supervision de serveurs et de réseaux est un marché énorme qui rapporte plusieurs milliards d’euros à ses principaux acteurs. Mais les petits geeks que nous sommes peuvent aussi monitorer leur homeserver, leur VPS ou leur serveur dédié sans pour autant avoir à se ruiner.

Il existe de nombreux logiciels de monitoring Open Source ou gratuit qui assurent la supervision de serveurs mais il sont souvent difficile à mettre en place et à configurer, ce qui est vite contraignant lorsqu’on a un seul serveur ou quelques machines à surveiller et administrer.

Après avoir comparer une dizaine de solutions de supervision d’infrastructure, j’ai trouvé le logiciel de monitoring parfait pour superviser une dizaine de serveurs: Monitorix !

Avoir un serveur c’est cool, mais savoir ce qu’il se passe dessus c’est encore mieux !

10 minutes pour transformez votre RaspBerryPi en SeedBox Torrent

seedbox torrent

Il existe de nombreux moyens de partager ses fichiers, ses photos et ses vidéos. Parmi les méthodes de partage les plus utilisées et les plus ancrées dans nos moeurs, il existe les torrents et les serveurs de torrents.

Les torrents vous permettent d’échanger des fichiers via un réseau de type Peer To Peer (P2P). On croit souvent que les torrents sont interdits par la loi ET C’EST TOTALEMENT FAUX.

Tout comme pour les autres réseaux P2P, ce n’est pas le moyen utilisé pour échanger qui est interdit et répréhensible: ce sont les fichiers que vous partagez (en téléchargeant ou en uploadant) qui sont soumis à un certain nombre de règles tel que le droit d’auteur.

Alors là je vous vois venir et vous allez me dire que ce genre de réseau servent uniquement à échanger des films et autres séries. Encore une fois c’est FAUX et surtout pour les torrents qui sont utilisés, entre autres, pour diffuser des distributions Linux ou bien des drivers matériels.

Et c’est bien dommage que les gens confondent un peu tout. En effet, le principe même du Peer To Peer est relativement intéressant: partager ses propres données pour pouvoir en récupérer de nouvelles chez des tiers. Et le système torrent va encore plus loin car il nécessite d’avoir un ratio pour pouvoir télécharger.

Pour rappel, le ratio est le delta entre ce que vous partagez (upload) et ce que vous récupérez (download).

Mais comment faire gonfler ce ratio facilement? Comment faire pour diffuser une ressource rapidement et efficacement ?

L’installation et l’utilisation d’une SeedBox Torrent va nous permettre de faire tout cela.

[cURL] 15 commandes pratiques avec cURL

curl

cURL est un outil gratuit en ligne de commande qui permet de télécharger et d’envoyer des données sur divers protocoles: DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet et TFTP.

cURL est léger et disponible sur presque toutes les plateformes: Mac, Windows et Linux.

Il est fréquemment utilisé dans des scripts sous Linux ou pour télécharger du contenu via l’extension cURL de php.

cURL est probablement le logiciel que j’utilise le plus souvent car il me permet de faire du diagnostique, du flooding, du benchmark, de la maintenance, du téléchargement, …

Ainsi lorsque je développe des applications Web, il me permet de vérifier l’efficacité de mon code en envoyant des centaines de requêtes HTTP par secondes, ou bien il me sert d’aspirateur de sites, ou bien encore il me permet de faire des opérations de maintenance comme la sauvegarde de dossiers puis l’envoie sur un FTP de backup.

cURL est vraiment ultra puissant, en plus d’être rapide et performant, il supporte les authentifications sécurisées.

Ce tutoriel pourra vous servir de mémo sur l’utilisation de cURL et il sert de complément à mon premier article sur cURL.

Réplication entre 2 serveurs MySQL

mysql

Cela fait maintenant plus de 15 ans que j’utilise MySQL comme principal Système de Gestion de Bases de Données (SGBD) car il est simple à installer, à administrer et à configurer.

MySQL est un moteur de bases de données à la fois léger, gratuit et relativement performant.

Mes serveurs sont la plupart du temps hébergés sur des serveurs dédiés et il arrive plusieurs fois par an que ceux-ci soient en maintenance.

Se pose alors le problème de savoir comment faire pour rendre disponible mes bases de données lors d’une maintenance ou d’un crash, sans avoir à faire des dizaines de manipulations contraignantes.

Mais comment assurer une certaine disponibilité de vos bases de données sous MySQL ? La réplication de vos bases de données répond parfaitement à cette question.

Installer facilement Webmin sur Ubuntu

webmin

Ayant commandé de nouveaux serveurs dédiés pour assurer la disponibilité de ZeM.fr, j’ai voulu installé Webmin afin de me faciliter la vie dans l’administration des machines et dans la gestion de mes différents sites internet.

Webmin est une application qui permet de gérer votre machine via un simple navigateur internet: gestion des sites, des services, du raid, des utilisateurs, etc…

Webmin permet ainsi d’administrer les fonctionnalités de votre serveur dédié et des services ou applications qui y sont installés.

Mes nouveaux serveurs dédiés sont sur Ubuntu et malheureusement Webmin n’est plus disponible dans les paquets du repository.

Nous allons donc voir comment procéder à une installation de base de Webmin sur une plateforme à base Debian.

7 Outils pour analyser la mémoire sous Linux

memory dump

Cette semaine, j’ai été confronté à un problème sur un de mes serveurs de production.

Afin d’analyser et de localiser le souci, j’ai voulu dumpé la mémoire de mon serveur Linux, c’est à dire sauver la mémoire à un instant T dans un fichier afin de pouvoir l’analyser ensuite grâce à différents outils.

Ce type d’analyse est appelé “forensics analysis” et permet de tester votre serveur Linux:

  • détecter les codes et les données qui sont actuellement utilisés en mémoire.
  • chercher un processus spécifique dans la mémoire.
  • rechercher une chaine de caractères ou un autre type de données.
  • utiliser le dump dans d’autres logiciels.
  • chercher, remplacer et dumper la mémoire des processus courants et des processus du noyau ou du kernel.
  • détecter des tentatives d’intrusion ou de hacking sur votre serveur, et corriger les failles existantes.

Monitorer votre serveur Linux grace à MRTG

Aujourd’hui j’ai dû installer un logiciel de monitoring sur mes serveurs Linux afin de pouvoir superviser l’utilisation de la bande passante.

Pour faire celà, il m’a suffit d’installer MRTG (Multi Router Traffic Grapher) qui est un logiciel permettant de créer des graphiques sur le trafic réseau.

Il envoie des requêtes SNMP pour interroger des équipements réseaux tels que des routeurs,  des commutateurs, ou bien encore des serveurs disposant d’une MIB SNMP.

Installation d’Apache, MRTG et SNMP

Pour pouvoir utiliser MRTG, il nous apache et snmp. S’ils sont déjà installés, ne les réinstallez pas:

apt-get install apache2 mrtg snmpd

Configuration du SNMP

Faire une sauvegarde de la configuration snmp de base:

mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak

puis éditez le fichier de configuration de snmp:

nano /etc/snmp/snmpd.conf

et écrivez le contenu suivant:

rocommunity  public
syslocation  "France"
syscontact  votre@email.fr
com2sec public localhost public
group public v1 public
group public v2c public
group public usm public
view all included .1
access public "" any noauth exact all none none

Ensuite il faut éditer le fichier /etc/default/snmpd:

nano /etc/default/snmpd

Et vérifier que le fichier contient les lignes suivantes:

SNMPDRUN=yes
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid -c /etc/snmp/snmpd.conf'
TRAPDRUN=yes
SNMPDCOMPAT=yes

La configuration du service snmp est désormais terminée, vous devez redémarrer le service snmp:

/etc/init.d/snmpd restart

Configuration de MRTG

Créez un dossier pour MRTG:

mkdir /var/www/mrtg
chmod o+w /var/www/mrtg

Créez un fichier de configuration:

cfgmaker --global 'WorkDir:/var/www/mrtg' --ifref=name --ifdesc=eth --global 'Options[_]: bits' --output /etc/mrtg.cfg   public@localhost

Ensuite, créez un fichier d’index:

indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

Puis démarrez MRTG:

env LANG=C /usr/bin/mrtg /etc/mrtg.cfg

Il se peut que des erreurs apparaissent au lancement de Mrtg. Rassurez-vous c’est tout à fait normal. Il suffit d’exécuter plusieurs fois la commande ci-dessus et vous n’aurez plus l’erreur.

Il ne nous reste plus qu’à ajouter une tache planifiée:

crontab -e

Et ajoutez cette ligne dans le gestionnaire des crons:

*/5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg.cfg

L’installation de MRTG est terminée. Vous n’avez plus qu’à attendre 5 minutes puis vous pourrez consulter vos graphiques de statistiques en utilisant l’adresse suivante http://votre_ip/mrtg/.

Vous obtiendrez alors des graphiques de statistiques de consommation de bande passante de ce genre:

mrtg bandwidth

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.

Inline
Inline