Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Archive for April, 2007

Niveau :      
Résumé : Login:

Comment se connecter à sa machine sans intervenir ?

Autologin cas 1

Si vous avez comme moi un PDA que vous branchez sur un port USB pour le recharger lorsque vous rentrez chez vous, vous pouvez l'utiliser pour lancer une connexion automatique sous kdm (pour gdm, il va falloir chercher : je n'ai pas trouvé). Je donne l'exemple du branchement d'un périphérique usb, mais vous pouvez aussi utiliser n'importe quel autre événement grâce à udev.

La détection de l'événement usb se fait simplement en ajoutant une règle à udev (noyau 2.6 obligatoire). Udev n'étant pas de configuration facile voici la ligne à ajouter dans /etc/udev/rules.d/local.rules ou tout autre fichier de ce répertoire.

SUBSYSTEM=="usb_device", SYSFS{idVendor}=="03f0", SYSFS{idProduct}=="1016", RUN+="/usr/local/sbin/ipaq-event.sh"

Les valeurs idVendor et idProduct se trouvent avec la commande lsusb, périphérique branché. Ces valeurs sont les 2 parties du champ ID.

Pensez à relancer udevd

/etc/init.d/udev restart

Le script à lancer (ipaq-event.sh) ne devra pas être modifiable ni exécutable, ni lisible par un autre que root ou vous-même étant donné son contenu, que voici :

#!/bin/sh
kdmctl -g login :0 user password

Notez que vous pouvez avoir autant d'autologin différents que de périphériques usb.

login_usb.png


continue reading...

Niveau :      
Résumé : pwgen

Le problème

Un mot de passe compliqué à trouver pour un attaquant est aussi compliqué à mémoriser pour un utilisateur. Le risque est donc qu'il l'écrive quelque part où il sera encore plus simple pour l'attaquant de le trouver.

Une solution

pwgen permet de générer des mots de passe qui sont à la fois compliqués pour l'attaquant et facile à mémoriser. Il génère un certain nombre de mots de passe en se basant sur des syllabes. Un petit inconvénient est que ce sont des syllabes anglaises donc moins simples pour un français.

Par défaut pwgen génère une liste de 160 mots de passe dans lesquels vous pouvez en choisir un. Cela permet d'éviter qu'on regarde par dessus votre épaule lorsque vous le choisissez.

Une astuce lui permet de fonctionner comme les questions optionnelles pour les sites en ligne. Il est en effet possible de générer des mots de passe à partir d'un hash donné. Pour cela passez-lui un nom de fichier en paramètre (avec l'option -H) et il vous ressortira toujours les mêmes mots de passe à partir d'un fichier identique. Vous pouvez choisir un fichier qui ne changera pas (comme un de vos ogg) ou une passphrase que vous écrirez dans un fichier temporaire le temps de la génération.

$ pwgen -H ~/Musiques/FrereJacques.ogg
$ pwgen -H <(echo "Passphrase plus ou moins longue")

Attention, toute connaissance sur ce hash est une faille qui permettrait à un attaquant de grandement réduire le nombre de mots de passe à tester. Veillez donc à ce que personne n'en soit au courant.

Niveau :      
Résumé : mke2fs; mount; tar; grub; reboot

Si vous administrez des machines à distance sous linux, il se peut que cet article vous intéresse.

Il arrive parfois qu'on veuille réinstaller une machine sur laquelle on n'a qu'un accès distant (en général ssh), par exemple pour changer de distribution ou pour beaucoup d'autres mauvaises raisons. Il existe pour cela peu de méthodes. Nous allons en voir quelques unes avec différentes contraintes. Il est certainement possible d'appliquer la méthode pour installer d'autres unix, mais les pièges sont différents.

Attention toutefois, une erreur de manipulation peut vous faire perdre le contrôle. Il vous faut disposer d'un éventuel collaborateur pouvant agir directement sur la machine en cas d'urgence. Ou tout au moins la possibilité d'un reboot distant (du style par commande de la prise électrique), avec un bootloader bien configuré ou la possibilité de booter par le réseau, ceci permet de rattraper quasiment toutes les erreurs. Et n'oubliez pas de tester chez vous ce dont vous n'êtes pas sûr :-).

Méthode 1

La plus simple, si vous avez une partition vide disponible. Ou de l'espace libre sur votre disque, auquel cas un cfdisk && mkfs bien placé vous ramène dans la situation voulue (notez le besoin de rebooter si vous faites un cfdisk sur le disque où se situe votre / ).

Les étapes sont alors les suivantes :

  • Préparer la partition
$ mke2fs -j /dev/sda3
$ mount /dev/sda3 /mnt
  • Installer la système selon la méthode qui lui convient
# si vous avez une installation de référence dans une archive
$ tar xfz base.tgz -C /mnt
# si vous installez une debian (debootstrap peut s'installer sur une non debian)
$ debootstrap lenny /mnt ftp://ftp.debian.org

Debootstrap est très pratique, il permet d'installer une debian dans un répertoire.


continue reading...

Niveau :      
Résumé : Xephyr :1&

Il y a certains outils dont on se demande parfois l'utilité, qui ont été faits pour faire des tests et qui s'avèrent finalement bien pratiques dans des situations bien particulières.

Xephyr

Xephyr est un serveur X qui ne fonctionne que dans un autre serveur X. C'est-à-dire que pour le serveur X existant, il s'agit d'une simple fenêtre mais pour l'application qui affiche sur ce serveur, il s'agit d'un vrai serveur X.

Comment ça marche ?

# A lancer dans un terminal ayant accès à un serveur X
$ Xephyr -ac :1 &
$ export DISPLAY=:1
$ xclock
  • L'option -ac indique de ne pas faire de contrôle d'accès pour nous simplifier le droit d'utiliser ce serveur X
  • L'option :1 dit que ce nouveau serveur X a pour identifiant 1. Sachant qu'il y a probablement déjà un serveur avec l'identifiant 0 sur votre machine. On peut indiquer n'importe quel nombre positif.
  • Le export DISPLAY indique aux commandes graphiques d'utiliser le serveur X d'identifiant donné sur la machine locale.
  • La commande xclock devrait vous ouvrir une horloge dans la fenêtre du nouveau serveur X.

xephyr.png Gnome et gimp dans Xephyr.


continue reading...

Niveau :      
Résumé : par2 c file ; par2 r file.par2

Toutes vos données sont stockées sur un support à durée de vie limitée (hé oui, il faut en avoir conscience); quelques années pour un CD, pas bien plus pour un disque dur, quelques réécritures pour les clés usb et que dire du net ... (_real_ men just upload their important stuff on ftp, and let the rest of the world mirror it ;)

Il est par contre probable que ces supports se dégradent progressivement et donc qu'on ne puisse récupérer qu'une partie de ces données (voir prochain article sur ddrescue). Cela peut être acceptable pour des données supportant les pertes (musique, vidéos) mais pas pour tout. De plus on ne peut pas savoir à l'avance quelles seront les informations perdues et celles conservées, donc un duplicata des informations ne serait qu'un retardant de la perte de données.

Sauvegarde

C'est pourquoi le complément indispensable à toute vos archives se nomme par2. Il permet de créer de la redondance et de l'utiliser pour récupérer vos données quelle que soit la perte tant qu'il y a moins de données perdues que de redondance. Les fichiers par2 fonctionnent par groupe et non pas avec un seul fichier. Ceci permet de perdre un fichier entier. Son utilisation est très simple :

$ par2 c -r25 fichier.png

Crée un groupe de fichiers avec 25% de redondance sur fichier.png les nouveaux fichiers vont être nommés avec l'extension .par2

Vous pouvez choisir le taux de redondance que vous voulez, jusqu'à 100%. Notez que la taille des fichiers résultants dépasse ce pourcentage car ils contiennent des métadonnées. Vous pouvez jouer avec les option -s et -n pour limiter cette perte en fonction de la taille de vos données.

Un certain nombre de paramètres permettent de choisir le nom des fichiers par2 ou de choisir différemment le taux de redondance et la taille des fichiers par2

Vous pouvez aussi spécifier autant de fichiers de départ que vous le désirez.


continue reading...

Niveau :      
Résumé : su - ; xclock

Êtes vous utilisateurs de su ? Si oui, il vous est sûrement déjà arrivé de vouloir lancer une application graphique une fois passé root et vous dire que mince ça ne marche pas. C'est un des gros avantage que les utilisateurs de sudo apprécient.

Petite parenthèse sur sudo pour ceux qui en ont marre de taper sudo à chaque commande. Il existe sudo -s qui permet de faire en sorte que toutes les prochaines commandes soient tapées comme paramètre à sudo.

Revenons à notre su et présentons deux premières méthodes un peu bricolo.

Méthode 1 : on passe par la pile ip locale

$ xhost +localhost
$ su -
$ export DISPLAY=localhost:0
$ xclock

Méthode 2 : on ouvre un tunnel vers soi même

$ ssh -X root@localhost
$ xclock

Avouez qu'on peut mieux faire. Pour cela, il faut comprendre le mécanisme d'autorisation de X. X11, ou xorg, utilise un système de cookies pour savoir qui a le droit d'utiliser le serveur. Celui qui a le cookie a le pouvoir. La commande xauth permet de manipuler ces cookies, nous avançons vers la bonne méthode.


continue reading...

Niveau :      
Résumé : 1,0 ou 1/2

Un demi-bit

Beaucoup de gens pensent que le bit est l'unité élémentaire de l'informatique et en tant que tel totalement indivisible. C'est vrai d'un certain point de vue, mais tout comme on a découvert qu'un atome peut être décomposé, un bit peut être découpé.

En quoi cela peut-il bien être utile ? C'est utile en sécurité. Supposons qu'une bombe atomique soit lancée grâce à une clé numérique. Vous ne voudriez pas donner cette clé à une seule personne bien évidemment, mais vous ne voudriez pas non plus donner la moitié de la clé à 2 personnes car cela la fragiliserait énormément. La solution est de donner 2 clés complètes à 2 personnes mais toutes deux composées de demi-bits.

Ces demi bits sont tout simplement la composition du bit d'information avec un bit aléatoire. Et nous allons remercier la fonction xor d'être réversible.

Outil

Nous aurons besoin d'un petit script pour faire le xor de 2 fichiers binaires. Le voici, il est totalement suboptimal mais fait ce qu'on lui demande (en particulier il fonctionne avec /dev/random). On l'appellera xor.pl

#!/usr/bin/perl
open(T1,"< ",$ARGV[0]);
open(T2,"<",$ARGV[1]);
open(T3,">",$ARGV[2]);
while(read(T1,$a,1))
{
  read(T2,$b,1);
  $c = $a ^ $b;
  print T3 $c;
}

continue reading...