Vérification, configuration et personnalisation d'OpenBSD
Date de publication : 07/03/2008
Par
Olivier Regnier (Autres articles)
1. Conventions
2. Note
3. Premier démarrage
3.1. Clavier
3.2. Fuseau horaire
3.3. Date système
3.4. Points de montage
3.5. Nom d'hôte et de domaine
3.6. Interface(s) réseau
3.7. Tables de routage
3.8. Démons
3.9. Activité système
3.10. Tâches cron
3.11. Mot de passe root
4. Configuration
4.1. Compte utilisateur
4.2. Compte root
4.3. Démons
4.4. Noyau
4.5. Scripts de commande système
4.6. Scripts daily, weekly et monthly
4.7. Autres fichiers dans /etc
4.8. Alias email
4.9. Sendmail
4.10. Paquets et ports
4.11. Sécurité
5. Personnalisation
5.1. Consoles
5.2. Shell
5.3. Mode mono-utilisateur
5.4. Partition swap
5.5. Partition altroot
5.6. Motd
6. Quotidien
6.1. Rapports système
6.2. Errata et correctifs
7. Remerciements
1. Conventions
Dans cet article, la convention suivante est utilisée:
- Les commandes et les points importants sont notées en rouge.
- Les répertoires et les noms de fichiers sont notés en vert.
- Les variables sont notées en rose foncé.
2. Note
Cet article ne se veut nullement un guide de référence dans la configuration d'OpenBSD. Ce travail se base sur mon expérience personelle et ne prétend aucunement à être un guide définitif. La finalité, l'objectif à atteindre est d'utiliser pleinement OpenBSD sur une Station de travail.
3. Premier démarrage
3.1. Clavier
Type de clavier choisit durant l'installation: fr.
Vérifiez la valeur de
/etc/kbdtype, elle doit correspondre à celle indiquée ci-dessus, sinon utilisez la commande
kbd(8).
# kbd fr
kbd: keyboard mapping set to fr
|
3.2. Fuseau horaire
Fuseau horaire choisit durant l'installation: Europe/Paris.
Vérifiez le fuseau horaire via le lien symbolique de /etc/localtime, il devrait être lié à celui indiqué ci-dessus,
# ls -l /etc/ | grep "localtime"
lrwxr-xr-x 1 root wheel 32 Feb 22 16:04 localtime -> /usr/share/zoneinfo/Europe/Paris
|
sinon, utilisez la commande
ln(1) vers le bon fuseau horaire dans
/usr/share/zoneinfo/.
# ln -fs /usr/share/zoneinfo/Europe/Paris /etc/localtime
|
3.3. Date système
Vérifiez la date système avec la commande
date(1),
# date
Sun Feb 24 10:15:58 CET 2008
|
elle est incorrecte ou légèrement décalée, utilisez cette même commande pour la modifier.
# date 200802261819 > 2008 02 26 18 19
année mois jour heure minutes
|
Vous pouvez également synchroniser votre horloge à celle d'un serveur de référence distant avec
OpenNTPD.
Rappelez-vous, durant l'installation, le démon ntpd a été configuré de manière à être lancé au démarrage. Vérifiez /etc/rc.conf.local.
# cat /etc/rc.conf.local
ntpd_flags= # enabled during install
|
L'horloge de votre système va avancer doucement et restera synchronisée avec les serveurs de temps public de
pool.ntp.org.
| La synchronisation d'une horloge très décalée peut prendre des jours, voir des semaines.
|
Utilisez alors la commande
ntpd(8). Si vous souhaitez modifier la configuration par défaut de ntpd, éditez
/etc/ntpd.conf.
3.4. Points de montage
Points de montage créés durant l'installation:
# Nom du point de montage Taille
/ (root) 256.0M
swap 512.0M
/var 256.0M
/var/log 64.0M
/tmp 256.0M
/usr 10.0G
/usr/obj 2.0G
/usr/src 2.0G
/home 10.0G
/altroot 512.0M
|
Vérifiez que vos points de montage soient correctement montés en affichant
/etc/fstab via la commande
cat(1).
# cat /etc/fstab
/dev/wd0a / ffs rw 1 1
/dev/wd0k /altroot ffs rw,nodev,nosuid 1 2
/dev/wd0j /home ffs rw,nodev,nosuid 1 2
/dev/wd0f /tmp ffs rw,nodev,nosuid 1 2
/dev/wd0g /usr ffs rw,nodev 1 2
/dev/wd0h /usr/obj ffs rw,nodev,nosuid 1 2
/dev/wd0i /usr/src ffs rw,nodev,nosuid 1 2
/dev/wd0d /var ffs rw,nodev,nosuid 1 2
/dev/wd0e /var/log ffs rw,nodev,nosuid 1 2
|
Exécutez les commandes
mount(8) et
df(1) puis comparez les résultats obtenus avec
/etc/fstab,
# mount
/dev/wd0a on / type ffs (local)
/dev/wd0k on /altroot type ffs (local, nodev, nosuid)
/dev/wd0j on /home type ffs (local, nodev, nosuid)
/dev/wd0f on /tmp type ffs (local, nodev, nosuid)
/dev/wd0g on /usr type ffs (local, nodev)
/dev/wd0h on /usr/obj type ffs (local, nodev, nosuid)
/dev/wd0i on /usr/src type ffs (local, nodev, nosuid)
/dev/wd0d on /var type ffs (local, nodev, nosuid)
/dev/wd0e on /var/log type ffs (local, nodev, nosuid
# df
Filesystem 512-blocks Used Avail Capacity Mounted on
/dev/wd0a 515804 65472 424544 13% /
/dev/wd0k 1031900 4 980304 0% /altroot
/dev/wd0j 20151964 4 19144364 0% /home
/dev/wd0f 515804 12 490004 0% /tmp
/dev/wd0g 20151964 1008060 18136308 5% /usr
/dev/wd0h 4030364 4 3828844 0% /usr/obj
/dev/wd0i 4030364 4 3828844 0% /usr/src
/dev/wd0d 515804 10444 479572 2% /var
/dev/wd0e 128732 44 122252 0% /var/log
|
sinon, éditez
/etc/fstab puis utilisez les commandes
mount(8),
umount(8) et consultez la page du manuel de
fstab(5) pour comprendre le format de ce fichier.
Vérifiez également l'utilisation de l'espace de pagination (swap) avec la commande
pstat(8).
# pstat -s
Device 512-blocks Used Avail Capacity Priority
swap_device 1048576 0 1048576 0% 0
|
3.5. Nom d'hôte et de domaine
Nom d'hôte et de domaine choisit durant l'installation: danny et delta.
Vérifiez les valeurs de
/etc/myname et celles retournées via la commande
hostname(1), elles doivent correspondres.
sinon, éditez et modifiez /etc/myname, sauvegardez et redémarrez votre système pour activer les changements.
3.6. Interface(s) réseau
Type de configuration choisit durant l'installation: dhcp.
Vérifiez que l'interface réseau, ici sis0, soit proprement paramétrée avec la commande
ifconfig(8),
# ifconfig sis0
sis0: flags=8843<UP,LOOPBACK,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:c0:9f:a4:d2:f0
groups: egress
media: Ehtnernet autoselect (100baseTX full-duplex)
status: active
inet6 fe80::2c0:9fff:fea4:d2f0%sis0 prefixlen 64 scopeid 0x1
inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
|
et aussi la valeur de
/etc/hostname.sis0 (voir
hostname.if(5)), elle doit contenir le mot dhcp.
# cat /etc/hostname.sis0
dhcp NONE NONE NONE
|
sinon, écrivez le avec la commande
echo(1).
# echo dhcp > /etc/hostname.sis0
|
Ceci aura pour effet de démarrer le client dhcp au prochain redémarrage.
Pour recharger l'ensemble de vos paramètres réseaux, utilisez la commande
sh(1) (voir aussi
netstart(8)):
# sh /etc/netstart
DHCPREQUEST on sis0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.3 -- renewal in 43200 seconds.
|
ou uniquement ceux de votre interface:
3.7. Tables de routage
# route show
Routing table
Internet:
Destination Gateway Flags Refs Use Mtu Interface
default 192.168.1.1 UGS 4 200 - sis0
loopback localhost UGRS 0 0 33208 lo0
localhost localhost UH 2 0 33208 lo0
192.168.1./24 link#1 UC 1 0 - sis0
192.168.1.1 00:14:6c:f1:4c:8a UHLc 1 30 - sis0
192.168.1.3 localhost UGHS 0 0 33208 lo0
BASE-ADDRESS.MCAST localhost URS 0 0 33208 lo0
Internet6:
Destination Gateway Flags Refs Use Mtu Interface
::/104 localhost.delta UGRS 0 0 - lo0
::/96 localhost.delta URGS 0 0 - lo0
localhost.delta localhost.delta UH 14 0 33208 lo0
::127.0.0.0/104 localhost.delta URGS 0 0 - lo0
::224.0.0.0/100 localhost.delta URGS 0 0 - lo0
::255.0.0.0/104 localhost.delta URGS 0 0 - lo0
::ffff:0.0.0.0/96 localhost.delta URGS 0 0 - lo0
2002::/24 localhost.delta URGS 0 0 - lo0
2002:7f00::/24 localhost.delta URGS 0 0 - lo0
2002:e000::/20 localhost.delta URGS 0 0 - lo0
2002:ff00::/24 localhost.delta URGS 0 0 - lo0
fe80::/10 localhost.delta URGS 0 0 - lo0
fe80::%sis0/64 link#1 UC 0 0 - sis0
fe80::2c0:9fff:fea 00:c0c9f:a4:d2:f0 UHL 0 0 - lo0
fe80::%lo0/64 fe80::1%lo0 U 0 0 - lo0
fe80::1%lo0 link#3 UHL 0 0 - lo0
fec0::/10 localhost.delta UGRS 0 0 - lo0
ff01::/16 localhost.delta UGRS 0 0 - lo0
ff01::%sis0/32 link#1 UC 0 0 - sis0
ff01::%lo0/32 localhost.delta UC 0 0 - lo0
ff02::/16 localhost.delta UGRS 0 0 - lo0
ff02::%sis0/32 link#1 UC 0 0 - sis0
ff02::%lo0/32 localhost.delta UC 0 0 - lo0
|
3.8. Démons
Démons activés durant l'installation: sshd et ntpd.
Vérifiez que
sshd(8) est bien été activé via
/etc/rc.conf.
# cat /etc/rc.conf | grep "sshd"
sshd_flags="" " for normal use: ""
|
sinon, insérez la ligne ci-dessus dans /etc/rc.conf.local.
Vérifiez également, le démon
ntpd(8) via le
/etc/rc.conf.local.
# cat /etc/rc.conf.local | grep "ntpd"
ntpd_flags="" " enabled during install
|
sinon, insérez-y la ligne ci-dessus.
Sauvegardez et démarrez les démons pour activer les changements.
# /usr/sbin/sshd
# /usr/sbin/ntpd
|
3.9. Activité système
Vérifiez l'activité du système en temps réel avec seulement quelques commandes.
Le statut des processus comme ceux en cours d'exécution avec la commande
ps(1).
# ps -aux
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 1 0.0 0.1 528 348 ?? Is 12:33AM 0:00.00 /sbin/init
_dhcp 27103 0.0 0.1 548 312 ?? Is 12:33AM 0:00.00 dhclient: sis0 (dhclient)
root 30889 0.0 0.1 348 656 ?? Is 12:33AM 0:00.00 syslogd: [priv] (syslogd)
_syslogd 26370 0.0 0.2 376 724 ?? I 12:33AM 0:00.01 syslod -a /var/empty/dev/log
_ntp 6753 0.0 0.2 536 712 ?? S 12:33AM 0.00.02 ntpd: ntp engine (ntpd)
root 26985 0.0 0.2 604 756 ?? Is 12:33AM 0.00.00 ntpd: [priv] (ntpd)
root 6624 0.0 0.2 280 716 ?? Is 12:33AM 0:00.00 inetd
root 26093 0.0 0.3 652 1160 ?? Is 12:33AM 0.00.00 /usr/sbin/sshd
root 22506 0.0 0.2 532 848 ?? Ss 12:33AM 0.00.00 cron
root 26418 0.0 0.3 1152 1536 ?? Ss 12:33AM 0.00.01 sendmail: accepting connections (sendmail)
root 31272 0.0 0.1 496 380 C0- I 12:33AM 0.00.00 dhclient: sis0 [priv] (dhclient)
root 27007 0.0 0.2 264 768 C0 Is+ 12:33AM 0.00.00 /usr/libexec/getty PC ttyC0
olivier 6450 0.0 0.1 428 488 C1 Ss 12:33AM 0.00.02 -ksh (ksh)
olivier 6824 0.0 0.1 380 280 C1 R+ 12:33AM 0.00.00 ps -aux
root 32533 0.0 0.2 416 756 C2 Is+ 12:33AM 0.00.00 /usr/libexec/getty Pc ttyC2
root 9603 0.0 0.2 272 760 C3 Is+ 12:33AM 0.00.00 /usr/libexec/getty PC ttyC3
|
L'état du réseau comme les ports ouverts par défaut avec la commande
netstat(1).
# netstat -a | grep "LISTEN"
tcp 0 0 localhost.submissi *.* LISTEN
tcp 0 0 localhost.smtp *.* LISTEN
tcp 0 0 *.ssh *.* LISTEN
tcp 0 0 *.time *.* LISTEN
tcp 0 0 *.daytime *.* LISTEN
tcp 0 0 *.auth *.* LISTEN
tcp6 0 0 localhost.submissi *.* LISTEN
tcp6 0 0 localhost.smtp *.* LISTEN
tcp6 0 0 *.ssh *.* LISTEN
tcp6 0 0 *.time *.* LISTEN
tcp6 0 0 *.daytime *.* LISTEN
tcp6 0 0 *.auth *.* LISTEN
|
Le statut des fichiers ouverts comme ceux pour un utilisateur donné avec la commande
fstat(1).
# fstat -u olivier
USER CMD PID FD MOUNT INUM MODE R/W DV|SZ
olivier fstat 7663 wd /home 51968 drwxr-xr-r r 512
olivier fstat 7663 0 / 17323 crw------- rw ttyC1
olivier fstat 7663 1 / 17323 crw------- rw ttyC1
olivier fstat 7663 2 / 17323 crw------- rw ttyC1
olivier fstat 7663 3 / 17715 crw-r----- r mem
olivier fstat 7663 4 / 17716 crw-r----- r kmem
olivier fstat 7663 5 / 17723 crw-r----- r drum
olivier fstat 7663 6 /var 16417 -rw-r--r-- r 1290240
olivier fstat 7663 7 / 8955 -rw-r--r-- r 40960
olivier ksh 28120 wd /home 51968 drwxr-xr-r r 512
olivier ksh 28120 0 / 17323 crw------- rw ttyC1
olivier ksh 28120 1 / 17323 crw------- rw ttyC1
olivier ksh 28120 2 / 17323 crw------- rw ttyC1
olivier ksh 28120 3 / 17714 crw-rw-rw- rw tty
|
3.10. Tâches cron
Vérifiez ce qui est en cours d'exécution par défaut avec la commande
crontab(1).
# crontab -l
#
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute hour mday month wday command
#
# sendmail clientmqueue runner
*/30 * * * * /usr/sbin/sendmail -L sm-msp-queue -Ac -q
#
# rotate log files every hour, if necessary
0 * * * * /usr/bin/newsyslog
# send log file notifications, if necessary
#1-59 * * * * /usr/bin/newsyslog -m
#
# do daily/weekly/monthly maintenance
30 1 * * * umask 077; /bin/sh /etc/daily 2>&1 | tee /var/log/daily.out | mail -s "`/bin/hostname` daily output" root
30 3 * * 6 umask 077; /bin/sh /etc/weekly 2>&1 | tee /var/log/weekly.out | mail -s "`/bin/hostname` weekly output" root
30 5 1 * * umask 077; /bin/sh /etc/montly 2>&1 | tee /var/log/monthly.out | mail -s "`/bin/hostname` monthly output" root
#0 * * * * /usr/libexec/spamd-setup
|
Pour ajouter/modifier quelque chose, éditez le crontab courant avec cette même commande et consultez la page du manuel de
crontab(5) pour comprendre le format de ce fichier.
| Votre ordinateur fonctionne uniquement dans la journée ? Modifiez alors, l'heure d'exécution des scripts de maintenance (daily, weekly et monthly).
|
3.11. Mot de passe root
Un mot de passe a été choisit durant l'installation pour l'utilisateur root. S'il se veut simpliste, il est recommandé de le modifier avec la commande
passwd(1).
# /usr/bin/passwd
Changing local password for root.
New password: motdepasse
Retype new password: motdepasse
|
| Il doit être composé de lettres, chiffres, caractères alpha numériques, sans espace et sa longueur doit être comprise entre 6 à 128 caractères.
|
4. Configuration
4.1. Compte utilisateur
Habituez-vous à utiliser votre compte utilisateur et non celui de root pour une utilisation régulière et/ou effectuer des opérations de maintenance sous OpenBSD.
Créez-vous un compte avec la commande
adduser(8) en suivant les étapes suivantes:
# adduser
Couldn't find /etc/adduser.conf: creating a new adduser configuration file
Reading /etc/shells
Enter your default shell: csh ksh nologin sh [ksh] Entrée
Your default shell is: ksh -> /bin/ksh
Default login class: auth daemon default staff [default] Entrée
Enter your default HOME partition: [/home]: Entrée
Copy dotfiles from: /etc/skel no [/etc/skel]: Entrée
Send message from file: /etc/adduser.message no [no]: Entrée
Do not send message
Prompt for passwords by default (y/n) [y]: Entrée
Default encryption method for passwords: auto blowfish des md5 old
[auto]: blowfish
Use option ``-silent`` if you don't want to see all warnings and questions.
Reading /etc/shells
Check /etc/master.passwd
Check /etc/group
Ok, let's go.
Don't worry about mistakes. There will be a chance later to correct any input.
Enter username []: olivier
Enter full name []: Olivier Regnier
Enter shell csh ksh nologin sh [ksh]: Entrée
Uid [1000]: Entrée
Login group olivier [olivier]: Entrée
Login group is ``olivier``. Invite olivier into other groups: guest no
[no]: wheel
Login class authpf daemon default staff [default]: Entrée
Enter password []: motdepasse
Enter password again []: motdepasse
Name: olivier
Password: ****
Fullname: Olivier Regnier
Uid: 1000
Gid: 1000 (olivier)
Groups: olivier wheel
Login Class: default
HOME: /home/olivier
Shell /bin/ksh
Ok? (y/n) [y]: Entrée
Added user ``olivier``
Copy files from /etc/skel to /home/olivier
Add another user? (y/n) [y]: n
Goodbye!
|
4.2. Compte root
Ajouter un compte utilisateur n'est pas suffisant pour garantir que le compte root ne sera pas utilisé judicieusement. En effet, il est toujours possible de s'authentifier directement à l'invite de session et/ou sur le réseau utilisant ssh (Ce type de manipulations n'est pas recommandé).
Interdire à root de s'authentifier directement en console à l'invite de session
Editez /etc/ttys, puis recherchez le bloc de texte ttyC0 à ttyC5 (laissez ttyC4 tel quel, il est réservée pour l'utilisation de X) et remplacez le mot secure par insecure.
# name getty type status
ttyC0 "/usr/libexec/getty Pc" vt220 on insecure
ttyC1 "/usr/libexec/getty Pc" vt220 on insecure
ttyC2 "/usr/libexec/getty Pc" vt220 on insecure
ttyC3 "/usr/libexec/getty Pc" vt220 on insecure
ttyC4 "/usr/libexec/getty Pc" vt220 off secure
ttyC5 "/usr/libexec/getty Pc" vt220 on insecure
|
Sauvegardez et testez. Déconnectez-vous avec la combinaison de touche Ctrl + D (2 fois) et authentifiez-vous avec l'utilisateur root.
OpenBSD/i386 (danny.delta) (ttyC1)
login: root
Password: motdepasse
login: root login refused on this terminal.
|
| A partir de maintenant, utilisez les commandes su(1) et sudo(8) via votre compte utilisateur afin de bénéficier des privilèges de root.
|
Interdire à root de s'authentifier sur le réseau via ssh
Editez
/etc/ssh/sshd_config (voir
sshd_config(5)) et ajoutez/modifiez la ligne suivante:
Sauvegardez et relancez ssh pour activer les changements sans redémarrer votre système avec la commande
kill(1).
kill -HUP `cat /var/run/sshd.pid`
|
Testez avec la commande
ssh(1).
# ssh root@danny
The authenticity of host 'danny (::1)' can't be established.
RSA key fingerprint is e3:14:d7:fe:1b:3b:8e:3e:90:01:f8:78:27:7f:67:82.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'danny' (RSA) to the list of known hosts.
root@danny's password: motdepasse
Permission denied, please try again.
Ctrl + C
|
Supprimez le répertoire .ssh créé durant la phase de test.
4.3. Démons
Les démons/services sont des programmes qui tournent an tâche de fond. Ils se configurent via le fichier /etc/rc.conf par le biais de variables à activer/désactiver.
Exemple:
Le démon sshd activé:
Le démon sshd désactivé:
| Ne modifiez pas directement /etc/rc.conf mais /etc/rc.conf.local en y insérant uniquement les lignes que vous comptez modifier dans /etc/rc.conf.
|
Voici la liste des démons par défaut sous OpenBSD:
- Les démons activés par défaut sont notés en rouge.
- Les démons activés durant l'installation sont notés en vert.
- Les démons activés durant la configuration et personnalisation sont notés en bleu.
- Les démons désactivés durant la configuration et personnalisation sont symbolisés par (*).
Nom du démon |
Origine/destination |
Variable |
Page de manuel |
sendmail |
/etc/rc.conf |
sendmail_flags="-L sm-mta -C/etc/mail/localhost.cf -bd -q30m" |
sendmail(8). |
inetd (*) |
/etc/rc.conf > /etc/rc.conf.local |
inetd=YES > inetd=NO |
inetd(8). |
quotacheck |
/etc/rc.conf |
check_quotas=YES |
quotacheck(8). |
syslogd |
/etc/rc.conf |
syslogd_flags= |
syslogd(8). |
sshd |
/etc/rc.conf |
sshd_flags="" |
sshd(8). |
ntpd |
/etc/rc.conf > /etc/rc.conf.local |
ntpd_flags=NO > ntpd_flags= |
ntpd(8). |
wsmoused |
/etc/rc.conf > /etc/rc.conf.local |
wsmoused_flags=NO > wsmoused_flags= |
wsmoused(8). |
| Activez/désactivez les démons dont vous avez besoin.
|
Voici quelques commandes utiles pour gérer les démons sans devoir redémarrer votre système.
Démarrer un démon:
Stopper un démon:
# kill `cat /var/run/nom_du_démon.pid`
|
Relancer un démon:
# kill -HUP `cat /var/run/nom_du_démon.pid`
|
La page du manuel de
intro(8) contient un guide complet sur les divers démons disponibles sur le système OpenBSD.
4.4. Noyau
OpenBSD fournit et utilise par défaut un noyau GENERIC considéré par les dévéloppeurs du projet comme suffisant pour une installation standard, et le modifier, présenterait un risque, celui de rendre par exemple votre système inefficace. En effet, la plupart des gens qui utilise des systèmes d'exploitation Open Source, pense que personnaliser et recompiler son noyau sont des étapes cruciales et nécessaires pour la maîtrise du système.
Recompiler son noyau ne signifie pas obligatoirement le personnaliser. La question que l'on peut alors se poser, pourquoi recompiler le noyau GENERIC ? Je vois une seule raison à cela, lui appliquer un correctif (patch) de sécurité. Dans ce cas précis, le noyau doit être recompilé afin de prendre en compte les nouvelles modifications sans pour autant toucher à ses fonctionnalités.
| Le noyau GENERIC est supporté par l'équipe d'OpenBSD, ce qui n'est pas le cas pour un noyau créé sur mesure.
|
Pour plus de détails, concernant la construction et/ou modification du noyau, consultez la page du manuel de
config(8).
Concernant la recompilation du noyau, ne vous en préocupez pas pour le moment. Vous comprendrez son utilité en suivant les étapes de mise à jour.
4.5. Scripts de commande système
Les scripts /etc/rc.* sont invoqués au démarrage, à la sortie du mode utilisateur unique (single user mode), et lors de l'arrêt du système. L'ensemble du processus est contrôlé, plus ou moins, par le script-maître /etc/rc. Ce script ne doit pas être modifié par les administrateurs.
A son tour, /etc/rc est influencé par les variables de configuration présentes dans /etc/rc.conf. Là encore, ce script ne doit pas être modifié par les administrateurs: les changements spécifiques au site devraient être effectués dans /etc/rc.conf.local (à créer au besoin).
Toute commande qui doit être exécutée avant que le système ne passe au niveau sécurisé (securelevel) doivent être écrites dans le fichier /etc/rc.securelevel, et les commandes à lancer après le passage au niveau sécurisé dans /etc/rc.local. Les commandes à lancer avant l'arrêt du système sont à placer dans /etc/rc.shutdown.
Si vous avez installé X, vous pouvez activer
xdm(1), le gestionnaire de procédures de connexions graphiques. Pour ce faire, changez la valeur de la variable
xdm_flags dans
/etc/rc.conf.local.
4.6. Scripts daily, weekly et monthly
Consultez et éventuellement éditez les scripts, /etc/daily, /etc/weekly et /etc/monthly. Si vous souhaitez ajouter vos propres modifications, créez et utilisez les fichiers /etc/daily.local, /etc/weekly.local et /etc/monthly.local.
Ces scripts sont limités de façon à maintenir le fonctionnement du système sans utiliser inutilement de l'espace disque et celui réservé aux bases de données des mises à jour. Le script
/etc/daily fournit un moyen simple pour sauvegarder quotidiennement le système de fichiers racine (root). Pour plus d'informations, consultez la page du manuel de
daily(8) et la section,
La partition altroot.
4.7. Autres fichiers dans /etc
La partition /etc/* contient la plupart des fichiers de configuration. Editez-les si besoin.
| N'éditez pas les fichiers en .db comme pwd.db, spwd.db, ni localtime, ni rmt, ni aucun des répertoires.
|
4.8. Alias email
Un alias email est une autre appellation pour une même adresse email. Cela veut dire que tous les courriers électroniques adressés à un alias définit pour une adresse seront redirigé automatiquement vers cette même adresse. Il existe sous OpenBSD, trois alias standards, root, manager et dumper qui sont désactivés par défaut. Ils sont utilisés par exemple pour les mailing list ou les administrateurs systèmes. Nous allons activer ces alias afin de recevoir via notre compte utilisateur local, les courriers électroniques concernant les rapports système et autres informations.
Editez /etc/mail/aliases puis recherchez la bloc de texte suivant:
# Well-known aliases -- these should be filled in!
#root:
#manager:
#dumper:
|
Décommentez et complétez les trois alias et ajoutez en un portant votre nom d'utilisateur.
# Well-known aliases -- these should be filled in!
root: sysadm
manager: root
dumper: root
sysadm: olivier
|
Sauvegardez et exécutez la commande
newaliases(8) pour activer les changements.
# newaliases
/etc/mail/aliases: 47 aliases, longest 10 bytes, 662 bytes total
|
A partir de maintenant, tous les courriers électroniques adressés à l'utilisateur root seront directement expédiés à l'utilisateur olivier.
4.9. Sendmail
OpenBSD utilise comme serveur de messagerie électronique sendmail. Par défaut, il utilise le fichier de configuration /etc/mail/localhost.cf (généré à partir de openbsd-localhost.mc dans /usr/share/sendmail/cf) destiné pour des installations simples. Ce type de configuration permet à sendmail d'accepter uniquement les connexions depuis l'hôte local mais refuse celle provenant des interfaces externes. Cela permet d'envoyer des messages en local et non de recevoir du courrier à partir de serveurs distants, idéal si vous disposez d'un ordinateur central de courrier électronique et plusieurs clients.
Sendmail peut aussi fonctionner pour des installations plus complexes en générant vos propres fichiers de configuration. Pour cela, consultez /usr/share/sendmail/README et /usr/share/doc/smm/08.sendmail/op.me. Vous pourrez également accepter les connexions sur les interfaces externes en modifiant la variable send_flags dans /etc/rc.conf.local afin d'utiliser le fichier de configuration /etc/mail/sendmail.cf (généré à partir de openbsd-proto.mc).
| Notez que par défaut, sendmail écoute aussi sur le port 587 destiné à la mise en place du port "submission" 587/tcp (RFC 2476). Cette fonctionnalité, peut être désactivée via l'option no_default_msa du fichier .mc dans votre sendmail. Pour plus d'informations, consultez /usr/share/sendmail/README.
|
4.10. Paquets et ports
La collection de ports OpenBSD comprend à ce jour environ 4500 paquets répartis dans différentes catégories en autre, archivers, audio, editors, mail, net, security, shell, etc. Une grande partie est disponible sous la forme de paquets binaires (environ 4360) téléchargeables à l'adresse
www.openbsd.org ou
un miroir.
Que dois-je utiliser : paquets binaires ou ports ?
Paquets binaires
- Vous utilisez des PAQUETS STABLES qui ont fait l'objet d'un/plusieurs AUDIT(s) COMPLET DE SECURITE (non les ports).
- Vous gagnez un temps précieux pour vos installations.
Pour plus de détails, concernant l'installation des paquets binaires, consultez la page du manuel de
packages(7).
Ports
- Vous avez besoin d'un port spécifique car le paquet binaire n'a pas été construit par l'équipe d'OpenBSD.
- Vous souhaitez examiner/améliorer le code source du port.
- Vous avez peut être une autre raison ?
Pour plus de détails, concernant l'installation des ports, consultez la page du manuel de
ports(7).
| L'utilisation des paquets binaires est vivement recommandé et suffisante pour un grand nombre d'utilisateurs.
|
Quoiqu'il en soit, à cette étape de la configuration, il n'est pas nécessaire d'installer d'applications.
4.11. Sécurité
Contrairement à beaucoup de systèmes d'exploitation, le projet OpenBSD est le seul à fournir un système sécurisé pour une installation par défaut avec seulement deux vulnérabilités à distance dans l'installation par défaut, durant plus de 10 ans ! en témoigne. Quels sont les secrets de cette réussite ?
OpenBSD, après une installation par défaut, c'est:
- des outils de connexion réseau pour se connecter et/ou exécuter des commandes sur une machine distante (OpenSSH). Ils sont destinés à remplacer rlogin, rsh et telnet, et à fournir des communications cryptées sécurisées entre deux hôtes non sécurisé sur un réseau sécurisé. Les connexions X11 et les ports TCP arbitraires peuvent également être transmis sur un canal sécurisé (tunnel).
- un ensemble de protocoles, Encapsulating Security Payload (ESP) et Authentication Header (AH), qui fournissent des services de sécurité pour les datagrammes IP (IPSEC).
- un système d'authentification réseau (Kerberos) qui permet l'authentification des utilisateurs et des services dans un environnement réseau sécurisé.
- un puissant algorithme de cryptage (Blowfish) pour une authentification forte. La taille des blocs est 64 bits et le maximum est la taille de la clé 448 bits.
- un système d'exploitation simple, propre, robuste, documenté et sécurisé par défaut. Aucun démon/service présentant un risque potentiel est actif.
- un noyau monolithique, rapide d'exécution et disposant de 4 niveaux de sécurité (securelevel) notamment le niveau -1, mode insécurisé permanent, le niveau 0, mode insécurisé, le niveau 1, mode sécurisé, et le niveau 2, pour un mode hautement sécurisé.
- les sources du système et les paquets binaires (non les ports) font l'objet d'audit complet de sécurité (Hackathon). Cela a permis de corriger la plupart des erreurs du type buffer overflow (débordement de la mémoire tampon, etc.) détectées.
- une implémentation d'ACL (listes de contrôle d'accès) au niveau du noyau pour surveiller les appels système (systrace) effectués par les programmes. Il peut être aussi utilisé pour protéger votre système contre les programmes comportant des failles (comme buffer overflow).
- un programme de délégation de pouvoir (sudo) permettant à un utilisateur autorisé d'exécuter une commande en tant que super-utilisateur.
- le nombre de programme setuid root "sensibles" à nettement diminué. De 40 dans la version 3.1, on en dénombre aujourd'hui 25 (si le serveur X11 est présent) dans la version 4.2.
- une pile IP disponible durant la phase d'installation pour configurer automatiquement votre réseau. Passer cette étape, présente un avantage certain, prendre le temps de vérifier, configurer, personnaliser et sécuriser votre système avant sa mise en réseau.
- un dispositif de protection de pile de donnée (ProPolice) intégré au compilateur gcc et activé par défaut.
- un mécanisme de protection de la mémoire W^X (prononcé W xor X) qui interdit les pages mémoire d'être à la fois exécutables et modifiables et non les deux à la fois (XOR). L'objectif étant de limiter les attaques du type buffer overflow (débordement de la mémoire tampon).
et bien d'autres.
Accroître sa sécurité:
Sécurisé par défaut, il est possible de renforcer un peu plus la sécurité de son système.
Voici quelques conseils:
- Utilisez votre compte utilisateur, non celui de root et bénéficiez de ses priviléges avec les commandes su(1) et sudo(8).
- Choisissez de préférence l'algorithme de cryptage blowfish(3) lors de la création d'un compte utilisateur.
- Désactivez le/les démon(s) dont vous n'avez pas besoin.
- Familiarisez-vous et utilisez les outils fournis par OpenSSH, notamment ssh(1) en remplaçement de rlogin et telnet, rcp avec le programme scp(1) et ftp avec le programme sftp(1).
- Munissez-vous d'une véritable armure personnelle en utilisant le filtre de paquets OpenBSD, pf (Packet Filter).
- Pensez également à utiliser des chflags(1) sur vos fichiers. Pour plus d'informations, consultez Que sont les file chflags et quels sont-ils ?.
- Utilisez aussi les niveaux de sécurité du noyau (securelevel). Pour plus d'informations, consultez Qu'est-ce que les niveaux de sécurité du noyau (securelevel) ?
- Consultez régulièrement la page d'errata et des correctifs importants sans oublier de garder son système à jour.
- Vérifiez systématiquement les rapports de votre système (maintenance et autres) via votre messagerie locale.
5. Personnalisation
5.1. Consoles
1) Voici une astuce pour effacer la console à chaque fois qu'un utilisateur se déconnecte.
Editez /etc/gettytab puis recherchez le bloc de texte:
P|Pc|Pc console:\
:np:sp#9600:
|
Modifiez le de manière à obtenir:
P|Pc|Pc console:\
:np:sp#9600:\
:cl=\E[H\E[2J:
|
Sauvegardez et testez avec la commande # exit (2 fois), l'écran s'efface.
2) Voici une seconde astuce pour activer le support de la souris en mode console.
Editez /etc/rc.conf.local puis insérez la ligne:
wsmoused_flags= # enabling console mouse support
|
Sauvegardez et démarrez ce démon.
5.2. Shell
OpenBSD fournit de base, trois interpréteurs,
csh(1),
sh(1) et
ksh(1) ou plutôt
pdksh (Public Domain Korn Shell). D'autres sont disponibles via les paquets binaires ou le catalogue de logiciels portés, catégorie,
shell notamment, bash et zsh.
| N'utilisez pas un shell qui n'est pas situé sur la partition racine à l'utilisateur root (bash, zsh, etc.), car la partition /usr n'est pas monté dans le mode mono-utilisateur.
|
5.3. Mode mono-utilisateur
1) Voici une astuce pour protéger le mode single user.
Changez le niveau de sécurité de la console en éditant /etc/ttys puis en remplaçant:
console "/usr/libexec/getty Pc" vt220 off secure
|
par
console "/usr/libexec/getty Pc" vt220 off
|
Sauvegardez et testez. Redémarez OpenBSD et lors du démarrage appuyez sur une touche autre que Entrée et utilisez la commande
boot(9):
Vous devrez saisir le mot de passe de l'utilisateur root pour accéder à ce mode et entrer le chemin d'accès de votre shell ou bien garder celui proposé par défaut. Pour retourner au mode normal, pressez Ctrl + D ou tapez # exit.
Enter root password, or ^D to go multi-user
Password: motdepasse
Enter pathname of shell or RETURN for sh: /bin/ksh
|
| N'oubliez pas le mot de passe de l'utilisateur root.
|
5.4. Partition swap
1) Voici deux solutions pour chiffrer sa partition swap.
Modifiez la variable d'état du noyau avec la commande
sysctl(8).
# sysctl -w vm.swapencrypt.enable=1
vm.swapencrypt.enable: 1 -> 1
|
| Les changements sont automatiquement pris en compte.
|
ou
Editez /etc/sysctl.conf, décommentez la ligne:
puis positionnez la variable à 1:
| Sauvegardez et redémarrez pour activer les changements.
|
5.5. Partition altroot
1) Voici une astuce pour sauvegarder quotidiennement le système de fichiers root.
La sauvegarde va être réalisée sur la partition /altroot créée durant l'installation.
Editez le crontab de root avec la commande
crontab(1).
Positionnez la variable ROOTBACKUP=1 en fin de ligne:
# do daily/weekly/monthly maintenance
30 1 * * * umask 077; /bin/sh /etc/daily 2>&1 | tee /var/log/daily.out | mail -s "`/bin/hostname` daily output" root; ROOTBACKUP=1
|
Sauvegardez et modifiez l'entrée correspondante dans /etc/fstab.
/dev/wd0k /altroot ffs xx 0 0
|
Sauvegardez et rafraîchissez les points de montage du fichier /etc/fstab sans redémarrer votre système.
5.6. Motd
MOTD (voir
motd(5)), acronyme de
Messages Of The Day, en français, message du jour. Il apparaît lors de votre identification sur une station de travail ou des serveurs tels SSH, FTP ou encore IRC. Il est utilisé en autre pour afficher des règles de fonctionnement, des informations concernant le système utilisé, des contacts administratifs, des dessins ASCII Art et autres.
Le motd par défaut sous OpenBSD:
Welcome to OpenBSD: The proactively secure Unix-like operating system.
Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code. With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.
|
Notez que le fichier /etc/motd est modifié par /etc/rc chaque fois que le système a démarré. Pour garder intact tout message personnalisé, assurez-vous de laisser deux lignes vides en début de fichier, ou votre message sera écrasé.
6. Quotidien
6.1. Rapports système
OpenBSD exécute tous les jours (
daily(8)), le week-end (
weekly(8)) et le 1er du mois (
monthly(8)), des opérations de maintenance. Suite à ces opérations, vous recevrez un/plusieurs courrier(s) électronique(s), un récapitulatif des tâches accomplies mais aussi celles que vous pouvez être amené à réaliser.
Ce courrier aura pour objet:
<hostname> daily/weekly/monthly insecurity output.
|
| Il est donc important de consulter ce rapport régulièrement.
|
Il se présente sous la forme d'une liste composé d'une série de recommendations de sécurité comme l'illustre l'exemple ci-dessous.
var/mail:
permissions (0755, 0775)
etc/daily:
user (0, 3)
|
Suivez attentivement les conseils indiqués. Le réglage recommandé est la première valeur inscrite entre parenthèses, alors que le paramètre actuel est la deuxième.
6.2. Errata et correctifs
Vérifiez
la page d'errata et des correctifs importants concernant exclusivement l'arborescence des sources pour OpenBSD 4.2 (les autres correctifs concernent l'arborescence actuelle de CVS et peuvent ne pas convenir sur une machine en production).
Durant la phase d'installation d'OpenBSD, il est probable que des failles aient été trouvées. Il est donc important de consulter cette page régulièrement. Tous les correctifs sont disponibles sur CVS via la branche OPENBSD_4_2.
| Que diriez-vous de mettre à jour OpenBSD en suivant la branche -stable ?
|
| Il est conseillé et très utile d'envoyer une copie de votre dmesg aux développeurs OpenBSD. Cela permet de garder une trace de quels matériels fonctionnent, et de quels matériels ne fonctionnent pas parfaitement.
|
7. Remerciements
Je tiens à remercier x et y pour la relecture attentive de cet article.
Copyright © 2007 Olivier Regnier.
Aucune reproduction, même partielle, ne peut être faite
de ce site ni de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à
trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.