Quand vous avez plusieurs milliers de postes de travail et quelques centaines de serveurs Windows, il est strictement obligatoire de mettre en place des outils avancés de gestion de parc et ceci depuis bien longtemps. C’est tellement une évidence qu’aujourd’hui, qu’il existe, outre le très classique et “institutionnel” Microsoft SCCM, de nombreux autres acteurs qui offrent des fonctions complémentaires et/ou similaires à la suite de l’éditeur de Redmond. De plus, les problématiques de sécurité sont prises très au sérieux sur ce type d’OS et WSUS est également de la partie, en général.
Par contre, bizarrement, quand vous discutez avec des ingénieurs Unix/Linux, même lorsque le parc de serveur devient important (à partir d’une cinquantaine de machines, disons), les réflexes ne sont pas forcément là en matière de gestion de configuration, mises à jour de sécurité et profiling divers. “Unix” bénéficie visiblement d’une espèce d’aura (due à son grand age, sans doute…) conduisant à lui éviter toute velléité d’urbanisation a priori.
Pourtant, force est de constater que Linux, pour ne parler que de lui, est de plus en plus la cible d’attaques diverses et variées (qu’elles soient liées au noyau lui même ou aux logiciels embarqués). Enfin, même sans parler de la sécurité pure, la gestion de configuration à l’échelle d’une centaine de machines en production me parait relever aussi des bonnes pratiques à peu près évidentes, quel que soit l’OS.
Malgré tout, nous étions encore il y a quelques mois dans cette situation très déséquilibrée, d’un parc Windows industriel d’un coté et d’une collection de machines Linux/Unix autonomes et sans aucune politique associée de l’autre.
Mais, ça, c’était avant ! A l’occasion de l’arrivée récente d’un expert Linux/Unix chez nous, j’ai donc lancé un projet d’urbanisation de notre parc de machines “hors Windows”. Je vous propose de vous présenter rapidement l’orientation, les objectifs et les premiers résultats de ce projet, qui s’appuie techniquement sur le projet Open Source Katello.
L’ensemble de ce chantier s’est déroulé sur environ une année. Après une phase d’étude de notre parc Linux/Unix et de nombreuses discussion avec notre ingénieur expert (Frédéric, pour les intimes !), la solution était quasi toute trouvée : étant en grande majorité équipés de RedHat et CentOS, le choix s’est porté sur la solution Katello, émanation Open Source du fameux RedHat Satellite 6. Katello est une solution offrant tout ce qu’on peut désirer en matière de gestion de “parc” Unix/Linux : gestion de configuration, du cycle de vie, du versionning, du provisonnement, gestion de la sécurité etc. … Cependant, de part son orientation très marquée vers les distributions issues de la société au chapeau rouge, nombre de fonctions ne sont disponibles que sur ces environnements.
Pour autant, il faut noter que Katello s’appuie pour une grosse part sur des éléments totalement agnostiques et structurant : Puppet et The Foreman (le framework). Voici un petit schéma synoptique, construit avec l’aide de Frédéric qui vous permettra de mieux visualiser la richesse, mais aussi la complexité de Katello :
En fait, même si le schéma ci-dessus est relativement simple, la plupart des composants ont des liens les uns avec les autres. Par exemple, Candlepin s’appuie sur les “Content Views” de Pulp pour gérer les cycles de vie des serveurs inventoriés, The foreman travaille de concert avec Puppet pour gérer le provisonning etc. … Katello s’occupe précisément d’installer tous les composants en question en une seule fois et les paramétrer comme il se doit pour que tout cela fonctionne ensemble.
Aujourd’hui nous avons environ 150 serveurs Linux/Unix référencés et enregistrés sous Katello : Debian Linux, RHEL, CentOS et même AIX. Nous avons également commencé à mettre en place des règles de sécurités globales ainsi que des options de configuration standardisées sur les Linux :
– le partage de clefs publiques SSH corespondant aux personnes habilités à se connecter en tant que root sur les machines
– la synchronisation des mots de passe root avec notre CMDB et à terme une fonction de changement régulier automatisé (en test actuellement)
– la mise en place de bannières de connexions standardisées
– la mise en place des dépots internes “katello” pour chaque distribution (paramétrage de l’outil yum, principalement)
– paramétrage SNMP, DNS et NTP conformément à nos besoins internes (modules Puppet provenant de la communauté éponyme)
– mise en place de prompts standardisés (avec des jolies couleurs … on en reste pas moins geek !)
– mise à jour automatique des des VMWare tools ou conversion aux nouveaux et génériques “OpenVM tools” (voir mon billet sur ce sujet).
– dépots et synchronisation automatique de scripts spécifiques d’exploitation (ou supervision)
– forçage du chiffrement des mots de passe (/etc/shadow) en SHA-512 (spécifique à CentOS et RedHat)
… mais cela ne fait que commencer ! Nous avons plein de projets dans nos cartons pour l’avenir, comme :
– le provisionning automatique vers nos fermes VMWare
– la mise à jour automatique des OS via l’application des patchs de sécurité (un sujet très sensible évidemment)
– la mise en place et le paramétrage automatique des fonction d’audit (auditd)
– la mise en place d’une politique de délégation de droit industrialisée (sudoers/sudo notamment …)
(…)
Il s’agit malgré tout ici d’être clair : installer Katello est une chose relativement aisée, par contre, mettre en place une infrastructure comme celle-ci et surtout intégrer progressivement l’ensemble des serveurs cibles est beaucoup plus long et doit se faire avec précaution. Cela justifie en partie le temps mis par notre ingénieur spécialiste pour arriver à bout du chantier initial : la prise en charge de l’ensemble des machines Linux. D’autre part, il faut noter qu’à l’usage, on s’est rendu compte que la partie Pulp, chargée des dépots de distributions était extrêmement IO intensive sur sa base de donnée associées lors des mises à jours et indexations diverses (base MongoDB). XtremIO nous a, pour le coup, énormément aidé à rendre tout cela fluide ;)
Les bénéfices aujourd’hui sont visibles et arrivent à point nommé alors que notre RSSI commence à nous demander, dans le cadre de plusieurs projets de certification, de sécuriser de plus en plus nos environnements de production : Windows mais aussi Linux/Unix. Coté investissement, on sait avec précision le coût de l’opération : environ 100 jours/homme, mais pas un centime en licence ! C’est la magie de l’Open Source. Par contre, quel sera le ROI réel de cette opération après plusieurs années de production, c’est plus difficile à estimer ; de mon point de vue il ne peut être que positif aux vues des bénéfices déjà constatés au quotidien par nos équipes de production.
Pour en savoir plus, je vous conseille de vous rendre sur les portails des divers composants déjà présentés dans ce billet, à commencer, évidemment, par Katello.
Un grand merci à Frédéric pour le travail accompli pendant ces derniers mois et son aide précieuse dans la description de l’ensemble Katello. D’ailleurs, j’anticipe une question que vous allez forcément vous poser en y répondant : ET OUI, il est barbu !
Pour terminer, comme un billet vBlog ne vient jamais sans des jolis copies d’écran, voici un petit tour de l’interface de Katello chez nous :
Pas mal du tout, très bien décrit sur Katello.
Pouvez-vous détailler la marche à suivre pour gérer les distributions Debian. Il n’y a malheureusement pas beaucoup de documentation sur le sujet…