OpenBSD : durcir le système de fichier

Article publié, le et modifié le
4 minute(s) de lecture

Cet article contient 797 mots.
Source brute de l'article : MD

Securelevel

Par défaut, actuellement le niveau de sécurité par défaut d’OpenBSD semble être déjà un acquis.

Le manpage securelevel nous restitue une information pertinente. Il est possible d’augmenter ce niveau en utilisant la commande sysctl, telle que :
# sysctl -w kern.securelevel=2

Mais soyez conscient des difficultés créées :

  • Impossible de modifier l’horloge système - (pensez à la synchronisation NTP, par exemple…) -,
  • ou vos règles PF si jamais vous les avez configurées,
  • etc…

Système de fichiers en lecture seule

Attention

Un autre moyen est de rester en securelevel par défaut à 1, mais d’utiliser les options de montage, tel que ro principalement, mais aussi nodev,noexec,nosuid sur les différentes partitions du système de fichier ffs.

Pour cela, il faut d’abord modifier le fichier /etc/fstab, de manière à ce que soit créé au démarrage un système de fichier mfs (swap) pour monter les périphériques /dev dedans

Ne pas oublier cette écriture, sinon, vous aurez quelques difficultés pour "monter" dynamiquement certains périphériques spéciaux , parfois nécessaires, pour certains services, tel SSH !

Copiez votre fichier /etc/fstab de manière à en faire une sauvegarde - cela pourrait être utile plus tard !
# cp /etc/fstab /root/fstab.origin ; chmod 0400 /root/fstab.origin

Modification du fichier /etc/fstab

Fichier : /etc/fstab

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
duid_info.b none swap sw
duid_info.a / ffs ro,softdep 1 1
duid_info.k /home ffs ro,nodev,noexec,nosuid,softdep 1 2
duid_info.d /tmp ffs rw,nodev,noexec,nosuid,softdep 1 2
duid_info.f /usr ffs ro,nodev,softdep 1 2
duid_info.g /usr/X11R6 ffs ro,nodev,softdep 1 2
duid_info.h /usr/local ffs ro,nodev,softdep,wxallowed 1 2
duid_info.j /usr/obj ffs ro,nodev,nosuid,softdep 1 2
duid_info.i /usr/src ffs ro,nodev,nosuid,softdep 1 2
duid_info.e /var ffs rw,nodev,noexec,nosuid,softdep 1 2
swap /dev mfs rw,-i=1024,-P=/dev,-s=32m 0 0
Attention

Création du fichier sysmount

Le script sysmount nous facilitera la vie, pour autoriser l’écriture et verrouiller des différentes partitions le nécessitant :

Fichier : sysmount

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/sh
#set -x

###
#
# Author: Stéphane HUC
# mail: devs@stephane-huc.net
# gpg:fingerprint: CE2C CF7C AB68 0329 0D20  5F49 6135 D440 4D44 BD58
#
# License: BSD Simplified
#
# Github:
#
# Date: 2018/10/10
#
###

arg="$1"

################################################################################
###
##
#   FUNCTIONS
##
###
################################################################################

# mount FS in rw mode
rw() {
    printf "%s \n" "*** Mount FS in rw mode! ***"
    mount -uw /
    mount -uw /usr
    mount -uw /usr/X11R6
    mount -uw /usr/local
    printf "%s \n" "--- DONE! ---"
}

#mount FS in ro mode
ro() {
    printf "%s \n" "*** Mount FS in ro mode! ***"
    mount -ur /usr/local
    mount -ur /usr/X11R6
    mount -ur /usr
    mount -ur /
    printf "%s \n" "--- DONE! ---"
}

################################################################################
###
##
#   EXECUTION
##
###
################################################################################

if [ "${arg}" = "rw" ]; then rw; elif [ "${arg}" = "ro" ]; then ro; fi

L’usage en est très simple : avant l’installation d’un binaire, ou la modification d’un fichier de configuration, un coup de :

  • ./sysmount rw pour autoriser l’écriture sur le système de fichier,
  • puis ensuite de ./sysmount ro pour l’empêcher à nouveau`

et, voilà !

Attention

Lorsqu’il faudra mettre à niveau le système d’exploitation, veuillez lire cet autre article : [Mini-Tuto] Upgrade Hardened Openbsd


Documentations

Manpages

Remerciements

Un petit “gros” merci @Vincent pour ces tutoriels sur le durcissement du système de fichier OpenBSD : ici ou .