PaX est un ensemble de patchs pour renforcer le noyau en protégeant le système des dépassements de pile et de buffers. Il y a trois types de fonctionnalités :
| Nom | Option | Description |
|---|---|---|
| PAGEEXEC | P |
Le kernel va protéger les pages de mémoire non exécutable à l’aide d’instruction CPU |
| SEGMEXEC | S |
Comme PAGEEXEC sauf que cette fonctionnalité utilisation les outils de segmentation du CPU (disponible uniquement sur x86) |
| EMUTRAMP | E |
Permet d’émuler les trampolines (morceaux de code générés à la volé) pour les processus qui en ont besoin (comme les compilateurs JIT) |
| MPROTECT | M |
Cette option empêche l’ajout de nouvelles pages exécutables dans un processus tournant |
| RANDMMAP | R |
Ajoute de l’aléa dans l’attribution des adresses mémoires allouées par les requêtes mmap() |
| RANDUSTACK | R |
Ajoute de l’aléa dans les adresses de la pile userland d’une tâche. Toutes les tâches ont une pile userland créée lors d’un execve(). Cette pile est indispensable puisqu’elle permet de passer les arguments et l’environnement au programme qui est exécuté |
Les options présentés ci-dessus sont activables ou désactivables en fonction d’un binaire pour des raisons de compatibilité. Ces modifications se font à l’aide des commandes paxctl et paxctl-ng. Les options des processus en cours d’exécution sont visibles grâce à la commande pspax.
La commande paxtest blackhat permet de vérifier le bon fonctionnement de PaX.
Permet de limiter l’accès à /proc, la fonction chroot et le link des fichiers.
Créer un compte admin et lui donner des droits restreint (appat)
Chechker la conformité des packages rpmavec rpm -K, si elle ne renvoie pas OK, c’est que le pacquet a été altéré
Configurer yum pour activer la vérification automatique de la signature GPG de chaque package installé
/etc/yum.conf : gpgcheck=1
Créer un password pour GRUB
Désactiver le démarrage interactif de la machine (ce mode permet de démarrer un à un les service)
/etc/sysconfig/init -> PROMPT=no
Forcer l’utilisation de mot de passe fort avec le module pam_cracklib.so
Bloquer compte inactif : /etc/pam.d/login -> auth required pam_lastlog.so inactive=10
Désactiver connection directement avec le compte root via SSH
/etc/ssh/sshd_config -> PermitRootLogin no
Déconnecter automatiquement les comptes inactif (après un connection sur un autre compte par exemple)
placer dans /etc/profile/profile.d un script contenant ceci :
if [ "$EUID" = "0" ] || [ "$USER" = "root" ] ; then
#Limite pour user root
TMOUT=900
else
#Limite pour les autres
TMOUT=3600
fi
#Place la variable TMOUT en read-only
readonly TMOUT
export TMOUT
Et pour la session SSh modifier la variable CientAliveInterval dans le fichier /etc/ssh/ssh_config
Eteindre certains services et les désactiver au boot
Placer un script d’update dans la crontab
dans /etc/profile/profile.d, ajouter un script contenant :
umask 027
Modification conf ssh :
PermitRootLogin no PasswordAuthentification no
Mettre un test en crontab de la dernière date de mise à jour via yum