Les Zeuils de Neuneuil

 


dimanche 13 décembre 2009

Un serveur web en moins de dix secondes... grace à Python !

Cela fait bien longtemps que j'entends parler de Python comme langage de programmation : simple, facile d'apprentissage, etc... Et il y a peu, je tombe sur un post d'un blog qui explique comment, en une ligne de commande très courte, créer un serveur web qui publie le répertoire courant.

il vous suffit de vous placer, en ligne de commande, dans le répertoire que vous souhaitez publier, et taper la commande suivante :

python -m SimpleHTTPServer

Et ce répertoire est du coup disponible à l'adresse http://localhost:8000/, depuis votre poste, ou depuis toute autre machine de votre LAN en remplaçant "localhost" par l'ip/nom du serveur, ou même depuis Internet si votre routeur fait du port forwarding correctement configuré.

Si vous souhaitez changer le port d'écoute, il vous faudra tout simplement le rajouter à la suite de la commande précédente :

python -m SimpleHTTPServer 8888

Si le port est inférieur à 1024, n'oubliez de rajouter "sudo" en début de commande car seul root peut le faire.

Et il y a mieux, un script bash tout simple avec zenity qui vous permet de lancer et arrêter ce mini serveur web très facilement. Il se trouve ici (attention, je ne l'ai pas testé, à utilisez avec précaution.).

Comme produit d'appel pour se lancer sur Python, c'est pas mal, non ?


L'article original : http://blog.rom1v.com/2009/12/creer-un-serveur-http-en-10-secondes/

mercredi 26 août 2009

Automatiser l'administration de votre serveur Ubuntu par ssh - partie 2


Suite de l'article : Automatiser l'administration de votre serveur Ubuntu par ssh - partie 1

N.B. : je ne détaille pas certaines choses, comme le transfert du fichier de la clé publique par exemple, car je considère que si vous appliquez ce tutoriel, vous possédez déjà certaines connaissances avancées. Si ce n'est pas le cas, je vous conseille de ne pas aller plus loin car les manipulations ci-dessous peuvent compromettre la sécurité de vos systèmes si elles sont mal appliquées ou mal comprises.



L'attente fut longue, mais voilà enfin la suite et fin de ce tutoriel ! Après avoir vu comment simplifier l'administration de ses machines par ssh via l'utilisation de scripts shell, nous allons voir comment aller encore plus loin en utilisant l'authentification par clés pour ssh.

Les identités SSH


Les identités SSH sont ce qui permet de prouver votre identité à un serveur SSH. Une identité est formée de deux parties, la clé privée et la clé publique, elles forment une paire de clés.

La clé privée permet à un client SSH de prouver son identité au serveur SSH auquel il veut se connecter. Le serveur SSH examine alors la clé publique correspondante qu'il a en sa possession, et, par un test cryptographique, si les clés correspondent, la connexion réussit.

La clée privée doit absoluement être gardée secrète. Une personne en possession de cette clé privée pourrait se connecter à vos comptes aussi facilement que vous.

La clé publique n'a pas besoin d'être secrète, elle ne peut pas servir à pénétrer par effraction dans votre compte.

Génération de son identité


Rien de plus simple, tapez dans un terminal :

ssh-keygen -t dsa

Le programme vous demande à quel endroit enregistrer la clé, laissez le choix par défaut.
Ensuite on vous demande une passphrase, il s'agit d'un mot de passe protégeant la clé privée. Pour pouvoir vous logguer sans avoir à rentrer de mot de passe, ne rentrez rien, validez par la touche entrée (deux fois). Nous verrons plus loin comment mieux sécuriser celà.
La clé privée est donc générée sous ~/.ssh/id_dsa, et la clé publique sous ~/.ssh/id_dsa.pub.

Envoi de la clé publique sur le serveur SSH


Tout d'abord, envoyez le fichier ~/.ssh/id_dsa.pub sur le serveur distant, par exemple par FTP, dans le répertoire racine de l'utilisateur sur lequel vous voulez vous connecter sur le serveur.

Il faut ensuite rentrer cette clé dans le fichier ~/.ssh/authorized_keys sur le serveur. Connectez-vous en ssh par la manière traditionnelle dessus, et tapez la commande suivante :

cat ~/id_dsa.pub >> ~/.ssh/authorized_keys

Puis effacez le fichier de clé publique transféré précédemment par le moyen de votre choix : rm ~/id_dsa.pub

Test de connexion


Allez, hop, on peut tester la connexion et vérifier que ssh ne nous demande plus de mot de passe : ssh user@machine.com

Normalement, ça fonctionne sans problème si vous avez bien suivi les instructions ci-dessus !

Variante avec passphrase et utilisation de ssh-agent


Si quelqu'un vous vole votre clé privée, comme elle ne possède pas de passphrase la protégeant, le voleur pourra l'utiliser pour se connecter sur votre serveur SSH. Pour résoudre ce problème, il vous suffit de donner une passphrase au moment de la génération de votre identité (ssh-keygen -t dsa). Je vous conseille de mettre une passphrase assez longue, en utilisant des moyens mémotechniques comme les premières lettres de chaque mot d'une longue phrase, ou en supprimant les voyelles, et en mixant les majuscules/minuscules, chiffres et caractères spéciaux.

Le point négatif de la passphrase est qu'il faut la fournir pour déverrouiller la clé privée avant la connexion ssh, on revient donc en arrière au niveau ergonomique. C'est là que le programme ssh-agent va nous aider !

Et la magie d'Ubuntu et Gnome opère : gnome-keyring intègre ssh-agent, normalement c'est activé par défaut, en tout cas dans la version 9.04 d'Ubuntu. Pour faire simple, redémarrer votre pc et lors de la première connexion au serveur SSH, la passphrase vous sera demandée via une fenêtre graphique pour la seule et unique fois (jusqu'au prochain reboot de votre PC, bien sur). C'est un moindre mal : auparavant il fallait donner un mot de passe à chaque connexion ssh, désormais il ne faut plus donner qu'une seule fois une passphrase.

Conclusion


Certains vont encore plus loin dans l'utilisation des identités SSH. Pour sécuriser au maximum l'accès à certains serveurs, l'authentification par mot de passe est désactivé, il faut obligatoirement utiliser une paire de clés SSH. Ca rajoute des contraintes, mais c'est le prix de la sécurité.
Associé avec la création de scripts comme on l'a vu dans le premier article, l'utilisation de clés SSH peut simplifier énormément la vie. Mais il faut rester prudent dans l'utilisation de ces techniques car une mauvaise utilisation pourrait compromettre la sécurité de vos systèmes, en particulier en cas de vol de votre clé privée.

samedi 21 mars 2009

Automatiser l'administration de votre serveur Ubuntu par ssh - partie 1

Voici le premier billet d'une petite série sur la façon d'automatiser au maximum les tâches d'administration répétitives sur vos serveurs Ubuntu. Bien sur, toutes ces manipulations peuvent être généralisées à n'importe quelle distribution GNU/Linux.

Toutes les commandes sont à taper dans un terminal : menu Applications -> Accessoires -> Terminal.
Pour commencer doucement, prenons l'exemple de la mise-à-jour des paquets de votre serveur.

Habituellement, voilà comment je procédais :

  1. Connection par ssh sur le serveur par un mot de passe : ssh user@serveur.com
  2. Mise-à-jour de la liste des paquets : sudo aptitude update
  3. Mise-à-jour des paquets : sudo aptitude safe-upgrade
  4. Déconnexion : exit


Première amélioration, on groupe les deux commandes pour la mise-à-jour de la liste des paquets puis des paquets eux-mêmes :

sudo aptitude update && sudo aptitude safe-upgrade

Le && signifie que la deuxième commande ne sera exécutée que si la première s'est terminée correctement.

Deuxième amélioration, on peut indiquer à ssh une commande à exécuter. Ce qui va nous donner :

ssh user@serveur.com "sudo aptitude update && sudo aptitude safe-upgrade"

ssh demande le mot de passe pour se connecter, puis à nouveau le mot de passe pour lancer les commandes (en raison du sudo).

Déjà mieux, non ? On a gagné un peu de temps. Pour en gagner encore un peu plus, on va en faire un petit script qui sera exécuté par un lanceur sur votre tableau de bord.

Histoire de ne pas laisser trainer ses scripts partout, créez un répertoire scripts et rentrez dedans : mkdir scripts && cd scripts

Créer le script qui nous intéresse : nano maj_monserveur.sh. Remplacer ''maj_monserveur.sh par le nom que vous voulez.

Collez la ligne de commande que l'on a vu plus haut, puis enregistrez et quittez par Control+x, o et Entrée. On rend le script exécutable : chmod +x maj_monserveur.sh.

Et on crée le lanceur sur le tableau de bord selon la petite vidéo suivante :



Vous pouvez aussi la télécharger dans le format libre Ogg.

Ou même la lire directement dans le format Ogg si votre navigateur le supporte (Firefox 3.1 beta par exemple) :



Cette procédure est adaptable à l'infini ! Vous pouvez exécuter ainsi une suite complexe de commandes en donnant à exécuter à ssh un autre script, par exemple. Simple et puissant ! Un peu de travail en amont, et beaucoup de temps gagné en aval.

Dans le prochain article nous verrons comment se connecter à son serveur ssh automatiquement à l'aide de clés.

lundi 8 décembre 2008

Vmware : plus de réseau après clonage d'une machine virtuelle !

Un billet style mémo pour se rappeler d'un truc que j'ai mis un moment à trouver, après avoir cloner une machine virtuelle Ubuntu Server et que le réseau ne fonctionnait plus...

Lire la suite

Free, les firmwares des Freebox et les non-dégroupés...

Je viens encore de m'apercevoir d'une différence chez Free entre les dégroupés et les non-dégroupés, mais qui, cette fois-ci, n'a pas grand-chose à voir avec le dégroupage : le serveur d'impression...

Lire la suite

dimanche 26 octobre 2008

Mettre à jour Ubuntu Server 8.04 vers 8.10 par le réseau

Comme pour le billet précédent, voilà comment mettre à jour votre Ubuntu Server 8.04 vers la 8.10, actuellement en Release Candidate, dont la version finale devrait sortir dans 4 jours.

Tout d'abord il faut s'assurer que le nécessaire est présent sur la machine :

Lire la suite