=============================================================================== Installation et securisation d'une station Debian 3.0 stable - v0.1.12 Simon Castro - 20/12/2003 http://www.entreelibre.com/scastro/debian-secinst/ =============================================================================== Copyright (c) 2003 Simon Castro, scastro [ at ] entreelibre.com. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. You must have received a copy of the license with this document and it should be present in the fdl.txt file. If you did not receive this file or if you don't think this fdl.txt license is correct, have a look on the official http://www.fsf.org/licenses/fdl.txt licence file. =============================================================================== Ce document presente l'installation et la securisation d'une station GNU Linux Debian 3.0 stable. Vous pouvez vous en servir comme aide-memoire, comme "guide" pour redaction d'une procedure, comme d'un exemple de que vous pourriez faire ou que vous ne feriez pas, etc... Tout ce qui est inscrit dans le document a ete teste. Je fais les manipulations et consigne les commandes dans le document quand le resultat me convient. Cependant, je vous rappelle que j'ai teste tout ceci sur mes stations et que, vous en ayant informe, je ne saurais etre tenu pour responsable de ce qui pourrait vous arriver si vous rencontriez des problemes. Ce document est decoupe en plusieurs parties. Les cinq premieres, numerotees de 1 a 5 et composees de plusieurs etapes, concernent l'installation et la securisation plus ou moins fine de la station : * La premiere partie commence au moment ou vous bootez sur le CD d'installation jusqu'au premier reboot. Rien de bien difficile. * La seconde partie commence apres le premier reboot jusqu'au moment ou le systeme vous propose le prompt. Toujours rien de bien complique. * La troisieme partie vous permet de proceder a la configuration initiale du systeme, a sa securisation minimale et a sa mise a jour. Vous obtenez en resultat une station stable avec le minimum de services actives et le firewall Ipchains active. * La quatrieme partie aborde une serie de procedures a suivre pour obtenir une securisation "moderee" de la station. Vous pouvez choisir d'ignorer des etapes. * La cinquieme partie presente diverses actions que vous pouvez suivre pour obtenir une securisation "approfondie" de la station. Libre a vous de vous y interesser ou non. Les parties finales du document numerotees de I a VII. presentent des aide-memoire ou des procedures a suivre pour ajouter des elements sur la station. Quand des ajouts d'elements sont presentes, ils ont toujours ete effectues sur une station installee suivant les etapes decrites dans les parties 1 a 5. Et pour finir, n'hesitez pas a me faire part de vos commentaires et/ou idees, surtout si : vous n'avez rien compris a ce que j'ai ecris :) ou si vous avez suivi une procedure qui n'a pas donne le resultat escompte. =============================================================================== CHANGEMENTS : ============= v0.1.12 (20/12/2003) : ---------------------- Modifications : # IV.b. Configuration initiale : Precision pour l'ajout du groupe webadm. # 4.4. Recherche et modifications de droits de fichiers : Note quand a la suppression des privileges. # 4.12. Preparation d'une restauration du systeme en cas d'incident : Note sur la compilation de gnu tar en statique. Ajouts : # III.c. SmartHost Exim # III.d. Client Samba # VIII. INSTALLATION D'UN DEMON NAGIOS # IX. GRAPHIQUES MRTG POUR LE SERVER-STATUS APACHE # ANNEXE 14 - Script d'initialisation Nagios v0.1.11 (02/11/2003) : ---------------------- Modifications : # V.c. Reccomandations: Reverse-Proxy Apache pour la console d'admin web WAS + localisation des donnees a editer pour modifier les ressources memoire. # 3.3. Fichiers de configuration de l'environnement administrateur: shortcuts pour bash dans le fichier .inputrc # 3.5. Securisation minimale (en mode super-utilisateur): Desactivation de lpr dans /etc/cron.weekly # ANNEXE 13 - ACLs GrSecurity pour Debian-secinst: Beaucoup de modifications et d'ajouts v0.1.10 (26/10/2003) : ---------------------- Ajouts : # 5.8. Securisation approfondie avec GrSecurity # ANNEXE 11 - Parametres de configuration d'un noyau GrSecurity # ANNEXE 12 - Configuration Sysctl de GrSecurity # ANNEXE 13 - ACLs GrSecurity pour Debian-secinst Modifications : # Quelques corrections v0.1.9 (01/06/2003) : --------------------- Ajouts : # REMERCIEMENTS : Ajout de remerciements avant les annexes. Modifications : # '1. INSTALLATION DU SYSTEME' : Une note sur le branchement reseau du systeme dans le cas d'une installation via un outil comme VmWare (tm). # '2.3. Creez un premier utilisateur' : Ajout d'une note sur l'utilisation de cet utilisateur. # '3.1 Logguez vous sous votre utilisateur puis en root' : precision. # '3.3. Fichiers de configuration de l'environnement administrateur' : Ajout une precision sur ce que sont les administrateurs. # '3.5. Securisation minimale (en mode super-utilisateur)' : Ajout d'une note sur les implications de modification de /etc/securetty. # '3.6. Recompilation du noyau pour le support firewall ipchains' : Ajout d' une note sur l'installation eventuelle d'autres sources de noyau 2.2.x. v0.1.8 (29/05/2003) : --------------------- Publication en ligne de la documentation. Ajouts : # WEBOGRAPHIE : Ajout d'une webographie avant les annexes. Modifications : # '5.7. Installation de Prelude-Lml pour une remontee de log securisee vers un serveur centralise' : Suppression de tout ce qui apparait deja dans la doc specifique Prelude. # 'ANNEXE 4 - Script d'arret/demarrage de prelude-lml' : Suppression du script desormais disponible dans la doc specifique Prelude. # 'ANNEXE 5 - Fichier de regles pour un support Ipchains avec Prelude-lml': Suppression du fichier de regle desormais disponible dans la doc Prelude. v0.1.7 (19/05/2003) : --------------------- Modifications : # '5.2. Installation du wrapper libsafe' : Quelques corrections. # '5.7. Installation de Prelude-Lml pour une remontee de log securisee vers un serveur centralise' : Corrections et utilisation des versions stables a la date de redaction. # 'V. INSTALLATION ET SECURISATION D'UN SERVEUR D'APPLICATION WEBSPHERE' : Indication sur l'installation reussie du wrapper libsafe apres installation de Websphere. v0.1.6 (13/05/2003) : --------------------- Modifications : # '4.12. Preparation d'une restauration du systeme en cas d'incident' : Ajout d'un fichier d'informations contenant les noms des archives a decompacter lors de la restauration => Il est ainsi par exemple possible de preciser de decompacter l'archive de /var avant celle de /usr. Ajout d'un binaire tar compile en statique. # 'ANNEXE 9 - Script de restauration' : Modification du script prenant en compte les modifications de '4.12.Preparation d'une restauration du systeme en cas d'incident'. # Formatage du document en 80 colonnes justifiees a l'exception des annexes. v0.1.5 (06/05/2003) : --------------------- Ajouts : # 4.12. Preparation d'une restauration du systeme en cas d'incident. # ANNEXE 9 - Script de restauration. # ANNEXE 10 - Exemple de script Fdisk. Modifications : # '4.11. Backup du systeme sur une partition specifique' : Modification des explications pour refleter le nouveau script. # 'III.a. J'ai oublie de preparer une partition ..': Ajout d'un appel a e2fsk pour verifier les partitions. # 'ANNEXE 8 - Script de backup' : Modification de la fonctionnalite de backup incremental. Par defaut, on fait un backup incremental de tous les changements survenus depuis la derniere sauvegarde 'full'. Vous pouvez egalement decommenter une ligne qui permet de faire un backup incremental jour apres jour des dernieres modifications effectuees apres le backup. Ajout du flag '-p'. Ajout d'un archivage cpio des repertoires exclus lors d'un backup full. v0.1.4 (23/04/2003) : --------------------- Ajouts : # 4.10. Systeme de fichiers ext3 avec un noyau 2.4 : de ext2 a ext3 # 4.11. Backup du systeme sur une partition specifique # IV.e. Sauvegarde du systeme # V.d. Empreinte du systeme # V.e. Sauvegarde du systeme # VII. INSTALLATION D'UN SERVEUR SAMBA POUR UNE GESTION DE BACKUP # ANNEXE 8 - Script de backup Modifications : # 'ANNEXE 1 ...' et 'ANNEXE 7 ...': Ajout de regles commentees pour autoriser certaines stations a nous envoyer certains types de requetes ICMP et pour autoriser les divers flux du protocole NetBios necessaires a l'integration de la fonctionnalite presentee dans 'VII. INSTALLATION D'UN SERVEUR SAMBA POUR UNE GESTION DE BACKUP'. # '3.5. Securisation minimale (en mode super-utilisateur)': Ajout d'un exemple de banniere de login. # '4.2. Securisation du systeme de fichiers' : Ajout de notes sur les options de montage relatives a la prevision d'installation d'un serveur Web et d'un serveur Was. # '5.3. Conserver une empreinte de verification d'integrite du systeme': Ajout de regles pour la verification d'empreintes. v0.1.3 (16/04/2003) : --------------------- Corrections : # '4.8. Installation et premiers pas avec Modular-Syslog' : Restauration d'un filtrage convenable vers fw_accept/fw_deny.log Modifications : # 'ANNEXE 1 - Parametrage du firewall Ipchains' : Maj de tous les scripts. # 'ANNEXE 7 - Parametrage du firewall NetFilter' : Maj de tous les scripts a l'image de ceux de l'ANNEXE 1. # 'ANNEXE 1 ...' et 'ANNEXE 7 ...' : Deplacement de la configuration /proc/sys/net vers un fichier disjoint. v0.1.2 (15/04/2003) : --------------------- Modifications : # Plusieurs corrections un peu partout. # Reecriture de '5.7. Installation de Prelude-Lml pour une remontee de log securisee vers un serveur centralise' Ajouts : # 1.5. 'Partitionnez le disque dur' : Notes sur le partitionnement relatif a l'installation d'un serveur Web et a l'installation d'un serveur IBM Websphere. # 3.6. 'Recompilation du noyau pour le support firewall ipchains' : Une note sur la faille ptrace. # IV. INSTALLATION ET SECURISATION D'UN SERVEUR APACHE MODSSL # V. INSTALLATION ET SECURISATION D'UN SERVEUR D'APPLICATION WEBSPHERE # VI. INTEGRATION DE NETFILTER / IPTABLES # ANNEXE 6 - Fichier de configuration Apache minimal # ANNEXE 7 - Parametrage du firewall NetFilter v0.1.1 (26/03/2003) : --------------------- Modifications : # 1.5. Partitionnez le disque dur : Changement des tailles prevues pour les partitions. # 4.3. Securisation des comptes : Ajout de la directive 'DEFAULT_HOME no' dans /etc/login.defs # 4.6. Synchronisation horaire avec un serveur NTP : Modification de l'appel crontab pour eviter de recevoir des mails lors des synchronisations periodiques. # 4.8. Installation et premiers pas avec Modular-Syslog: Ajout et modification des regles de filtrage des evenements securite. # ANNEXE 1 - Parametrage du firewall Ipchains : Corrections de regles pour le script de chargement des regles et Ajout de regles pour autoriser les communications avec un manager Prelude. # ANNEXE 2 - Generation automatisee de rapport systeme : Dans STRANGE_FILES, ajout du chemin vers 'find' et modification pour eviter d'envoyer les erreurs vers la sortie standard. Ajout : # 5.7. Installation de Prelude-Lml pour une remontee de log # ANNEXE 4 - Script d'arret/demarrage de prelude-lml # ANNEXE 5 - Fichier de regles pour un support Ipchains avec Prelude-lml v0.1.0 (21/03/2003) : Version initiale. --------------------- ================================================================================ A FAIRE : ========= # Gestions d'un restore disk (avec des scripts (?)) # 'Suppression' des binaires inutiles (gcc, gdb etc...) # Doc d'installation/configuration d'un client samba pour monter des fichiers vers win32. # Modification de la stack IP pour compliquer un OS fingerprinting. # Meme chose que precedemment pour les services actifs et accessibles a distance. # Serveur de packages # Monter la partition '/' en lecture seule ? # RAID ? A COMPLETER : ============= # 4.9. Verification des empreintes des packages a installer. # Reconfiguration des filtres PCRE pour Prelude avec le noyau 2.4 # Mettre en place une politique de limite au niveau du firewall NetFilter A PERFECTIONNER : ================= # Gestion des quotas sur toutes les partitions. # Gestion des delais de grace pour les quotas. # Gestion approfondie de la securite PAM (cracklib, etc...). # Chroot Websphere ? # 4.12. Preparation d'une restauration du systeme en cas d'incident # 5.8. Securisation approfondie avec GrSecurity # IX. GRAPHIQUES MRTG POUR LE SERVER-STATUS APACHE : Lancer les scripts sous une autre identite que celle du super-utilisateur. A PERFECTIONNER SI QUELQU'UN ME DONNE DES IDEES : ================================================= # Verifications periodiques et rapports # Amelioration de /etc/syslog.conf # Amelioration de l'installation prelude-lml ================================================================================ SOMMAIRE ======== 1. INSTALLATION DU SYSTEME 1.1. Booter sur le CD 1.2. Menu d'installation 1.3. Choisir la langue 'Francais (fr)' puis 'Francais (France)' 1.4. Configurer le clavier avec le mode 'azerty/fr latin1' 1.5. 'Partitionnez le disque dur' 1.6. 'Initialisez une partition d'echange' 1.7. 'Initialisez les partitions Linux' crees en 1.5. 1.8. 'Installez le noyau et les modules' 1.9. 'Configurez les modules et pilotes materiel' 1.10. 'Configurez le reseau' 1.11. 'Installez le systeme de base' 1.12. 'Rendez le systeme amorcable' 1.13. 'Creez une disquette d'amorcage' 1.14. Retirez la disquette et le CDROM et 'reamorcez le systeme' 2. CONFIGURATION INITIALE DU SYSTEME 2.1. GMT : Oui 2.2. Mots de passe 2.3. Creez un premier utilisateur 2.4. 'Retirer le package PCMCIA' => Oui, si vous ne l'avez pas deja supprime 2.5. 'Connexion PPP pour installer le systeme' => Non 2.6. 'Configuration APT' 2.7. 'Utiliser TaskSel' => Non 2.8. 'Utiliser Dselect' => Non 2.9. Si vous avez supprime le package PCMCIA en 2.4., repondez 'Oui' quand on vous demande de le retirer du systeme 2.10. 'Supprimer les .deb' => Oui 2.11. 'Configuration des Mails' 3. PREMIER ACCES AU SYSTEME ET SECURISATION MINIMALE 3.1 Logguez vous sous votre utilisateur puis en root 3.2. Lancez Dselect 3.3. Fichiers de configuration de l'environnement administrateur 3.4. Fichiers de configuration de l'environnement super-utilisateur 3.5. Securisation minimale (en mode super-utilisateur) 3.6. Recompilation du noyau pour le support firewall ipchains 3.7. Configuration du firewall Ipchains 3.8. Mise a jour securite du systeme (super-utilisateur) 4. SECURISATION MODEREE 4.1. Notes sur le boot du systeme et sur le noyau 4.2. Securisation du systeme de fichiers 4.3. Securisation des comptes 4.4. Recherche et modifications de droits de fichiers 4.5. Les administrateurs n'ont pas besoin de passer root 4.6. Synchronisation horaire avec un serveur NTP 4.7. Generation automatisee d'un rapport systeme 4.8. Installation et premiers pas avec Modular-Syslog 4.9. Verification des empreintes des packages a installer 4.10. Systeme de fichiers ext3 avec un noyau 2.4 : de ext2 a ext3 4.11. Backup du systeme sur une partition specifique 4.12. Preparation d'une restauration du systeme en cas d'incident 5. SECURISATION APPROFONDIE 5.1. Installation du patch OpenWall 5.2. Installation du wrapper libsafe 5.3. Conserver une empreinte de verification d'integrite du systeme 5.4. Gestion des quotas 5.5. Securisation PAM : Gestion des limites 5.6. Disquette de secours avec Tomsrtbt 5.7. Installation de Prelude-Lml pour une remontee de log securisee vers un serveur centralise 5.8. Securisation approfondie avec GrSecurity I. INFORMATIONS SUR LA GESTION DE PACKAGES DEBIAN I.a. Creation d'un package Debian II. COMPILATION DU NOYAU II.a. Compilation d'un noyau personnalise II.b. Installation du noyau III. ADMINISTRATION : QUELQUES CONSEILS III.a. J'ai oublie de preparer une partition ... III.b. Dselect ne parvient pas a configurer les packages a cause des permissions de /tmp III.c. SmartHost Exim III.d. Client Samba IV. INSTALLATION ET SECURISATION D'UN SERVEUR APACHE MODSSL IV.a. Installation IV.b. Configuration initiale IV.c. Integration des quotas IV.d. Empreinte du systeme IV.e. Sauvegarde du systeme V. INSTALLATION ET SECURISATION D'UN SERVEUR D'APPLICATION WEBSPHERE V.a. Installation V.b. Configuration initiale : Restauration du 'read-only' sur /usr, deplacement vers /var/was, attribution de permissions restreintes et execution du service WAS sous une identite restreinte V.c. Reccomandations V.d. Empreinte du systeme V.e. Sauvegarde du systeme VI. INTEGRATION DE NETFILTER / IPTABLES VI.a. Compilation du noyau VI.b. Scripts d'initialisation VII. INSTALLATION D'UN SERVEUR SAMBA POUR UNE GESTION DE BACKUP VII.a. Installation VII.b. Configuration VIII. INSTALLATION D'UN DEMON NAGIOS VIII.a Archives VIII.b Creation des groupes/utilisateurs VIII.c Compilation/Installation de Nagios VIII.d Deplacement des repertoires et attribution de permissions specifiques VIII.e Configuration d'Apache VIII.f Configuration des autorisations d'acces VIII.g Script d'initialisation et administrateurs Nagios VIII.h Et pour finir IX. GRAPHIQUES MRTG POUR LE SERVER-STATUS APACHE IX.a Archives IX.b Configuration WEBOGRAPHIE REMERCIEMENTS ANNEXE 1 - Parametrage du firewall Ipchains ANNEXE 2 - Generation automatisee de rapport systeme ANNEXE 3 - syslogd-listfiles.msyslog.patch ANNEXE 4 - Script d'arret/demarrage de prelude-lml ANNEXE 5 - Fichier de regles pour un support Ipchains avec Prelude-lml ANNEXE 6 - Fichier de configuration Apache minimal ANNEXE 7 - Parametrage du firewall NetFilter ANNEXE 8 - Script de backup ANNEXE 9 - Script de restauration ANNEXE 10 - Exemple de script Fdisk ANNEXE 11 - Parametres de configuration d'un noyau GrSecurity ANNEXE 12 - Configuration Sysctl de GrSecurity ANNEXE 13 - ACLs GrSecurity pour Debian-secinst ANNEXE 14 - Script d'initialisation Nagios ================================================================================ 1. INSTALLATION DU SYSTEME ========================== NDR : * Si le systeme est 'critique' ou l'environnement 'dangereux' et que l'adressage est statique, ne branchez pas la station sur le reseau. * Si l'adressage est dynamique 'DHCP' et que vous etes dans le cas precedent, branchez la station pour l'etape 1.10. uniquement. * Si vous effectuez une installation par VmWare (tm) (ou tout autre outil du meme genre, je suppose que vous devez avoir confiance dans votre systeme hote. Faites cependant attention a ce que votre systeme cible ne soit pas up sur le reseau avant d'etre securise un minimum ? 1.1. Booter sur le CD. 1.2. Menu d'installation : Si le disque dur ou des peripheriques sont SCSI => entrer compact puis 'enter' Sinon, => entrer 'enter' 1.3. Choisir la langue 'Francais (fr)' puis 'Francais (France)'. 1.4. Configurer le clavier avec le mode 'azerty/fr latin1'. 1.5. 'Partitionnez le disque dur' * Effacez toutes les partitions presentes. * Creez les partitions suivantes : => Les lignes suivantes sont baties sur le modele primaire/logique - nom de la partition - taille (Mo) - montage Partitionnement du disque : Primaire - /sda1 - 100 - / Primaire - /sda2 - 300 - Swap (pas de point de montage) Primaire - /sda3 - 20 - /boot Logique - /sda5 - 50 - /root Logique - /sda6 - 120 - /var Logique - /sda7 - 50 - /var/log Logique - /sda8 - 200 - /tmp Logique - /sda9 - 2000 - /usr Logique - /sda10 - 500 - /home Logique - /sda11 - ? - /local -> La premiere partition doit etre marquee comme bootable. -> Toutes les partitions doivent etre de type 'Linux' sauf la deuxieme partition qui doit etre de type 'Linux Swap'. -> La derniere partition est d'une taille relative a l'espace disque restant apres creation des partitions principales. Note sur le partitionnement relatif a l'installation d'un serveur Web : [...] Logique - /sda10 - 500 - /home Logique - /sda11 - 300 - /var/www Logique - /sda12 - ? - /local -> La taille 300M est arbitraire, prevoyez une allocation relative a VOTRE installation. N'oubliez pas de consulter 'IV. INSTALLATION ET SECURISATION D'UN SERVEUR APACHE MODSSL' Note sur le partitionnement relatif a l'installation d'un serveur IBM Websphere : [...] Logique - /sda10 - 500 - /home Logique - /sda11 - 300 - /var/www Logique - /sda12 - 200 - /var/was Logique - /sda13 - ? - /local -> La taille 200M est arbitraire, prevoyez une allocation relative a VOTRE installation. N'oubliez pas de consulter 'V. INSTALLATION ET SECURISATION D'UN SERVEUR D'APPLICATION WEBSPHERE' Note sur le partitionnement relatif a la creation d'une partition de backup : [...] Logique - /sda10 - 500 - /home Logique - /sda11 - 300 - /var/www Logique - /sda12 - 200 - /var/was Logique - /sda13 - 1000 - /backup Logique - /sda14 - ? - /local -> La taille 1000M est arbitraire, prevoyez une allocation relative a VOTRE installation. Personnellement, 500 Mo pour une sauvegarde full mensuelle + les sauvegardes incrementales journalieres me conviennent en faisant du menage tous les mois, mais je prefere voir large. N'oubliez pas de consulter 'VII. INSTALLATION D'UN SERVEUR SAMBA POUR UNE GESTION DE BACKUP' => Terminer en ecrivant les partitions sur le disque 'Write' puis en sortant du menu 'Quit'. 1.6. 'Initialisez une partition d'echange' => Pour se faire, acceptez de l'initialiser sur /dev/sda2 et recherchez les blocs defectueux. 1.7. 'Initialisez les partitions Linux' crees en 1.5. => 'Suivant' pour la premiere, 'Autre choix' pour les suivantes. => Recherchez les blocs defectueux pour chacune des partitions => Entrez les points de montage precises dans 1.5. 1.8. 'Installez le noyau et les modules' => 'CDROM Debian trouve ?', repondez 'Oui'. 1.9. 'Configurez les modules et pilotes materiel' => Choisissez des pilotes a ajouter au systeme. => NDR : pour Compaq, le pilote reseau peut etre 'net' -> 'tlan' et vous pouvez l'ajouter dans le noyau. 1.10. 'Configurez le reseau' => Choisissez DHCP ou Adressage statique. 1.11. 'Installez le systeme de base' => Utilisez le 'media' : 'CDROM'. => Utilisez le 'repertoire pour systeme de base' : 'instmnt'. 1.12. 'Rendez le systeme amorcable' => Installez dans le mbr. 1.13. 'Creez une disquette d'amorcage' => Ceci est optionnel. 1.14. Retirez la disquette et le CDROM et 'reamorcez le systeme'. ================================================================================ 2. CONFIGURATION INITIALE DU SYSTEME ==================================== NDR : Cette partie est relative a la configuration suivant le reboot de 1. 2.1. GMT : Oui. => Choisir 'Europe' puis 'Paris'. 2.2. Mots de passe : => 'Activation mots de passe MD5' : Oui => 'Activation mode shadow' : Oui => Entrez le mot de passe pour root 2.3. Creez un premier utilisateur. => Cet utilisateur sera par la suite utilise comme administrateur du systeme. 2.4. 'Retirer le package PCMCIA' => Oui, si vous ne l'avez pas deja supprime. 2.5. 'Connexion PPP pour installer le systeme' => Non 2.6. 'Configuration APT' => 'Cdrom' => Entrez le premier CD d'installation et validez '/dev/cdrom' => 'Scan another CD' : Oui pour tous les CD du set que vous possedez. => 'Ajouter une autre source APT' : Non => 'Use security update' : Non 2.7. 'Utiliser TaskSel' => Non 2.8. 'Utiliser Dselect' => Non 2.9. Si vous avez supprime le package PCMCIA en 2.4., repondez 'Oui' quand on vous demande de le retirer du systeme. 2.10. 'Supprimer les .deb' => Oui 2.11. 'Configuration des Mails' => '4. Local delivery only' => Entrez le nom de l'administrateur configure en 2.3. et confirmez. Le systeme doit maintenant vous donner un prompt. ================================================================================ 3. PREMIER ACCES AU SYSTEME ET SECURISATION MINIMALE ==================================================== Vous venez de finir la configuration initiale du systeme et votre station n'est normalement pas encore connectee au reseau. 3.1 Logguez vous sous votre utilisateur puis en root. => i.e. : connectez vous avec votre utilisateur en mode console, puis entrez la commande 'su -' pour obtenir l'identite super-utilisateur. 3.2. Lancez Dselect * 'Update' * 'Select' et selectionnez les packages que vous desirez a partir du CDROM (vim, gpm, emacs, etc...) * 'Install' NDR : Meme si vous ne selectionnez rien, passez quand meme par les etapes 'Update' et 'Install'. NDR : Il est conseille de ne pas faire plusieurs choses a la fois : Installation minimale, puis installation des packages absolument necessaires, puis installation du serveur X par exemple. NDR : Il FORTEMMENT conseille de n'installer que le STRICT necessaire. Finissez en lancant les commandes updatedb et mandb Man : dselect, apt, updatedb et mandb. Securisez un minimum le systeme : 3.3. Fichiers de configuration de l'environnement administrateur. NDR : J'appelle environnement administrateur, l'environnement des utilisateurs qui auront la possibilite d'administrer la station. Ajoutez un fichier ~/.bash_logout contenant : case "`tty`" in /dev/tty[0-9]) clear esac Ajoutez un fichier ~/.bash_profile contenant : umask 027 if [ -f ~/.bashrc ]; then source ~/.bashrc fi Modifiez le fichier ~/.bashrc pour y faire figurer : export TMOUT=300 alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias ll='ls -l' alias la='ll -A' alias l='ll -CF' alias do_term='eval `tset -s -Q vt100`' alias show_process='ps ax -o user,pid,command' # Decommentez ici si vous souhaitez ce type de prompt # export PS1='\e[1;34m\u\e[0m@\h:[\e[1;31m\t\e[0m]:\e[1;32m\w\e[0m\$ ' Ajoutez un fichier ~/.inputrc contenant : set bell-style none "\C-a": beginning-of-line "\C-e": end-of-line "\C-b": backward-word "\C-f": forward-word "\C-k": kill-line "\C-j": backward-kill-line "\C-x": kill-word "\C-w": backward-kill-word "\C-r": reverse-search-history "\C-t": forward-search-history "\C-space": set-mark "\C-h": kill-region "\C-y": yank "\C-u": undo source ~/.bashrc => pour utiliser les parametres du fichier modifie. chmod 750 /home/username => gestion de droits. chmod 640 ~/.bash* => gestion de droits. chmod 640 ~/.inputrc Man : bash, chmod, chown 3.4. Fichiers de configuration de l'environnement super-utilisateur. Logguez vous en root et mettez en place les fichiers de configuration suivants : ~/.bashrc umask 027 export TMOUT=300 export PS1='!!!ROOT!!!@\h:\w\$ ' export HISTFILE=/dev/null alias l='ls' alias ll='l -l' alias la='ll -a' alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias userdel='echo "Why not deluser ?"' alias useradd='echo "Why not adduser ?"' ~/.bash_logout case "`tty`" in /dev/tty[0-9]) clear esac Ajoutez un fichier ~/.inputrc contenant : set bell-style none chmod 750 /root chmod 640 ~/.bash* ~/.profile chmod 640 ~/.inputrc Man : bash, chmod, chown 3.5. Securisation minimale (en mode super-utilisateur) Man : init, update-rc.d Inetd : Commentez l'integralite du fichier /etc/inetd.conf. /etc/init.d/inetd stop => Arret du service update-rc.d -f inetd remove => Suppression des services demarres au boot. Man : inetd, inetd.conf Dans /etc/rc2.d, supprimez tous les services non obligatoires : lpd, nfs-common, portmap Sshd : Dans /etc/ssh/sshd_config : PermitRootLogin no RSAAuthentication no PubkeyAuthentication no Banner /etc/issue.net ChallengeResponseAuthentication no ClientAliveInterval 20 ClientAliveCountMax 3 GatewayPorts no LoginGraceTime 60 Dans /etc/ssh/ssh_config : ForwardAgent no ForwardX11 no RhostsAuthentication no StrictHostKeyChecking ask Finissez par /etc/init.d/ssh restart NDR : Et notez le fingerprint SSH. Man : sshd, sshd_config Banniere de login : Dans /etc/issue.net et /etc/issue, entrez une banniere legale presentant les restrictions d'acces au systeme. Vous pouvez par exemple utiliser un message du type : ********************************************************** *** Serveur {HOSTNAME} *** *** (@IP) *** ********************************************************** *** *** *** Consultez les articles 323.1 a 323.3 du Nouveau *** *** Code Penal relatifs aux autorisations d'acces a ce *** *** systeme. *** ********************************************************** *** Toutes les connexions et acces a ce systeme font *** *** l'objet d'un enregistrement. *** ********************************************************** Dans /etc/securetty, commentez toutes les lignes commencant par tty. NDR : L'action precedente supprimera toute possibilite de vous connecter avec l'utilisateur 'root' en mode console. Vous devrez desormais vous connecter avec un utilisateur puis entrer la commande 'su'. Man : login, issue, securetty Modifiez /etc/lilo.conf de facon a obtenir ces lignes : password=motdepasse delay=100 default=Linux image=/vmlinuz label=Linux read-only restricted Puis : lilo chmod 640 /etc/lilo.conf Man : lilo, lilo.conf Syslogd : cp /etc/syslog.conf /etc/syslog.conf.orig chmod 640 /etc/syslog.conf Editez /etc/syslog.conf pour supprimer les lignes : # Logging for INN news system # news.crit /var/log/news/news.crit news.err /var/log/news/news.err news.notice -/var/log/news/news.notice daemon.*;mail.*;\ news.crit;news.err;news.notice;\ *.=debug;*.=info;\ *.=notice;*.=warn |/dev/xconsole lpr.* -/var/log/lpr.log uucp.* /var/log/uucp.log # # Logging for the mail system. Split it up so that # it is easy to write scripts to parse these files. # mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err Supprimez tous les '-' devant les noms de fichiers. Supprimez tous les commentaires restant apres *.emerg. Decommentez la ligne cron.* /var/log/cron.log Redemarrez le demon syslogd : /etc/init.d/sysklogd restart Effacez les fichiers de log superflus : cd /var/log && rm -rf mail.err mail.info mail.warn lp* news/ uucp.log Man : syslogd, syslog.conf Dans le repertoire '/etc/cron.weekly', commentez toutes les lignes du fichier 'lpr'. 3.6. Recompilation du noyau pour le support firewall ipchains NDR : Le noyau que nous configurons ici ne doit pas etre considere comme le noyau final. Une documentation abondante est presente sur Internet de meme que dans le repertoire Documentation figurant dans les sources du noyau. NOTE : Si vous utilisez le package de la version 2.2.20 comme presentee dans cette documentation, prenez garde a ne pas activer la fonctionnalite 'kernel loader' pour eviter la faille 'ptrace' ou pensez a patcher, securiser votre systeme. Lancez dselect et ajoutez le package relatif aux sources du noyau que vous desirez installer. L'installation suivante, relative au noyau 2.2.20 devrait cependant etre identique quelque soit le noyau 2.2.x dont vous installez les sources. cd /usr/src tar xjvf kernel-source-2.2.20.tar.bz2 mv kernel-source-2.2.20 kernel-source-2.2.20-fw ln -s kernel-source-2.2.20-fw linux && cd linux Au cas ou vous ne suivriez pas cette doc... : make clean && make mrproper Configurez le noyau : sed 's/^EXTRAVERSION\ =$/EXTRAVERSION\ =\ -fw/' Makefile > .fw cat .fw > Makefile && rm -f .fw make menuconfig Ajoutez les options suivantes au noyau installe : 'Networking Options -> Network firewalls' 'Networking Options -> Ip : Firewalling (NEW)' Dans 'Network Device Support', verifiez que votre pilote de carte reseau est selectionne. Quittez et sauvez la configuration Compilez le noyau : make dep && make modules && make bzImage Installez le nouveau noyau : cp arch/i386/boot/bzImage /boot/vmlinuz-2.2.20-fw cp System.map /boot/System.map-2.2.20-fw cd /boot/ ln -s vmlinuz-2.2.20-fw linux ln -s vmlinuz-2.2.20-compact linux_fst Installez les modules : cd /usr/src/linux && make modules_install Editer le fichier /etc/lilo.conf pour obtenir : default=linux22 image=/boot/linux label=linux22 read-only restricted image=/boot/linux_fst label=backup22 read-only Lancez la commande 'lilo' pour mettre ajour le systeme. Rebootez le systeme. Si tout c'est bien passe, sauvegardez la configuration : cp /usr/src/linux/.config /boot/config-2.2.20-fw 3.7. Configuration du firewall Ipchains Man : ipchains, sysctl, sysctl.conf Creez le repertoire pour le stockage des scripts du firewall : mkdir -p /home/system/scripts/fw chown -R root:adm /home/system chmod 4750 /home/system Creez les scripts d'activation/desactivation du firewall (voir ANNEXE 1 - Parametrage du firewall Ipchains) : /home/system/scripts/fw/rules_down_ipchains.sh /home/system/scripts/fw/rules_up_ipchains.sh Mettez les droits en place : 'chmod 750 /home/system/scripts/fw/*' Creez le script /etc/init.d/init_ipchains.sh (voir ANNEXE 1 - Parametrage du firewall Ipchains). Donnez les droits au script : 'chmod 750 /etc/init.d/init_ipchains.sh' Ajoutez le script pour le demarrage du system : update-rc.d init_ipchains.sh defaults Activez le firewall : /etc/init.d/init_ipchains.sh start 3.8. Mise a jour securite du systeme (super-utilisateur). Vous pouvez maintenant brancher la machine sur le reseau. Ajoutez le fichier /etc/apt/apt.conf contenant : DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt || true";}; Acquire::http::Proxy "http://@IP_PROXY:8080/"; Commentez toutes les lignes dans /etc/apt/sources.list Ajoutez dans /etc/apt/sources.list : deb http://http.us.debian.org/debian stable main contrib non-free deb http://non-us.debian.org/debian-non-US stable/non-US main non-free deb http://security.debian.org stable/updates main contrib non-free apt-get update apt-get dist-upgrade ================================================================================ 4. SECURISATION MODEREE ======================= 4.1. Notes sur le boot du systeme et sur le noyau ------------------------------------------------- NDR : Il est futile d'indiquer qu'un individu avec un acces physique au serveur implique que le serveur est compromis. Un seul noyau doit etre chargeable lors de l'invite par defaut. Tout passage de parametre au noyau lors du boot doit etre interdit. Le chargement dynamique de modules devrait etre interdit. => Dans le cas ou cela est impossible, appliquez un patch permettant de bloquer le chargement des modules apres le boot. Il peut egalement etre interessant de modifier la sequence d'amorcage du BIOS de facon a debuter par le chargement du MBR du disque dur. 4.2. Securisation du systeme de fichiers ---------------------------------------- ATTENTION - ATTENTION - ATTENTION : Pour ces modifications, je vous reccomande d'avoir un disque bootable (le CD d'installation Debian fait bien sur l'affaire) avec un systeme de fichier root sous la main - Systeme de fichier contenant les binaires appropries bien entendu. NDR : Apres ces modifications, n'oubliez pas que certaines partitions sont montees en lecture seule. Vous pouvez remonter une partition en lecture/ ecriture avec (par exemple) : mount -o remount,rw /local Editez le fichier /etc/fstab de facon a monter les partitions presentees en 1.5 selon le principe suivante : /dev/sda1 / ext2 errors=remount-ro 0 1 /dev/sda2 none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto noauto,nosuid,nodev 0 0 /dev/cdrom /cdrom iso9660 ro,noauto,nosuid,nodev 0 0 /dev/sda3 /boot ext2 ro,noexec,nosuid,nodev 0 2 /dev/sda5 /root ext2 defaults 0 2 /dev/sda6 /var ext2 nodev 0 2 /dev/sda7 /var/log ext2 noexec,nosuid,nodev,sync 0 2 /dev/sda8 /tmp ext2 noexec,nosuid,nodev 0 2 /dev/sda9 /usr ext2 ro,nodev 0 2 /dev/sda10 /home ext2 nodev 0 2 /dev/sda11 /local ext2 ro,noexec,nosuid,nodev 0 2 Si vous avez procede a la preparation d'une partition pour un serveur web : /dev/sda11 /var/www ext2 rw,nosuid,nodev 0 2 /dev/sda12 /local ext2 ro,noexec,nosuid,nodev 0 2 Si vous avez procede a la preparation d'une partition pour un serveur was : /dev/sda11 /var/www ext2 rw,nosuid,nodev 0 2 /dev/sda12 /var/was ext2 rw,noexec,nosuid,nodev 0 2 /dev/sda13 /local ext2 ro,noexec,nosuid,nodev 0 2 Pour prendre en compte ces modifications, rebootez le systeme ou remontez les partitions. Man : fstab, mount. 4.3. Securisation des comptes ----------------------------- Durcissement de la politique de mots de passe : Modifiez le fichier /etc/login.defs de la facon suivante : LOG_OK_LOGINS yes SULOG_FILE /var/log/sulog ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin UMASK 027 PASS_MAX_DAYS 30 DEFAULT_HOME no MAN : login.defs Suppression des utilisateurs et groupes inutiles : unalias userdel for i in `echo games sync sys irc` ; do (echo -n "Removing user $i : " && \ userdel $i 2> /dev/null && echo "done.") || echo "failed."; done for i in `echo irc dialout fax voice audio dip video` ; do (echo -n \ "Removing group $i : " && groupdel $i 2> /dev/null && echo "done.") || \ echo "failed."; done source ~/.bashrc Desactivation des comptes inutiles : for i in `echo lp list uucp news proxy postgres www-data nobody` ; do (echo\ -n "Falsing $i : " && chsh -s /bin/false $i && echo "done.") || echo\ "failed."; done MAN : userdel, chsh, false Reappropriation des fichiers non affectes (N'oubliez pas les permissions du systeme de fichier /usr !) : for i in `find / -nouser -o -nogroup` ; do echo "Giving $i to root" && \ chown root:root $i && chmod 600 $i; done Deconnexion des comptes en inactivite : Ajoutez/Modifiez les lignes suivantes dans le fichier /etc/profile : export TMOUT=300 umask 027 Aggregation des comptes dans des groupes : Tous les comptes utilisateurs doivent faire partie de groupes appropries. Nous nous basons dans ce documents sur deux groupes existant, mais cette declinaison est arbitraire. Le groupe adm est reserve aux administateurs (voir 4.5. Les administrateurs n'ont pas besoin de passer root). Le groupe users est reserve aux utilisateurs non administrateurs. Modifiez /etc/adduser.conf pour faire figurer : USERGROUPS=no DIR_MODE=0700 Modification des squelettes de creation de compte : /etc/skel/.bash_profile : umask 027 if [ -f ~/.bashrc ]; then source ~/.bashrc fi if [ -f ~/.alias ]; then source ~/.alias fi /etc/skel/.alias : alias ls='ls --color=auto' alias md='mkdir' alias rd='rmdir' alias l='ls' alias ll='l -l' alias la='ll -a' alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' Ajoutez les fichiers suivants : /etc/skel/.bash_logout : case "`tty`" in /dev/tty[0-9]) clear esac /etc/skel/.inputrc : set bell-style none Donnez les droits : 'chmod 640 /etc/skel/.bash_logout /etc/skel/.inputrc' Mettez en place la methode de suppression de comptes : Modifiez /etc/deluser.conf pour faire figurer : REMOVE_HOME = 1 BACKUP = 1 Creez le repertoire de backup des comptes supprimes : mkdir /home/system/deleted_accounts chown root:adm /home/system/deleted_accounts chmod 1750 /home/system/deleted_accounts Creez le fichier suivant : mount -o remount,rw /usr /usr/local/sbin/deluser.local : #!/bin/sh if [ -d /home/system/deleted_accounts ] && [ $1 ] then echo " deluser.local :" echo " Moving $1.tar.bz2 to /home/system/deleted_accounts..." if [ $PWD ] && [ $PWD != "/home/system/deleted_accounts" ] && \ [ -f $1.tar.bz2 ] then mv $1.tar.bz2 /home/system/deleted_accounts/$1.tar.bz2 fi if [ -f /home/system/deleted_accounts/$1.tar.bz2 ] then echo " Giving admins permissions to /home/system/deleted_\ accounts/$1.tar.bz2" chown root:adm /home/system/deleted_accounts/$1.tar.bz2 else echo " Error : $1.tar.bz2 is no regular file !?!?!" fi else echo "deluser.local error:" if [ $1 ] then echo "No backup directory to store $1.tar.bz2." else echo "Error in arguments !?!?!" fi fi Puis : chmod 700 /usr/local/sbin/deluser.local mount -o remount,ro /usr 4.4. Recherche et modifications de droits de fichiers ----------------------------------------------------- Recherche de tous les fichiers sgid et suid : cd /root/tmp find / -type f \( -perm -004000 -o -perm -002000 \) -exec ls -la {} \; 2> \ /dev/null > sguid_original_list.txt Suppression du flag suid/sgid quand cela n'est pas indispensable : mount -o remount,rw /usr/ for i in `echo /bin/ping /bin/mount /bin/umount /usr/bin/at /usr/bin/newgrp\ /usr/bin/chfn /usr/bin/chsh /usr/bin/gpg /usr/bin/lpq /usr/bin/lpr\ /usr/bin/lprm /usr/bin/mtr`; do echo "Removing sguid bit from $i." &&\ chmod -s $i ; done mount -o remount,ro /usr/ Note : Attention a ces suppressions de privileges si vos demons en ont besoin. Restreignez l'usage de l'utilitaire cron en creant un fichier /etc/cron.allow: touch /etc/cron.allow chmod 640 /etc/cron.allow => Pour qu'un utilisateur soit autorise a utiliser l'utilitaire cron et ses derives, vous devrez l'enregitrer dans ce fichier. MAN : cron, crontab 4.5. Les administrateurs n'ont pas besoin de passer root -------------------------------------------------------- Installation de sudo : mount -o remount,rw /usr/ dselect => Installez le package sudo mount -o remount,ro /usr/ Ajoutez les utilisateurs ADMINISTRATEURS requis {UserName} dans le groupe adm: usermod -g {UserName} -G adm,users {UserName} Configuration de sudo : Lancez visudo et editez le fichier de facon a ajouter (raccourcis vi) : # Cmnd alias specification Cmnd_Alias REBOOT=/sbin/reboot %adm ALL=NOPASSWD:REBOOT MAN : usermod, sudoers visudo, sudo 4.6. Synchronisation horaire avec un serveur NTP ------------------------------------------------ Installez les packages requis. mount -o remount,rw /usr dselect et installation des packages ntp, ntpdate, ntp-simple et ntp-doc : * Ne pas specifier de serveur NTP * Overwrite ntp.conf : Yes. mount -o remount,ro /usr Configurez le client ntp et le nouveau flux au niveau du firewall : Ajoutez l'adresse IP de votre serveur NTP dans /etc/default/ntp-servers Ajoutez l'adresse IP de votre serveur dans le fichier de configuration du firewall. /etc/init.d/init_ipchains.sh restart Stoppez le demon NTP et executez la synchronisation /etc/init.d/ntp stop update-rc.d -f ntp remove /etc/init.d/ntpdate start Ajoutez un appel au client ntp toutes les 6 heures dans /etc/crontab : # Met a jour la date et l'heure du systeme grace au serveur NTP 0 */6 * * * root /etc/init.d/ntpdate start > /dev/null MAN : ntpdate 4.7. Generation automatisee d'un rapport systeme ------------------------------------------------ Le script present en annexe 'ANNEXE 2 - Generation automatisee de rapport systeme' peut etre execute par la crontab a intervalles periodique. Il genere un rapport systeme succinct qui peut etre envoye par mail aux administrateurs ou stocke dans un repertoire. NDR : Attention a respecter l'indentation ! NDR : Je vous conseille de verifier le script de facon a ce qu'il n'execute que les commandes que vous desirez. Ainsi, le script recupere par exemple les fichiers de logs presentes en '4.8. Installation et premiers pas avec Modular-Syslog'. Installation du script (nous utilisons le script present en annexe qui envoie le rapport par mail) : mkdir /home/system/scripts/reports/ chmod 750 /home/system/scripts/reports/system_report.sh Configuration de /etc/crontab pour lancer le script tous les jours a 09H00 AM: # Genere le rapport system 0 9 * * * root /home/system/scripts/reports/system_report.sh chmod 640 /etc/crontab 4.8. Installation et premiers pas avec Modular-Syslog ----------------------------------------------------- Modular-Syslog est disponible a : http://sourceforge.net/projects/msyslog/ Compilation : cd /home/system/applis /usr/bin/md5sum /home/system/download/msyslog-v1_08e-src_tar.gz c3700571c675d8896c643c276f5e2dad /home/system/download/msyslog-v1_08e\ -src_tar.gz tar zxvf /home/system/download/msyslog-v1_08e-src_tar.gz find ./msyslog-v1.08e/ -type f \( -perm -004000 -o -perm -002000 \) -exec \ ls -la {} \; chown -R root:root msyslog-v1.08e/ cd msyslog-v1.08e/ ./configure make NDR : Vous pouvez tres bien decider, si vous en comprennez l'interet de modifier le chemin du fichier de configuration par defaut avant de compiler le demon modular-syslog. Installation : mount -o remount,rw /usr/ make install On sauvegarde l'ancien syslogd et son fichier de configuration : cp /etc/syslog.conf /etc/syslog.conf.orig2 cp /sbin/syslogd /sbin/syslogd.orig On remplace l'ancien syslogd par le notre : mv /usr/local/sbin/syslogd /sbin/syslogd chown root:root /sbin/syslogd && chmod 755 /sbin/syslogd mount -o remount,ro /usr/ On modifie le script d'initialisation du demon /etc/init.d/sysklogd : SYSLOGD="-i linux -i unix" On stoppe le demon klogd dont nous nous passerons desormais : /etc/init.d/klogd stop On le supprime des runlevels correspondants : update-rc.d -f klogd remove On redemmare le nouveau demon syslogd : /etc/init.d/sysklogd start Correction du script syslogd-listfiles : Ce script permet de lister les fichiers de logs pour permettre leur rotation. Il se sert pour cela du fichier de configuration /etc/syslog.conf. Or, ce fichier de configuration peut desormais contenir des lignes au format modular-syslog, ce qui empeche une rotation correcte. Le patch est disponible en 'ANNEXE 3 - syslogd-listfiles.msyslog.patch' mount -o remount,rw /usr/ cp /usr/sbin/syslogd-listfiles /usr/sbin/syslogd-listfiles.orig cd /usr/sbin patch -l -p0 < /root/tmp/syslogd-listfiles.msyslog.patch mount -o remount,ro /usr/ MAN : syslogd, syslog.conf, im_* , om_* , syslogd-listfiles Premiers pas avec Modular-Syslog : NDR : Si vous ajoutez des fichiers de log dans la configuration, prenez garde a faire un touch du fichier destination dans le repertoire concerne. Nous ajoutons deux regles qui permettent de filtrer les messages envoyes par le firewall ipchains a /etc/syslog.conf ainsi que deux regles permettant : l'enregistrement des evenements lies aux demande de connexion et les evenements libsafe. # # Filtres Modular-Syslog # # Filtres sur les evenements du firewall kern.* %regex -m "Packet log.*LogDrop" %classic \ /var/log/fw_deny.log kern.* %regex -m "Packet log.*LogAcc" %classic \ /var/log/fw_accept.log # Filtres sur divers evenements securite auth,authpriv.* %regex -m "(sshd.*password)|(PAM.*ssh)|(PAM.*su)\ |(PAM.*failure)" %classic /var/log/securite.log auth,authpriv.* %regex -m "libsafe.so" %classic /var/log/securite.log auth.* %regex -m "not receive identification" %classic\ /var/log/securite.log kern.* %regex -m "Security" %classic /var/log/securite.log kern.* %regex -m "device.*promiscuous" %classic\ /var/log/securite.log Nous mettons en place les fichiers destination et redemarrons le serveur syslog : touch /var/log/{securite,fw_{deny,accept}}.log chown root:adm /var/log/{securite,fw_{deny,accept}}.log Et si votre umask n'est pas conforme a celui de cette doc : chmod 640 /var/log/{securite,fw_{deny,accept}}.log /etc/init.d/sysklogd restart Prise en compte des nouveaux fichiers pour la rotation des logs : Nous creons (s'il n'existe pas) un repertoire qui nous servira a stocker nos scripts appelles par la crontab et dont l'objectif est d'assurer la stabilite du systeme : mkdir /home/system/scripts/crond Nous editons un fichier /home/system/scripts/crond/sysklogd (a l'image de celui present dans /etc/cron.daily) : #! /bin/sh test -x /usr/sbin/syslogd-listfiles || exit 0 test -x /sbin/syslogd || exit 0 test -d /usr/share/doc/sysklogd || exit 0 set -e cd /var/log for SECU in `syslogd-listfiles -a | grep -E "fw|secu"` do if [ -s $SECU ] ; then savelog -g adm -m 640 -u root -c 7 $SECU > /dev/null fi done /etc/init.d/sysklogd reload-or-restart chmod 750 /home/system/scripts/crond/sysklogd Nous editons /etc/crontab pour ajouter ce script : # Tourne les logs securite chaque jour 5 0 * * * root /home/system/scripts/crond/sysklogd 4.9. Verification des empreintes des packages a installer --------------------------------------------------------- Consultez d'abord : 'I. INFORMATIONS SUR LA GESTION DE PACKAGES DEBIAN - Mise a jour du systeme avec apt' [ A completer ] mount -o remount,rw /usr dselect => installation de 'debsums' mount -o remount,ro /usr mkdir /home/system/debsums cd /home/system/debsums Obtenez la liste des packages ne possedant pas de signature : /usr/bin/debsums -l > nosig.txt NDR : Si vous voulez verifier les empreintes des fichiers d'un package : debsums -s package_name. MAN : debsums 4.10. Systeme de fichiers ext3 avec un noyau 2.4 : de ext2 a ext3 ----------------------------------------------------------------- Pour modifier le systeme de fichier d'une partition de facon a passer de ext2 a ext3, sans perte de donnees et sans reboot (si votre noyau est deja compile avec ce support bien sur), vous pouvez suivre la procedure suivante. Commencons par recompiler le noyau en ajoutant le support ext3 : * Ajoutez 'File systems -> Ext3 journalling file system support'. * Recompilez et installez le nouveau noyau. * Modifiez /etc/lilo.conf * Rebootez. Apres le reboot, n'oubliez pas de mettre a jour la configuration lilo et de sauvegarder la configuration du noyau. Prenons comme exemple la partition /backup du type (precise dans /etc/fstab) suivant : /dev/hda13 /backup ext2 ro,noexec,nosuid,nodev,sync 0 2 La procedure a suivre est la suivante : umount /dev/hda13 tune2fs -j /dev/hda13 Editez /etc/fstab pour remplacer l'ancienne ligne /dev/hda13 par : /dev/hda13 /backup auto ro,noexec,nosuid,nodev,sync 0 2 mount /dev/hda13 4.11. Backup du systeme sur une partition specifique ---------------------------------------------------- Nous presentons ici un moyen de sauvegarde des donnees systeme sur une partition reservee a cet usage. Le backup du systeme est realise par un script 'fait maison' permettant une sauvegarde complete ou incrementale des fichiers/repertoires a sauvegarder et autorisant le backup chiffre (avec openssl) des repertoires/fichiers parametres. Ne sont pas presentes ici : * La restauration du systeme a partir des donnees sauvegardees. Referez vous a la partie '4.12. Preparation d'une restauration du systeme en cas d'incident'. * L'acces a cette partition depuis un serveur distant pour un stockage de backup specialise. Vous pouvez vous referer a 'VII. INSTALLATION D'UN SERVEUR SAMBA POUR UNE GESTION DE BACKUP' pour un acces Netbios via Samba. Vous devez avoir une partition /dev/sda13 dans /etc/fstab du type : /dev/sda13 /backup ext2 ro,noexec,nosuid,nodev,sync 0 2 mkdir /home/system/scripts/backup Et installez le script /home/system/scripts/backup/system_backup.sh presente en 'ANNEXE 8 - Script de backup'. chmod 750 /home/system/scripts/backup/system_backup.sh Editez le script pour configurer les fichiers ou repertoires que vous desirez sauvegarder en modifiant la variable 'BACKUP_FROM' : Creez un fichier '/home/system/scripts/backup/include_but_ciphered' qui contiendra les fichiers ou repertoires que vous voulez ajouter dans l'archive chiffree. Ce fichier doit exister mais peut etre vide si vous ne voulez pas utiliser cette fonctionnalite : NDR : # Le backup chiffre est toujours en mode 'full'. # Le script de backup effectuant un 'cd /', configurez ce fichier en supprimant le premier '/' devant le chemin vers votre fichier/repertoire. J'ai personnellement renseigne ce fichier de la maniere suivante : /home/system/scripts/backup/include_but_ciphered : etc/gshadow etc/gshadow- etc/passwd etc/passwd- etc/samba/smbpasswd etc/shadow etc/shadow- var/backups NDR : Est il trivial d'indiquer que : # vous devriez noter le mot de passe de chiffrement que vous utilisez dans le script ? # le script ne doit etre accessible que par root ? Creez un fichier '/home/system/scripts/backup/exclude' qui contiendra les fichiers ou repertoires que vous ne desirez pas sauvegarder par rapport aux arborescences que vous aurez definies dans la variable 'BACKUP_FROM'. NDR : # Ce fichier doit exister mais peut etre vide si vous ne desirez rien exclure. # Le script de backup effectuant un 'cd /', configurez ce fichier en supprimant le premier '/' devant le chemin vers votre fichier/repertoire. J'ai personnellement renseigne ce fichier de la maniere suivante : usr/src var/lock var/run var/tmp Creez un fichier '/home/system/scripts/backup/cpioed' qui contiendra les repertoires dont vous souhaitez conserver les localisations et permissions grace a une archive cpio. # Ce fichier doit exister mais peut etre vide si vous ne desirez rien exclure. # Le script de backup effectuant un 'cd /', configurez ce fichier en supprimant le premier '/' devant le chemin vers votre fichier/repertoire. # SEULS LES REPERTOIRES INDIQUES SONT SAUVEGARDES ! J'ai personnellement renseigne ce fichier de la maniere suivante (je ne tiens pas a sauvegarder /usr/src) : backup cdrom floppy initrd local lost+found mnt opt proc tmp var/lock var/run var/tmp Lancez le script pour le premier backup : /home/system/scripts/backup/system_backup.sh Backup: Full backup Backup: Remounting rw /backup Backup: Backuping /backup/full_060503-144947/bin_060503-144947.tar.gz Backup: Hash : c8f1b2863146f03ef686fa04d1fd0da5\ /backup/full_060503-144947/bin_060503-144947.tar.gz Backup: Backuping /backup/full_060503-144947/boot_060503-144948.tar.gz Backup: Hash : 4bfd31759e05e14ed65b63dee26feb8d\ /backup/full_060503-144947/boot_060503-144948.tar.gz Backup: Backuping /backup/full_060503-144947/dev_060503-144950.tar.gz Backup: Hash : e5fd2dd7df68aba2f176faed07f44cd5\ /backup/full_060503-144947/dev_060503-144950.tar.gz Backup: Backuping /backup/full_060503-144947/etc_060503-144951.tar.gz Backup: Hash : 348d9dd3f309c23703a3c24c83dda609\ /backup/full_060503-144947/etc_060503-144951.tar.gz Backup: Backuping /backup/full_060503-144947/home_060503-144952.tar.gz Backup: Hash : 5495f04c230f7feaecb893f879297753\ /backup/full_060503-144947/home_060503-144952.tar.gz Backup: Backuping /backup/full_060503-144947/lib_060503-144954.tar.gz Backup: Hash : dce418f7fd12bd9621f5429141eaddbb\ /backup/full_060503-144947/lib_060503-144954.tar.gz Backup: Backuping /backup/full_060503-144947/root_060503-144957.tar.gz Backup: Hash : 012a1be6fb9686c6ca49c3edd8a94c38\ /backup/full_060503-144947/root_060503-144957.tar.gz Backup: Backuping /backup/full_060503-144947/sbin_060503-144958.tar.gz Backup: Hash : 0bf5b00b86826e195a9de88ef8d68a9f\ /backup/full_060503-144947/sbin_060503-144958.tar.gz Backup: Backuping /backup/full_060503-144947/usr_060503-144959.tar.gz Backup: Hash : f3ec8f659a17daa0cb318d0f687d632c\ /backup/full_060503-144947/usr_060503-144959.tar.gz Backup: Backuping /backup/full_060503-144947/var_060503-145357.tar.gz Backup: Hash : e200713da542da4c1bb0e8910b6aa76f\ /backup/full_060503-144947/var_060503-145357.tar.gz Backup: Backuping excluded files into a cpio archive Backup: Hash : a323d013c942bf30a6e0c76f5ae2ed2b\ /backup/full_060503-144947/excluded.cpio Backup: Backuping /home/system/scripts/backup/include_but_ciphered\ files Backup: Ciphering /backup/full_060503-144947/\ ciphered_060503-145357.tar.gz Backup: Removing /backup/full_060503-144947/\ ciphered_060503-145357.tar.gz Backup: Hash : 228dc72dd72ab99b2e58e3d083e72e5f\ /backup/full_060503-144947/\ ciphered_060503-145357.tar.gz.des3 Backup: Syncing disks Backup: Remounting ro /backup ll -R /backup/ /backup/: total 28 drwxr-x--- 2 root root 4096 May 6 14:54 full_060503-144947 -rw-r----- 1 root root 94 May 6 14:49 full_060503-144947.log -rw-r----- 1 root root 1023 May 6 14:54 full_060503-144947.md5 /backup/full_060503-144947: total 335096 -rw-r----- 1 root root 1016158 May 6 14:49 bin_060503-144947.tar.gz -rw-r----- 1 root root 4390293 May 6 14:49 boot_060503-144948.tar.gz -rw-r----- 1 root root 592280 May 6 14:54 ciphered_060503-145357\ .tar.gz.des3 -rw-r----- 1 root root 57067 May 6 14:49 dev_060503-144950.tar.gz -rw-r----- 1 root root 478588 May 6 14:49 etc_060503-144951.tar.gz -rw-r----- 1 root root 65024 May 6 14:54 excluded.cpio -rw-r----- 1 root root 1152206 May 6 14:49 home_060503-144952.tar.gz -rw-r----- 1 root root 2298150 May 6 14:49 lib_060503-144954.tar.gz -rw-r----- 1 root root 418679 May 6 14:49 root_060503-144957.tar.gz -rw-r----- 1 root root 1203847 May 6 14:49 sbin_060503-144958.tar.gz -rw-r----- 1 root root 285132220 May 6 14:53 usr_060503-144959.tar.gz -rw-r----- 1 root root 45928823 May 6 14:54 var_060503-145357.tar.gz du -ch /backup/ 328M /backup/full_060503-144947 328M /backup 328M total Vous avez desormais dans /backup : # Une sauvegarde 'full' des fichiers ou repertoires que vous avez specifie. # Un fichier de log contenant les erreurs rencontrees - vide si aucune erreur. # Un fichier d'empreinte md5 des archives creees pour chaque fichier/repertoire specifie. Dans /home/system/scripts/backup/.last_done (ou dans le fichier que vous avez vous meme specifie), vous avez la date de ce dernier backup. Note : Les 328M de sauvegarde full realisee precedemment l'ont ete en environ ~5 minutes sur un PIII 700 avec 160Mo de RAM. Vous pouvez desormais realiser un backup incremental des donnees sauvegardees precedemment. En appelant a nouveau le script : Backup: Incremental backup beginning : Tue May 6 14:49:47 CEST 2003 Backup: Remounting rw /backup Backup: Backuping /backup/incr_060503-152213/bin_060503-152213.tar.gz\ (incremental) Backup: Hash : 081a6113dd90eb892d01548cd7179b62\ /backup/incr_060503-152213/bin_060503-152213.tar.gz Backup: Backuping /backup/incr_060503-152213/\ boot_060503-152213.tar.gz (incremental) Backup: Hash : ae60b98501c0978f362e2f7826b671a5\ /backup/incr_060503-152213/boot_060503-152213.tar.gz Backup: Backuping /backup/incr_060503-152213/\ dev_060503-152213.tar.gz (incremental) Backup: Hash : 3dcc660a2a296b8356ffa29d4c52d8d1\ /backup/incr_060503-152213/dev_060503-152213.tar.gz Backup: Backuping /backup/incr_060503-152213/\ etc_060503-152214.tar.gz (incremental) Backup: Hash : b9649a2474ec6f8858841fa4eb3f1e5b\ /backup/incr_060503-152213/etc_060503-152214.tar.gz Backup: Backuping /backup/incr_060503-152213/\ home_060503-152214.tar.gz (incremental) Backup: Hash : b91a69fceb9d176050d69fd300850d26\ /backup/incr_060503-152213/home_060503-152214.tar.gz Backup: Backuping /backup/incr_060503-152213/\ lib_060503-152214.tar.gz (incremental) Backup: Hash : 718f76f85543429bbd32df86ce23e5b7\ /backup/incr_060503-152213/lib_060503-152214.tar.gz Backup: Backuping /backup/incr_060503-152213/\ root_060503-152214.tar.gz (incremental) Backup: Hash : d357d47b59e75595087ab7d8cba58fdb\ /backup/incr_060503-152213/root_060503-152214.tar.gz Backup: Backuping /backup/incr_060503-152213/\ sbin_060503-152214.tar.gz (incremental) Backup: Hash : 1688044981053d9e8e0d333509c54149\ /backup/incr_060503-152213/sbin_060503-152214.tar.gz Backup: Backuping /backup/incr_060503-152213/\ usr_060503-152214.tar.gz (incremental) Backup: Hash : 2f95fb3bb6b8d9a0ab247bde96611baf\ /backup/incr_060503-152213/usr_060503-152214.tar.gz Backup: Backuping /backup/incr_060503-152213/\ var_060503-152223.tar.gz (incremental) Backup: Hash : 668d117769137b003cf427394d65b1a3\ /backup/incr_060503-152213/var_060503-152223.tar.gz Backup: Backuping /home/system/scripts/backup/\ include_but_ciphered files Backup: Ciphering /backup/incr_060503-152213/\ ciphered_060503-152223.tar.gz Backup: Removing /backup/incr_060503-152213/\ ciphered_060503-152223.tar.gz Backup: Hash : 9d11b72e4bfa25cbf81b4295717133cf /backup/\ incr_060503-152213/ciphered_060503-152223.tar.gz.des3 Backup: Syncing disks Backup: Remounting ro /backup ll -R /backup/ /backup/: total 36 drwxr-x--- 2 root root 4096 May 6 15:22 incr_060503-152213 -rw-r----- 1 root root 0 May 6 15:22 incr_060503-152213.log -rw-r----- 1 root root 949 May 6 15:22 incr_060503-152213.md5 /backup/incr_060503-152213: total 656 -rw-r----- 1 root root 166 May 6 15:22 bin_060503-152213.tar.gz -rw-r----- 1 root root 196 May 6 15:22 boot_060503-152213.tar.gz -rw-r----- 1 root root 592280 May 6 15:22 \ ciphered_060503-152223.tar.gz.des3 -rw-r----- 1 root root 352 May 6 15:22 dev_060503-152213.tar.gz -rw-r----- 1 root root 2179 May 6 15:22 etc_060503-152214.tar.gz -rw-r----- 1 root root 1344 May 6 15:22 home_060503-152214.tar.gz -rw-r----- 1 root root 543 May 6 15:22 lib_060503-152214.tar.gz -rw-r----- 1 root root 275 May 6 15:22 root_060503-152214.tar.gz -rw-r----- 1 root root 167 May 6 15:22 sbin_060503-152214.tar.gz -rw-r----- 1 root root 29773 May 6 15:22 usr_060503-152214.tar.gz -rw-r----- 1 root root 7973 May 6 15:22 var_060503-152223.tar.gz Un simple 'tar ztvf {archive}.tar.gz | grep -v " 0 "' vous donnera la liste des fichiers qui ont ete modifies et pris en compte lors de cette sauvegarde incrementale. Vous pouvez appeler le script avec l'option '-f' : cela le forcera a suivre la procedure sauvegarde 'full' en ne tenant pas compte du contenu du fichier '.last_done'. Nous pouvons maintenant editer notre fichier /etc/crontab pour appeller notre script de backup : # Backup Full du systeme toutes les semaines a 00H30 30 0 * * 7 root /home/system/scripts/backup/system_backup.sh -f # Backup incremental du systeme toutes les 6 heures a xx:15 15 */6 * * * root /home/system/scripts/backup/system_backup.sh Nous modifions egalement /etc/syslog.conf pour que les messages de backup soient consignes dans notre fichier de log securite : syslog.notice %regex -m "Backup" %classic /var/log/securite.log Puis : /etc/init.d/sysklogd restart MAN : tar, gzip 4.12. Preparation d'une restauration du systeme en cas d'incident ----------------------------------------------------------------- Notre objectif est de preparer un moyen de restauration du systeme simple a mettre en place et rapide a mettre en oeuvre en cas d'incident. Nous allons pour ce faire creer une 'image' de notre systeme que nous graverons sur un CD. Dans le cas d'un crash, il sera possible de booter sur le CD et de restaurer le systeme. NDR : # La creation de cette image necessite l'installation du package mkisofs (n'installez pas le package cdrecord sauf si vous disposez d'un graveur sur la station) et l'ajout du support 'Block devices -> Loopback device support' au noyau. # Vous devriez dedier une station a cet usage et non installer ces fonctionnalites sur votre serveur de production. # L'espace disque requis est d'environ 1Go (~650Mo environ, mais il vaut mieux voir large :>). Nous allons tout d'abord creer un systeme de fichier root contenant les binaires necessaires a l'execution du CD puis ajouter nos archives dans un repertoire et pour finir utiliser un script qui executera la restauration du systeme. Pour ce faire, nous allons nous baser sur les fichiers fournis dans le jeu de CD Debian. Recuperation des fichiers necessaires au boot et d'un systeme de fichier root minimal : NDR : Je vais par la suite utiliser la partition /local comme partition de travail. Cette partition est, si vous avez suivi cette documentation, une partition Ext2 inutilisee et occupant l'espace disque restant apres installation du systeme. Inserez le CD numero 1 de votre jeu Debian et montez le cdrom (/cdrom dans notre exemple). mount -o remount,rw /local mkdir /local/Debian cp /cdrom/isolinux/isolinux* /local/Debian cp /cdrom/isolinux/idepci.bin /local/Debian mkdir /local/Debian/kernel cp /cdrom/install/linpci /local/Debian/kernel/ Editez le fichier isolinux.cfg : TIMEOUT 0 PROMPT 1 DEFAULT /kernel/linpci APPEND root=/dev/ram ro initrd=idepci.bin ramdisk_size=16384\ disksize=1.44 flavor=idepci LABEL linux kernel /kernel/linpci DISPLAY isolinux.txt Editez le fichier isolinux.txt : Debian-Secinst v0.1.5 Boot CD Modification du systeme de fichier root original : Nous montons maintenant le systeme de fichier root original : cd /local cp Debian/idepci.bin . gunzip -S ".bin" idepci.bin mount -t ext2 idepci /mnt/ -o loop Modification de l'initialisation du CD pour executer notre script de restauration : cd /mnt/ Editez le fichier etc/inittab : # main setup program <::respawn:/sbin/udbootstrap >::respawn:-/restore.sh Clavier Francais et alias : cd /mnt/etc/ tar zxvf keymaps.tgz i386/azerty/fr-latin1.bmap echo "/sbin/loadkmap < /etc/i386/azerty/fr-latin1.bmap" > profile echo "alias l='ls'" >> profile echo "alias ll='l -l'" >> profile echo "alias la='ll -a'" >> profile echo "alias cp='cp -i'" >> profile echo "alias rm='rm -i'" >> profile echo "alias mv='mv -i'" >> profile Ajout du binaire cpio : cd /mnt cp /lib/libnsl.so.1 ./lib/ cp /bin/cpio ./bin/ Ajout d'un binaire tar compile en statique : Recuperez la version 1.13.25 sur l'un des miroirs de www.gnu.org. Compilez la en statique (avec le support uclibc par exemple) ou tout simplement avec : env LDFLAGS=-static ./configure make LDFLAGS=-static cd /mnt mv ./bin/tar ./bin/oldtar Copiez votre nouveau binaire dans /mnt/bin/tar chmod 755 /mnt/bin/tar Ajoutez le script de restauration present en 'ANNEXE 9 - Script de restauration' a la racine (/mnt/restore.sh) et donnez lui les droits 'chmod 755 /mnt/restore.sh'. Ajout des informations de backup : NDR : Ces informations sont evidemment celles du systeme a restaurer et non celles du systeme sur lequel vous creez ce CD ! mkdir /mnt/backup && chmod 755 /mnt/backup Editez le fichier '/mnt/backup/server_infos' (ou le fichier que vous avez configure dans le script de restauration) pour ajouter les informations que vous jugerez utile. Par exemple (/mnt/backup/server_infos) : This backup was created for {HOSTNAME} the 5 of May at 12:03. The server backuped is a Apache/Websphere server. Ajoutez les fichiers suivants dans '/mnt/backup' : * un fichier 'disk_name' contenant le nom de votre peripherique (ex : /dev/sda). * un fichier 'fdisk_script' contenant les instructions a suivre pour creer les partitions sur le disque (voir 'ANNEXE 10 - Exemple de script Fdisk') * un fichier 'fstab_file' du type de celui obtenu par la commande : grep -E "ext|swap" /etc/fstab | awk '{ print $1" "$2" "$3 }' => Les points de montage logique (fd0, cdrom et proc) ne sont pas obligatoires. => Seuls les supports ext2 et swap sont geres pour l'instant. * un fichier 'lilo_file' : copie de votre /etc/lilo.conf a restaurer => Attention au mot de passe en clair !!! * un fichier 'partitions_table' : resultat de la commande '/sbin/fdisk -l' Demontez le systeme de fichier et sauvegardez le : cd /local umount -d /mnt gzip -S ".bin" idepci mv idepci.bin Debian/ On ajoute maintenant le backup de notre systeme : Connectez vous au systeme a sauvegarder et lancez un backup full via le script de backup fourni en 'ANNEXE 8 - Script de backup' ou recuperez les archives de votre dernier backup full. Sur la station que vous utilisez pour creer le cdrom de backup, creez le repertoire '/local/Debian/archives' et copiez vos archives a sauvegarder a l'interieur (en respectant le nommage des archives en .tar.gz ou .cpio !). Une fois cette copie effectuee, creez un fichier /local/Debian/archives/infos.txt contenant les chemins vers les fichiers qui seront presents dans /mnt/archives/ (une fois le systeme de fichier monte par le script de restauration). Je vous reccomande de creer ce fichier a la main plutot que d'utiliser un find. J'ai personnellement renseigne ce fichier de la maniere suivante (Notez la presence de var_xxx avant usr_xxx) : /mnt/archives/infos.txt : /mnt/archives/bin_070503-153510.tar.gz /mnt/archives/boot_070503-153511.tar.gz /mnt/archives/dev_070503-153513.tar.gz /mnt/archives/etc_070503-153514.tar.gz /mnt/archives/home_070503-153515.tar.gz /mnt/archives/lib_070503-153517.tar.gz /mnt/archives/root_070503-153520.tar.gz /mnt/archives/sbin_070503-153520.tar.gz /mnt/archives/var_070503-153925.tar.gz /mnt/archives/usr_070503-153522.tar.gz /mnt/archives/deciphered_070503-153925.tar.gz /mnt/archives/excluded.cpio NDR : Je vous reccomande bien entendu de comparer le md5sum des fichiers generes par votre script de backup avec le md5sum des fichiers copies sur la station utilisee pour creer l'ISO et de renouveller cette operation pour les fichiers qui seront presents sur le CD grave. !!! Dans /local/Debian/archives, vous devez avoir un fichier protege par le mot de passe present dans votre script de backup. Deprotegez ce fichier avant de proceder a la creation de l'ISO !!! NDR : J'insiste sur le fait que ce CD de restauration contient une sauvegarde de fichiers critiques et doit etre protege physiquement !!! Preparation de l'ISO : Preparation de l'image iso a graver : cd /local mkisofs -o debian.iso -b isolinux.bin -c boot.cat -no-emul-boot\ -boot-load-size 4 -boot-info-table -l -r Debian/ Vous avez desormais une image 'debian.iso' que vous pouvez graver sur un CD. Ce CD sera bootable et vous donnera acces au menu suivant : Debian-Secinst v0.1.5 Restore script Enter alt-[F1-F4] to : have this menu, have a shell, look at the logs. To reboot : ctrl-alt-del ------- This backup was created for {HOSTNAME} the 25 of April at 16:52. The server backuped is a Apache/Websphere server. ------- Menu (1) : Show actual partition table. (2) : Show backuped partition table. (3) : Show backuped fstab file. ***** (4) : Write the backuped partition table to disk. (5) : Format disk using backuped fstab file. (6) : Mount disk partitions using backuped fstab file. (7) : Restore the system. (8) : Lilo the system using backuped lilo file. (9) : Syncing and unmounting restored system. ***** (A) : Automated script (4-5-6-7-8-9). What do you want ? NDR : La restauration du systeme pris comme en exemple en '4.11. Backup du systeme sur une partition specifique' m'a pris 15 minutes sur un PIII 500 avec 128 Mo de RAM. ================================================================================ 5. SECURISATION APPROFONDIE =========================== NDR : Vous devez savoir ce que vous faites dans les parties presentees ici. 5.1. Installation du patch OpenWall ----------------------------------- Le patch est telechargeable sur http://www.openwall.com/linux/ mount -o remount,rw /usr cd /usr/src cp -r kernel-2.2.20-fw kernel-2.2.20-fwow ln -s kernel-2.2.20-fwow linux-ow md5sum /home/system/download/linux-2_2_23-ow1_tar.gz cb51cfdd978eba987ca39d09960e17c3\ /home/system/download/linux-2_2_23-ow1_tar.gz cp /home/system/download/linux-2_2_23-ow1_tar.gz . tar zxvf linux-2_2_23-ow1_tar.gz cd linux-ow patch -p1 < ../linux-2.2.23-ow1/linux-2.2.23-ow1.diff Deux fichiers ne passent pas avec notre noyau 2.2.20 : find . -name *.rej ./fs/fat/inode.c.rej ./fs/select.c.rej => Mais les modifications manuelles sont triviales. On prepare la compilation du nouveau noyau : sed 's/^EXTRAVERSION\ =\ -fw$/EXTRAVERSION\ =\ -fw-ow/' Makefile > .fwow cat .fwow > Makefile && rm -f .fwow Si vous lancez make menuconfig a ce moment, vous trouverez un nouveau menu nomme 'Security options'. Deux options demeurent non-activees apres le passage du patch : * 'Restricted /proc' * 'Destroy shared memory segments not in use' => Vous pouvez activer 'Restricted /proc' mais il vous faudra une configuration supplementaire des comptes administrateurs avec un outil comme sudo pour eviter que les admins ne passent root a tout bout de champ: On compile : make dev && make modules && make bzImage On installe : mount -o remount,rw /boot cp arch/i386/boot/bzImage /boot/vmlinuz-2.2.20-fw-ow cp System.map /boot/System.map-2.2.20-fw-ow cd /boot/ ln -s vmlinuz-2.2.20-fw-ow linux-ow Installez les modules : cd - && make modules_install On modifie /etc/lilo.conf pour ajouter : image=/boot/linux-ow label=linux22ow read-only restricted Et on lance 'lilo'. On reboote et on passe sur le noyau avec OpenWall. Si tout s'est bien passe, vous pouvez changer le noyau charge par defaut par lilo en supprimant restricted de l'ancien noyau. 5.2. Installation du wrapper libsafe ------------------------------------ L'archive est disponible sur : http://www.research.avayalabs.com/project/libsafe/ cd /home/system/applis md5sum ../download/libsafe-2_0-16.tgz 6b7b6e6df84d4afb469ccc66d04fc24d ../download/libsafe-2_0-16.tgz tar zxvf ../download/libsafe-2_0-16.tgz find ./libsafe-2.0-16/ -type f \( -perm -004000 -o -perm -002000 \) -exec ls\ -la {} \; chown -R root:root libsafe-2.0-16/ chmod 750 libsafe-2.0-16/ cd libsafe-2.0-16/ make mount -o remount,rw /usr make install => Entrer Yes au prompt. mount -o remount,ro /usr Testez la librairie : export LD_PRELOAD=/home/system/applis/libsafe-2.0-16/src/libsafe.so Lancez les exploits dans /home/system/applis/libsafe-2.0-16/exploits. Installez la libsafe dans /etc/ld.so.preload si le fichier n'existe pas : ll /etc/ld.so.preload || echo /lib/libsafe.so.2 > /etc/ld.so.preload chmod 644 /etc/ld.so.preload Rebootez le systeme (?!). 5.3. Conserver une empreinte de verification d'integrite du systeme ------------------------------------------------------------------- Installez le package Debian : mount -o remount,rw /usr dselect => installation de 'aide' => La preconfiguration ne fonctionne pas, car elle tente d'executer un script dans /tmp => 'Initalize aide database ?' -> No mount -o remount,ro /usr Preparez le terrain : chmod 750 /etc/aide cp /etc/aide/aide.conf /etc/aide/aide.conf.orig chmod 640 /etc/aide/* mkdir /home/system/aide Editez /etc/aide/aide.conf et modifiez le de telle sorte que : [...] database=file:/home/system/aide/aide.db database_out=file:/home/system/aide/aide.db.new [...] # MD5 sum files - especially useful with debsums -g /var/lib/dpkg/info/([^\.]+).md5sums Databases [...] et a la fin du fichier [...] /etc ConfFiles /home/system Binlib !/home/system/aide [...] Initialisez la base de donnees : aide --init -V200 NDR : Est il trivial de vous reccomander de ne pas faire de modifications pendant l'initialisation ? Premiere sauvegarde de la base de donnees (la suite est donnee a titre d'exemple) : Inserez une disquette puis 'mke2fs /dev/fd0' mount /dev/fd0 /mnt cp /home/system/aide/aide.db.new /home/system/aide/aide.db /usr/bin/md5sum /home/system/aide/aide.db.new > /mnt/aide.db.md5 mv /home/system/aide/aide.db.new /mnt/aide.db cp /usr/bin/aide /mnt/ /usr/bin/md5sum /usr/bin/aide > /mnt/aide.md5 sed 's/file:\/home\/system\/aide\//file:.\//' /etc/aide/aide.conf >\ /mnt/aide.conf sync cd /mnt grep `/usr/bin/md5sum aide | cut -d ' ' -f 1` aide.md5 => Doit vous renvoyer le contenu du fichier aide.md5 grep `/usr/bin/md5sum aide.db | cut -d ' ' -f 1` aide.db.md5 => Doit vous renvoyer le contenu du fichier aide.db.md5 diff /etc/aide/aide.conf ./aide.conf 3,4c3,4 < database=file:/home/system/aide/aide.db < database_out=file:/home/system/aide/aide.db.new --- > database=file:./aide.db > database_out=file:./aide.db.new cd && umount /mnt Sortez la disquette et protegez la en ecriture. Verifier le systeme avec le support de sauvegarde : Inserez la disquette mount -o ro /dev/fd0 /mnt && cd /mnt ./aide -c ./aide.conf --check -V200 cd && umount /mnt Mise a jour de la base de donnee sauvegardee : aide --update -V200 cd /home/system/aide mv aide.db.new aide.db puis sauvegardez cette nouvelle base comme pour la creation. NDR : Ce qui precede est donne a titre d'exemple, Il serait plus approprie en cas de doute de booter le systeme sur un support amovible sur protege en ecriture et d'effectuer la verification d'integrite a partir de ce support. MAN : aide, aide.conf 5.4. Gestion des quotas ----------------------- NR : Vous devez commencer a connaitre le systeme donc je n'explique plus les details deja presentes plusieurs fois... Recompilation du noyau et installation du package : Compilez un nouveau noyau en activant 'Filesystems -> Quota support'. Rebootez, sauvez la configuration etc... Installez le package 'quota'. => 'Send daily reminders' -> No Configuration des partitions : Modifiez le fichier /etc/fstab pour ajouter les flags relatifs aux quotas : /dev/sda6 /var ext2 nodev,usrquota,grpquota 0 2 /dev/sda7 /var/log ext2 noexec,nosuid,nodev,sync,usrquota,grpquota 0 2 /dev/sda8 /tmp ext2 noexec,nosuid,nodev,usrquota,grpquota 0 2 [...] /dev/sda10 /home ext2 nodev,usrquota,grpquota 0 2 Ajoutez les fichiers de quotas : for i in `echo /var /var/log /tmp /home` ; do \ touch $i/quota.user && touch $i/quota.group ; done for i in `echo /var /var/log /tmp /home` ; do \ chmod 600 $i/quota.user && chmod 600 $i/quota.group ; done for i in `echo /var /var/log /tmp /home` ; do \ chown root:root $i/quota.user && chown root:root $i/quota.group ; done Remontez les partitions : for i in `echo /var /var/log /tmp /home` ; do \ mount -v -o remount $i ; done Suppression d'un service inutile pour nous : update-rc.d -f quotarpc remove Une premiere verification : /sbin/quotacheck -am Edition des quotas pour les groupes : Lancez 'edquota -g users' et editez les quotas pour le groupe users : /dev/sda8 0 20000 20000 0 5000 5000 /dev/sda10 17 100000 100000 9 10000 10000 Lancez 'edquota -g adm' et editez les quotas pour le groupe adm : /dev/sda8 0 5000 10000 0 10000 10000 /dev/sda10 17 200000 250000 9 50000 50000 NDR : Utilisez 'df -[h|i]' de facon a obtenir les informations sur l'ensemble du disque pour le choix des quotas precedents. Creez un utilisateur fictif qui servira de modele de mise en place de quotas : adduser --no-create-home --disabled-password --quiet --ingroup users quotauser Changing the user information for quotauser Enter the new value, or press return for the default Full Name []: Quota template user Room Number []: Work Phone []: Home Phone []: Other []: Disabled Is the information correct? [y/n] y passwd -l quotauser chsh -s /bin/false quotauser Mettez en place les quotas pour le modele d'utilisateur : Lancez 'edquota -u quotauser' et editez les quotas : /dev/sda8 0 2000 2000 0 500 500 /dev/sda10 0 10000 10000 0 1000 1000 Vous pouvez verifier les quotas mis en place avec : 'quota -vu quotauser' Pour un nouvel utilisateur {username}, vous pouvez associer ce modele de quotas avec 'edquota -p quotauser {username}'. Modifiez '/etc/adduser.conf' pour inclure ce modele dans la definition des quotas : QUOTAUSER="quotauser" Activation - Desactivation - Etat des quotas (quelques exemples) : Activation : /etc/init.d/quota start Desactivation : /etc/init.d/quota stop Etat (Active ou Desactive ? ) : quotaon -pa Statistiques : repquotas -ugva NDR : Le fichier d'initialisation des quotas au boot est place dans /etc/rcS.d et sera donc active a chaque redemarrage de la station. MAN : quotacheck, quotaon, quotaoff, quotastats, repquota, edquota, quota 5.5. Securisation PAM : Gestion des limites ------------------------------------------- Limites aux sessions : Verifiez avec 'grep pam_limits.so /etc/pam.d/ssh' que la librairie est activee (c'est le cas par defaut). Constatez avec 'grep pam_limits.so /etc/pam.d/login' que la librairie n'est pas activee par defaut : => Activez la en decommentant la ligne. => Faites de meme pour /etc/pam.d/su Editez /etc/security/limits.conf en ajoutant les parametres suivants (exemple pour le groupe administrateurs) : * hard core 0 * hard memlock 4096 * hard fsize 10000 * hard maxlogins 3 * hard cpu 10 @adm hard nofile 1024 @adm hard nproc 256 @adm hard maxlogins 5 @users hard nofile 256 @users hard nproc 32 NDR : Pour afficher les limites d'un utilisateurs, entrez 'ulimit -a' MAN : bash, ulimit 5.6. Disquette de secours avec Tomsrtbt --------------------------------------- La distribution tomsrtbt est telechargeable sur http://www.toms.net/rb/ cd /home/system/applis /usr/bin/md5sum /home/system/download/tomsrtbt-2.0.103.tar.gz d5ee50efb28986d564547d5da5de2483 \ /home/system/download/tomsrtbt-2.0.103.tar.gz tar zxvf /home/system/download/tomsrtbt-2.0.103.tar.gz cd tomsrtbt-2.0.103/ Inserez une disquette vierge. ./install.s Vous avez desormais une disquette de secours. En rebootant sur la disquette, deux choix vous sont proposes : * Resolution de l'ecran. * map du clavier. Et puis en fait, le mieux est que vous lisiez la FAQ... 5.7. Installation de Prelude-Lml pour une remontee de log securisee vers un serveur centralise ------------------------------------------------------------------------------ L'installation de Prelude-Lml est desormais presentee dans une autre documentation. Ne figurent ici que les aspects de configuration du moniteur Prelude qui sont specifique a l'installation de notre station securisee. La nouvelle documentation est intitulee "Centralized and secured remote logging solution with Prelude-Lml on Debian : How to securely install and set up the Prelude-Lml engine". Elle est disponible sur http://www.entreelibre.com/scastro/prelude/ . 5.7.1. Configuration initiale Nous abordons ici la remontee de certains des logs 'securite' generes par la configuration presentee dans cette documentation. NDR : Par la suite, nous emploierons le terme 'sonde' a la place de 'sensor'. NDR : Cette configuration est minimale, je vous conseille, de lire les documentations disponibles sur prelude et de proceder a votre propre parametrage. Il est par exemple possible, entre autres, de recompiler la libsafe pour qu'elle puisse se comporter en sonde prelude. Modifiez '/home/prelude/etc/prelude-sensors/sensors-default.conf' : > node-name = Test Secured Debian; > node-location = Salle serveur; Modifiez '/home/prelude/etc/prelude-lml/plugins.rules' : < Paxmod - .* PAX: .* > #Paxmod - .* PAX: .* Modifiez '/home/prelude/etc/prelude-lml/prelude-lml.conf' : Nos fichier a surveiller sont (voir '4.8. Installation et premiers pas avec Modular-Syslog') : /var/log/fw_deny.log, /var/log/fw_accept.log et /var/log/securite.log : < file = /var/log/auth.log < file = /var/log/messages > file = /var/log/securite.log > file = /var/log/fw_accept.log > file = /var/log/fw_deny.log Nous allons charger notre propre serie de regles : < ruleset=/home/prelude/etc/prelude-lml/ruleset/simple.rules; > #ruleset=/home/prelude/etc/prelude-lml/ruleset/simple.rules; > ruleset=/home/prelude/etc/prelude-lml/ruleset/debian-secinst.rules Creez '/home/prelude/etc/prelude-lml/ruleset/debian-secinst.rules' : # Customized prelude-lml rules file from debian-secinst v0.1.7 doc # Simon Castro # These one are from the simple.rules standard file. regex=PAM_unix\[([0-9]+)\][^(]+\(uid=([0-9]+)\) -> ([^ ]+);\ class.name=Authentication Failure; impact.completion = failed;\ impact.type = other; impact.severity = high;\ impact.description=Process $1 attempted to change UID from $2 to $3; regex=entered promiscuous mode; class.name=Promiscuous mode detected;\ impact.completion = succeeded; impact.type = other;\ impact.severity = medium; impact.description=A sniffer is probably\ running on this machine; # A few of rules only of this file will be used as we don't configure\ prelude-lml to look into auth.log include = ssh.rules; # These are personal rules... regex=left promiscuous mode; class.name=Promiscuous mode end detected;\ impact.completion = succeeded; impact.type = other;\ impact.severity = medium; impact.description=A sniffer is probably\ running on this machine; # Uncomment one of the two ruleset below #include = ipchains.rules; #include = netfilter.rules; Creez '/home/prelude/etc/prelude-lml/ruleset/ipchains.rules' a partir de 'ANNEXE 5 - Fichier de regles pour un support Ipchains avec Prelude-lml' si vous utilisez un firewall IpChains. Attribuez les permissions correctes aux fichiers crees : cd /home/prelude/etc/prelude-lml/ruleset/ chown prelude:prelude debian-secinst.rules ipchains.rules chmod 640 debian-secinst.rules ipchains.rules !!! ATTENTION Notez qu'avec cette version de Prelude, il n'est apparemment plus possible de donner des droits restreints aux fichiers de logs que vous monitorez. Par defaut, vos fichiers de logs (dans /var/log) securite.log et fw_[deny| accept].log doivent etre en 640 et appartenir a root:adm (si vous avez suivi cette procedure). Il se trouve que si vous ne configurez pas ces fichiers en 644 au minimum avec cette installation, le moniteur prelude ne sera pas capable de les consulter apres avoir perdu ses privileges super-utilisateur. ATTENTION !!! Et redemarrez la sonde prelude-lml : /etc/init.d/preludelogmonitor.sh restart 5.8. Securisation approfondie avec GrSecurity --------------------------------------------- GrSecurity est constitue d'un patch pour le noyau Linux et d'un utilitaire destine a etre utilise en espace utilisateur. Le patch accroit la securite du systeme en apportant des restrictions aux systemes de fichiers /proc et /tmp, aux actions realisables par des processus 'chrootes', en creant un espace de stockage d'ACLs (Access Control Lists) permettant d'implementer un systeme base sur le modele MAC (Mandatory Access Control) pour tous les utilisateurs et y compris pour le super-utilisateur (la liste n'est pas exhaustive :) ). La suite GrSecurity inclut egalement Pax : une protection du noyau permettant l'implementation de pages memoire non executables et un espace d'adressage aleatoire. Nous allons tout d'abord commencer par patcher le noyau du systeme puis nous aborderons l'integration des listes de controle d'acces. Notez que vous devez choisir entre cette procédure et celle présentée en '5.1. Installation du patch OpenWall'. Le patch noyau GrSecurity et l'outil d'administration GrAdm sont tous deux disponibles sur www.grsecurity.net et l'utilitaire chpax est disponible sur pageexec.virtualave.net. Je ne peux que vous indiquer de lire consciencieusement la documentation presente sur le site avant de proceder aux manipulations decrites ci-apres... Avant de commencer, sachez enfin que cette documentation s'applique pour un noyay 2.4.22 (noyau non disponible dans la branche stable des packages Debian) donc a vous de choisir... 5.8.1. Patch du noyau : Compilation et installation Recuperez le patch du noyau ainsi que chpax, verifiez les MD5 et stockez les dans /home/system/download/. Recuperez les sources du noyau 2.4.22, verifiez le md5 puis : mount -o remount,rw /usr mount -o remount,exec /tmp cd /usr/src mv /home/system/download/linux-2.4.22.tar.bz2 . tar jxvf linux-2.4.22.tar.bz2 chown -R root:root linux-2.4.22 chmod 750 linux-2.4.22 mv linux-2.4.22 kernel-source-2.4.22 ln -s kernel-source-2.4.22 linux-2.4.22 Patchez les sources du noyau : cd /usr/src patch -p0 < /home/system/download/grsecurity-1.9.12-2.4.22.patch Editez le flag EXTRAVERSION du fichier linux-2.4.22/Makefile pour ajouter un commentaire du type '-grsec'. Si vous utilisiez le noyau 2.4.18 de Debian, recuperez le fichier de config que vous avez du sauvegarder dans /boot et placez le dans /usr/src/linux-2.4 .22/.config puis 'make oldconfig' - sinon 'make menuconfig' et configurez votre nouveau noyau. Choisissez les options GrSecurity que vous voulez activer - celles qui ont ete utilisees lors de la redaction de cette documentation sont presentees dans 'ANNEXE 11 - Parametres de configuration d'un noyau GrSecurity' - puis compilez et installez votre nouveau noyau en suivant la procedure presentee dans 'II. COMPILATION DU NOYAU'. Notes sur le choix des options : * Si vous activez l'option 'Deny writing to /dev/kmem, /dev/mem, and /dev/port' dans le menu 'Address Space Protection' et que votre systeme est un guest VmWare (tm), il ne bootera plus... * J'utilise le gid 4 pour l'option 'CONFIG_GRKERNSEC_PROC_GID', ce qui permet aux membres du groupe 'adm' d'obtenir des permissions que je juge appropriees pour les administrateurs non-root du serveur. * J'active l'option 'CONFIG_GRKERNSEC_CHROOT_SYSCTL' car je prefere creer un script d'initialisation charge de positionner les bonnes valeurs lors du boot. Si vous preferez securiser "encore plus" votre installation, desactivez cette option, mais faites attention que les gids que vous utiliserez dans les options 'CONFIG_GRKERNSEC_AUDIT_GID' , 'CONFIG_ GRKERNSEC_TPE_GID', 'CONFIG_GRKERNSEC_SOCKET_ALL_GID', 'CONFIG_GRKERNSEC _SOCKET_CLIENT_GID' et 'CONFIG_GRKERNSEC_SOCKET_SERVER_GID' ne soient pas deja utilises sur votre systeme. Une fois votre nouveau noyau installe, rebootez le systeme. 5.8.2. Configuration du systeme Creez les groupes suivants : for i in `echo grsec_tpe grsec_sockall grsec_sock_cl grsec_sock_srv grsec\ _audit`; do groupadd $i; done Creez le fichier /etc/sysctl.conf.grsecurity a partir du fichier present en 'ANNEXE 12 - Configuration Sysctl de GrSecurity' et parametrez ce fichier selon vos besoins en mettant a jour les gid avec les groupes que vous venez de creer. !!! Attention !!! La suite peut rendre votre systeme instable. Testez cette configuration avec la commande : /sbin/sysctl -p /etc/sysctl.conf.grsecurity Si tout se passe bien et que le comportement du serveur repond a vos attentes, positionnez la variable 'grsec_lock' de sysctl.conf.grsecurity a '1' puis creez le fichier '/home/system/security/apply_grsec.sh' : #!/bin/sh /sbin/sysctl -p /etc/sysctl.conf.grsecurity Configurez le systeme pour que ce script soit appelle au boot : cd /etc/rc2.d ln -s /home/system/security/apply_grsec.sh S{XX}apply_grsec ou {XX} correspond a votre priorite de lancement par rapport aux autres scripts executes lors du boot du systeme. Modifiez votre fichier de configuration syslog pour stocker les alertes dans le fichier de log securite grace aux entrees suivantes : kern.* %regex -m "PAX" %classic /var/log/securite.log kern.* %regex -m "grsec" %classic /var/log/securite.log La configuration initiale est terminee... Voici la politique que j'applique personnellement (elle est fonction de l'usage final du serveur) : * Tous les operateurs du systeme sont dans grsec_sock_srv; * Les serveurs Apache et Websphere sont dans grsec_audit et dans grsec_tpe; * Si Apache n'a pas besoin d'etablir de connexions distantes (Attention, c'est le cas pour le module WAS), je place Apache dans grsec_sock_cl; * Les eventuels utilisateurs guests sont places dans grsec_sockall et dans grsec_tpe. Une derniere note relative a l'interaction de notre noyau avec une installation Websphere telle que presentee dans 'V. INSTALLATION ET SECURISATION D'UN SERVEUR D'APPLICATION WEBSPHERE' : Si vous avez suivi la procedure d'installation de ce document le serveur d'application ne pourra plus demarrer et vous obtiendrez un message d'erreur du type : [...] kernel: grsec: From a.b.c.d: Proc handler: being fed garbage 2 bytes\ sent 208 required [...] kernel: PAX: From a.b.c.d: terminating task: /usr/local/websphere500/\ appserver/java/jre/bin/exe/java(java):4773, uid/euid: [...] [...] kernel:grsec: From a.b.c.d: attempted resource overstep by requesting\ 4096 for RLIMIT_CORE against limit 0 by (java:4773) [...], parent (start\ Server.sh:19644) [...] Vous pouvez corriger ce probleme via : cd /home/system/applis/chpax-0.5/ ./chpax -s /usr/local/websphere500/appserver/java/jre/bin/exe/java Et verifiez que vous obtenez ceci avec chpax -v : * Paging based PAGE_EXEC : enabled * Trampolines : not emulated * mprotect() : restricted * mmap() base : randomized * ET_EXEC base : not randomized * Segmentation based PAGE_EXEC : disabled Pour finir, le positionnement de l'utilisateur WAS dans le groupe d'audit genere une quantite quelque peu importante de logs lors des stop/start du serveur d'application, ceux-ci sont cependant facilement tracables par le critere "parent (stopServer.sh:17515)" par exemple. 5.8.3. Installation et configuration de Gradm et des ACLs Avant de commencer, sachez que cette installation va fortement diminuer les droits de l'utilisateur root. Pour effectuer des taches d'administration telles que la mise a jour des packages ou un reboot du serveur, vous devrez utiliser la commande 'gradm -a' de facon a passer en mode administration. Lors de l'installation de Gradm, vous aurez a saisir un mot de passe pour la commande Gradm (passage en mode administration ou desactivation des ACLs), il parait donc judicieux de saisir un mot de passe complexe ?! Recuperez l'archive gradm-1.9.12.tar.gz sur le site de GrSecurity et stockez la dans /home/system/download puis verifiez le MD5. On installe : cd /home/system/applis/ tar zxvf ../download/gradm-1.9.12.tar.gz chown -R root:root gradm/ find . -type f -exec chmod 640 {} \; find . -type d -exec chmod 750 {} \; make && make install => Le mot de passe vous est demande et est stocke dans /etc/grsec/pw. Une configuration initiale est desormais positionnee dans /etc/grsec/acl et sera utilisee si vous activez la securite - ce que vous ne faites pas bien evidemment ! Nous recuperons les acls fournies pour debian et les utilisons : cd /etc/grsec/ cp -r /home/system/applis/gradm/debian_secure_acls . chmod 700 debian_secure_acls/ chmod 600 debian_secure_acls/* mv acl acl.orig mv debian_secure_acls/default acl Conformement a cette documentation, nous n'avons pas besoin des acls suivantes (certaines sont disponibles en annexe) donc : cd debian_secure_acls/ rm -f apache cron inetd ipop3d klogd mysqld postfix syslogd tcpd xfree86 Creez un repertoire /etc/grsec/debian-secinst, ajoutez y les fichiers presentes en 'ANNEXE 13 - ACLs GrSecurity pour Debian-secinst' puis : cd /etc/grsec chmod 700 debian-secinst chmod 600 debian-secinst/* Note : Ne prenez que les fichiers d'ACL dont vous avez besoin pour votre propre systeme et configurez les selon vos besoins ! Modifiez le fichier /etc/grsec/acl avec le patch present en 'ANNEXE 13' : cd /etc/grsec patch < patch => File to patch ? entrez acl puis supprimez le patch Si vous avez installe un serveur Web, n'oubliez pas d'editer le fichier /etc/grsec/debian_secinst/Dmn_apache pour definir les ports sur lesquels le serveur Apache est autorise a se positionner en ecoute. Si vous avez modifie les ports d'ecoute du demon SSH, faites de meme avec le fichier /etc/grsec/debian_secure_acls/sshd. Si vous avez configure d'autre device de logging pour le syslogd (comme par exemple en suivant les explications de '5.7. Installation de Prelude-Lml.'), editez /etc/grsec/debian_secure_acls/syslogd pour les configurer. Vous pouvez maintenant croiser les doigts et activer les acls avec la commande 'gradm -E'. Si tout se passe bien, vous pouvez maintenant modifier le script /home\ /system/security/apply_grsec.sh pour ajouter la commande 'gradm -E' de facon a ce que les ACLs soient mises en place au boot du systeme. ================================================================================ I. INFORMATIONS SUR LA GESTION DE PACKAGES DEBIAN ================================================= La gestion des packages Debian peut s'effectuer par le biais de plusieurs commandes. => Consultez les man suivants : dselect , apt-get , dpkg Nous nous contentons de presenter ici quelques d'aide-memoires. NDR: Attention aux permissions systeme de fichiers associees a vos partitions. Mise a jour du systeme avec apt : * apt-get update * apt-get dist-upgrade -d * cd /var/cache/apt/archives * Verifier l'empreinte md5 du(des) package(s) telecharge(s). * dpkg-deb -I {nom_du_package}.deb md5sums => Verifiez que les md5 sont corrects (?) * apt-get dist-upgrade Quelques utilisations de dpkg : * dpkg -i package => Installer un .deb * dpkg -I package => Informations sur le .deb * dpkg -c package => Liste les fichiers d'un .deb * dpkg -x package toto => Extrait les fichiers du .deb dans le repertoire 'toto'. * dpkg -l => Tous les packages installes. * dpkg -l '*pattern*' => Tous les packages installes relatifs a 'pattern'. * dpkg -L package => Liste des fichiers d'un package installe. * dpkg -s package => Statut d'un package Repertoires relatifs a la gestion de package Debian : /var/cache/apt/archives => contient la liste des packages telecharges s'ils ne sont pas effaces. /var/lib/dpkg/info/* => contient les informations relatives aux packages installes. I.a. Creation d'un package Debian --------------------------------- AVERTISSEMENT : Cette creation de package est plus artisanale qu'autre chose. Je vous conseille la lecture de www.debian.org/doc/manuals/maint-guide/ pour la creation de package .deb standards. NDR : Nous nous servons de l'utilitaire 'fakeroot' dont je ne vous reccomande pas l'installation sur un serveur de production. On cree l'arborescence : mkdir ~/tmp/debian-secinst-doc-0.0.1 cd ~/tmp/debian-secinst-doc-0.0.1 mkdir -p usr/local/doc cp ~/debian-secinst.txt ./usr/local/doc/ mkdir DEBIAN On cree les fichiers de controle : cat > ./DEBIAN/control << EOF Package: debian-secinst-doc Version: 0.0.1 Section: doc Priority: optional Architecture: all Depends: Maintainer: Simon Castro Description: Installation et securisation d'une station Debian Woody\ stable Installation et securisation d'une station sous Linux Debian 3.0 stable. EOF cat > ./DEBIAN/copyright << EOF debian-secinst-doc Copyright (c) 2003 - Simon Castro This package may be downloaded from http://www.entreelibre.com/scastro You are free to distribute this software under the terms of the GNU General Public License. On Debian systems, the complete text of the GNU General Public License can be found in the file '/usr/share/common/common-licenses/GPL' EOF cat > ./DEBIAN/changelog << EOF debian-secinst-doc (0.0.1) * Initial release - Simon Castro -- Simon Castro 2003-03-17 EOF On genere les empreintes MD5 : find usr/ -type f -exec /usr/bin/md5sum {} >> ./DEBIAN/md5sums \; On compresse ce qui doit l'etre et on positionne les droits : gzip --best ./DEBIAN/changelog find . -type d | xargs chmod 755 find . -type f | xargs chmod 644 On cree le package : fakeroot dpkg-deb --build ./debian-secinst-doc-0.0.1/\ debian-secinst-doc-0.0.1.deb ================================================================================ II. COMPILATION DU NOYAU ======================== II.a. Compilation d'un noyau personnalise ----------------------------------------- NDR : exemple avec une recuperation pour la premiere fois des sources du noyau 2.2.20. Dans le cas contraire, sauvegardez votre fichier de configuration puis make clean, make mrproper et verifiez EXTRAVERSION dans ./Makefile. Recuperez les sources puis allez dans /usr/src. ln -s kernel-source-2.2.20 linux_perso cd linux_perso sed 's/^EXTRAVERSION\ =$/EXTRAVERSION\ =\ -perso/' Makefile > .perso cat .perso > Makefile && rm -f .perso make menuconfig => Choisissez vos options et quittez en sauvant make dep make modules make bzImage make modules_install II.b. Installation du noyau --------------------------- L'exemple pris ici est relatif a la premiere installation d'un nouveau noyau sur le systeme. cp archi/i386/boot/bzImage /boot/vmlinuz-2.2.20-perso cp System.map /boot/System.map-2.2.20-perso cd /boot/ ln -s vmlinuz-2.2.20-perso linux_perso Editer le fichier /etc/lilo.conf pour ajouter l'entree suivante : image=/boot/linux_perso label=perso read-only restricted Lancez la commande 'lilo' pour mettre a jour le systeme. Rebootez le systeme et si tout est correct : cp /usr/src/linux_perso/.config /boot/config-2.2.20-perso puis modifiez le noyau a lancer par defaut ? ================================================================================ III. ADMINISTRATION : QUELQUES CONSEILS ======================================= Sont presentes ici quelques conseils relatifs a l'administration de la station installee. III.a. J'ai oublie de preparer une partition ... ------------------------------------------------ Vous voulez installer une partition supplementaire que vous n'aviez pas prevue auparavant (ex: /var/www ou /var/mysql ...). Il doit vous rester de la place sur la derniere partition que vous aviez cree en '1.5. Partitionnez le disque dur'. Nous allons nous servir de cet espace pour ajouter une nouvelle partition. NDR: Faites bien ATTENTION a ce que vous allez faire ensuite... Commencez par sauvegarder ce que vous aviez installe sur cette partition. umount /local fdisk /dev/sda * Entrez 'p' pour afficher la table de partitions. => Notre partition (dans cet exemple !) est /dev/sda11 * Entrez 'd' puis '11' pour effacer cette partition. * Entrez 'n' puis puis '+64M' => Nous ajoutons une nouvelle partition de 64M. * Entrez 'n' puis puis => Nous ajoutons une nouvelle partition pour l'espace disque restant. * Entrez 'w' pour ecrire la nouvelle table de partition sur le disque et quitter. Editez /etc/fstab pour supprimer la reference a l'ancienne partition /dev/sda11. Rebootez. Formattez les deux nouvelles partitions : mke2fs /dev/sda11 mke2fs /dev/sda12 Verifiez les deux nouvelles partitions : e2fsck /dev/hda11 e2fsck /dev/hda12 Editez /etc/fstab pour refleter le changement : /dev/sda11 /var/www ext2 rw,nosuid,nodev 0 2 /dev/sda12 /local ext2 ro,noexec,nosuid,nodev 0 2 Creez le point d'entree /var/www et remontez les partitions : mkdir /var/www chmod 755 /var/www mount /var/www mount /local mount -o remount,rw /local Copiez a nouveau votre backup de donnees. mount -o remount,ro /local III.b. Dselect ne parvient pas a configurer les packages a cause des permissions de /tmp ------------------------------------------------------------------------------ Apres avoir verifie que le package que vous voulez installez/configurer est correct. mount -o remount,exec /tmp Configurez votre package mount -o remount,defaults /tmp III.c. SmartHost Exim --------------------- Exim doit normalement etre configure pour gerer vos Mails en local si vous avez utilise cette documentation pour l'installation. Nous configurons maintenant exim pour qu'il soit en mesure de transmettre les mails a destination d'un domaine x.yyy vers un serveur SMTP externe smtp.x.yyy qui se chargera de l'acheminement. Sauvegardez votre configuration : cp /etc/exim/exim.conf /etc/exim/exim.conf.orig Editez la configuration Exim (/etc/exim/exim.conf) : * Entrez le domaine pour qui vous autorisez le relais : relay_domains = x.yyy * Commentez (si vous le voulez) : host_lookup = * Ajoutez dans "TRANSPORTS CONFIGURATION" : remote_smtp: driver = smtp Ajoutez dans "ROUTERS CONFIGURATION" : smarthost: driver = domainlist transport = remote_smtp route_list = "* smtp.x.yyy bydns_a" III.d. Client Samba ------------------- Votre noyau doit etre compile avec l'option : CONFIG_SMB_FS=y Installez le package smbfs : apt-get install smbfs -d md5sum smbfs_2.2.3a-12.3_i386.deb e63c92036a14f97a818616160bf9515d smbfs_2.2.3a-12.3_i386.deb mount -o remount,rw /usr/ apt-get install smbfs mount -o remount /usr/ Montage de partition avec mount : mount -t smbfs -o username={USER} //{WIN32_HOSTNAME}/{SHARE_NAME}\ /{MOUNT_POINT} (Si vous le voulez.) Installez les packages pour SmbClient : apt-get install smbclient libcupsys2 samba-common -d md5sum smbclient_2.2.3a-12.3_i386.deb libcupsys2_1.1.14-5_i386.deb\ samba-common_2.2.3a-12.3_i386.deb aa9589efcb9639a18eefb85ad90554ca smbclient_2.2.3a-12.3_i386.deb f9ecb4934ee098f2ffa9f4939effb328 libcupsys2_1.1.14-5_i386.deb 1a36ef5c7b682d913d22bb933d890793 samba-common_2.2.3a-12.3_i386.deb mount -o remount,rw /usr/ mount -o remount,exec /tmp/ apt-get install smbclient libcupsys2 samba-common Yes Entrez le workgroup Password encryption : yes mount -o remount /usr/ mount -o remount /tmp/ Test de connexion avec smbclient : smbclient //{WIN32_HOSTNAME}/{SHARE_NAME} -I {IP_ADDRESS} -U {USER} ================================================================================ IV. INSTALLATION ET SECURISATION D'UN SERVEUR APACHE MODSSL =========================================================== Les actions realisees ici ont ete realises apres avoir suivi les etapes suivantes de la procedure generale : 1. INSTALLATION DU SYSTEME 2. CONFIGURATION INITIALE DU SYSTEME 3. PREMIER ACCES AU SYSTEME ET SECURISATION MINIMALE 4. SECURISATION MODEREE 5.4. Gestion des quotas 5.5. Securisation PAM : Gestion des limites IV.a. Installation ------------------ Vous devez avoir une partition /dev/sda11 dans /etc/fstab du type : /dev/sda11 /var/www ext2 rw,nosuid,nodev 0 2 apt-get update apt-get install apache apache-doc libapache-mod-ssl libapache-mod-ssl-doc -d => Acceptez les packages: 'apache apache-common apache-doc libapache-mod-ssl libapache-mod-ssl-doc libexpat1 openssl'. cd /var/cache/apt/archives/ for i in `echo *.deb` ; do md5sum $i;done 98146bac67cff4cf252e4ff2bbbb6560 apache-common_1.3.26-0woody3_i386.deb a13fce3a93f137ef243bc743e7b5a57d apache-doc_1.3.26-0woody3_all.deb 95d81b2239554383c56c7d193c476ddb apache_1.3.26-0woody3_i386.deb 7c5f6a20d23ec97bd7d0f8ec5bd14172 libapache-mod-ssl-doc_2.8.9-2.1_all.deb 9756a3701103f8779c65455c968898c3 libapache-mod-ssl_2.8.9-2.1_i386.deb 95f921ff15b8bf124ec9e9e6a3230774 libexpat1_1.95.2-6_i386.deb 8af019bb8fc566504db03d88f75b782a openssl_0.9.6c-2.woody.2_i386.deb mount -o remount,rw /usr/ mount -o remount,exec /tmp/ apt-get install apache apache-doc libapache-mod-ssl libapache-mod-ssl-doc mount -o remount,ro /usr/ mount -o remount,noexec /tmp/ /etc/init.d/apache stop IV.b. Configuration initiale ---------------------------- Ajoutez les regles suivantes a votre firewall et rechargez le : # Allow anyone to reach us on HTTP/HTTPS tcp ports $IPCH -A input -p tcp --sport 1024: --dport 80 -j ACCEPT $IPCH -A output -p tcp --sport 80 --dport 1024: -j ACCEPT Creez une arborescence : mkdir /var/www/htdocs chmod 750 /var/www/htdocs && chown root:www-data /var/www/htdocs Positionnez des permissions restrictives sur la configuration : chmod 750 /etc/apache /etc/apache/ssl* chmod 640 /etc/apache/*.conf Preparez le certificat (ou recuperez le votre) : mkdir /etc/apache/ssl cd /etc/apache/ssl openssl genrsa -out {HOSTNAME}.key 2048 openssl req -new -x509 -days 365 -key m18412.key -out m18412.crt Mettez en place un fichier de configuration minimal : cd /etc/apache cp httpd.conf httpd.conf.orig Remplacez /etc/apache/httpd.conf par le fichier de configuration present en 'ANNEXE 6 - Fichier de configuration Apache minimal'. Creez le groupe webadm: groupadd webadm Preparez le repertoire de logs : mkdir /var/log/apache chown root:webadm /var/log/apache && chmod 3750 /var/log/apache Preparez la rotation des logs en modifiant le fichier /etc/logrotate.d/apache sur les lignes suivantes (Vous devriez adapter cette configuration a votre environnement en creant un script d'archivage dans un repertoire distinct) : daily rotate 365 create 640 root webadm Demarrez et testez Apache : /etc/init.d/apache start Ajoutez vos utilisateurs/administrateurs dans un groupe webadm qui aura des droits sur l'arborescence web : groupadd webadm Pour les administrateurs: usermod -g {UserName} -G adm,users,webadm,www-data {UserName} Pour les utilisateurs : usermod -g users -G webadm,www-data {UserName} Avec 'visudo', ajoutez les entrees suivantes dans /etc/sudoers pour permettre a vos administrateurs web d'administrer le serveur Apache : # Cmnd alias specification [...] Cmnd_Alias APACHECTL=/usr/sbin/apachectl [...] # User privilege specification [...] %webadm ALL=NOPASSWD:APACHECTL L'arborescence des sous-repertoires de 'htdocs' peut etre du type : mkdir /var/www/htdocs/{directory_name} chown root:webadm /var/www/htdocs/{directory_name} chmod 3775 /var/www/htdocs/{directory_name} Vos administrateurs web (groupes webadm et www-data) peuvent desormais acceder a cette arborescence et poser les fichiers necessaires au site des facons suivantes : * {UserName}:webadm => Par defaut * {UserName}:www-data => Avec un chown. => Attention, dans les deux cas aux permissions affectees aux fichiers, elles doivent au moins etre en 644 pour le premier cas et en 640 pour le second cas. IV.c. Integration des quotas ---------------------------- Groupe Partition Place Soft Hard Inodes Soft Hard adm /tmp 185M 50M 60M 49K 15K 20K adm /home 465M 100M 125M 122K 20K 30K adm /var/www 279M 1 1 1 1 1 users /tmp 185M 50M 60M 49K 15K 20K users /home 465M 100M 125M 122K 10K 15K users /var/www 279M 1 1 1 1 1 webadm /tmp 185M 1 1 49K 1 1 webadm /home 465M 100M 125M 122K 10K 15K webadm /var/www 279M 200M 225M 73K 50K 60K www-data /tmp 185M 1 1 49K 1 1 www-data /home 465M 1 1 122K 1 1 www-data /var/www 279M 40M 50M 73K 1K 10K Utilisateur Partition Place Soft Hard Inodes Soft Hard quotauser /tmp 185M 5M 10M 49K 1,5K 5K quotauser /home 465M 15M 20M 122K 3K 5K quotauser /var/www 279M 5M 10M 73K 1K 2K IV.d. Empreinte du systeme -------------------------- Suivez la procedure presentee en '5.3. Conserver une empreinte de verification d'integrite du systeme.' IV.e. Sauvegarde du systeme --------------------------- Referez vous a '4.11. Backup du systeme sur une partition specifique'. ================================================================================ V. INSTALLATION ET SECURISATION D'UN SERVEUR D'APPLICATION WEBSPHERE ==================================================================== Ce que nous abordons ici a ete realise apres le suivi de la partie 'IV. INSTALLATION ET SECURISATION D'UN SERVEUR APACHE MODSSL'. Le CD d'installation utilise de Websphere contient la version 5.0 pour Linux et je rappelle qu'IBM Websphere est un logiciel payant et que le piratage est interdit. Pour commencer, recuperez le fichier 'doc/InstallGuide_fr.PDF' et lisez le :) Et pour finir, je n'aborde pas ici la configuration/administration du serveur d'application en lui-meme. L'installation du wrapper libsafe (presentee en 5.2. Installation du wrapper libsafe) a ete realisee avec succes une fois l'installation de Websphere terminee. V.a. Installation ----------------- Cette partie presente la procedure a suivre pour une installation 'standard' d'IBM Websphere Application Server. mount -o remount,rw /usr /etc/init.d/apache stop cp /etc/apache/httpd.conf /etc/apache/httpd_before_was.conf mkdir /usr/local/websphere500 chown root:root /usr/local/websphere500 chmod 755 /usr/local/websphere500 mkdir /usr/local/websphere500/install mount /dev/cdrom /mnt cd /usr/local/websphere500/install cp /mnt/linuxi386/responsefile.txt . Editez responsefile.txt de telle sorte que : [...] < -P wasBean.installLocation="C:\Program Files\WebSphere\AppServer" > -P wasBean.installLocation="/usr/local/websphere500/appserver" [...] < -P mqSeriesBean.active="true" < -P mqSeriesServerBean.active="true" < -P mqSeriesSamplesBean.active="true" > -P mqSeriesBean.active="false" > -P mqSeriesServerBean.active="false" > -P mqSeriesSamplesBean.active="false" [...] < -P ihsFeatureBean.active="true" < -P ihsPluginBean.active="true" < -P apachePluginBean.active="false" > -P ihsFeatureBean.active="false" > -P ihsPluginBean.active="false" > -P apachePluginBean.active="true" [...] < -W nodeNameBean.nodeName="DefaultNode" < -W nodeNameBean.hostName="127.0.0.1" > -W nodeNameBean.nodeName="{YOUR_NODE_NAME}" > -W nodeNameBean.hostName="{YOUR_IP_ADDRESS}" [...] < -W serviceSettingsWizardBean.active="true" < -W serviceSettingsWizardBean.ihsChoice="true" < -W serviceSettingsWizardBean.wasChoice="true" < -W serviceSettingsWizardBean.userName="YOUR_USER_NAME" < -W serviceSettingsWizardBean.password="YOUR_PASSWORD" > #-W serviceSettingsWizardBean.active="true" > #-W serviceSettingsWizardBean.ihsChoice="true" > #-W serviceSettingsWizardBean.wasChoice="true" > #-W serviceSettingsWizardBean.userName="YOUR_USER_NAME" > #-W serviceSettingsWizardBean.password="YOUR_PASSWORD" [...] < -W defaultApacheConfigFileLocationBean.value= > -W defaultApacheConfigFileLocationBean.value=/etc/apache/httpd.conf [...] cd /mnt/linuxi386/ ./install -options /usr/local/websphere500/install/responsefile.txt NDR : Des fichiers de log sont crees dans /tmp : vous pouvez suivre le processus d'installation en les consultant. Quand l'installation est terminee : umount /mnt mv /etc/apache/httpd_before_was.conf /etc/apache/httpd.conf Ajoutez ce qui suit au fichier /etc/apache/httpd.conf avant les directives VirtualHost ######################## ### Plugin WebSphere ### ######################## LoadModule app_server_http_module\ /usr/local/websphere500/appserver/bin/mod_app_server_http.so WebSpherePluginConfig\ /usr/local/websphere500/appserver/config/cells/plugin-cfg.xml #Alias /WSsamples /usr/local/websphere500/appserver/WSsamples #Alias /IBMWebAS/ /usr/local/websphere500/appserver/web/ cd /usr/local/websphere500/appserver/config/cells/ cp plugin-cfg.xml plugin-cfg.xml.orig cd /usr/local/websphere500/appserver/bin ./GenPluginCfg.sh /etc/init.d/apache start => Verifiez que Apache tourne correctement. => Si vous rencontrez des erreurs, editez '/usr/local/websphere500/\ appserver/config/cells/plugin-cfg.xml' et au niveau de la ligne\ ' Consultez ensuite le fichier '/usr/local/websphere500/appserver/\ logs/http_plugin.log' apres avoir essaye de relancer Apache. Testez votre installation : cd /usr/local/websphere500/appserver/bin/ ./ivt.sh NDR : Patientez ... Le message '>ADMU3200I: Server launched. Waiting for\ initialization status.' dure longtemps ! => Le test d'installation via 'ivt' lance egalement le serveur d'application par defaut (server1) et celui-ci reste lance a la fin du test. => Vous pouvez donc tester que WAS est bien installe en entrant http://{@IP}/snoop dans un navigateur. V.b. Configuration initiale : Restauration du 'read-only' sur /usr, deplacement vers /var/was, attribution de permissions restreintes et execution du service WAS sous une identite restreinte ----------------------------------------------------------------------------- Stoppez le service Websphere si celui-ci est demarre : cd /usr/local/websphere500/appserver/bin/ ./stopServer.sh server1 Stoppez le serveur Apache si celui-ci est demarre : /etc/init.d/apache stop Creation d'un nouvel utilisateur : Creez un utilisateur pour le service Was et un groupe pour les administrateurs was : groupadd wasadm groupadd was adduser --no-create-home --disabled-password --quiet --ingroup was was Changing the user information for was Enter the new value, or press return for the default Full Name []: Ibm Websphere user Room Number []: Work Phone []: Home Phone []: Other []: Disabled Is the information correct? [y/n] y passwd -l was && chsh -s /bin/false was Creez des limites specifiques a cet utilisateur was dans le fichier /etc/security/limits.conf : was hard memlock 128000 was hard nofile 32000 was hard cpu 100 Deplacement vers /var/was et restauration du 'read-only' sur /usr : Vous devez avoir une partition /dev/sda12 dans /etc/fstab du type : /dev/sda12 /var/was ext2 rw,noexec,nosuid,nodev 0 2 Verifiez que la partition est montee, puis : chown root:was /var/was chmod 3770 /var/was Creez les repertoires dans /var/was : cd /var/was cp -r /usr/local/websphere500/appserver/config/ . cp -r /usr/local/websphere500/appserver/etc/ . cp -r /usr/local/websphere500/appserver/installableApps/ . cp -r /usr/local/websphere500/appserver/installedApps/ . cp -r /usr/local/websphere500/appserver/logs/ . cp -r /usr/local/websphere500/appserver/properties/ . cp -r /usr/local/websphere500/appserver/temp/ . cp -r /usr/local/websphere500/appserver/tranlog/ . cp -r /usr/local/websphere500/appserver/wstemp/ . Supprimez les repertoires dans /usr/local et creez les liens vers la partition Was : cd /usr/local/websphere500/appserver/ rm -rf config && ln -s /var/was/config/ config rm -rf etc && ln -s /var/was/etc/ etc rm -rf installableApps && ln -s /var/was/installableApps/ installableApps rm -rf installedApps && ln -s /var/was/installedApps/ installedApps rm -rf logs && ln -s /var/was/logs/ logs rm -rf properties && ln -s /var/was/properties/ properties rm -rf temp && ln -s /var/was/temp/ temp rm -rf tranlog && ln -s /var/was/tranlog/ tranlog rm -rf wstemp && ln -s /var/was/wstemp/ wstemp Positionnez les permissions appropriees sur le repertoire /var/was : cd /var/was chown -R root:was * find . -type d -perm -750 -exec chmod 2770 \{\} \; find . -type f -perm -640 -exec chmod 660 \{\} \; Positionnez les permissions appropriees sur le repertoire /usr/local/websphere500 : chown root:was /usr/local/websphere500 /usr/local/websphere500/appserver\ && chmod 750 /usr/local/websphere500 /usr/local/websphere500/appserver cd /usr/local/websphere500/appserver chown -R root:was * find . -type d -exec chmod 750 \{\} \; --- NOTE --- NDR : La j'ai fait cette connerie :( => 'find . -type f -exec chmod 640 \{\} \;' ... Correction a la prochaine install pour quelque chose de meilleur que : find . -type f -name "*sh" -exec chmod 750 \{\} \; find ./java/bin -type f -exec chmod 750 \{\} \; find ./java/jre/bin -type f -exec chmod 750 \{\} \; --- NOTE --- Execution de Was sous une identite restreinte : Modifiez les parametres de la JVM pour une adaptation a VOTRE (Mon