Noyau patché avec GRSecurity

Configuration d’un noyau Linux 2.6, avec patchs GRSecurity (et certains de Gentoo)

Arrêtez de vous faire chi**, utilisez plutÎt le noyau hardened-sources fournit avec Gentoo

Sources

Le noyau Linux 2.6.14.6 est disponible sur le serveur FTP de Free :

ftp://ftp.free.fr/pub/linux/kernel/v2.6/linux-2.6.14.6.tar.bz2

Le patch GRSecurity 2.1.8 est disponible sur le site web du projet :

http://www.grsecurity.net/grsecurity-2.1.8-2.6.14.6-200601211647.patch.gz

Sources optionnelles

L’ensemble des patchs de la distribution Gentoo sont ici.

http://…/~dsd/genpatches/tarballs/genpatches-2.6.14-6.base.tar.bz2
http://…/~dsd/genpatches/tarballs/genpatches-2.6.14-6.extras.tar.bz2

Concernant genpatches (les patchs de Gentoo), tous ne sont pas nécessaires. Ils portent chacun un numéro :

1XXX critical fixes
1XX security
3XX arch-compat
9XX other
2XXX driver related patches
1XX network
3XX raid/storage
5XX graphics/sound
7XX motherboard
9XX other
3XXX performance patches
1XX cpu-task schedular & related
3XX disk/memory/swap I/O and management
5XX graphics/sound
9XX other
4XXX additional features
1XX network
3XX raid/storage
5XX graphics/sound
7XX filesystem
9XX other
5XXX experimental patches
1XX network
3XX raid/storage
5XX graphics/sound
7XX filesystem
9XX other

Les patchs à choisir dépendent du systÚme cible (desktop, portable, serveur…). Plus d’informations dans le fichier 0000_README.

Préparation

Appliquons les patch GRSecurity (dans le répertoire des sources du noyau).

gzcat ../grsecurity-2.1.8-2.6.14.6-200601211647.patch.gz | patch -p1
patching file Makefile
patching file arch/alpha/kernel/module.c
patching file arch/alpha/kernel/osf_sys.c
patching file arch/alpha/kernel/ptrace.c
patching file arch/alpha/mm/fault.c
patching file arch/arm/mm/mmap.c

Configuration

Configurez le noyau, comme d’habitude. De nouveaux menus sont apparus dans Security options. Activez (au moins) ce genre d’options (pensez à l’aide si vous doutez) :

01 [*] Deny writing to /dev/kmem, /dev/mem, and /dev/port
02 [*] Deter exploit bruteforcing
03 [*] Proc restrictions
04 [*] Linking restrictions
05 [*] FIFO restrictions
06 [*] Chroot jail restrictions
07 [*] Log execs within chroot
08 [*] (Un)Mount logging
09 [*] Signal logging
10 [*] Fork failure logging
11 [*] Time change
12 [*] Destroy unused shared memorylogging
13 [*] Dmesg(8) restriction
14 [*] Randomized PIDs
15 [*] Larger entropy pools
16 [*] Randomized TCP source ports
17 [*] Sysctl support
18 (10) Seconds in between log messages (minimum)
19 (4) Number of messages in a burst (maximum) (NEW)

Le reste de la configuration/installation du noyau ne change pas.

sysctl.conf

Pour (dés)activer toutes ces petites options, pensez au fichier /etc/sysctl.conf (et oubliez les echo 1 > /proc/... merdiques) :

kernel.grsecurity.audit_chdir = 0
kernel.grsecurity.audit_mount = 1
kernel.grsecurity.chroot_caps = 1
kernel.grsecurity.chroot_deny_fchdir = 0
kernel.grsecurity.chroot_deny_mknod = 1
kernel.grsecurity.chroot_deny_mount = 1
kernel.grsecurity.chroot_deny_shmat = 1
kernel.grsecurity.chroot_deny_sysctl = 1
kernel.grsecurity.chroot_enforce_chdir = 1
kernel.grsecurity.chroot_execlog = 1
kernel.grsecurity.chroot_findtask = 0
kernel.grsecurity.destroy_unused_shm = 1
kernel.grsecurity.exec_logging = 0
kernel.grsecurity.fifo_restrictions = 0
kernel.grsecurity.forkfail_logging = 1
kernel.grsecurity.grsec_lock = 0
kernel.grsecurity.linking_restrictions = 0
kernel.grsecurity.rand_pids = 1
kernel.grsecurity.rand_tcp_src_ports = 1
kernel.grsecurity.signal_logging = 1
kernel.grsecurity.timechange_logging = 1

suivi de

sysctl -p

Voilà. C’est un bon début ;)

Attention ! GRSecurity n’est pas la solution ultime à vos problÚmes de sécurité ! Il ne remplacera jamais une administration saine et sécurisée.