août 23rd, 2010 § § permalink

Ce billet inaugure une toute nouvelle rubrique baptisée : Sysadmin’s friends (en français : les amis de l’admin sys). Non…non… mon intention n’est pas de vous présenter un pote à moi chaque semaine, il n’y aurait pas de quoi tenir un mois, nooooon je déconne !
Plus sérieusement, l’idée est donc de vous présenter régulièrement un petit outil qui apporte énormément au quotidien d’un administrateur système et réseau.
Pour cette première, j’ai choisi de vous présenter screen, un multiplexeur de terminaux en mode texte (réflexion personnelle : voilà, j’ai largué la moitié de mon audiance rien qu’avec cette phrase). Pour faire plus simple, screen permet en quelque sorte d’avoir plusieurs terminaux dans une seule fenêtre.
Trêve de bavardages, passons aux choses pratiques :
|
|
# Installation de screen sous Debian/Ubuntu aptitude install screen # Installation de screen sous CentOS/Fedora/RHEL yum install screen # Installation de screen sous Archlinux pacman -S screen |
Lesson number one :
Pour lancer screen depuis votre terminal, il suffit de taper
(ouahhh comment il est fort lui !).
Lesson number two :
Pour afficher le numéro de fenêtre (de terminal, de shell) sur lequel nous sommes, il suffit de presser CTRL+A puis W. Vous verrez normalement s’afficher dans le coin inférieur gauche de votre terminal la mention suivante : 0*$ bash. Le nombre zéro suivi d’une étoile signifie que nous sommes sur la première session (ou premier terminal).
Lesson number three :
Avant d’aller plus loin, lançons la commande top qui affiche des statistiques systèmes. Maintenant, faites CTRL+A puis C, vous devriez vous retrouvez à nouveau avec un terminal vide. Faites CTRL+A puis W, que remarquez vous ? Oui oui, c’est bien cela, vous êtes passés à une seconde session.
Lesson number four :
Maintenant je pense que vous aimeriez bien savoir comment retourner à votre session précédente non ? Et bien diverses possibilités s’offrent à vous.
CTRL+A puis P : Permet de passer à la session précédente.
CTRL+A puis N : Permet de passer à la session suivante.
CTRL+A puis n : n étant numéro de session que l’on désire atteindre.
Lesson number five :
Bon là, je vous vois dubitatif compte à l’intérêt de cette commande étant donné que les onglets existent déjà sur le shell de votre Gnome ou de votre KDE.
C’est là qu’intervient cette avant dernière leçon ! Quand vous utilisez le terminal de KDE ou de Gnome avec différents onglets, si vous fermez votre terminal et bien vous perdez logiquement l’ensemble de vos onglets… et inévitablement les commandes qui étaient lancées sont interrompues.
Et bien… petite démo !
Positionnez-vous sur la première session où la commande top a été lancée : CTRL+A puis 0 (c’est un zéro et non la lettre o de l’alphabet). Puis faites, CTRL+A puis D. Oupsss ! Tout a disparu ! C’est normal ne paniquez pas ! Maintenant, fermez complètement votre fenêtre de terminal (si vous êtes en environnement graphique bien entendu).
Re-ouvrez une fenêtre terminal et tapez : screen -r. Et là comme par miracle, vous vous retrouvez sur votre première session avec la commande top qui tourne toujours. Grâce à cette spécificité, vous pouvez utiliser screen lors d’une connexion SSH pour pouvoir lancer une commande sur une machine distante puis vous en déconnecter tout en laissant la commande continuer son exécution, il vous sera même possible de vous reconnecter par la suite en SSH et de reprendre votre session pour vérifier l’état d’exécution de la commande précédemment lancée.
Lesson number six :
Une dernière petite leçon en guise de “pompon sur la gâteau”, en effet, je ne pouvais pas clore cet article sans parler du partage de session via SSH à l’aide de screen.
|
|
# Admettons que titi veut partager l'écran de sa machine avec toto qui possède un accès SSH sur celle-ci. # Sur la machine de titi screen -S nom_de_session # Faites CTRL+A puis :multiuser on # Faites CTRL+A puis :acladd toto # Depuis la machine de toto : ssh toto@ip_machine_titi screen -x titi/nom_de_session |
Voilà, maintenant vous savez comment partager vos sessions entre deux machines via SSH. A très bientôt les zouzous !
novembre 3rd, 2009 § § permalink

Les cours se suivent l’un après l’autre et parfois on découvre des choses passionnantes. Dernièrement en étudiant la notion de fork (ou plutôt devrais-je dire “en re-étudiant” puisque j’avais déjà étudié cela durant mon précédent cursus) j’ai eu une idée lumineuse (machiavélique) qui se résume à utiliser des forks pour saturer le système et ainsi le faire planter.
Quelques minutes plus tard et après avoir tapé quelques lignes de code en C, j’ai obtenu le résultat escompté, c’est-à-dire un joli plantage, pour aller plus loin dans le sujet j’ai googlé un peu et là je suis tombé sur un code merveilleux, d’une beauté rare ! Un petit code en bash à taper directement dans sa console pour faire planter Linux, c’est instantané et radical !
Voici donc le code magic :
:() { : | : & };:
Cela peu paraitre fou mais ces quelques caractères font réellement planter le PC ! Seule solution pour reprendre la main : redémarrer à l’aide du bouton d’arrêt!
Ceux qui, comme moi, ont étudié et codé un peu en bash, ont normalement compris ce qui se cache dernière cette série de symboles… Non ?! Vous ne comprenez pas ?!?! Ok, alors je vais expliquer le code par petits bouts :
:() Cette syntaxe bash indique que l’on créé une fonction nommée “:“.
{ Cette accolade ouvrante marque le début du contenu de la fonction.
: | : & Ceci est le corps de la fonction, on appelle la fonction “:” en elle-même (récursivité) et on la pipe avec elle même, le tout sera exécuté en tâche de fond.
} Cette accolade fermante indique la fin du contenu de la fonction.
;: Le point virgule en console sert de séparateur entre deux commandes, le “:” indique qu’on lance la fonction “:” qu’on a précédemment défini.
En résumé, ce qu’il y a avant le “;” sert à définir notre fonction et ce qu’il y a après le “;” est l’appel de la fonction définie. Le résultat est un fork exponentiel qui va très rapidement saturer la mémoire (cela foudroie instantanément mon laptop équipé d’un dual core 1,6Ghz et d’1Go de DDRII).
Bien entendu, étant futur administrateur système et réseau et passionné de sécurité informatique, j’ai aussi cherché à savoir comment se protéger de ce genre de pratique, mine de rien ce petit truc là que je vous montre dans ce billet permet à un utilisateur ayant des privilèges standards de faire planter la machine sans utiliser de commandes particulières, vous imaginez ça sur un serveur de production ?
Donc j’ai pu constater qu’un des moyens de protéger son système est d’utiliser PAM, il faut donc éditer le fichier /etc/security/limits.conf pour limiter le nombre de processus que peut lancer un utilisateur.
Il doit aussi y avoir des patchs pour le noyau permettant de sécuriser ce phénomène mais comme j’ai un examen assez complexe demain (sémaphores et compagnie), je n’ai pas eu le temps de chercher d’avantage. Néanmoins, je vous tiens au courant et je vous dis à très bientôt pour de nouvelles aventures !
octobre 20th, 2009 § § permalink

Les cours s’enchainent de manière soutenue et ils sont de plus en plus intéressants. Il faut dire que certains de nos profs sont des pointures dans le domaine du libre, je pense notamment à Lucas Nussbaum qui est un développeur Debian (mainteneur officiel des packages de Perl sous Debian et Ubuntu) ainsi que Laurent Vallar qui est membre de la team Linuxfr.org.
Aujourd’hui on a eu droit en cours à une petite parenthèse au sujet de la sécurité de GRUB, Mr Nussbaum nous a montré comme il était facile d’exploiter GRUB dans sa configuration par défaut pour avoir accès à un système sans mot de passe root ni compte utilisateur.
La méthode qui nous a été décrite est affreusement simple du moment qu’on n’a accès physique à la machine, il suffit lors de l’affichage du menu de sélection de GRUB de sélectionner l’entrée de la distribution Linux puis de taper “e” pour éditer cette entrée, on ajouter à la fin de la ligne débutant par kernel la commande suivante :
init=/bin/bash
Attention à bien laisser un espace entre le texte déjà présent dans la ligne et ce qu’on y ajoute. Il ne faut pas que cela soit coller !
Une fois cette modification faite, on valide en tapant sur “Entrée” puis on boot en pressant la touche “b”. Et là miracle, au bout de quelques seconde on arrive sur un shell bash tout beau sans qu’aucune identification ne soit requise. A partir de là on peut imaginer effectuer tout un tas d’action comme modifier le mot de passe d’un utilisateur à l’aide de la commande passwd. Notez d’ailleurs que cette technique est parfaitement utilisable quand vous avez oublié votre mot de passe root par exemple.
Maintenant voyons comment améliorer la sécurité de notre GRUB et du PC de manière générale :
- Mettre un mot de passe au BIOS pour éviter les modifications de celui-ci.
- Modifier les séquences de boot de façon à ce que la machine ne boot que sur le disque dur, pensez pour cela à complètement désactiver les autres périphériques de boot car se contenter de mettre le disque dur en première position dans la séquence de boot ne suffit pas, un hacker peut très bien sélectionner un autre périphérique de boot avec certains raccourcis comme F2, F10 ou F12 (tout dépend du matériel).
- Mettre un cadenas au chassie du PC (ou l’enfermer dans une case du bureau) pour empêcher un accès à l’intérieur de la machine.
- Protéger GRUB à l’aide d’un mot de passe :
Pour mettre un mot de passe à grub il va tout débord falloir générer un hash md5 du mot de passe que vous désirez utiliser, pour cela il faut passer par l’utilitaire grub-md5-crypt :
[nassim@Laptop_Nassim ~]$ grub-md5-crypt
Password:
Retype password:
$1$XF1ZG/$Hry.mmJjvlJ1DeH4/4EG9.
La chaine de caractère en vert est votre mot de passe en crypté, vous devez le copier. Il ne reste plus qu’à éditer le fichier menu.lst de Grub et y insérer la ligne suivante au niveau des configurations générales (et non à la fin du fichier) :
password –md5 MotDePasseCrypté
Pour activer la protection des différentes entrées de Grub, il faut modifier chaque entrée du menu.lst en ajoutant le terme lock en dessous de leur titre, comme dans cet exemple :
# (0) Arch Linux
title Arch Linux
lock
root (hd0,5)
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/af698b50-2fab-4465-9e75-94de78fca8b2 ro vga=792
initrd /boot/kernel26.img
Voilà, désormais lors du lancement de grub vous ne pourrez ni éditer ni lancer une entrée (démarrer Linux) dans avoir pressé la touche “p” puis avoir saisi votre mot de passe.
J’avoue Personnellement, je trouve que cette protection n’est pas très pratique, cela devient vite fatiguant de devoir saisir son mot de passe à chaque démarrage, je recommande donc cette manipulation uniquement pour les machines qui nécessites réellement un soin très particulier en terme de sécurisation (serveur, ordinateur ayant des données sensibles…etc).