BlueIcefield Le savoir n'a de valeur que s'il est partagé

23août/100

[Sysadmin's friends] Screen

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

screen

(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 !

19août/102

Réinitialiser le mot de passe d’un compte Windows depuis Linux

Il nous arrive à tous d'oublier des choses, parfois même, d'oublier le mot de passe de son compte utilisateur. Si vous êtes sous Linux et que vous avez gardé GRUB dans sa configuration d'origine il est possible de surmonter ce problème sans CD/DVD de Linux et sans formater toutes vos données.

Par contre, s'il s'agit d'un compte Windows, la méthode conventionnelle nécessite l'emploi d'un CD/DVD de Windows, ce que vous n'avez pas forcément sous la main (notamment si vous avez un Windows OEM d'installé).

Sachez toutefois qu'il vous est possible de supprimer ou de modifier le mot de passe de votre compte Windows depuis Linux, que cela soit via un Linux présent sur votre machine autant que second système d'exploitation ou bien via un LiveCD Linux (du moment qu'il vous est possible d'installer des paquets supplémentaires).

L'outil qui permet de faire cela se nomme chntpw. Regardons ensemble comment l'utiliser :

# Installation de chntpw sous Debian/Ubuntu (droits root requis)
aptitude install chntpw
 
# Installation de chntpw sous Archlinux
yaourt -S chntpw
 
# Installation de chntpw sous Fedora (droits root requis)
yum install chntpw
 
# On doit se rendre dans le répertoire où se trouve le fichier SAM de Windows
# Ce fichier est dans le répertoire WINDOWS/system32/config/ de la partition contenant votre Windows
# Le début du chemin varie donc selon le montage de votre partition Windows
cd /media/disk1/WINDOWS/system32/config/
 
# On liste les comptes Windows
chntpw -l SAM

# On va par exemple travailler sur le compte 'Nassim' (voir capture d'écran ci-dessus)
chntpw SAM -u Nassim

Description des options du menu :
1 - Suppression du mot de passe du compte.
2 - Modification du mot de passe du compte (à utiliser avec prudence sous XP et Vista, probablement à cause de certains dispositifs de renforcement du cryptage).
3 - Ajout des droits administrateur au compte.
4 - Débloquer/activer le compte.
q - Quitter.

Une fois votre choix fait (et éventuellement le nouveau mot de passe saisi), l'application vous demandera si vous désirez réellement sauvegarder les changements dans le fichier SAM, il faudra donc répondre oui (Y).

Voilà, j'espère que ce petit billet vous aura donné un petit coup de pouce !!!

18août/101

[Sécurité] Partage de secret

En cryptologie, le partage de secret est une méthode consistant à fragmenter un secret en plusieurs éléments, de façon à ce que le secret ne soit reconstituable qu'avec la réunion d'un certain nombre de ces différents éléments.

Le logiciel ssss disponible sous Linux implémente la méthode Shamir de partage de secret. Voyons un peu comment cela fonctionne :

# Installation du logiciel ssss (valable pour Debian et Ubuntu uniquement)
sudo aptitude install ssss
 
# Fragmentation de notre mot de passe en 5 éléments de façon à ce qu'il soit reconstituable à partir de 3 de ces éléments.
ssss-split -t 3 -n 5
 
Generating shares using a (3,5) scheme with dynamic security level.
Enter the secret, at most 128 ASCII characters: my secret root password
Using a 184 bit security level.
1-1c41ef496eccfbeba439714085df8437236298da8dd824
2-fbc74a03a50e14ab406c225afb5f45c40ae11976d2b665
3-fa1c3a9c6df8af0779c36de6c33f6e36e989d0e0b91309
4-468de7d6eb36674c9cf008c8e8fc8c566537ad6301eb9e
5-4756974923c0dce0a55f4774d09ca7a4865f64f56a4ee0
 
# Pour reconstituer le mot de passe
ssss-combine -t 3
 
Enter 3 shares separated by newlines:
Share [1/3]: 3-fa1c3a9c6df8af0779c36de6c33f6e36e989d0e0b91309
Share [2/3]: 5-4756974923c0dce0a55f4774d09ca7a4865f64f56a4ee0
Share [3/3]: 2-fbc74a03a50e14ab406c225afb5f45c40ae11976d2b665
Resulting secret: my secret root password

Je vous recommande de lire le man de la commande ssss-split pour voir les différentes options possibles mais en général cet outil reste simple d'utilisation.

On peut imaginer exploiter ce logiciel au sein d'un système d'authentification ou par exemple partager le mot de passe d'une archive compressée.

Site officiel : http://point-at-infinity.org/ssss/

15août/102

Réinitialiser le mot de passe root d’une base de données MySQL

Öhhh catastrophe ! öhhh désespoir !  Vous êtes affolé devant votre écran, les mains qui tremblent, à essayer de retrouver le précieux sésame donnant l'accès total et sans restrictions à votre base de données MySQL. Est-ce peine perdue ? Rassurez-vous, la réponse est non !

En effet, il est toujours possible de réinitialiser le mot de passe root de votre base de données. Voici la démarche à suivre :

# Note :Toutes ses opérations nécessites d'avoir les droits root sur le système 
 
# On stoppe le serveur MySQL
/etc/init.d/mysql stop
 
# On lance le serveur en mode 'safe'
/usr/bin/mysqld_safe --skip-grant-tables &
 
# On se connecte autant que root à la BD MySQL (Ohhh miracle ! Aucun mot de passe n'est demandé ;-) )
mysql --user=root mysql

Une fois connecté autant que root à votre serveur MySQL, il suffit de paramétrer un nouveau mot de passe :

mysql> update user set Password=PASSWORD('votre-nouveau-mot-de-passe') WHERE User='root';

Finissons en relançant notre serveur MySQL en mode normal :

# On stoppe le processus mysqld_safe... attention méthode brutale ^^
killall -9 mysqld_safe
 
# On démarre MySQL en mode normal
/etc/init.d/mysql start

Et voilà, la fin est toujours heureuse dans le joli monde Unix !

15août/100

Géolocalisation d’adresses IP sous Apache2

L'une des forces du serveur web Apache est la panoplie de modules qu'on peut lui greffer, enrichissant ainsi ses fonctionnalités. Aujourd'hui, je vais vous présenter un module permettant d'effectuer de la géolocalisation d'adresses IP.

Tout d'abord commençons par installer ce fameux module :

# Valable pour Debian et Ubuntu uniquement
sudo aptitude install libapache2-mod-geoip
 
# On redémarre le serveur Apache
sudo /etc/init.d/apache2 restart

Voilà, dès à présent, il vous est possible d'obtenir le pays ainsi que le code du pays des personnes qui visitent votre site. Pour ce faire,  il suffit d'intérroger les variables de serveur, en PHP cela donne :

// Code du pays
echo $_SERVER[GEOIP_COUNTRY_CODE];
 
// Nom du pays
echo $_SERVER[GEOIP_COUNTRY_NAME];

Ce module peut être utile par exemple pour concevoir un algorithme qui modifie la langue de votre site selon la provenance des visiteurs.

Notes :
- Ce module est également disponible pour le serveur web Cherokee.
- La base de données inclut dans les paquets Debian/Ubuntu n'est pas très à jour, il est possible de la remplacer par celle de MaxMind :

cd /usr/share/GeoIP/
 
# On sauvegarde la base de données actuelle
mv GeoIP.dat GeoIP.dat.backup
 
# On télécharge la nouvelle base de données
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
 
# On la décompresse
zcat GeoIP.dat.gz > GeoIP.dat
Page 1 sur 212