Catégories
Image Open-source Planet-libre Systeme

Mon desktop 201103

C’est le début du mois, encore un billet pour vous montrer mon desktop pro sous GNU/Linux Ubuntu 10.10 post configuré avec mon script ubuntupostinstall.sh.

Voici ce que cela donne sans fenêtre:

et avec:

Les principales caractéristiques

Installer de la combo magique (Equinox Glass + Faenza + Nautilus Elementary)

Je reste fidèle a cette configuration des fenêtres depuis quelques mois, si vous avez mieux je suis preneur !

Equinox Glass est clair, les icônes Faenza sont lisibles et facile à reconnaître et Elementary est pour moi devenu indispensable aux utilisateur de Nautilus:

sudo aptitude install gtk2-engines-equinox equinox-theme equinox-ubuntu-theme faenza-icon-theme

nautilus -q

Pour activer Equinox, il faut aller dans le menu: “Système > Préférences > Apparences > Thème > Equinox Glass“.

Installation de AWN

Si vous suivez cette rubrique, vous avez du vous rendre compte que je suis passé de Docky à AWN. Toutes les explications sont dans ce billet.

Dans mon dock il y a…:

  • Cairo menu
  • Lien vers mes répertoires
  • TodoList
  • Switch écran
  • Barre de lancement rapide (Terminator, Chromium,…)
  • Supervision du CPU
  • Supervision de la température de la carte mère
  • Supervision de la bande passante de mon interface Ethernet
  • La corbeille

A vous de nous montrer vos écrans (par exemple en utilisant http://twitpic.com/) !

Catégories
Blog Open-source Planet-libre Reseau Systeme Web

Sécuriser son blog WordPress #4

Nous voici donc dans le dernier volet de notre saga sur la sécurisation d’un serveur Web hébergeant un blog WordPress. Si vous avez suivi les recommandations des billets précédant vous devriez  avoir un serveur avec un niveau de sécurité acceptable…

La perfection n’existant pas, du moins en sécurité informatique, il est nécessaire d’avoir sous la main les moyens de remonter rapidement votre serveur en cas de piratage.

Je vous rappelle que cet article est découpé en plusieurs billets (vous êtes en train de lire le #4):

Cette série de billets a été co-écrite avec Jérémie Marguerie étudiant à EPITA (un dernier grand merci à lui :)).

Sauvegardes régulières

En effet, quelque soit les moyens que vous aller mettre en oeuvre, votre serveur ne sera jamais protégé à 100%. Il est donc essentiel d’avoir une sauvegarde récente de l’ensemble de votre blog, c’est à dire:

  • vos fichiers statiques (images, videos, fichiers de données…)
  • votre base de donnée SQL
  • une procédure (ou encore mieux un script comme celui-ci) à jour de réinstallation de votre serveur

Voici donc le détail de ces actions.

Sauvegarde des fichiers statiques

J’effectue cette sauvegarde en deux étapes.

1) La première est un backup de l’ensemble de mon répertoire Web (contenant WordPress et les fichiers statiques) sur un deuxième disque qui est attaché à mon serveur virtuel (VPS). Ainsi en cas de crash disque, les données seront disponibles localement. Attention de bien vérifier auprès de votre hébergeur que ce deuxième disque virtuel est bien sur un disque physique différent de celui sur lequel est hébergé votre blog !

J’utilise le logiciel RSnapShot pour effectuer cette tache. J’ai rédigé un billet sur le sujet que vous pouvez consulter ici.

2) La seconde étape est de copier de manière régulière (et si possible automatique) ces sauvegardes sur une autre machine. En effet, si un méchant hackeur pirate votre serveur, il y a de fortes chances qu’il s’en prenne également à vos sauvegardes locales.

Pour cela, j’utilise le service « in the cloud » Dropbox (en attendant un service équivalent basée sur des clients libres). Pour installer et utiliser Dropbox sur un serveur sans interface graphique, vous pouvez suivre cette procédure. J’archive avec une commande tar l’ensemble du répertoire WordPress puis je le copie dans un sous répertoire de ma Dropbox.

Sauvegarde de la base de donnée SQL

J’utilise le plugin WordPress WP-DBManager qui, en plus d’optimiser automatiquement ma base de donnée,  sauvegarde et envoi une archive directement sur mon adresse mail (la fréquence des expéditions est configurable).

Il est également possible d’automatiser une commande mysqldump dans votre crontab systeme et comme les fichiers statiques copier l’archive dans une copie locale et dans votre Dropbox.

Re-installation rapide de son serveur « from scratch »

Ce point est souvent négligé, à tort !

Quoi de plus long que de ré-installer et re-configurer un serveur en production sous la pression du temps… Avoir un script qui reproduit ces étapes de configuration est plus qu’utile en cas de problème : piratage ou bien panne matérielle. En cas de piratage, il faudra évidemment chercher la cause du problème et la résoudre avant de remettre son serveur en ligne et bien entendu modifier tous les mots de passes (système, WordPress, base de donnée SQL…).

Maintenance et supervision

Dans la première partie de cette série de billets, nous avons installé le logiciel cron-apt qui envoie automatiquement un mail quand des mises à jour son disponible pour votre serveur. Il faut bien sûr prendre le temps de lire ces mails et de les traiter le cas échéant.

On peut également installer le logiciel log-watch qui surveiller pour vous les fichiers de log et envoyer automatiquement un rapport par mail. J’ai personnellement laissé tombé ce type de logiciel sur mon serveur personnel car la quantité des informations remontées nécessitait trop de temps pour être interprétée . Dans le même ordre d’idée il y a également logcheck qui permet de recevoir un rapport toutes les heures sur les lignes « anormales » trouvées dans les logs.

aptitude install logcheck

Le fichier de configuration se trouve dans /etc/logcheck/logcheck.conf. La liste des fichiers de log à surveiller dans /etc/logcheck/logcheck.logfiles.

Il faut également surveiller les rootkit (petit programme permettant d’obtenir les droits d’administration de votre serveur en se basant sur des failles connues). Pour cela il faut installer un détecteur de rootkit comme  chkrootkit:

sudo aptitude install chkrootkit

Puis le lancer régulièrement (le plus simple est de le faire par crontab et d’envoyer le résultat par mail).

sudo chkrootkit

A noter que dans la version actuelle de chkrootkit (0.49). Un faux positif est détecté sous Ubuntu 10.04 LTS dans le fichier /etc/init:

Searching for Suckit rootkit… Warning: /sbin/init INFECTED

Le message est donc à ignorer jusqu’à la prochaine mise à jour.

Pour conclure ce chapitre quelques logiciels que l’on peut installer:

  • tmpreaper : vider le /tmp régulièrement
  • vérifier l’intégrité des fichiers systèmes avec Samhain (disponible dans les dépots Ubuntu).

Conclusion

Vous l’aurez compris, sécurisé son système prend du temps, consomme des performances non négligeables et demande des connaissances approfondies. C’est néanmoins une étape fondamentale pour se protéger des pirates et autres scripts automatisés qui se feront une joie de rentrer dans votre site web ou pire, votre serveur.

Les applications présentées devraient néanmoins vous permettre de limiter la casse, mais gardez à l’esprit que la plupart des attaques se faisant via votre site web, le protéger correctement reste une des meilleurs solutions existantes.

/etc/logcheck/logcheck.conf
Catégories
Open-source Planet-libre Systeme

J’ai testé Debian GNU/kFreeBSD

La dernière version de la distribution Debian propose en option l’utilisation d’un noyau FreeBSD en lieu et place du classique noyau Linux. Si vous suivez ce blog, vous savez tout le bien que je pense de ce noyau BSD. On se retrouve donc avec une distribution Debian GNU/kFreeBSD (k comme kernel) qui, sur le papier, a de quoi séduire…

Nous allons donc dans ce billet détailler l’installation de cette distribution sur une machine virtuelle VirtualBox afin de vous faire une propre idée.

Installation de Debian GNU/kFreeBSD

On commence par récupérer l’image ISO:

wget -O debian-6.0-kfreebsd-i386.iso http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-kfreebsd-i386/current/images/netboot/mini.iso

L’image ISO ne fait que 9 Mo. C’est donc une procédure d’installation minimale (netinstall) qui va télécharger les paquets nécessaires sur Internet. Il faut donc compter une petite heure d’installation avec une liaison Internet correcte.

On créé ensuite une machine virtuelle (1+ Go de RAM et 6+ Go de disque) en utilisant cette image. Pour me simplifier la vie, j’ai choisi une installation par défaut dans le premier menu: « Default install »


Le wizard d’installation va vous poser les questions habituelles (nom et domaine de la machine, partition ou installer le système, mot de passe root, compte utilisateur par défaut, clavier…), bref rien de compliqué.

Lors de mon test je me suis retrouvé avec un clavier qwerty pendant cette installation, faites donc attention lorsque vous allez saisir le mot de passe root…

Une fois la procédure d’installation terminée, il faut rebooter sur le disque système. J’ai rencontré l’erreur critique suivante durant le démarrage:

Mmmmhhhh pas glop

Pour résoudre ce problème j’ai du forcer l’ordre de démarrage des disques dans VirtualBox en mettant le disque système en premier:

Le démarrage se passe ensuite sans problème ! Glop

On a donc dans les main un système Debian GNU 6.0 avec un noyau FreeBSD 8.1 !

Mais ou est le rc.conf ?

Pour diablotins qui souhaiteraient passer du coté obscur, il va falloir perdre certaines habitudes. En effet, même si on utilise un noyau FreeBSD, tout l’écosystème de cette distribution reste une Debian GNU. Ainsi l’organisation des fichiers de configuration reste la même que sur une Debian « classique » (voir la documentation ici). Point donc du si pratique fichier rc.conf qui permet de configurer l’ensemble des processus lancés au démarrage de votre machine et se contenter d’une gestion par des scripts dans le répertoire /etc/init.d.

Et mes ports ?

Là encore, point de répertoire /usr/ports. En effet, le gestionnaire de paquets est apt-get (ou aptitude). Dommage j’aime bien le principe de compilation à l’installation de nouveaux logiciels.

Voilà PF !

Tout comme Linux, le noyau FreeBSD est de type monolitique modulaire (je vous conseille de lire ce wiki pour voir de quoi je parle). On peut ainsi charger des fonctions complémentaires « à chaud ».

C’est par exemple le cas du module PF qui ajoute un firewall intégré vraiment très puissant (de mon humble avis, l’un des principal avantages du noyau FreeBSD part rapport à Linux).

Il n’est pas activé par défaut dans le noyau fourni par la distribution Debian. Il faut donc pour l’activer, saisir les commandes suivante qui permette de charger le bon module:

su –

kldload pf.ko

pfctl -e

Pour une petite introduction à PF vous pouvez lire un billet que j’avais écrit il y a maintenant deux ans (ou bien RTFM…).

On peut également s’amuser à customiser le stack IP FreeBSD, réputé pour sa fiabilité et sa performance, en utilisant la commande sysctl.

Conclusion

C’est fini pour cette rapide introduction à Debian GNU/kFreeBSD. Je trouve l’initiative intéressante pour contre balancer l’hégémonie du noyau Linux dans les systèmes libres.

Catégories
Open-source Reseau Systeme

Architecture de haute-disponibilité avec OpenSVC

Ce billet a été rédigé par Tony Roger (de la société LibrA-LinuX) en collaboration avec OpenSVC éditeur du logiciel libre du même nom.


LibrA-LinuX, spécialiste des formations Linux à la carte, propose des stages, afin de permettre à des utilisateurs de tous niveaux (débutants ou confirmés), d’aborder sereinement l’utilisation et l’administration de systèmes Linux (Debian, Ubuntu, RedHat, Fedora..). Dans le contexte d’un nouveau cursus de cours lié aux technologies de Clustering sous Linux, nous vous proposons cet article ayant pour but de présenter une solution de clustering sous Linux, permettant de mettre en oeuvre simplement une architecture  pour apporter la haute-disponibilité à vos applications critiques.

A l’instar des solutions existantes du monde libre (Linux HA) , cette solution utilise le logiciel libre  OpenSVC (produit Français) qui, couplé à un mécanisme de bascule automatique (HeartBeat, Keepalived, OpenHA) permet une gestion centralisée de vos services sous Linux, indépendamment des couches applicatives (Services web apache, J2EE, base de données, stockage et serveurs de fichiers, messagerie, DNS ,LDAP …). L’atout majeur de cette solution consiste en cette couche d’abstraction (technologie de clustering autour d’OpenSVC) qui permet comme tout type de cluster actif/passif, le pilotage des ressources et services,  la reprise de vos services en minimisant le temps d’interruption grâce au mécanisme de bascule automatique, mais garantit également la cohérence des données entre les noeuds du cluster, par la synchronisation de snapshots filesystem LVM.

Introduction

OpenSVC (framework python sous licence GPLv2) est un gestionnaire de « services » fonctionnant en mode cluster. Les services sécurisés sont définis comme des ensembles de ressources (IP, Volume de Disques, Filesystems, synchronisations, et lanceurs d’applications). Ces services sont ainsi pilotés via opensvc installé sur chacun des noeuds du cluster et  compatible avec toutes les distributions Linux, FreeBSD, les unix Solaris et Opensolaris, HP-UX, AIX.

Dans le cadre d’un déploiement massif du framework OpenSVC,  les développeurs du produit ont conçus un collecteur central, contenant la configuration des services, leurs états et les journaux d’actions de chacun des noeuds, que l’on peut consulter grâce à une interface web. La partie collecteur est quand à elle non libre et soumise à une tarification de licence par service /an, mais celle-ci n’est pas nécessaire au bon fonctionnement du cluster.

Les services typiques qui peuvent bénéficier d’une haute-disponibilité grâce à l’implémentation de cette solution sont :

  • Serveurs de mail : IMAP, POP, SMTP
  • Serveurs de Proxy cache et Reverse-Proxy
  • Serveurs web : HTTP, HTTPS
  • Serveurs d’application J2ee : Websphere, WebLogic, JBOSS, Tomcat
  • Serveurs de fichiers et stockage : FTP, SAMBA, LV…
  • Serveurs de noms : DNS
  • Serveurs d’annuaire : LDAP
  • Base de données : Oracle, MySQL, PosgreSQL
  • etc …


Fonctionnalités et architecture
Fonctionnalités et architecture


Les principales fonctionnalités et avantages que fournit ce gestionnaire de cluster Linux :

  • Scalabilité et mutualisation : permet de gérer des milliers de noeuds et services basés sur une seule et même technologie de clustering.
  • Compatibilité : OpenSVC fonctionne aujourd’hui sur les OS Linux, FreeBSD, Solaris, OpenSolaris, AIX et HP-UX et peut aisément être portés sur d’autres systèmes d’exploitation (python).
  • Cohérence des données entre des noeuds sans stockage partagés : Permet de piloter les réplications des données par snapshot de filesystems LVM et synchronisation rsync, ZFS et réplication DRBD, mais également les systèmes de stockage (EMC SRDF, NetApp snapmirror). L’idéal pour un cluster OpenSVC étant 2 noeuds de production (PRD) en shared disk, avec un noeud de reprise (DR) en copie asynchrone.
  • Virtualisation : OpenSVC peut piloter des services eux-mêmes intégrés sous forme de machines virtuelles ou containers (kvm, xen , lxc, zones, jail, oracle Ldoms…)
  • Haute-disponibilité : La haute-disponibilité et la reprise des services est apportée par la compatibilité avec les mécanismes standards de bascules automatiques et battement de coeur (OpenHA, heartbeatd, keepalived). Gestion des IP virtuelles de service. Possibilité de définir des plans de reprise (Disaster recovery plans) dans la configuration des services.
  • Déploiement : Rapidité de déploiement des outils OpenSVC et des créations des containers de services
  • Standard et Open source: Le framework OpenSVC est sous licence GPLv2, le collector est quant à lui soumis à un système de licence
  • Tracabilité et audit : toutes les commandes executées par OpenSVC sont inscrites dans des journaux de logs en local sur chaque noeud, mais également centralisés sur le collector
  • Supervision: Remontée d’alertes mail, et flux RSS, intégration facilitée pour la remontée d’alertes vers des systèmes de supervision

Gestion centralisée (collecteur)

Le collecteur est une interface web de gestion de vos différents services clusterisés qui, au travers de différentes vues et tableaux de bords, apporte des fonctionnalités supplémentaires  :

  • monitoring : pour afficher l’état des différentes ressources des services à l’aide d’un tableau de bord (graphique dynamique de la topologie de vos services)
  • audit : vous permettant de visualiser les journaux de logs des actions entreprises par OpenSVC et d’agir en conséquence
  • plan de reprise : pour concevoir des plans de reprise (disaster recovery plans)
  • délégation d’administration : possibilité d’assigner des responsables à des services ou groupe de services, aiguillage des alertes
  • nodes (asset): pour paramétrer les différentes informations matérielles et de géo-localisation de vos noeuds physiques, afin de pouvoir déterminer le périmètre des services impactés par un incident (fuite sur un rack…)
  • audit et performance système pour monitorer les ressources systèmes (I/O, Mem, CPU …) de chacun des noeuds, les incohérences de paquetages entre les noeuds d’un service
  • alertes: pour visualiser les différentes remontées d’alertes du systèmes, et les gérer en ligne.


Mise en oeuvre

L’installation d’OpenSVC nécessite pyhton2.6 comme pré-requis et les packages pour CentOS, RedHat, Debian et Ubuntu sont disponibles dans le repository d’OpenSVC.

Liens utiles:

Catégories
Open-source Planet-libre Systeme

Mise à jour de Debian Lenny vers Squeeze

Après une trop longue attente la nouvelle version de Debian, LA distribution GNU/Linux de référence vient de sortir en version 6.0.  Son petit nom de scène est Squeeze.

Pour migrer ces machines de la version 5.0 (Lenny) vers cette nouvelle version 6.0 (Squeeze), il faut suivre une petite procédure assez simple que nous allons détailler dans ce billet.

On commence par ouvrir un terminal (ou a ce connecter en SSH sur son serveur) puis à passer en mode root:

su –

Ensuite on commence par vérifier que le système Lenny est à jour:

aptitude update && aptitude safe-upgrade

Ensuite on prépare la migration vers la version 6.0 (Squeeze):

cp /etc/apt/sources.list /etc/apt/sources.list-lenny

sed ‘s/lenny/squeeze/g’ /etc/apt/sources.list > /etc/apt/sources.list-squeeze

cp /etc/apt/sources.list-squeeze /etc/apt/sources.list

Si vous avez des fichiers présents dans le répertoire /etc/apt/sources.list.d/ il faut également faire la manipulation équivalente (c’est à dire changer toutes les occurrences de lenny vers squeeze).

Puis on effectue la  migration:

aptitude update && aptitude dist-upgrade

A la fin de la mise à jour, on repasse en mode non root:

exit

Et voili !

Catégories
Image Open-source Planet-libre Systeme

Mon desktop 201102

Comme chaque début de mois, un petit billet pour parler de mon desktop qui va m’accompagner pendant 28 jours.

C’est le desktop de mon PC fixe sous GNU/Linux Ubuntu 10.10 post configuré avec mon script ubuntupostinstall.sh.

Voici ce que cela donne:

Les principales caractéristiques

Fond d’écran: Une superbe photo de Marcus McAdam
GTKLook des fenêtre Equinox Glassicônes Faenza
Sur ce bureau: Awn +  Nautilus Elementary

Installer de la combo magique (Equinox Glass + Faenza + Nautilus Elementary)

Toujours la même chose depuis quelques mois maintenant mais je n’ai pas trouvé mieux !

Equinox Glass est clair, les icônes Faenza sont lisibles et facile à reconnaître et Elementary est pour moi devenu indispensable aux utilisateur de Nautilus:

sudo aptitude install gtk2-engines-equinox equinox-theme equinox-ubuntu-theme faenza-icon-theme

nautilus -q

Pour activer Equinox, il faut aller dans le menu: “Système > Préférences > Apparences > Thème > Equinox Glass“.

Installation de AWN

Si vous suivez cette rubrique, vous avez du vous rendre compte que je suis passé de Docky à AWN. Toutes les explications sont dans ce billet.

Dans mon dock il y a…:

  • Cairo menu
  • Lien vers mes répertoires
  • TodoList
  • Switch écran
  • Barre de lancement rapide (Terminator, Chromium,…)
  • Supervision du CPU
  • Supervision de la température de la carte mère
  • Supervision de la bande passante de mon interface Ethernet
  • La corbeille

En tout cas je ne regrette pas ce choix !

Configuration des menus

Comme vous pouvez le voir j’ai réduit la taille du tableau de bord se trouvant en haut à droite de mon écran afin de gagner des pixels pour placer mon navigateur Web. Cette manipulation est surtout utile pour des écrans de portables ou l’espace est cher…

A vous de nous montrer vos écrans !

Catégories
Open-source Planet-libre Reseau Systeme

Sauvegarde journalisée de votre machine avec RSnapShot

Suite à un commentaire de Xavier sur un de mes billets, je me suis penché sur l’utilisation de RSnapshot. Ce logiciel libre permet d’automatiser une sauvegarde journalisée de vos machines et ceci localement comme à distance.

RSnapShot est disponible dans la plupart des dépôts des distributions GNU/Linux et *BSD. Nous allons illustrer cet article avec une installation et une configuration de RSnapShot sur un serveur Gandi sous Ubuntu 10.04 LTS.

Installation de RSnapShot

On utilise la version disponible dans les dépôts officiel:

sudo aptitude install rsnapshot

Configuration de RSnapShot

L’ensemble de la configuration est centralisé dans le fichier /etc/rsnapshot.conf.

sudo vi /etc/rsnapshot.conf

Attention à la syntaxe dans ce fichier, RSnapShot est assez pointilleux. Il veut que tout les répertoires finissent par un / et des tabulations entre chaque variables.

Les variables importantes à configurer sont les suivantes:

snapshot_root   /.snapshots/

La variable snapshot_root permet de configurer le répertoire racine ou les sauvegardes seront stockées. Ce répertoire peut être sur le même disque que le disque système (c’est le cas de la configuration par défaut avec l’utilisation du répertoire /.snapshots/).

Je vous conseille pour ma part d’utiliser si possible un répertoire stocké sur un deuxième disque physique. Par exemple sur mon serveur Gandi, j’ai un deuxième disque qui est monté sur le répertoire /srv/backup. Je vais donc configurer la variable à /srv/backup/snapshots/ (noter le / à la fin du répertoire !).

Exemple: snapshot_root /srv/backup/snapshots/

cmd_ssh /path/to/ssh

Si vous voulez utiliser les fonctions de sauvegarde de serveur distant (en utilisant le protocole SSH), il faut dé-commenter la ligne précédente. Si vous avez besoin de passer des arguments spécifique à SSH, il faudra compléter la ligne ssh_args.

Exemple: cmd_ssh /usr/bin/ssh

interval monthly 3

Activation de la sauvegarde mensuelle (désactivé par défaut).

On passe ensuite aux variables permettant de configurer ce que l’on veut sauvegarder.

Sauvegardes locales

On parle ici d’une sauvegarde journalisée de répertoires de la machine ou RSnapShot est installé.

backup /home/ localhost/

Le répertoire /home/ sera sauvegardé dans le sous répertoire $snapshot_root/localhost/.

Exemple:

backup /home/ localhost/

backup /etc/ localhost/

backup /var/svn/ localhost/

Sauvegardes distantes

On peut également sauvegarder des répertoires de machines distantes. On utilise pour cela la configuration suivante:

backup root@example.com:/etc/  example.com/    +rsync_long_args=–bwlimit=1024,exclude=core

On va ainsi sauvegarder le répertoire /etc/ de la machine exemple.com en utilisant une connexion SSH avec l’utilisateur root (il faut bien sur que la connexion SSH entre votre machine exécutant RSnapShot et example.com soit automatisée). En bonus on demande à RSnapShot de ne pas sauvergarder les fichiers core (exclude=core) et de limiter la bande passante à 1 Mbps (–bwlimit=1024).

Sauvegardes en utilisant des scripts

Une autre fonctions intéressantes de RSnapShot est la possibilité d’utiliser des script shell pour automatiser des sauvegardes un peu plus complexes.

Par exemple imaginons que l’on veuillent sauvegarder les données de son serveur SVN. On commence par créer le script shell /usr/local/bin/backup-svn.sh:

#!/bin/sh

# Backup SVN


svnrepo= »/var/svn/ »

for i in `ls $svnrepo`

do

svnadmin -q dump $svnrepo/$i > $i.svndump

gzip -f $i.svndump

rm $i.svndump

done

Puis on le rend exécutable:

sudo chmod a+x  /usr/local/bin/backup-svn.sh

Enfin on configure RSnapShot:

backup_script /usr/local/bin/backup-svn.sh localhost/svn/

Le script backup-svn.sh va être lancé à partir du répertoire localhost/svn/

Il est bien sur possible de faire des scripts pour d’autres besoins: sauvegarde de bases de données MySQL par exemple.

Utilisation de RSnapShot

On commence par valider le fichier de configuration:

sudo rsnapshot configtest

Syntax OK

Simulation d’une sauvegarde journalière (cela va afficher ce que RSnapShot va faire mais sans le faire…):

sudo rsnapshot -t hourly

echo 3531 > /var/run/rsnapshot.pid

mkdir -m 0700 -p /srv/backup/snapshots/

mkdir -m 0755 -p /srv/backup/snapshots/hourly.0/

/usr/bin/rsync -a –delete –numeric-ids –relative –delete-excluded /home \

/srv/backup/snapshots/hourly.0/localhost/

mkdir -m 0755 -p /srv/backup/snapshots/hourly.0/

/usr/bin/rsync -a –delete –numeric-ids –relative –delete-excluded /etc \

/srv/backup/snapshots/hourly.0/localhost/

mkdir -m 0755 -p /srv/backup/snapshots/hourly.0/localhost/

mkdir -m 0755 -p /srv/backup/snapshots/tmp/

cd /srv/backup/snapshots/tmp/

/home/nicolargo/bin/backup-svn.sh

cd /home/nicolargo/

sync_if_different(« /srv/backup/snapshots/tmp/ », \

« /srv/backup/snapshots/hourly.0/localhost/svn/ »)

mkdir -m 0755 -p /srv/backup/snapshots/hourly.0/

/usr/bin/rsync -a –delete –numeric-ids –relative –delete-excluded \

–exclude=core –bwlimit=1024 –rsh=/usr/bin/ssh \

nicolargo@exemple.com:/home /srv/backup/snapshots/hourly.0/sam/

mkdir -m 0755 -p /srv/backup/snapshots/hourly.0/

/usr/bin/rsync -a –delete –numeric-ids –relative –delete-excluded \

–exclude=core –bwlimit=1024 –rsh=/usr/bin/ssh \

nicolargo@exemple.com:/etc /srv/backup/snapshots/hourly.0/sam/

touch /srv/backup/snapshots/hourly.0/

Test en ligne de commande:

sudo rsnapshot hourly

Le répertoire contenant la première sauvegarde devrait être créé sous /srv/backup/snapshots/hourly.0.

Enfin on automatise le lancement en éditant la crontab système (root):

sudo crontab -e -u root

0 */4 * * * /usr/bin/rsnapshot hourly

30 23 * * * /usr/bin/rsnapshot daily

0 23 * * 0 /usr/bin/rsnapshot weekly

30 22 28 * * /usr/bin/rsnapshot monthly

Pour une liste exhaustive des fonctions proposées par RSnapShot, je vous conseille la lecture de la documentation officielle (en Anglais).

Et voili, merci encore à Xavier pour cette belle découverte.

Catégories
Blog Open-source Planet-libre Reseau Systeme Web

Sécuriser son blog WordPress #3

WordPress n’a pas forcement bonne presse au niveau de la sécurité. Le coeur PHP du moteur WordPress est pourtant surveillé de très près et les corrections des failles sont assez rapides (voir par  exemple la publication de la version 3.0.4).

Par contre les plugins, qui sont un avantage indéniable de WordPress par rapport aux autres CMS, sont également un talon d’Achille… En effet, WordPress dispose d’une base de plugins impressionnante (plus de 12.700 au moment de l’écriture de ce billet) dont les développeurs sont plus ou moins sensibilisés à la problématique de la sécurité… Ajouter des plugins à votre blog, c’est multiplier les risques au niveau de la sécurité.

Dans ce billet, nous allons voir comment installer puis configurer WordPress pour compliquer la tache des personnes voulant attaquer votre blog.

Je vous rappelle que cet article est découpé en plusieurs billets (vous êtes en train de lire le #3):

Cette série de billets a été co-écrite avec Jérémie Marguerie étudiant à EPITA (merci à lui !).

Partir sur de bonnes bases

Nous allons détailler l’installation, la configuration initiale puis la gestion des mises à jours de WordPress.

    Installation de WordPress

    Personnellement j’utilise sur mon serveur deux versions de WordPress en parallèle.

    La première est celle du blog « de production » (celui que vous êtes en train de lire) utilise la version stable SVN (c’est à dire la 3.0.4 au jour d’aujourd’hui). J’utilise la commande suivante pour effectuer l’installation (dans le répertoire racine de mon serveur Web: /var/www/blog):

    svn co http://core.svn.wordpress.org/branches/3.0/

    La seconde, dite « de validation » me sert pour tester mon blog (thème et plugins) sur les futures versions de WordPress (3.1 par exemple). Elle n’est pas publique, seul les administrateurs peuvent y accéder. Pour installer cette version de WordPress, j’utilise la commande suivante dans un deuxième répertoire de mon serveur Web (/var/www/blogfutur):

    svn co http://core.svn.wordpress.org/trunk/

    Avant de suivre la fameuse installation en 5 minutes de WordPress, je vous conseille de changer le préfixe des tables MySQL en éditant la ligne suivante dans votre fichier de configuration wp-config.php et en remplacant wp_ par une chaine aléatoire (par exemple apvbty_):

    $table_prefix  = ‘apvbty_’;

    Attention, cette manipulation est à faire seulement sur un nouveau blog. En effet, si vous avez déjà une base de donnée SQL existante il faut d’abord changer le nom du préfixe des tables dans MySQL (voir hack en fin de billet) sous peine de ne plus pouvoir accéder à vos données.

    Une fois l’installation de WordPress finalisée, nous allons commencer par fixer les droits au niveau des fichiers dans ces répertoires. En partant sur l’hypothèse ou votre serveur Web tourne sous l’utilisateur www-data et dans le répertoire /var/www/blog, j’utilise les commandes suivantes:

    chown -R www-data:www-data /var/www/blog

    find /var/www/blog -type d -exec chmod 755 {} \;

    find /var/www/blog -type f -exec chmod 644 {} \;

    chmod 640 /var/www/blog/wp-config.php

    find /var/www/blog/wp-content/themes -type d -exec chmod 775 {} \;

    find /var/www/blog/wp-content/themes -type f -exec chmod 664 {} \;

    Pour vous simplifier la vie, je vous conseille de mettre ces commandes dans un script shell afin de pourvoir rapidement les appliquer sur votre arborescence.

    Mise à jour de WordPress

    Comme nous l’avons vu, les développeurs de WordPress sont assez réactifs sur la correction des failles de sécurité. Encore faut-il que vous pensiez à mettre à jour votre instance de WordPress…

    J’utilise un script shell pour mettre à jour WordPress à partir de SVN:

    #!/bin/bash

    # Simple script pour mettre a jour WordPress

    # Test que le script est lance en root

    if [ $EUID -ne 0 ]; then

    echo « Le script doit être lancé en root: # sudo $0″ 1>&2

    exit 1

    fi

    WPPATH= »/var/www/blog »

    echo « 1) Mise a jour de WordPress »

    cd $WPPATH 2>&1 /dev/null

    CURRENTVERSION=`svn info | grep « Revision:  » | awk ‘{ print $2 }’`

    svn update

    rm $WPPATH/wp-admin/install.php

    cd – 2>&1 /dev/null

    echo « 2) Verification des droits des fichiers »

    chown -R www-data:www-data $WPPATH

    find $WPPATH -type d -exec chmod 755 {} \;

    find $WPPATH -type f -exec chmod 644 {} \;

    chmod 640 $WPPATH/wp-config.php

    find $WPPATH/wp-content/themes -type d -exec chmod 775 {} \;

    find $WPPATH/wp-content/themes -type f -exec chmod 664 {} \;

    echo « 3) Fin de la mise a jour »

    echo « En cas de pb: svn update -r$CURRENTVERSION »

    Il est possible de lancer ce script toutes les nuits (par exemple par crontab) pour éviter de se retrouver avec un blog hacké quand vous partez en congés

    Le .htaccess

    Ce fichier qui doit se trouver à la racine de votre site Web, contient des entrées utiles à la sécurité de votre site. Le mien commence par:

    # MAIN

    RewriteEngine On

    ServerSignature Off

    Options All -Indexes

    Options +FollowSymLinks


    # SVN protect

    RewriteRule ^(.*/)?\.svn/ – [F,L]


    # Secure .htaccess

    <Files .htaccess>

    Order Allow,Deny

    Deny from all

    </Files>


    # Secure wp-config.php

    <Files wp-config.php>

    Order Deny,Allow

    Deny from all

    </Files>


    # FILTER REQUEST

    <IfModule mod_rewrite.c>

    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule . /index.php [L]

    </IfModule>

    Certains plugins ajoutent pas mal de chose dans ce fichier (notamment W3 Total Cache, le plugin d’optimisation des performances que j’ai abordé dans ce billet).

    Un peu de bon sens…

    Vous avez donc entre les mains une installation toute propre et sécurisée de WordPress, c’est normalement à partir de ce moment là que les choses se gâtent…

    On commence par l’erreur de base: ne pas utiliser un mot de passe « strong » pour le compte admin. Encore mieux, créer un nouveau compte administrateur et supprimer le compte admin par défaut.

    L’installation des plugins apportent également son lot de failles de sécurité. C’est là qu’il faut se faire violence et n’installer que les plugins indispensables au bon fonctionnement de votre blog. Il faut également veiller à mettre à jour régulièrement vos plugins (l’interface d’administration de WordPress permet de faire cela très simplement).

    Enfin vos thèmes peuvent également fragiliser votre blog en insérant des codes PHP ou JS. Si vous avez les compétences il faut faire un audit de votre thème ou au minimum utiliser des thèmes connus et validés.

    Des plugins pour la sécurité

    Parmis ces plugins, j’en utile trois dédiés à la sécurisation:

    • Secure WordPress permet d’automatiser certaines actions pour sécuriser votre blog.

    • WordPress File Monitor: Surveille les fichiers du moteur WordPress et vous alerte (par mail et/ou directement dans l’interface d’administration de WordPress) en cas de modification.
    • On peut également citer WordPress Security Scan qui permet de faire un audit de votre blog en testant notamment les droits de vos fichiers, les mots de passes, la base de données…

    Quelques hacks en bonus

    Compliquer la tache des attaques par force brute en supprimant l’indicateur (« mauvais mot de passe ») lors d’une tentative de connexion à l’interface d’administration. Il faut juste ajouter la ligne suivante à votre fichier functions.php (thème):

    add_filter(‘login_errors’, create_function(‘$a’, « return null; »));

    Si vous avez une base de données MySQL existante avec le préfixe par défaut (wp_) et que vous souhaitez le changer, il est possible de faire celà directement à la main par une requête MySQL ou alors plus simplement en utilisant le plugin WP-Security-Scan.

    Tester votre WordPress

    Pour tester la sécurité de votre blog, rien ne vaut une simulation d’attaque. Pour celà vous pouvez utiliser le logiciel libre Nikto.

    On commence par installer Nikto sur un PC client sous Ubuntu (qui va simuler l’attaque):

    sudo aptitude install nikto

    Puis on lance le test (remplacer URL par l’URL de votre blog WordPress):

    nikto -h URL

    Le rapport devrait ensuite s’afficher.

    Sources:

    Catégories
    Hardware Open-source Planet-libre Reseau Systeme Web

    Cours d’introduction au « Cloud Computing »

    En début de semaine, j’ai été emmenée à donner un cours d’introduction aux technologies de Cloud Computing à l’école supérieure des ingénieurs de Luminy (ESIL à Marseille). Le sujet étant vaste pour les trois petites heures imparties, j’ai préféré axer mon cours sur certains aspects (notamment les architectures IAAS et l’utilisation de technologies ouvertes et libres).

    Pour ceux que cela intéresse, voici (sous licence « CC By:« ):

    Au passage un grand merci à Philippe Scoffoni pour sa relecture et ses remarques.

    Catégories
    Open-source Planet-libre Systeme

    Installation et configuration de AWN sous Ubuntu

    Il n’y a pas si longtemps le dock était le parent pauvre des distributions GNU/Linux. Avec l’apparition de projets comme Docky, Cairo ou AWN, cette tendance s’inverse à vitesse grand V ! Partisant de Docky depuis quelques mois, je vais donner une nouvelle chance à AWN qui, dans ses dernières versions, apportent des fonctionnalités intéressantes.

    Allez zou lets’s rock…

    Installation de AWN

    C’est assez simple sous Ubuntu:

    sudo add-apt-repository ppa:awn-testing/ppa
    sudo apt-get update
    sudo apt-get install avant-window-navigator-trunk avant-window-navigator-data-trunk python-awn-trunk awn-settings-trunk awn-applets-python-core-trunk python-awn-extras-trunk awn-applets-python-extras-trunk awn-applets-c-core-trunk awn-applets-c-extras-trunk

    PS: Si vous avez un autre dock (par exemple Docky), il faudra le désinstaller histoire de ne pas se retrouver avec deux docks (mais il est possible de concerver les deux en // durant la phase de test).

    sudo aptitude remove docky

    Lancement de AWN

    A partir du menu Applications > Accessoires > Avant Window Navigator

    Configuration de AWN

    Voilà ce que donne mon dock (après la configuration à faire ci-dessous):

    Pour accèder au menu de configuration, il faut cliquer sur le bouton de gauche du dock puis sur le bouton configuration.

    Vous pouvez directement importer une configuration existante (par exemple si vous avez plusieurs PC) en allant dans le menu Thème puis en cliquant sur le bouton Importer. Vous pouvez télécharger mon thème en cliquant ici ou bien suivre pas à pas les étapes suivantes:

    Sauvegarder votre configuration AWN

    Pour éviter d’avoir à refaire la configuration à chaque installation (ou re-installation de machine), il est possible d’archiver la configuration d’AWN dans un fichier .tgz. Pour cela, il faut se rendre dans le menu Thèmes > Personnaliser puis cliquer sur le bouton exporter le thème.

    Mon fichier de configuration se trouve ici.

    A l’utilisation…

    Je n’avais pas testé AWN depuis un bon moment, j’utilisais Docky comme gestionnaire de dock. Je dois dire que de nombreux progrès ont été fait. La configuration est vraiment simple, intuitive et l’utilisation agréable. Je n’ai eu aucun plantage même avec l’utilisation de la version de développement.

    C’est donc décidé pour ma part, je migre vers AWN 🙂

    Sources utilisées pour la rédaction de ce billet: