Depuis environ 2 semaines je me suis procuré un smart server chez iWeb je voulais enlever la couche "hardware" de ma responsabilité et avec les SmartServers c'est exactement ça qui se passe. Ils peuvent déplacer ton image sur une autre machine sans avoir a ré-instaler. Juste qu'a présent tout semble très bien fonctionner, j'en suis agréablement surpris. Je me suis dit tanqu'a ré-installer et migrer mes clients sur un nouveau serveur, essayons de garder un contexte ou la sécurité une prioritée.

Première chose que j'ai fait c'est de lire attentivement ce document: RHEL5 Guide. Je sais qu'il est très long mais il couvre énormément de choses et c'est un très bon point de départ pour partir du bon pied comme on dit. Je n'enterai pas dans tout les détails de cette configuration car elle beaucoup trop vaste pour un billet sur mon blog, en plus elle est très bien expliqué dans le RHEL5 Guide.

Les grosse étapes pour sécurier un serveur:

  • Déactivéer/déinstaller tout ce qu'on a pas besoin.
  • Sécuriser le file system:
 * Mettre des nodev, noexec, nosuid, nosgid
 * Faire un bind mount pour /var/tmp
  • Surveiller le filesystem pour tout changements.
* Vérifier de facon périodique.
* L'intégrité des fichiers.
* L'intégrité des packages.
* Les permissions sur certain fichiers critique.
* Les changements pour les fichiers suid/sgid.
* Trouver les fichier n'ayant pas de owner.
* Surveiller les dossier et fichier world writable.
  • Déactiver core dumps.
* Déactiver prelinking.
* Activer ShiledExec.
* Déactiver les filesystem qu'on utilise pas ex: clef-usb, floppy...
* Garder selinux enforcing,targetted mode.
* Effectuer divers modifications à Syslog afin que tout soit écrit à quelquepart.
* Utiliser Auditd.
  • rehausser la sécurité des login.
* Configurer une déconnection automatique.
* Remettre en fonction le fameux group Wheel.
* Définir une stratégie de mot de passe plus adécoite.
* Changer le hashage de mot de passe pour utiliser SHA512.
* Verrouiller les comptes après plusieur écheque de login.
* Verrouiller tout les comptes système et changer leur shell pour /sbin/nologin.
* Implementer du 2 factor authentication pour les comptes SSH
  • Réseau
* Ajouter quelques options sysctl.
* Batir un firewall solide.
* Sécuriser les divers services utilisé.
* Déactiver le support IPv6 étant donné que iWeb n'offre pas encore ce service. ( hint, hint! )

Une fois qu'on a passé à travers ceci, il est temps d'installer nos services voulu. Dans mon cas j'ai ajouté quelques repo, principalement pour avoir un php5.2 ou 5.3 (ius) et j'ai aussi installé celui de (epel) qui me permet d'installer des truc comme nginx, iotop, phpmyadmin, divers module perl sans avoir a compiler manuellement.

En utilisant ces repo extérieur il faut absoluement faire attention et s'assurer qu'on autorise seulement les packages voulu de ces repository avec la ligne 'includepkgs'

Une fois rendu ici, le fun commence. La guerre est officiellemnt déclaré entre moi et SeLinux car certain services sont plus compliqués à faire fonctionner ensemble mais rien de terrible quand on sait comment s'y prendre.