Votre société de services en logiciels libres

Pour que SSHD aille chercher les clés publiques dans un annuaire LDAP…

15 janvier 2016   
Pour que SSHD aille chercher les clés publiques dans un annuaire LDAP…

L’authentification par clé publique est un « must » de sshd par rapport à l’utilisation des mots de passe. Or, bien souvent, les utilisateurs sont définis dans un annuaire LDAP. Le problème devient alors : où stocker les clés publiques des utilisateurs ?

Si la réponse est : dans chaque répertoire de tous les utilisateurs, sur toutes les machines auxquelles ils ont accès, je gage que vous devrez utiliser des outils de déploiement pour éviter cette tâche fastidieuse…

Mais puisque vous avez un annuaire : pourquoi ne pas stocker les clés dans l’annuaire ?

Cette opération est réalisée en 3 étapes :

Enrichir le schéma de l’annuaire

avec OpenLDAP, il fut ajouter la configuration :

dn: cn=openssh-lpk,cn=schema,cn=config
 objectClass: olcSchemaConfig
 cn: openssh-lpk
 olcAttributeTypes: ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey'
 DESC 'MANDATORY: OpenSSH Public key'
 EQUALITY octetStringMatch
 SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
 olcObjectClasses: ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
 DESC 'MANDATORY: OpenSSH LPK objectclass'
 MAY ( sshPublicKey $ uid )
 )

Configurer le démon sshd pour qu’il récupère indirectement les clés publiques
Pour cela, ajoutez les deux lignes suivantes dans /etc/ssh/sshd_config :

AuthorizedKeysCommand /etc/ssh/ldap-auth-keys.sh
AuthorizedKeysCommandUser nobody

Vérifiez que l’utilisateur « nobody » existe.

Lors d’une authentification par clé publique, sshd va lancer la commande /etc/ssh/ldap-auth-keys.sh en lui passant le nom de l’utilisateur en paramètre. Cette commande doit retourner la ou les clés publiques associées à l’utilisateur dans l’annuaire, s’il y en a.

Ecrire la commande /etc/ssh/ldap-auth-keys.sh

Le script adéquat peut contenir la commande suivante :

ldapsearch -x '(&(objectClass=posixAccount)(uid='"$1"'))' 'sshPublicKey' |
sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'

Maintenant les tests !

Conservez une connexion ssh active sur le serveur et faite un « reload » : si le démon ne redémarre pas, faites un « start » pour avoir l’erreur sur l’écran…

Créer un dépôt GIT à partir de sources existants

18 octobre 2015   

Je n’applique pas toujours les « bonnes » pratiques concernant la mise en gestion de configuration et il m’arrive souvent de créer un dépôt GIT après avoir validé une maquette…et j’oublie toujours les commandes qui me permettent de créer le nouveau dépôt à partir des sources pré-existants. Alors, pour ne plus oublier, je les liste ici.

Je suppose que tous les sources et fichiers à mettre dans GIT sont dans le répertoire ./monappli. Les commandes à exécuter sont :

1.Initialisation du dépôt local :

$ cd ./monapp
$ git init

2.A ce moment là, nous vous suggérons de créer le fichier .gitignore

3.On ajoute les fichiers dans le dépôt local :

$ git add .

4.Puis on les « commit » :

$ git commit -m "commit initial"

5.Au besoin, on définit le dépôt GIT distant :

$ git remote add origin URL_du_dépôt_distant

6.Enfin, on met à jour le dépôt distant à partir du dépôt local :

$ git push origin master

 

Comment trouver les scripts PHP qui émettent des mails ?

10 juillet 2015   
Comment trouver les scripts PHP qui émettent des mails ?

Les CMS comme WordPress, Joomla ! et les autres sont des outils puissants et pratiques, mais ils sont largement bugués et doivent être mis à jour très fréquemment. Ceci est d’autant plus vrai que les administrateurs ajoutent de nombreux plugins de plus ou moins bonne qualité.

D’ailleurs, encore combien de temps avant que notre site ne soit piraté ?

Nous avons été sollicités à de nombreuses reprises par des Clients qui constataient des anomalies sur leur site : souvent des pirates ont profité d’une faille pour écrire ou ré-écrire un script PHP du CMS. Ces scripts utilisent alors les fonctions de messagerie de PHP pour spammer la planète.

La question est : comment retrouver le script fautif ?

La réponse est dans le manuel de PHP : modifiez les valeurs des paramètres suivants afin de tracer les scripts qui envoient du mail et le tour est joué !

mail.add_x_header = On
mail.log = /chemin/vers/mail.log

Notez que le fichier vers le log doit être accessible en écriture par le serveur Apache/Nginx.

 

Comment réduire la taille d’un répertoire ?

13 avril 2015   
Comment réduire la taille d’un répertoire ?

Tout Unixien sait bien que la taille d’un répertoire, obtenue par la commande « ls -lhd /chemin/vers/rep », ne donne pas la taille du contenu du répertoire, taille qu’on obtiendrait par la commande « du -sh /chemin/vers/repertoire ».

La « taille » d’un répertoire (au sens « ls -lhd ») est fonction du nombre de fichiers qu’il contient, que ces fichiers soient volumineux ou non. Ainsi, quand vous créez un répertoire, sa taille est initialement de 4 Ko, puis passe à 8, 16, 24 Ko…. si de nouveaux fichiers sont créés dans ce répertoire.

en savoir plus

Comment reconnaitre la bonne carte réseau ?

18 mars 2015   
Comment reconnaitre la bonne carte réseau ?

Votre serveur – qui  n’est pas (encore) virtualisé – dispose de plusieurs cartes réseau Ethernet : comment distinguer chacune des cartes eth0, eth1, … ?

en savoir plus