Archive pour la catégorie ‘Linux’

Gérez et publiez vos collections avec GCstar !

En cherchant un moyen de répertorier mes CD je suis tombé sur un logiciel vraiment très bon : GCstar.
C’est bien sûr un logiciel libre, et il a pour but de vous aider à gérer toutes vos collections, aussi variées soient-elles. Un certain nombre de collections sont prédéfinies (films, BD, CD, livres, musique, …) mais vous pourrez définir vous-même un nouveau type de collection si besoin.
GCstar est annoncé pour fonctionner aussi bien sous Linux que sous Windows et MacOS mais je n’ai essayé que la version Linux.

La grande force de GCstar est son moteur de recherche intégré, basé sur des plugins (très simples d’ailleurs). Pour les CD, cela vous permet par exemple de ne rentrer que le titre d’un CD que vous voulez ajouter à la bibliothèque, et GCstar va chercher toutes les informations (artiste, chansons, pochette, durée..) qu’il trouve sur des sites que vous aurez défini (Amazon par exemple). C’est en fait la définition de ces sites qui se fait par l’ajout de plugins.

La publication en ligne de votre collection n’est pas gérée directement par GCstar, mais il existe un outil tout fait et près à l’emploi pour ça : GCweb
Il y a même une démo de l’outil ici.

Puisque c’est pour cela que je l’ai choisi, je vais détailler les étapes permettant d’ajouter vos CD à votre bibliothèque et la mise en ligne de votre collection.
Un résumé de la démarche :
– Installer GCstar (sans blague….)
– Créer une nouvelle collection
– Ajouter le plugin de recherche des informations sur Amazon
– Ajouter vos CD
– Envoyer les fichiers de GCstar sur votre serveur web
– Mettre en place GCweb
– Enjoy

– Installer GCstar
Ca se fait très simplement via la Logithèque Ubuntu pour ceux qui sont sur Ubuntu, pour les autres tout est expliqué sur le site de GCstar

– Créer une nouvelle collection
Pareil, rien de sorcier. Sélectionnez « Collection musicale » (astuce : sauf si vous voulez faire une autre collection hein :D ) et c’est parti.

– Ajouter le plugin de recherche des informations sur Amazon
Par défaut, GCstar inclut la recherche sur Discogs et Musicbrainz. Si ça vous suffit vous pouvez sauter cette étape, mais j’ai l’impression que Amazon est quand même plus complet. Donc pour Amazon, c’est sur le forum de GCstar que ça se passe. Pour ceux qui n’ont pas envie de créer un compte pour accéder aux pièces jointes du forum, j’ai fait une copie ici. Il suffit d’ajouter les fichiers contenus dans cette archive dans le dossier /lib/GCPlugins/GCmusics/. Sous Ubuntu, le chemin complet est /usr/share/gcstar/lib/GCPlugins/GCmusics/.
Vous l’aurez compris, les plugins pour les autres types de collection se trouveront dans /lib/GCPlugins/XXXX.

– Ajouter des CD
Là rien de bien sorcier. Pour choisir vos méthodes de recherche des informations, allez dans Configuration/Préférences/Internet, c’est le menu « Sites où récupérer les fiches ». Pour ajouter un CD, cliquez sur « Ajouter », entrez le titre, l’auteur dans la barre de recherche (là où il y a marqué « Nouvel album ») et cliquez sur « Télécharger ». Une liste des résultats de la recherche apparait, choisissez celui qui vous convient et validez.

– Envoyer les fichiers de GCstar sur votre serveur web
Envoyez le fichier .gcs et le dossier _pictures (sous Ubuntu dans /home/votre_user par défaut) dans le dossier « collections » de l’arborescence de GCweb. Vous pourrez mettre à jour ces fichiers plus tard, si vous complétez votre collection (il faudra simplement envoyer les nouveaux fichiers sur le serveur).

– Mettre en place GCweb
Il vous faudra avant tout un serveur web fonctionnel. GCweb n’a pas de restriction pour un serveur web en particulier, mais il faut que le serveur gère le PHP5 et qu’il ait la librairie GD2 ou supérieure. Un serveur web sous Linux est conseillé pour les tris par date, qui risquent de ne pas fonctionner sur une autre plateforme.
Pour la démarche : il suffit d’envoyer le contenu de l’archive sur votre serveur web. Avec un navigateur, allez ensuite à l’adresse de votre serveur, à l’emplacement où vous avez mis les fichiers de GCweb. Vous aurez une page de configuration. Remplissez les champs en fonction de vos préférences et de votre configuration.
Une fois que votre configuration vous satisfait, allez à l’adresse de votre serveur web. Normalement, votre collection est en ligne. Il est conseillé de carrément supprimer le fichier config.php (que vous avez renommé pendant l’étape de configuration de GCweb) pour éviter que quelqu’un s’en serve. Gardez-en une copie quelque part, mais pas à un endroit accessible depuis internet.

-Enjoy !
Si vous avez des questions, n’hésitez pas à aller sur le forum de GCstar. Vous pouvez aussi m’en poser dans les commentaires, j’essayerai d’y répondre.

Mise en place d’un serveur musical avec MPD

J’ai mis en place chez moi un serveur de musique qui devait répondre a des besoins un peu particuliers :
– fonctionnement client-serveur, le serveur devant lire la musique (il est branché sur ma chaine hifi) et les clients permettant de contrôler la lecture de la musique à distance (pas d’écran sur le serveur)
– la musique est stockée non pas sur le serveur, mais sur mon PC fixe, dans ma chambre, qui n’est pas allumé tout le temps (bon il faudra l’allumer pour lire la musique évidement :D )
– tout ça sur du Linux bien entendu, le serveur étant sous Ubuntu server 10.10 et le PC fixe sous Ubuntu 10.04

Je me suis penché vers MPD (Music Player Deamon), qui a l’avantage de répondre parfaitement à tous ces besoins :)

Pour la suite : IP du serveur : 192.168.1.8 et IP du PC fixe : 192.168.1.4, les deux sont en DHCP mais le routeur est configuré pour leur attribuer toujours la même IP.

Voilà, le contexte étant posé, on y va :)
Première étape : rendre la musique présente sur le PC fixe accessible au serveur. J’ai choisi de faire ça avec NFS, à priori une autre méthode (comme avec Samba) aurait fonctionné tout aussi bien. Le partage NFS, donc :
0) Installation des paquets « nfs-common » (nécessaire sur le client et le serveur) et « nfs-kernel-server » (nécessaire uniquement sur le serveur). Attention, ici (et uniquement ici) c’est le PC fixe qui joue le rôle de serveur puisque c’est lui qui partage la musique
1) Création du point de montage sur le serveur (donc le « vrai » serveur cette fois ci) : mkdir /mnt/jidey_musique
2) Paramétrage de NFS sur le PC fixe (donc le serveur NFS) :
– ajouter une ligne dans le fichier /etc/exports :

/home/jidey/Musique/ *(ro,fsid=0,insecure,no_subtree_check)

– ajouter ces trois lignes dans le fichier /etc/hosts.deny :

portmap:ALL
nfsd:ALL
mountd:ALL

– ajouter ces 6 lignes dans le fichier /etc/hosts.allow (adapter les IP, il faut mettre l’IP du client nfs) :

portmap: 192.168.1.8
lockd: 192.168.1.8
nfsd: 192.168.1.8
mountd: 192.168.1.8
rquotad: 192.168.1.8
statd: 192.168.1.8

3) Monter le partage nfs sur le client nfs (le serveur MPD) :

sudo mount -t nfs4 192.168.1.4:/ /mnt/jidey_musique/

NB : j’ai été au plus rapide pour la partie NFS. C’est un peu crado, et surtout automatisable (avec fstab). Je ne veux pas m’étendre sur le sujet ici, tout ce qui importe c’est d’avoir un dossier avec de la musique sur le serveur MPD.

Deuxième étape : installation et configuration de MPD sur le serveur.
L’installation est, comme souvent sur Ubuntu, simplissime : sudo apt-get install mpd
Pour la configuration, c’est à peu près du même niveau. La configuration se fait dans /etc/mpd.conf pour une configuration valable pour tous les utilisateurs (c’est notre cas) ou dans ~/.mpdconf pour une configuration personnalisée à chaque utilisateur. Voici le contenu de mon /etc/mpd.conf :

port                    "6600"
music_directory         "/mnt/musique_jidey"
playlist_directory      "/var/lib/mpd/playlists"
db_file                 "/var/lib/mpd/tag_cache"
log_file                "/var/log/mpd/mpd.log"
pid_file                "/var/run/mpd/pid"
state_file              "/var/lib/mpd/state"

user                    "mpd"
bind_to_address         "localhost"

audio_output {
        type            "alsa"
        name            "My ALSA Device"
        device          "hw:0,0"        # optional
        format          "44100:16:2"    # optional
        mixer_device    "default"       # optional
        mixer_control   "PCM"           # optional
        mixer_index     "0"             # optional
}

Notez qu’il faut créer les dossiers ci-dessus (.mpd et .mpd/playlists) s’ils n’existent pas.
Beaucoup d’autres options sont possibles, toutes sont très bien expliquées dans le fichier de configuration créé avec l’installation.
Si vous avez des problèmes de connexion avec les clients, essayez de commenter la ligne « bind_to_address « localhost »  »
Un petit restart du démon MPD et ça devrait être bon :

sudo /etc/init.d/mpd restart

Troisième étape : installation et configuration des clients. Il existe une multitude de clients compatibles avec MPD. La liste (à priori à peu près exhaustive) est disponible sur le site de MPD. Comme vous le constaterez, des clients existent pour à peu près toutes les plateforme imaginable, d’Androïd à Gnome (assez classique) en passant par la Wii…

Utiliser vi comme éditeur hexadécimal

Un petit post rapide, qui est plus un post-it pour moi qu’autre chose, mais ça peut servir à d’autres…

Vous pouvez utiliser vi (ou vim) comme éditeur hexadécimal. Pour cela, il suffit d’appuyer sur la touche Echap et d’entrer la commande suivante :

:%!xxd

Le texte est alors traduit en hexadécimal. Attention : si vous sauvegardez le texte, c’est la forme hexadécimale qui sera sauvegardée (pas très grave cela dit, il suffit de retraduire dans l’autre sens). En fait, vi traduit votre texte en caractères hexadécimaux, mais après il les gère comme un texte « normal ».

Pour traduire un texte hexadécimal en un texte « normal », c’est la commande suivante :

:%!xxd -r

Trop facile! =)

Petite étude du hack mondial

Cela fait maintenant presque 2 ans que j’ai un serveur qui tourne en (presque) continu, avec SSH sur le port par défault et fail2ban pour refouler les prétendants non désirables.

Comme fail2ban offre la possibilité d’envoyer un mail à chaque attaque, ainsi qu’un WHOIS sur l’ip de l’attaquant, il est possible de faire quelques statistiques. Voici d’abord les résultats, puis la méthode.

Résultats

Pays d’origine de l’attaque

Voici le top 10 des pays:

Pays Nombre d’attaque
Chine 974
Corée du sud 123
Inde 117
USA 100
France 44
Taiwan 42
Pérou 42
Russie 41
Allemagne 32
Hong-kong 28

Un total de 2018 informations de pays ont été extraites des 1044 mails.  Cette différence s’explique par le fait qu’une partie des WHOIS mentionnent plusieurs fois le pays (organisation, FAI, contact technique, ..). Cependant, ces informations en trop ne sont pas spécifiques à des pays en particulier, et n’impactent pas les statistiques.

Comme la Chine écrase les autres pays, ces données sont affichés de manière logarithmique sur les graphiques suivants:

On peut donc voir qu’on se fait allègrement pourrir par la Chine. Les pays les plus attaquants sont en règle générale des pays émergents et/ou très peuplés. Je pense qu’on peut attribuer la cinquième place de la France au fait que le serveur se situe sur un réseau francais (ou alors j’ai des voisins taquins).

Vous pouvez également regarder la liste complète des pays.

Nom d’utilisateur

Voici le top 10 des noms d’utilisateurs essayé par les attaquants:

Utilisateur Nombre d’attaque
test 607
admin 440
oracle 405
root 364
guest 210
user 135
sales 133
alias 131
samba 130
office 129

Un total de 9849 noms d’utilisateurs ont été extraits des mails (2581 différents).

On peut voir que les hackers visent logiquement au plus rentable. L’user root n’est cependant qu’en 4ème position, probablement car la première chose à faire sur un serveur est de désactiver l’accès root par SSH.

Vous pouvez également regarder la liste complète des noms d’utilisateurs.

Méthode

La première étape est de récupérer les mails au format texte. Comme Gmail n’offre pas de fonction d’exports, je me suis connecté à ma boite mail avec thunderbird en IMAP. Ensuite on fait une recherche avec les termes « fail2ban banned » et on exporte la selection au format eml.

La deuxième étape est d’extraire les informations. Pour ça, la ligne de commande est toute indiquée. Voici les commandes magiques:

# extraction des utilisateurs
grep -h -i ": Invalid user" *.eml | awk '{print $8}' > user &&
grep -h "Authentication failure" *.eml | awk '{print $11}' >> user &&
cat user | sort -f | uniq -ci | tr -s ' ' ';' | sed "s/^;//" | sort -nr -t ";" > user-count
#extraction des pays
grep -h -i "^country" *.eml | awk '{print $2}' > country &&
cat country | sort -f | uniq -ci | tr -s ' ' ';' | sed "s/^;//" | sort -nr -t ";" > country-count

Ici, grep pour sélectionner les bonnes lignes, awk pour récupérer le bon mot, sort et uniq pour trier et compter, et un coup de sed pour remplacer des espaces par des points-virgule pour contourner un comportement un peu étrange de sort qui considère que « 23 46″ est le nombre 2346.

La récupération des noms d’utilisateurs se fait en deux fois, car le message est différent si l’utilisateur existe réellement sur la machine.

Conclusion

Voilà, je vous laisse vous faire votre propre avis sur la chose. Personnellement, j’ai pu constater grâce à ce serveur et un autre, que changer le port par défaut de SSH, d’avoir des mots de passe complexes et d’utiliser fail2ban pour éviter les brutes forces amène à une relative tranquillité face à ces attaques. A moins bien sur de s’être fait des ennemis ou d’héberger la banque de France =)

Ubuntu/Debian : faire le ménage dans les noyaux

Après quelques mois d’utilisation, mon grub ressemble inévitablement à ça :

grub

Oui, je fais une collection de kernels, et alors? :D
Bref, tout ça pour dire que je fini par me retrouver avec 4 ou 5 noyaux, ce qui est, d’une part, inutile, et d’autre part gênant quand il faut commencer à scroller pour attendre la ligne « Windows » tout en bas de la liste (ok, je n’ai qu’à pas utiliser Windows, mais c’est pas la question :p ). Il y a bien la méthode crade d’adapter simplement grub, mais c’est quand même plus propre de supprimer tous ces noyaux inutiles. Voici comment faire.

Lister tous les noyaux installés

dpkg -l | grep linux-image
ii  linux-image-2.6.31-19-generic        2.6.31-19.56                               Linux kernel image for version 2.6.31 on x86
ii  linux-image-2.6.31-20-generic        2.6.31-20.58                               Linux kernel image for version 2.6.31 on x86
ii  linux-image-2.6.31-21-generic        2.6.31-21.59                               Linux kernel image for version 2.6.31 on x86
ii  linux-image-2.6.31-22-generic        2.6.31-22.60                               Linux kernel image for version 2.6.31 on x86
ii  linux-image-generic                  2.6.31.22.35                               Generic Linux kernel image

On voit à la fin le paquet générique du kernel. Il ne faut pas le supprimer.

En théorie, à chaque paquet « linux-image » est associé 2 paquets « linux-headers ».

dpkg -l | grep linux-headers
ii  linux-headers-2.6.31-19              2.6.31-19.56                               Header files related to Linux kernel version
ii  linux-headers-2.6.31-19-generic      2.6.31-19.56                               Linux kernel headers for version 2.6.31 on x
ii  linux-headers-2.6.31-20              2.6.31-20.58                               Header files related to Linux kernel version
ii  linux-headers-2.6.31-20-generic      2.6.31-20.58                               Linux kernel headers for version 2.6.31 on x
ii  linux-headers-2.6.31-21              2.6.31-21.59                               Header files related to Linux kernel version
ii  linux-headers-2.6.31-21-generic      2.6.31-21.59                               Linux kernel headers for version 2.6.31 on x
ii  linux-headers-2.6.31-22              2.6.31-22.60                               Header files related to Linux kernel version
ii  linux-headers-2.6.31-22-generic      2.6.31-22.60                               Linux kernel headers for version 2.6.31 on x
ii  linux-headers-generic                2.6.31.22.35                               Generic Linux kernel headers

Suppression des noyaux inutiles

Il est recommandé de conserver les 2 noyaux les plus récents (le plus récent pour une utilisation courante, l’autre en cas de problème sur le dernier noyau). Dans mon cas, je veux donc supprimer les versions 2.6.31-19.56 et 2.6.31-20.58 du noyau.
Ensuite, tout se fait classiquement avec apt-get et son option –purge :

sudo apt-get remove linux-image-2.6.31-19-generic linux-headers-2.6.31-19 linux-headers-2.6.31-19-generic linux-image-2.6.31-20-generic linux-headers-2.6.31-20 linux-headers-2.6.31-20-generic --purge

Grub sera (normalement) mis à jour automatiquement.

Sauvegardes multi-plateformes automatisées

Ce premier article va traiter du système de sauvegardes automatisée que je me suis monté pour mes besoins personnels.
Les outils de sauvegardes automatiques sont nombreux. Je me suis tourné vers BackupPC car :
– il est multi-plateformes (tous mes PC sont en double-boot Windows / Linux)
– c’est un logiciel libre
– il supporte de nombreux modes de sauvegardes
– l’interface web est plutôt bien faite je trouve

Il est bien évident que cet article ne sera qu’une introduction à BackupPC. Le nombre de possibilités offertes par BackupPC et le nombre de cas de figures possibles pour des sauvegardes sont bien trop grands pour en faire un article exhaustif.
De plus, je ne vais traiter ici que des sauvegardes sous Linux. Backuppc permet aussi de gérer les sauvegardes de postes sous Windows, ça fera peut-être l’objet d’un autre article.

Sources :
http://doc.ubuntu-fr.org/backuppc
http://backuppc.sourceforge.net/

Configuration :
– Ubuntu Linux 10.04 LTS

Installation du serveur sous Linux

Installation

Installation par la logithèque Ubuntu (rechercher « backuppc »). L’installation va vous demander de choisir certaines options. Voici celles que j’ai choisies :
– Postfix Configuration : Pas de configuration (je n’ai pas besoin d’un service de mails pour ma solution de sauvegardes)
– Quel serveur web voulez-vous configurer automatiquement? : Cochez « apache2″
– Notez quelque par le mot de passe créé pour l’utilisateur « backuppc »

L’installation se termine sans problème particulier (en tous cas chez moi :p ).

Configuration

Je vous conseille de tout de suite changer le mot de passe créé pour l’utilisateur backuppc pour mettre un mot de passe que vous retiendrez. Ceci se fait avec la commande :

sudo htpasswd /etc/backuppc/htpasswd backuppc

L’interface web de BackupPC est accessible à l’adresse : http://localhost/backuppc (Remplacer localhost par l’IP du serveur si c’est une machine différente). L’interface web permet d’accéder à la grande majorité des options de configuration disponibles.

Choisir le répertoire utilisé pour les sauvegardes

Allez, on commence par une des seules options qu’il n’est pas possible de modifier via l’interface web. Par défaut, BackupPC stocke les sauvegardes dans « /var/lib/backuppc ». Si cela vous convient, ne touchez à rien, mais dans mon cas, j’ai acheté un disque dur spécialement pour y stocker mes sauvegardes. Il est monté sur « /media/sdc1″ et je veux que mes sauvegardes soient dans « /media/sdc1/backuppc ».
– On crée le répertoire, je ne vous fait pas l’affront d’expliquer comment.
– On édite avec son éditeur de texte préféré le fichier « /etc/backuppc/config.pl ». Attention, il faut être root. On cherche la ligne « $Conf{TopDir} = ‘/var/lib/backuppc'; » et on la remplace par « $Conf{TopDir} = ‘/media/sdc1/backuppc'; »
– On copie le contenu de l’ancien répertoire de sauvegarde vers le nouveau :

sudo cp -a /var/lib/backuppc/* /media/sdc1/backuppc/

– On redémarre BackupPC :

sudo /etc/init.d/backuppc restart

Attention : le disque utilisé pour ici doit être en ext3 (ou un autre système de fichier gérant les permissions, donc pas de NTFS par exemple)

Langue de l’interface web

C’est la 2ème (et dernière pour cet article) option qu’il faut changer dans le fichier de configuration « /etc/backuppc/config.pl »
Modifier la ligne « $Conf{Language} = ‘en'; » en « $Conf{Language} = ‘fr'; »

Sauvegarde d’un répertoire local

Dans l’interface web :
– « Serveur » -> « Modifier la configuration » -> « Machine » : vérifier que la machine (host) « localhost » existe bien, avec « backuppc » comme user
– « Hôtes » -> choisir « Localhost » dans la liste déroulante
– « localhost » -> « Modifier la configuration » -> « xfer » -> « XferMethod » : choisir « tar », « TarShareName » : indiquer le chemin à sauvegarder et cliquer sur « insérer » -> Cliquer sur « Sauvegarder » (apparaît en rouge)
– « localhost » -> « localhost Accueil » -> « Démarrer la sauvegarde complète »
– « localhost » -> « Explorer les sauvegardes » : vérifiez ici que ça a fonctionné.

Sauvegarde d’un répertoire linux distant

BackupPC permet de gérer de manière assez avancée les sauvegardes de postes distants. Voici comment faire une sauvegarde très basique d’un répertoire sur un poste distant sous Linux.
Avant tout, il faut qu’openssh_server soit installé sur le poste distant car la sauvegarde se fera via ssh (encore un bon point pour backuppc =) ). Par contre, cela entraine une identification par clés entre le serveur et le poste distant. Il faut donc mettre en place ce mécanisme avant tout :
– Passer en utilisateur « backuppc » :

sudo su - backuppc

– Générer les clés publique et privée :

ssh-keygen -t rsa

– On peut vérifier que la clé publique a bien été générée :

cat ~/.ssh/id_rsa.pub

– Transférer le fichier id_rsa.pub sur le poste distant d’une manière quelconque et ajouter son contenu au fichier « /root/.ssh/authorized_keys » sur le poste distant
– Faire une première connexion depuis le serveur vers le poste distant :

ssh root@adresse.ip.du.poste.distant

Répondre « yes ». Pour que cela fonctionne, il faut bien sur toujours être l’utilisateur « backuppc » sur le serveur.

Maintenant, on peut passer à la configuration de la sauvegarde via l’interface web :
– « Serveur » -> « Modifier les machines » -> « Machines » -> ajouter adresse.ip.de.la.machine.a.sauvegarder avec « backuppc » comme user
– « Hôtes » -> choisir adresse.ip.de.la.machine.distante dans la liste déroulante
– « Modifier la configuration » -> « xfer » -> « XferMethod » : choisir « rsync », -> cliquer sur « Sauvegarder »
– Aller sur « adresse.ip.de.la.machine.distante Accueil » -> « Démarrer la sauvegarde complète »
– Aller sur « Explorer les sauvegardes » et vérifier que ça a fonctionné.

Voila, normalement tout fonctionne. Ce n’est bien sur qu’un bref aperçu des possibilités et du fonctionnement de Backuppc, mais ça permet de monter assez rapidement un système de sauvegardes qui tient la route.
Reste à voir si Backuppc me conviendra à long terme. Il y a notamment une limitation pour la sauvegarde sur les disques NTFS, ce qui m’embête assez. Je trouverai peut-être une astuce, ce qui fera peut-être un prochain article.

C’est fini pour ce premier vrai post, assez long d’ailleurs. N’hésitez pas à aller voir la doc de Backuppc sur le site de la documentation Ubuntu, elle est très bien faite.