AFTERBOOT(8) Manuel de l'administrateur système OpenBSD AFTERBOOT(8)
afterboot - les choses à vérifier après le premier démarrage complet
Ce document tente de dresser la liste des choses que l'administrateur système doit vérifier et configurer après l'installation et le premier démarrage complet du système. L'idée est de créer une liste de choses pouvant être vérifiées de façon à ce que vous puissiez être à peu près certain de ne rien avoir oublié d'évident. On suppose une connaissance basique d'UNIX, si ce n'est pas le cas, tapez :
# help
On ne fournit pas les instructions complètes pour corriger et régler les problèmes. Il y a pour cela des pages de manuel et d'autres méthodes qui sont disponibles. Par exemple, pour voir la page de manuel de la commande ls(1), tapez :
# man 1 ls
Les administrateurs se familiariseront rapidement avec OpenBSD s'ils s'habituent à utiliser les excellentes pages de manuel.
Au moment où vous aurez installé votre système, il est plus que probable que des bugs auront été trouvés dans cette version. Tous les problèmes importants et facilement réglables auront été rapportés sur http://www.openbsd.org/errata.html. Cette page web indique si un problème a des répercutions en terme de sécurité. Il vous est recommandé d'aller régulièrement consulter cette page.
Connectez-vous en tant qu'utilisateur root
. Vous pouvez pour cela utiliser soit la console, soit le réseau en passant par ssh(1). Si vous souhaitez interdire les connexions root par le réseau, éditez le fichier /etc/ssh/sshd_config et fixez PermitRootLogin à no
(voir sshd_config(5)).
Pour des raisons de sécurité, mieux vaut ne jamais se connecter en tant que root quand le système tourne, que ce soit pendant son fonctionnement normal ou au cours d'une maintenance. Les administrateurs sont plutôt encouragés à ajouter un utilisateur “normal”, d'ajouter ensuite cet utilisateur au groupe wheel
, et d'utiliser les commandes su(1) et sudo(8) lorsque les privilèges root sont requis. La procédure est décrite plus en détails un peu plus loin.
Modifiez le mot de passe de l'utilisateur root. (Remarquez que tout au long de la documentation, le terme “superutilisateur” est synonyme de l'utilisateur root.) Choisissez un mot de passe comportant des caractères alphanumériques et des caractères spéciaux (sauf l'espace), ainsi que des majuscules et des minuscules. Ne choisissez aucun mot d'aucun langage. Les intrus utilisent souvent des attaques par dictionnaire. Lancez la commande /usr/bin/passwd pour le modifier.
Mieux vaut systématiquement spécifier le chemin complet des commandes passwd(1) et su(1), car cela empêche, pour la plupart des shells, la possibilité d'exécuter des fichiers placés dans votre PATH. De plus, le PATH du superutilisateur ne devrait jamais contenir le répertoire courant (“.”).
Vérifiez la date du système au moyen de la commande date(1). Si besoin, modifiez la date, et/ou modifiez le lien symbolique /etc/localtime en le faisant pointer vers le bon fuseau horaire du répertoire /usr/share/zoneinfo.
Exemples :
Régler la date actuelle au 27 Janvier 1999, 03:04 de l'après midi :
# date 199901271504
Régler le fuseau horaire à l'heure standard de l'Atlantique :
# ln -fs /usr/share/zoneinfo/Canada/Atlantic /etc/localtime
Utilisez la commande hostname pour vérifier que le nom de votre machine soit correct. Voir la page de manuel de hostname(1) s'il a besoin d'être modifié. Vous devrez également éditer le fichier /etc/myname afin qu'il survive au prochain redémarrage.
La première chose à faire est un ifconfig -a, qui permet de voir si les interfaces réseau sont correctement configurées. Corrigez en éditant /etc/hostname.interface (où interface est le nom de l'interface, par exemple “le0”), puis en utilisant ensuite ifconfig(8) pour la configurer manuellement si vous ne voulez pas redémarrer. Lisez la page de manuel hostname.if(5) pour plus d'informations sur le format des fichiers /etc/hostname.interface. L'interface de bouclage (loopback) ressemblera à quelque chose comme :
lo0: flags=8009<UP,LOOPBACK,MULTICAST> mtu 32972 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000
une interface Ethernet à quelque chose comme :
le0: flags=9863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> inet 192.168.4.52 netmask 0xffffff00 broadcast 192.168.4.255 inet6 fe80::5ef0:f0f0%le0 prefixlen 64 scopeid 0x1
et une interface PPP à quelque chose comme :
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> inet 203.3.131.108 --> 198.181.0.253 netmask 0xffff0000
Voir netstart(8) pour des instructions sur la configuration du routage multicast.
Voir dhcp(8) pour des instructions sur la configuration des interfaces par DHCP.
Lancez une commande netstat -rn. La sortie ressemblera à quelque chose comme :
Routing tables Internet: Destination Gateway Flags Refs Use Mtu Interface default 192.168.4.254 UGS 0 11098028 - le0 127 127.0.0.1 UGRS 0 0 - lo0 127.0.0.1 127.0.0.1 UH 3 24 - lo0 192.168.4 link#1 UC 0 0 - le0 192.168.4.52 8:0:20:73:b8:4a UHL 1 6707 - le0 192.168.4.254 0:60:3e:99:67:ea UHL 1 0 - le0 Internet6: Destination Gateway Flags Refs Use Mtu Interface ::/96 ::1 UGRS 0 0 32972 lo0 => ::1 ::1 UH 4 0 32972 lo0 ::ffff:0.0.0.0/96 ::1 UGRS 0 0 32972 lo0 fc80::/10 ::1 UGRS 0 0 32972 lo0 fe80::/10 ::1 UGRS 0 0 32972 lo0 fe80::%le0/64 link#1 UC 0 0 1500 le0 fe80::%lo0/64 fe80::1%lo0 U 0 0 32972 lo0 ff01::/32 ::1 U 0 0 32972 lo0 ff02::%le0/32 link#1 UC 0 0 1500 le0 ff02::%lo0/32 fe80::1%lo0 UC 0 0 32972 lo0
L'adresse de la passerelle par défaut est stockée dans le fichier /etc/mygate. Si vous avez besoin d'éditer ce fichier, un moyen simple et sans douleur de reconfigurer le réseau après-coup est de lancer les commandes route flush puis sh -x /etc/netstart. Vous préférerez peut-être configurer tout cela manuellement en utilisant des suites de commandes route add et route delete (voir route(8)). Si vous faites tourner dhclient(8), alors vous devrez le tuer en lançant kill `cat /var/run/dhclient.pid` après avoir détruit les routes.
Si vous désirez router les paquets entre des interfaces, ajoutez les deux directives suivantes (ou seulement l'une des deux, selon le besoin ou non de routage IPv4 et IPv6) au fichier /etc/sysctl.conf :
net.inet.ip.forwarding=1 net.inet6.ip6.forwarding=1
Par défaut, les paquets ne sont pas transférés, conformément aux exigences des RFC.
Vérifiez que les disques sont correctement montés en comparant le fichier /etc/fstab à la sortie des commandes mount(8) et df(1). Exemple :
# cat /etc/fstab /dev/sd0a / ffs rw 1 1 /dev/sd0d /usr ffs rw,nodev 1 2 /dev/sd0e /var ffs rw,nodev,nosuid 1 3 /dev/sd0g /tmp ffs rw,nodev,nosuid 1 4 /dev/sd0h /home ffs rw,nodev,nosuid 1 5 # mount /dev/sd0a on / type ffs (local) /dev/sd0d on /usr type ffs (local, nodev) /dev/sd0e on /var type ffs (local, nodev, nosuid) /dev/sd0g on /tmp type ffs (local, nodev, nosuid) /dev/sd0h on /home type ffs (local, nodev, nosuid) # df Filesystem 1024-blocks Used Avail Capacity Mounted on /dev/sd0a 22311 14589 6606 69% / /dev/sd0d 203399 150221 43008 78% /usr /dev/sd0e 10447 682 9242 7% /var /dev/sd0g 18823 2 17879 0% /tmp /dev/sd0h 7519 5255 1888 74% /home # pstat -s Device 512-blocks Used Avail Capacity Priority swap_device 131072 84656 46416 65% 0
Éditez /etc/fstab et utilisez comme il se doit les commandes mount(8) et umount(8) Référez-vous à l'exemple ci-dessus et à fstab(5) pour des informations sur le format de ce fichier.
Vous voudrez peut-être aussi faire vos partitions NFS dès maintenant, ou vous en occuper plus tard.
Vous pouvez utiliser ps(1), netstat(1) et fstat(1) pour vérifier respectivement les processus en cours de fonctionnement, les connexions réseau, et les fichiers ouverts.
Le système devrait désormais être utilisable, mais il se peut que vous souhaitiez procéder à quelques personnalisations supplémentaires, comme ajouter des utilisateurs, etc.. Beaucoup des sections suivantes peuvent être passées si vous n'utilisez pas le paquetage concerné. Nous vous suggérons de faire un cd /etc et d'éditer tous les fichiers devant l'être dans ce répertoire.
Remarquez que le fichier /etc/motd est modifié par /etc/rc à chaque démarrage du système. Pour conserver un message personnalisé, assurez-vous de laisser deux lignes vides en haut du fichier, sans quoi votre message sera écrasé.
Ajoutez des utilisateurs. Il existe un script adduser(8). Vous voudrez peut-être utiliser vipw(8) pour ajouter des utilisateurs au fichier /etc/passwd, puis éditer /etc/group à la main pour ajouter de nouveaux groupes. Vous voudrez peut-être également éditer /etc/login.conf et retoucher certaines des limites documentées dans login.conf(5). La page de manuel de su(1) vous dit de vous assurer de placer vos utilisateurs dans le groupe “wheel” s'ils ont besoin d'un accès root (seulement dans le cas où vous n'utilisez pas Kerberos). Par exemple :
wheel:*:0:root,myself
Suivez les instructions de login_krb5(8) si vous utilisez Kerberos pour l'authentification.
Les scripts /etc/rc.* sont invoqués au démarrage, après la fin du mode mono-utilisateur (single user), et à l'extinction. Tout le processus est plus ou moins contrôlé par le script maître /etc/rc. Ce script ne devrait pas être modifié par les administrateurs.
/etc/rc est quant à lui influencé par les variables se trouvant dans /etc/rc.conf. Celui-ci non plus ne devrait pas être modifié par les administrateurs : les modifications spécifiques à un site devraient être apportées au fichier /etc/rc.conf.local (à créer si nécessaire).
Toute commande qui devrait être lancée avant que le système ne fixe son niveau de sécurité devrait être invoquée depuis /etc/rc.securelevel, et les commandes à lancer après que le système ait fixé son niveau de sécurité devrait être invoquées depuis /etc/rc.local. Les commandes à lancer avant que le système ne s'éteigne devraient être ajoutées à /etc/rc.shutdown.
Pour plus d'informations concernant les fichiers de démarrage et/ou d'extinction, voir rc(8), rc.conf(8), securelevel(7) et rc.shutdown(8).
Si vous avez installé X, vous voudrez peut-être activer xdm(1), le Gestionnaire d'Affichage de X (X Display Manager). Pour ce faire modifiez la valeur de xdm_flags dans /etc/rc.conf.local.
Certaines architectures permettent de contrôler le type de clavier. Utilisez la commande kbd(8) pour changer le codage du clavier. kbd -l donnera la liste de tous les codages disponibles. kbd xxx sélectionnera le codage xxx. Stockez le codage dans /etc/kbdtype pour vous assurer qu'il sera automatiquement réglé au démarrage.
Éditez /etc/printcap et /etc/hosts.lpd pour mettre en place n'importe quelle imprimante. Consultez lpd(8) et printcap(5) au besoin.
Éditez /etc/mail/aliases et faites pointer les trois alias standards vers une liste de diffusion ou l'administrateur du système.
# Well-known aliases -- these should be filled in! root: sysadm manager: root dumper: root
Lancez newaliases(8) après modification.
L'agent de messagerie par défaut d'OpenBSD est sendmail(8). Les détails sur la configuration d'un mailer alternatif sont documentés dans mailer.conf(5).
OpenBSD est livré avec un fichier /etc/mail/localhost.cf par défaut qui fonctionnera pour des installations simples ; il a été généré à partir du fichier openbsd-localhost.mc du dossier /usr/share/sendmail/cf. Voyez s'il-vous-plaît /usr/share/sendmail/README et /usr/share/doc/smm/08.sendmailop/op.me pour plus d'information sur la génération de vos propres fichiers de configuration de sendmail. Pour l'installation par défaut, sendmail est configuré pour n'accepter des connexions qu'en provenance de l'hôte local et ne pas accepter de connexions sur l'une ou l'autre des interfaces externes. Cela permet d'envoyer des messages localement, mais empêche de recevoir des messages provenant de serveurs distants, ce qui est l'idéal si vous avez une unique machine dédiée aux messages entrants et plusieurs clients. Pour faire en sorte que sendmail accepte les connexions réseau externes, modifiez la variable sendmail_flags dans /etc/rc.conf.local pour utiliser le fichier /etc/mail/sendmail.cf, de la manière indiquée dans les commentaires que vous y trouverez. Ce fichier a été généré à partir de openbsd-proto.mc.
Remarquez que sendmail écoute désormais par défaut sur le port 587. C'est pour implémenter le protocole de soumission de messages de la RFC 2476. Vous voudrez peut-être désactiver cela via l'option no_default_msa du fichier .mc de votre sendmail. Voir /usr/share/sendmail/README pour de plus amples informations.
Jetez un œil aux scripts /etc/daily, /etc/weekly et /etc/monthly, et modifiez-les éventuellement selon vos besoins. Les choses spécifiques à votre site devraient être placées dans /etc/daily.local, /etc/weekly.local et /etc/monthly.local.
Ces scripts ont été limités de manière à ce que le système continue de tourner sans prendre l'espace disque des processus normaux et des mises à jour des bases de données. (Vous n'avez probablement pas besoin de les comprendre.)
Le script /etc/daily fournit un moyen de procéder à une sauvegarde quotidienne du système de fichiers racine. Voir daily(8) pour plus d'informations.
Vous voudrez peut-être renforcer un peu plus la sécurité en éditant /etc/fbtab au moment d'installer X. Dans /etc/inetd.conf, commentez toutes les entrées dont vous ne vous servez pas, et n'ajoutez que ce dont vous avez réellement besoin.
Jetez un œil aux autres fichiers de /etc et éditez-les selon vos besoins. (N'éditez pas les fichiers se terminant par .db, comme pwd.db ou spwd.db. N'éditez pas non plus ni localtime ni rmt, et n'éditez aucun répertoire.)
Jetez un œil à ce qui tourne en tapant crontab -l en tant qu'utilisateur root, et voyez si vous trouvez quoi que ce soit d'inattendu. Avez-vous besoin de quoi que ce soit d'autre ? Souhaiteriez-vous modifier quelque chose ? Par exemple, si vous n'aimez pas que root récupère la sortie des scripts daily, et que vous vouliez que seuls les scripts de sécurité soient envoyés en interne, vous pouvez taper crontab -e et modifier certaines lignes de façon à y avoir :
30 1 * * * /bin/sh /etc/daily 2>&1 > /var/log/daily.out 30 3 * * 6 /bin/sh /etc/weekly 2>&1 > /var/log/weekly.out 30 5 1 * * /bin/sh /etc/monthly 2>&1 > /var/log/monthly.out
Voir crontab(5).
Après que le processus de sécurité de nuit se soit lancé pour la première fois, modifiez les propriétaires et les permissions des fichiers, répertoires, et périphériques incriminés ; root devrait avoir reçu un message ayant pour sujet “<nom d'hôte> daily insecurity output.”. Ce message contient un ensemble de recommandations de sécurité, présenté sous la forme d'une liste comme celle-ci :
var/mail: permissions (0755, 0775) etc/daily: user (0, 3)
Mieux vaut suivre les conseils présentés dans cette liste. Le réglage recommandé apparaît en premier dans les parenthèses, tandis que le réglage actuel arrive en second. Cette liste est générée par mtree(8) en utilisant /etc/mtree/special. Utilisez chmod(1), chgrp(1) et chown(8) de la manière appropriée.
Activez et/ou désactivez les processus démon selon vos besoins. intro(8) contient un guide d'utilisation des différents démons disponibles dans le système OpenBSD.
Installez vos propres paquetages. La collection des ports d'OpenBSD comprend un grand ensemble de logiciels tiers. Beaucoup d'entre eux sont disponibles sous la forme de paquetages binaires que vous pouvez télécharger depuis ftp://ftp.openbsd.org ou un miroir, et installer grâce à pkg_add(1). Voir ports(7) et packages(7) pour plus de détails.
Copiez les binaires commerciaux que l'on vous a fourni. Vous devrez alors installer toutes les bibliothèques partagées nécessaires, etc. Lisez les pages de manuel compat_* pour comprendre comment installer et utiliser le mode de compatibilité.
Il y a également d'autres logiciels tiers disponibles uniquement sous forme de code source, soit parce qu'il n'a pas encore été porté pour OpenBSD, soit parce qu'une licence restrictive rend impossible la redistribution sous forme binaire. Pensez à jeter un œil aux listes de diffusion, car il arrive de temps en temps qu'on y trouve des solutions à des problèmes déjà rencontrés par d'autres.
Les informations sur la construction et la modification d'un noyau se trouvent dans config(8).
ksh(1), man(1), pkg_add(1), ps(1), vi(1), hier(7), config(8), dmesg(8), ifconfig(8), intro(8), sudo(8), sysctl(8)
Ce document est apparu pour la première fois dans OpenBSD 2.2.
OpenBSD 4.3 30 Novembre 2007 6