Archives par auteur: laurent

SimpleSAMLphp, le “couteau suisse de l’authentification”

Lorsqu’on héberge de nombreux serveurs ou services Web, un problème se pose forcément un jour ou l’autre: la multiplication des pages d’authentification et des procédures de gestion des utilisateurs. Pour ne rien arranger, elles sont toutes indépendantes les unes des autres. Vous me direz qu’il est possible d’utiliser (par exemple) un annuaire LDAP ou un service d’autehtification centralisé tel que OAuth, mais cela ne règle pas la corvée des authentifications multiples.

Une solution existe, elle s’appelle “SSO” (pour Single Sign On). De nombreuses implémentations libres existent: Shibboleth, Jasig CAS (liste non exhaustive). Ces dernières ont cependant un inconvénient de taille: elles s’appuient sur des technologies JAVA …

En cherchant un peu, je suis tombé sur le projet SimpleSAMLphp qui va bien au délà de mes espérances: comme son nom l’indique, il est écrit en PHP et supporte nativement deux des principaux protocoles SSO:

  • SAML
  • Shibboleth

Mais sa structure est modulaire et d’autres fonctionnalités sont également disponibles:

  • CAS
  • OAuth
  • OpenID
  • MemCookie

Le logiciel est très bien documenté et de nombreux exemples sont fournis: authentification LDAP, SQL, Facebook, Google, LinkedIn, Windows Live, …

Voici mon premier tuto sur le sujet: mise en place d’un Idp (fournisseur d’identité) SAML / CAS basée sur SimpleSAMLphp.

“SimpleBan”: une alternative à “fail2ban” compatible IPv6

“fail2ban”, c’est puissant, mais ce n’est pas (nativement) compatible IPv6 !

Sans avoir la prétention de ré-inventer la roue, j’ai écrit un petit script shell très simple qui fonctionne sur le même principe:

  • parser les logs à la recherche de motifs,
  • extraire les adresses IP de ces motifs,
  • bloquer les adresses IP.

Le but est de bloquer les adresses IP “indélicates”. Ce script Bash n’a pas besoin de base de données et fonctionne de la façon suivante:

  • lancement régulier via “crontab”,
  • parcours des logs avec “logtail”,
  • extraction des adresses IP avec “grep” et “sed”,
  • mise en place des règles de blocage avec “iptables” et “ip6tables”
  • planification de la suppression des règles de blocage avec “atq”,
  • sérialisation des commandes “iptables” / “ip6tables” avec “tsp”.

La configuration est beaucoup plus simple qu’avec “fail2ban”, la seule difficulté étant l’écriture des motifs de détection et d’extraction.

Script sur le Wiki

Site du projet

 

Redémarrer une machine quand “reboot” ou “shutdown -r now” ne veulent rien savoir !

Mésaventure arrivée grâce à un fichu disque USB défectueux: les commandes “reboot” et “shutdown -r now” ne voulaient rien savoir, et impossible de tuer le processus de copie bloqué. Il existe une alternative moins risquée que le redémarrage “électrique violent”:

echo s > /proc/sysrq-trigger # Flusher les buffers d'IO pour ne pas perdre de données
echo u > /proc/sysrq-trigger # Démonter puis Remonter toutes les partitions en Read-Only
echo b > /proc/sysrq-trigger # Forcer le reboot de la machine

Source

Navigation et cartographie libre OpenStreetMap

Je cherchais un bonne appli pour Android pour la navigation respectant ces critères:

  • mode “offline” (téléchargement préalable des données),
  • navigation,
  • gestion des cartes (contribution au projet OpenStreetMap),
  • sous licence libre,
  • de préférence gratuite …

Le projet OsmAnd correspond à ces critères, l’appli est disponible sur le dépot de Google. Mais je n’ai aucune confiance en lui, d’ailleurs j’ai supprimé tout ce qui était possible de supprimer qui vient de chez Google, et je n’ai enregistré aucun compte chez eux !

Mon téléphone (Alcatel One Touch Pixi 3) propose un dépot alternatif (Apps) qui contient grosso-modo les applis du dépot de Google et qui a le bon goût de ne pas demander d’enregistrement préalable. Sauf la la version proposée d‘OsmAnd (2.2.4) est bridée: il faut payer pour pouvoir télécharger plus de 7 cartes.

Enfin, il reste le dépot F-Droid. Oh joie !!!: OsmAnd est disponible (en version 2.1.1) et totalement libre et gratuite.

En résumé:

  • Play Store de Google: on oublie !
  • Apps d’Alcatel: pas mal, mais bof quand même …
  • F-Droid: si on ne cherche pas la dernière version des applis, c’est le meilleur choix lorsqu’on cherche des logiciels libres !

 

KeepassX, un “coffre-fort” électronique pour vos mots de passe !

Utiliser le même mot de passe partout, ce n’est pas une bonne idée, et ce n’est tout simplement pas possible (de nombreux sites Web imposent leur propre politique de création de mot de passe.

Ecrire ses mots de passe sur un cahier ou pire, sur des post-it collés un peu partout, ce n’est pas une bonne idée non plus !

La solution ? utiliser un logiciel pour gérer les mots de passe. Ceux-ci sont stockés dans un fichier protégé par un mot de passe qu’il vaut mieux ne pas oublier, d’ailleurs.

J’en ai trouvé un rapidement, libre bien entendu. Il s’agit de KeepassX ,disponible pour toutes les plates-formes et dans pas mal de langues (dont le français). Il existe même port pour Android. Pratique si on stocke le fichier sur un cloud !

Les plus courageux pourront installer le logiciel à partir du code source, mais un PPA existe pour Ubuntu. Voici la procédure d’installation que j’ai trouvée ici:

sudo echo "
#keepassx
deb http://ppa.launchpad.net/keepassx/ppa/ubuntu lucid main
deb-src http://ppa.launchpad.net/keepassx/ppa/ubuntu lucid main" >> /etc/apt/sources.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 095F1873
sudo apt-get update
sudo apt-get install keepassx

Rustine pour un serveur Web antédilluvien

Pas facile de maintenir un serveur qui tourne depuis presque 10 ans sur une vénérable Debian Etch … Cela fait bien longtemps qu’il n’y a plus de mises à jour de sécurité pour cette distribution. Il héberge une application critique: un serveur Sympa qui gère pas loin de 1500 listes de diffusion. Heureusement, ce dernier est installé à partir des sources et n’est pas complètement à la ramasse.

Cependant, les failles s’accumulent, notamment du côté du serveur Apache et surtout d’OpenSSL. Certaines peuvent être colmatées avec un peu de configuration, par contre il est impossible de corriger la faille CRIME en l’état: la version d’Apache est trop ancienne pour permettre la désactivation de la compression TLS. Enfin la version d’OpenSSL supporte, au mieux TLS 1.0 …

J’ai essayé deux solutions:

  • Passer le service derrière un reverse-proxy Nginx => impossible de faire fonctionner correctement le CGI de Sympa avec le SSO Cas !
  • Remplacer Apache par Nginx / fcgi-wrapper => effets de bord indésirables …

Troisième et dernière solution: compiler et installer Apache + OpenSSL + fastcgi sans écraser les composants déjà présents sur le système.

Quelques contraintes à respecter:

  • Rester en Apache 2.2.x
  • Passer à OpenSSL >= 1.x.x (support de TLSv1 et TLSv2)
  • Lien statique entre OpenSSL et Apache
  • Les module ne sont pas intégrés à Apache (sauf OpenSSL)
  • Conserver mod_fastcgi (fastcgid poserait des problèmes)
  • Conserver mod_security
  • Quelques coups de lime pour compiler des vieux machins avec du neuf (OpenSSL v1.0.2e) !

Reste ensuite à ré-écrire la configuration d’Apache (récupérer celle du serveur d’origine n’est pas un bonne idée) et debugger petit à petit.

La rustine permettra de tenir 2 ou 3 mois, en attendant la prochaine Ubuntu LTS (16.04), pour la migration sur la dernière version de Sympa (encore une procédure bien compliquée …).

=> Procédure de compilation le Wiki.

Renouvellement automatique de certificat Let’s Encrypt

“Let’s Encrypt, le retour …”

La procédure disponible ici permet de renouveller automatiquement le certificat électronique d’un serveur. Le script détermine automatiquement les alias à partir de la configuration d’un serveur Nginx, mais il est possible d’en spécifier d’autres, pour un serveur IMAP, par exemple.

Le “plus compliqué” est de trouver et d’installer le bon certificat (le chemin peut changer lorsqu’il y a une modification dans la liste des hosts passés en alias).

JRES 2015

Les JRES 2015, c’est terminé !

Même si le rythme des innovations s’est considérablement essouflé depuis la primière édition à laquelle j’ai assisté (en 2001), les JRES restent l’évènement incontournable pour les experts des réseaux et systèmes de la communauté Universitaire et de la Recherche. Le niveau des conférences est assez relevé, et ce qui est bien, c’est que les conférences sont filmées et les vidéos disponibles sur le site. Les articles sont également mis en ligne.

J’en profite pour mettre en ligne le diaporama que j’ai présenté aux sessions “Lighning Talks” de cette année et celui que j’ai presenté en 2013.

Le programme des JRES (édition 2015)

Voici quelques liens qui pourraient vous intéresser: