Menu principal

Statut de la page

Debconf, Preseed et troubleshooting.

Dernièrement j’ai cherché à automatiser l’installation d’un serveur Openldap avec Puppet et un fichier de préconfiguration d’un package Debian. L’installation était bloqué et un ps révélait que l’installation était bloquée sur la préconfiguration du package : 22165 ? Ss 0:00 /usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install slapd 22170 ? S 0:00 /bin/sh -c /usr/sbin/dpkg-preconfigure --apt || true 22171 ? R 96:21 /usr/bin/perl -w /usr/sbin/dpkg-preconfigure --apt 22173 ? Z 0:00 [dpkg-preconfigu] 22178 ? R 26:27 /bin/sh /tmp/slapd.config.JDMbkD configure Pour le debug, première étape, préchargeons notre fichier preseed dans debconf : echo -e "slapd slapd/root_password password ldappwd" | debconf-set-selections echo -e "slapd slapd/root_password_again password [...]
Lire la suite
Vus : 222
Publié par Morot : 28

Logger l’ensemble des commandes shell lancées par les utilisateurs

Un pré-requis à une bonne politique de sécurité consiste à tracer l’ensemble des commandes des utilisateurs. De nombreuses solutions passent par la modification de la variable d’environnement PROMPT_COMMAND dans le /etc/bash.bashrc. Problème évident, c’est pour bash uniquement entre autres défauts. Un meilleur moyen de journaliser les commandes shell lancées par les utilisateurs consiste à procéder à la surveillance au niveau kernel et surveiller les appels systèmes execve. Pour cela, il suffit d’installer le package Ubuntu auditd ou audit sous RHEL/CentOS et de définir ces règles attendues dans le fichier /etc/audit/audit.rules : -a exit,always -F arch=b64 -S execve -a exit,always -F arch=b32 -S execve Un redémarrage de service plus tard via systemctl restart [...]
Lire la suite
Vus : 532
Publié par Morot : 28

Un système de fichiers Haute Disponibilité avec GlusterFS ! (Paru dans GLMF 144)

GlusterFS est un système de fichiers réseau client/serveur permettant d’agréger différents nœuds de stockage afin de fournir un environnement NAS hautement disponible. 1. Présentation 1.1 Pour quoi faire ? Admettons que j’ai une application Web lambda, je vais pouvoir déployer plusieurs instances Apache ou Nginx qui se trouveront derrière un équilibreur de charge, lui-même hautement disponible. Sur chaque instance de serveur Web, il me sera facile de déployer l’application. Toutefois chaque instance aura besoin d’accéder à des fichiers communs, générés ou non par l’application. Bien souvent, je vais rencontrer dans ce cas un serveur NFS qui va donc lui-même constituer un point de faiblesse dans l’architecture. Gluster permet de mettre en cluster plusieurs nœuds de stockage (à minima deux), ce qui permet de [...]
Lire la suite
Vus : 336
Publié par Morot : 28

SSLH : Faire cohabiter un serveur Web et SSH sur le même port

SSLH est un outil qui permet de multiplexer le port 443 afin notamment de contourner certains firewalls qui bloquent le port SSH. Typiquement, en HTTP c’est le client qui communique en premier quand pour le protocole SSH c’est le serveur qui envoie le premier message. SSLH utilise ces différences de fonctionnement via des sondes (pour XMPP, OpenVPN…) afin de fournir cette fonctionnalité de multiplexage. Dans mon cas, je veux partager le port 443 avec un serveur Apache. Dans un premier temps, il faut indiquer à Apache de ne plus écouter sur le port 443 mais le 1443. Il faut changer tous les VirtualHost dans les fichiers /etc/apache2/sites-enabled en remplaçant : <VirtualHost *:443> en <VirtualHost *:1443> Et adapter de la même façon le fichiers /etc/apache2/ports.conf : Listen 80 <IfModule ssl_module> Listen [...]
Lire la suite
Vus : 278
Publié par Morot : 28

Ansible : Automatisation du déploiement d’un cluster multi master pour MariaDB (et MySQL…) avec Galera

Cet article est la suite de mon précédent article sur le sujet dans le but de pousser le concept un peu plus loin. C’est mon premier role Ansible donc je suis à peu près certain qu’il est possible de mieux faire. Dans un premier temps, paramétrons le fichier /etc/ansible/hosts pour y lister nos serveurs. [galera] db1.morot.test db2.morot.test db3.morot.test On créé notre rôle avec ansible-galaxy pour se faciliter le travail : cd /etc/ansible/ mkdir roles ansible-galaxy init galera - galera was created successfully On pousse notre template de configuration MariaDB dans /etc/ansible/roles/galera/templates/my.cnf.j2 : [client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = [...]
Lire la suite
Vus : 355
Publié par Morot : 28

Cluster multi master pour MariaDB (et MySQL…) avec Galera

Petite présentation Galera est une surcouche de MariaDB permettant de mettre en œuvre un cluster au dessus du moteur de stockage InnoDB pour permettre un environnement hautement disponible : Réplication multi master Réplication synchrone Chaque nœud du cluster est utilisable pour un accès lecture/écriture La réplication est supportée au travers d’un lien WAN et de la latence que ce type de lien peut comporter Contrôle d’admission au cluster intégré Dans une architecture Galera, les clients SQL vont donc attaquer le cluster via un Load Balancer comme HAProxy qui sera lui-même hautement disponible :  [...]
Lire la suite
Vus : 426
Publié par Morot : 28

Puppet : déployer automatiquement une applications Web avec les services Apache/PHP/MySQL

Dans ce court article, je vous propose de découvrir comment avec Puppet, il est simple de déployer un serveur Web complet prêt à accueillir une application web depuis son dépôt GIT. Je vais prendre pour exemple le célèbre CMS WordPress. Premièrement, on installe les modules dont on aura besoin : puppet module install puppetlabs-apache --version 2.3.0 puppet module install puppetlabs-mysql --version 5.1.0 puppet module install puppetlabs-vcsrepo Partons sur une simple définition de node dans le fichier /etc/puppetlabs/code/environments/production/manifests/site.pp contenant notre serveur web. On installe Apache avec le moteur prefork et non pas worker fourni par défaut car on souhaite installer mod_php. Enfin on créé un VirtualHost www.morot.test dont les fichiers seront dans le répertoire /srv/www : node 'www' { class { 'apache': default_vhost => false, mpm_module [...]
Lire la suite
Vus : 280
Publié par Morot : 28

OpenLDAP : corriger les ldif_read_file: checksum error

Si comme moi il vous arrive de modifier les fichiers de configuration ldif d’openldap à la main plutôt que de les modifier en injectant un LDIF, cela génère des jolies erreurs non bloquantes comme ceci :

ldif_read_file: checksum error on "/etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif"

Pour corriger, rien de plus simple, on installe un utilitaire et on génère le nouveau CRC :

apt-get install libarchive-zip-perl
crc32 

Il ne reste plus qu'à modifier l'en-tête du fichier en erreur, ici /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif avec vim (c'est autorisé cette fois!) et à indiquer le checksum obtenu.

Vus : 250
Publié par Morot : 28

Puppet : automatiser la construction d’un volume GlusterFS répliqué

Puppet : automatiser la construction d’un volume GlusterFS répliqué Je vais présenter rapidement comment créer le code Puppet adapté à la création d’un cluster à deux noeuds avec deux bricks répliqués. Pour la démonstration, j’aurais deux VM Ubuntu 16.04 et les bricks seront sur deux disques durs de 8 Go. Préparation du Puppet Master Installation des modules nécessaires : # puppet module install puppetlabs-lvm Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ... Notice: Downloading from https://forgeapi.puppet.com ... Notice: Installing -- do not interrupt ... /etc/puppetlabs/code/environments/production/modules └─┬ puppetlabs-lvm (v0.9.0) └── puppetlabs-stdlib (v4.20.0) # puppet module install puppet-gluster Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ... Notice: [...]
Lire la suite
Vus : 286
Publié par Morot : 28

HAProxy : gérer la persistance des sessions lorsque l’application n’est pas conçue pour

Le problème avec les sessions HTTP c’est qu’elles sont complètement décorrélées des sessions TCP. Sans load balancer, ce n’est pas un problème, par contre dans une architecture multi serveur, un utilisateur peut être redirigé vers un serveur web qui n’est pas au courant de la session HTTP. Ce cas se produit typiquement avec un algorithme de type round robin. Ainsi, un utilisateur peut lors de la première connexion être authentifié sur un serveur puis lors de l’accès suivant être redirigé vers le second serveur moins chargé. Habituellement, pour gérer ce type de situation : On utilise un système de cache partagé entre les serveurs pour gérer les sessions : base de données, memcache, système de fichier L’application gère nativement le mode cluster Pour une même [...]
Lire la suite
Vus : 458
Publié par Morot : 28
Powered by BilboPlanet