Installation et sécurisation d'une station Debian 3.0 stable15/05/2004
5. SECURISATION APPROFONDIE
5.1. Installation du patch OpenWall
5.2. Installation du wrapper libsafe
5.3. Conserver une empreinte de vérification d'intégrité du système
5.4. Gestion des quotas
5.5. Sécurisation PAM : Gestion des limites
5.6. Disquette de secours avec Tomsrtbt
5.7. Installation de Prelude-Lml pour une remontee de log securisée vers un serveur centralisé
5.7.1. Configuration initiale
5.8. Sécurisation approfondie avec GrSecurity
5.8.1. Patch du noyau : Compilation et installation
5.8.2. Configuration du système
5.8.3. Installation et configuration de Gradm et des ACLs
5. SECURISATION APPROFONDIE
NDR : Vous devez savoir ce que vous faites dans les parties présentées ici.
5.1. Installation du patch OpenWall
Le patch est téléchargeable 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 prépare 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 à ce moment, vous trouverez un nouveau menu
nomme 'Security options'. Deux options demeurent non-activées après le passage
du patch :
'Restricted /proc'
'Destroy shared memory segments not in use'
=> Vous pouvez activer 'Restricted /proc' mais il vous faudra une
configuration supplémentaire des comptes administrateurs avec un outil
comme sudo pour éviter que les admins ne passent root à 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 défaut 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 système (?!).
5.3. Conserver une empreinte de vérification d'intégrité du système
Installez le package Debian :
mount -o remount,rw /usr
dselect => installation de 'aide'
=> La préconfiguration ne fonctionne pas, car elle tente d'exécuter un
script dans /tmp
=> 'Initalize aide database ?' -> No
mount -o remount,ro /usr
Préparez 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 données : aide --init -V200
NDR : Est-il trivial de vous reccomander de ne pas faire de modifications
pendant l'initialisation ?
Première sauvegarde de la base de données (la suite est donnée à titre
d'exemple) :
Insérez 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 protégez la en écriture.
Vérifier le système avec le support de sauvegarde :
Insérez la disquette
mount -o ro /dev/fd0 /mnt && cd /mnt
./aide -c ./aide.conf --check -V200
cd && umount /mnt
Mise à jour de la base de données sauvegardée :
aide --update -V200
cd /home/system/aide
mv aide.db.new aide.db
puis sauvegardez cette nouvelle base comme pour la création.
NDR : Ce qui précède est donné à titre d'exemple, Il serait plus approprié en
cas de doute de booter le système sur un support amovible sur protégé en
écriture et d'effectuer la verification d'intégrité à partir de ce
support.
MAN : aide, aide.conf
NDR : Vous devez commencer a connaitre le système donc je n'explique plus les
details déjà 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 première 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 à obtenir les informations sur
l'ensemble du disque pour le choix des quotas précédents.
Créez un utilisateur fictif qui servira de modèle 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 modèle d'utilisateur :
Lancez 'edquota -u quotauser' et éditez les quotas :
/dev/sda8 0 2000 2000 0 500 500
/dev/sda10 0 10000 10000 0 1000 1000
Vous pouvez vérifier les quotas mis en place avec : 'quota -vu quotauser'
Pour un nouvel utilisateur {username}, vous pouvez associer ce modèle de
quotas avec 'edquota -p quotauser {username}'.
Modifiez '/etc/adduser.conf' pour inclure ce modàle dans la définition des
quotas :
QUOTAUSER="quotauser"
Activation - Désactivation - Etat des quotas (quelques exemples) :
Activation : /etc/init.d/quota start
Désactivation : /etc/init.d/quota stop
Etat (Active ou Desactive ? ) : quotaon -pa
Statistiques : repquotas -ugva
NDR : Le fichier d'initialisation des quotas au boot est placé dans /etc/rcS.d
et sera donc active à chaque redémarrage de la station.
MAN : quotacheck, quotaon, quotaoff, quotastats, repquota, edquota, quota
5.5. Sécurisation PAM : Gestion des limites
Limites aux sessions :
Vérifiez avec 'grep pam_limits.so /etc/pam.d/ssh' que la librairie est
activee (c'est le cas par défaut).
Constatez avec 'grep pam_limits.so /etc/pam.d/login' que la librairie n'est
pas activée par défaut :
=> Activez la en décommentant la ligne.
=> Faites de même 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 téléchargeable 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/
Insérez une disquette vierge.
./install.s
Vous avez désormais une disquette de secours.
En rebootant sur la disquette, deux choix vous sont proposés :
* 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 securisée vers un serveur centralisé
L'installation de Prelude-Lml est désormais présentée dans une autre
documentation. Ne figurent ici que les aspects de configuration du moniteur
Prelude qui sont spécifique à l'installation de notre station sécurisée.
La nouvelle documentation est intitulée "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 remontée de certains des logs 'sécurité' générés par
la configuration présentée dans cette documentation.
NDR : Par la suite, nous emploierons le terme 'sonde' à la place de
'sensor'.
NDR : Cette configuration est minimale, je vous conseille, de lire les
documentations disponibles sur prelude et de procéder à votre propre
paramétrage. 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 à 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/sécurité.log :
< file = /var/log/auth.log
< file = /var/log/messages
> file = /var/log/sécurité.log
> file = /var/log/fw_accept.log
> file = /var/log/fw_deny.log
Nous allons charger notre propre série de règles :
< 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
Créez '/home/prelude/etc/prelude-lml/ruleset/debian-secinst.rules' :
# Customized prelude-lml rules file from debian-secinst v0.1.7 doc
# Simon Castro <scastro [at] entreelibre.com>
# 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;
Créez '/home/prelude/etc/prelude-lml/ruleset/ipchains.rules' a partir de
'ANNEXE 5 - Fichier de règles pour un support Ipchains avec Prelude-lml'
si vous utilisez un firewall IpChains.
Attribuez les permissions correctes aux fichiers crées :
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 défaut, vos fichiers de logs (dans /var/log) sécurité.log et fw_[deny|
accept].log doivent être en 640 et appartenir a root:adm (si vous avez
suivi cette procédure).
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 après avoir perdu ses privilèges super-utilisateur.
ATTENTION !!!
Et redemarrez la sonde prelude-lml :
/etc/init.d/preludelogmonitor.sh restart
5.8. Sécurisation approfondie avec GrSecurity
GrSecurity est constitue d'un patch pour le noyau Linux et d'un utilitaire
destine à être utilisé en espace utilisateur. Le patch accroît la sécurité du
système en apportant des restrictions aux systèmes de fichiers /proc et /tmp,
aux actions réalisables par des processus 'chrootes', en créant un espace de
stockage d'ACLs (Access Control Lists) permettant d'implémenter un système
base sur le modèle 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 également Pax : une protection du noyau permettant
l'implémentation de pages mémoire non exécutables et un espace d'adressage
aléatoire.
Nous allons tout d'abord commencer par patcher le noyau du système puis nous
aborderons l'intégration des listes de contrôle d'accès. 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
présente sur le site avant de procéder aux manipulations décrites ci-après...
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 à vous de choisir...
5.8.1. Patch du noyau : Compilation et installation
Récupérez le patch du noyau ainsi que chpax, vérifiez les MD5 et stockez les
dans /home/system/download/.
Récupérez les sources du noyau 2.4.22, vérifiez 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, récuperez 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
été utilisees lors de la rédaction de cette documentation sont présentées
dans 'ANNEXE 11 - Parametres de configuration d'un noyau GrSecurity' - puis
compilez et installez votre nouveau noyau en suivant la procédure présentée
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 système
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
appropriées pour les administrateurs non-root du serveur.
J'active l'option 'CONFIG_GRKERNSEC_CHROOT_SYSCTL' car je préfère créer
un script d'initialisation chargé de positionner les bonnes valeurs lors
du boot. Si vous préférez sécuriser "encore plus" votre installation,
désactivez 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 déjà utilisés sur votre système.
Une fois votre nouveau noyau installe, rebootez le système.
5.8.2. Configuration du système
Créez les groupes suivants :
for i in `echo grsec_tpe grsec_sockall grsec_sock_cl grsec_sock_srv grsec\
_audit`; do groupadd $i; done
Créez le fichier /etc/sysctl.conf.grsecurity à partir du fichier présent en
'ANNEXE 12 - Configuration Sysctl de GrSecurity' et parametrez ce fichier
selon vos besoins en mettant à jour les gid avec les groupes que vous venez
de créer.
!!! Attention !!! La suite peut rendre votre système 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 répond à vos
attentes, positionnez la variable 'grsec_lock' de sysctl.conf.grsecurity à
'1' puis créez le fichier '/home/system/security/apply_grsec.sh' :
#!/bin/sh
/sbin/sysctl -p /etc/sysctl.conf.grsecurity
Configurez le système pour que ce script soit appellé au boot :
cd /etc/rc2.d
ln -s /home/system/security/apply_grsec.sh S{XX}apply_grsec
où {XX} correspond à votre priorité de lancement par rapport aux autres
scripts exécutés lors du boot du système.
Modifiez votre fichier de configuration syslog pour stocker les alertes dans
le fichier de log sécurité grâce aux entrées suivantes :
kern.* %regex -m "PAX" %classic /var/log/sécurité.log
kern.* %regex -m "grsec" %classic /var/log/sécurité.log
La configuration initiale est terminée... Voici la politique que j'applique
personnellement (elle est fonction de l'usage final du serveur) :
Tous les operateurs du système 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'établir de connexions distantes (Attention,
c'est le cas pour le module WAS), je place Apache dans grsec_sock_cl;
Les éventuels utilisateurs guests sont placés dans grsec_sockall et dans
grsec_tpe.
Une dernière note relative à l'interaction de notre noyau avec une
installation Websphere telle que présentée dans 'V. INSTALLATION ET
SECURISATION D'UN SERVEUR D'APPLICATION WEBSPHERE' : Si vous avez suivi la
procédure d'installation de ce document le serveur d'application ne pourra
plus démarrer 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 require
[...] 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 vérifiez 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
génère une quantité quelque peu importante de logs lors des stop/start du
serveur d'applications, ceux-ci sont cependant facilement traçables par le
critère "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 tâches d'administration
telles que la mise à jour des packages ou un reboot du serveur, vous devrez
utiliser la commande 'gradm -a' de facon à passer en mode administration.
Lors de l'installation de Gradm, vous aurez à saisir un mot de passe pour la
commande Gradm (passage en mode administration ou désactivation des ACLs),
il paraît donc judicieux de saisir un mot de passe complexe ?!
Récupérez l'archive gradm-1.9.12.tar.gz sur le site de GrSecurity et stockez
la dans /home/system/download puis vérifiez 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 désormais positionnée dans /etc/grsec/acl et
sera utilisée si vous activez la sécurité - ce que vous ne faites pas bien
évidemment !
Nous récupérons 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 à 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
Créez un répertoire /etc/grsec/debian-secinst, ajoutez y les fichiers
présentés 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 système et configurez les selon vos besoins !
Modifiez le fichier /etc/grsec/acl avec le patch présent en 'ANNEXE 13' :
cd /etc/grsec
patch < patch
=> File to patch ? entrez acl puis supprimez le patch
Si vous avez installé un serveur Web, n'oubliez pas d'éditer le fichier
/etc/grsec/debian_secinst/Dmn_apache pour définir les ports sur lesquels le
serveur Apache est autorisé à se positionner en écoute.
Si vous avez modifie les ports d'écoute du démon SSH, faites de même avec le
fichier /etc/grsec/debian_secure_acls/sshd.
Si vous avez configuré 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 à ce que les ACLs soient mises en place au boot du système.
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 présent 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.
|