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.
	 
       |