Ce document de Simon Castro presente l'installation et la securisation d'une station GNU Linux Debian 3.0 stable.
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.
---- Phpnuke a une limite de 64ko donc pour avoir le tuto au complet Cliquez LA
===============================================================================
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;34mue[0m@h:[e[1;31mte[0m]:e[1;32mwe[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 /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:
|