Description
Tout bon linuxien sait que le partitionnement système se gère à partir du
fichier /etc/fstab
…
Modifions la configuration par défaut, qui utilise le drapeau defaults
concernant l’option de montage, pour être plus restrictif…
ce qui aura pour avantage de compliquer la vie si jamais votre station ou serveur étaient infectés !
Configuration
/boot, /opt, /usr
Concernant le partitionnement lié à /boot
, /opt
, /usr
, il est
intéressant de les monter en lecture seule et d’interdire les fichiers
périphériques nommés device, pour un serveur -
sur une station, cela posera des difficultés ergonomiques indéniables.
Ce qui donnerait à minima :
UUID=97aabf8d-fa78-4176-b681-888370fbc186 /boot ext4 defaults,nodev,ro 0 2
UUID=20c0ddea-2db4-4ee5-982f-71b8df26c2fb /opt ext4 defaults,nodev,ro 0 2
UUID=d84f16a8-d107-49d7-992d-bd9e78488ffd /usr ext4 defaults,nodev,ro 0 2
defaults
, soit rw,suid,dev,exec,auto,nouser,async
,
on peut donc écrire les options defaults,nodev,ro
par async,auto,exec,nodev,nouser,ro,suid
!Mise en garde pour /boot, /opt, /usr
- Mettre l’accès en lecture
ro
sur les partitionnements/boot
et sur/usr
posent quelques petits soucis. - Quant à
/opt
, pour les rares fois, où c’est vraiment nécessaire, on verra plus bas comment permettre l'écriture , si besoin.
-
⇒
/boot
: besoin d’un accès en écriture, lors du démarrage, pour l’environnement lié à grub, et surtout du binairegrub-editenv
… qui ne peut écrire de fait ; résultat, il faut réécrire le fichier/etc/fstab
avec l’optionrw
. Ouvrez le fichier/etc/rc.local
- du moins, pour Debian, *Buntu, et assimilés - et écrivez dedans :mount -f -o remount,ro /boot
-
⇒
/usr
: besoin d’un accès en écriture, lors de mises-à-jour système, principalement. Vous aurez le droit à la complainte suivante lors de l’exécution de l’invocation post du gestionnaire de paquets (apt, dpkg, etc.) :mount: /usr: point de montage actif.
E: Problem executing scripts DPkg::Post-Invoke 'mount -o remount,ro /usr'
E: Sub-process returned an error code
Ce n’est absolument rien de grave ; il vous avertit juste qu’il n’est pas capable de remonter/usr
en lecture seule. À vous de voir si vous voulez vraiment mettre/usr
en lecture seule, et que ce message d’erreur ne vous ennuie pas ; pour ne pas être embetter, mieux vaut laisser enrw
.
Pour résoudre les problèmes ci-dessus, soit vous éditez le fichier /etc/apt/apt.conf
-
s’il existe - soit vous créez un fichier, tel que /etc/apt/apt.conf.d/00apt
,
et écrivez le code suivant :
DPkg::Pre-Invoke {"mount -o remount,rw /boot";"mount -o remount,rw /opt"};
DPkg::Post-Invoke {"mount -o remount,ro /boot";"mount -o remount,ro /opt"};
Ainsi les gestionnaires apt, dpkg doivent remonter les partitionnements en question en écriture avant de faire la mise-à-jour système, et de le remettre en lecture seulement, après…
Informations ANSSI pour /boot, /opt, /usr
Pour info, la documentation de l’ANSSI en Octobre 2015, à-propos de configurer Linux de manière sécurisée, informe que :
/boot
devrait avoir les optionsnosuid,nodev,noexec
- il est même recommandé l’usage de l’optionnoauto
de manière optionnelle, car cela sous-tend qu’il faut comprendre les incidences et la gestion générée d’ajouter cette dernière option !/opt
devrait avoir au moins les optionsnosuid,nodev
/usr
devrait avoir l’option, à minima,nodev
Incompatibilités logicielles connues
Il peut arriver que certains logiciels refusent de fonctionner. Réflexe : exécutez-le depuis un terminal, et vérifiez son chemin d’exécution.
/opt
: google-chrome nécessite pour sa sandbox l’usage de l’optionsuid
.
/tmp
Occupons nous du partitionnement lié à /tmp
, et déclarons l’option la
plus importante, dans ce cas noexec
, parce que nous ne voulons pas que
n’importe qui se serve de ce répertoire pour lancer n’importe quoi :
UUID=1a7a999d-1e26-45f7-96c0-7d381887350d /tmp ext4 defaults,nodev,noexec,nosuid 0 2
Mise en garde pour /tmp
Le problème principal est le même que pour les options sur les partitionnements
/boot
, et /usr
, en mettant l’option noexec
, lors des mises-à-jours
systèmes ou de l’installation d’un nouveau logiciel, cela ne pourra pas
s’exécuter correctement !
Il faut pour cela rajouter dans les invocations pre et post en
demandant de remonter le partitionnement /tmp
avec les droits exec
,
puis à les enlever après le traitement.
DPkg::Pre-Invoke {"mount -o remount,rw /boot";"mount -o remount,rw /opt";"mount -o remount,exec /tmp"};
DPkg::Post-Invoke {"mount -o remount,ro /boot";"mount -o remount,ro /opt";"mount -o remount,noexec /tmp"};
Informations ANSSI pour /tmp
La documentation ANSSI sur la configuration Linux recommande les options
nosuid,nodev,noexec
pour la partition /tmp
…
/var, /var/log, /var/tmp
Et les partitions /var
, /var/log
, /var/tmp
?
/var
: On peut rajouter les optionsgrpquota,nodev,usrquota
…
UUID=e47dcfed-0d0a-486f-8f1c-63f9e8132590 /var ext4 defaults,grpquota,nodev,usrquota 0 2
Quant au répertoire /var/tmp
, il est intéressant de le supprimer, puis
de le lier vers le répertoire ou la partition /tmp
, qui sera ainsi bien gérée.
rm -rf /var/tmp
ln -s /tmp /var/tmp
Informations ANSSI pour /var, /var/log, /var/tmp
La documentation ANSSI sur la configuration Linux recommande les options
nosuid,nodev,noexec
pour toutes les partitions /var
, /var/log
,
/var/tmp
…
noexec
sur la partition /var
, qui empêchera la création de répertoires et fichiers
temporaires lors des mises-à-jours, par exemple !/ la partition racine
Il est de bon ton, en terme de sécurité système, d’empêcher l’usage de dev pour la racine système :
UUID=7b8b0d04-7d60-44dd-98f3-6134065a42c3 / ext4 errors=remount-ro,nodev 0 1
/srv
Cette partition, dont le but actuel, est de “cloisonner” des services serveurs, tels que web, base de données, a aussi sa propre recommandation de la part de l’ANSSI :
- l’usage des options
nosuid,nodev
et de manière optionnelle, si vous savez gèrer, les optionsnoexec,ro
… il est clair que l’optionro
pose son lot de problèmes, ne serait-ce que pour certains sites web qui ont besoin au moins d’un répertoire où écrire… à moins que vous redirigez ce genre d’écritures !
/home
L’ANSSI recommande les options nosuid,nodev,noexec
…
~/bin
qui, dans les distributions telles que Debian, Ubuntu, (et assimilées),
est inclus dans la variable d’environnement PATH
, puisque l’option noexec
vous empêchera d’exécuter tout binaire, même vos personnels !shm
shm est l’accronyme de shared memory ; en doux français : mémoire partagée.
Sécuriser le point de montage correspondant est intéressant, afin d’empêcher l’attaque contre certains services par ce biais, tel que celui d’un serveur web, par exemple.
/run/shm
Si vous avez le répertoire /run/shm
, configurez le fichier /etc/fstab
, ainsi :
tmpfs /run/shm tmpfs defaults,nodev,noexec,nosuid 0 0
/dev/shm
Si vous n’avez que /dev/shm
, qui normalement ne pointe pas vers /run/shm
,
modifiez /etc/fstab
en remplaçant /run/shm
, par /dev/shm
.
Utilisation
Remonter une partition
Bon, comme vous avez certainement dû le comprendre, pour remonter dynamiquement un partitionnement, sans avoir à redémarrer le système, on utilise la commande suivante - avec les droits administrateurs, bien sûr - :
# mount -o remount,options /nom_partition
Et si vous avez le droit à une erreur, telle que /partitionnement busy
,
préférez redémarrer la machine !
TLDR
Fichier /etc/apt/apt.conf.d/00apt
Un exemple de fichier /etc/apt/apt.conf.d/00apt
modifié selon les recommandations
ci-dessus :
Fichier : /etc/apt/apt.conf.d/00apt
|
|
Fichier /etc/fstab
Un exemple de fichier /etc/fstab
modifié selon les recommandations ci-dessus :
Fichier : /etc/fstab
|
|