|
|
Mise en place d'un serveur sécurisé sous OpenBSD
Avec la démocratisation progressive d'Internet et la mise en place d'accès ADSL toujours plus
performants et offrant de haut-débits, beaucoup de gens sont intéressés par la mise en place
d'un serveur web, ftp, mail ou même DNS personnel. Seulement, la mise en place de se genre de
services est souvent complexe et demande des connaissances poussées en système et réseau.
Je vous propose donc de vous guider dans la mise en place d'un serveur sécurisé permettant
d'héberger de façon simple et efficace tous les services dont vous pourriez avoir besoin.
Quel plaisir de pouvoir profiter de votre adresse mail en prenom@nom.com, d'un serveur
www.nom.com hébergeant vos photos personnelles, etc. Et le tout gratuitement ! (mis à part
l'achat du nom de domaine)
Pour réaliser cela, j'ai choisi le système OpenBSD. Voici les raisons qui m'ont poussé à ce
choix par rapport à d'autres systèmes plus connus ou utilisés comme linux ou windows.
- OpenBSD est gratuit,
- Le développement d'OpenBSD est orienté sécurité ce qui en fait un système robuste et
naturellement sécurisé,
- OpenBSD est un système complet standardisé. Ce terme n'est peut-être pas très approprié,
mais je voulais souligner le fait que le noyau n'était pas modulaire d'une part, et qu'il
n'y avait qu'un système complet OpenBSD stable courant, contrairement aux différentes
distributions linux qui s'appuient certes sur un noyau commun mais qui peuvent différer
de l'une à l'autre,
- Compte tenu des précédentes remarques, OpenBSD est relativement simple d'utilisation.
Nous allons donc voir dans cette première partie comment mettre en place notre serveur sous
OpenBSD 3.5 (l'installation pour de futures versions ne devrait pas différer de beaucoup,
par contre, les fichiers à télécharger seront sûrement différents, donc vérifiez sur le site
d'OpenBSD que la version officielle est toujours la 3.5, la 3.6 devrait sortir en novembre 2004)
Sommaire:
1- Le choix du matériel
2- Pré-requis pour l'installation
3- Installation du système OpenBSD
4- Dernières configurations
5- Pour aller plus loin
J'ai quelques vielles machines qui traînent chez moi, j'ai donc eu le choix de la plate-forme
sur laquelle installer le système. J'ai volontairement choisi la machine la plus ancienne
et la moins puissante pour des soucis de compatibilité et de tests de performances. Ainsi,
quel que soit le matériel que vous utilisez, il y a des chances pour que la mise en place
proposée fonctionne si votre matériel est plus récent.
J'ai donc fait l'installation sur un vieux pc avec un pentium 100, 40 Mo RAM et un disque
dur de 4Go. J'héberge aujourd'hui dessus un serveur DNS qui sert trois domaines, un serveur
web, un serveur de mails, un serveur pop, un serveur imap ainsi qu'un serveur SSH/SFTP, et
tout fonctionne parfaitement ! (avec un traffic très limité cependant vu que je n'héberge
pas encore google :-)
Avant de commencer l'installation, il faut vous assurer que vous allez pouvoir la mener à bien
jusqu'au bout. Il existe plusieurs modes d'installation pour OpenBSD, mais nous allons choisir
de faire l'installation à distance, par Internet en ftp ou http.
Vous pouvez choisir de la faire à partir de CDs que vous aurez acheté sur le site d'OpenBSD,
et ainsi soutenir ce formidable projet, mais la solution que je vous propose est entièrement
gratuite et permet une mise en place rapide (mais ne vous interdit pas de faire une donation
à ce formidable projet ou d'acheter de bôs T-shirt à l'effigie de Puffy, l'emblème
officiel d'OpenBSD)
Vous aurez donc besoin:
- d'un accès à Internet
- de connaître l'adresse des serveurs DNS que vous utilisez
- de connaître l'adresse IP que vous allez donner à votre machine
Nous allons d'abord créer une disquette de boot qui nous servira pour initialiser notre
installation. Je suppose que vous avez une machine windows sous la main pour effectuer les
commandes (les commandes sont expliquées pour d'autres systèmes sur le site OpenBSD)
Tout d'abord sous windows, téléchargez l'image du disque floppy35.fs ici (floppy3X.fs pour
d'autres versions d'OpenBSD)
Ensuite, téléchargez l'utilitaire rawrite qui vous permettra d'extraire l'image sur une
disquette, ici.
Dézippez le et lancez-le en double cliquant sur rawrite.exe.
Vous devriez avoie une fenêtre qui s'ouvre:
Cliquez sur le bouton indiqué pour indiquer le fichier floppy35.fs que vous avez téléchargé.
Intoduisez une disquette vierge dans le lecteur et cliquez sur "write"
Rawrite ecrit alors l'image de votre disque d'initialisation OpenBSD.
Vous pouvez maintenant introduire la disquette dans la machine cible et la démarrer.
Si votre ordinateur est bien configuré pour démarrer en premier (booter) sur la disquette,
vous aurez une foultitude de lignes qui s'écriront à l'écran, c'est parfait, ce sont des
messages du système qui indique quels sont les périphériques qui ont été trouvés sur votre
machine. Si jamais ce n'est pas sur la disquette que vous bootez, il faudra aller modifier le
bios pour lui demander de booter en priorité sur le lecteur de disquette.
Vous devriez maintenant avoir le message suivant qui s'affiche:
Appuyez sur Entrée, il vous est ensuite demandé le type de clavier que vous voulez utiliser.
Entrez y pour changer le type de clavier, puis Entrée pour un port PS2, et enfin fr si vous
avez un clavier azerty français.
Il vous est ensuite demandé si vous voulez continuer, et comme nous n'avons pas fait tout cela
pour rien, nous acceptons avec yes !
Ensuite, le système détecte vos disques durs et vous demande sur lequel procéder à l'installation.
Dans notre cas, il n'y a qu'un disque qui est wd0 (équivalent à hda sous linux) nous n'avons donc
pas le choix et appuyons sur Entrée. Si vous avez deux disques, vous aurez le choix entre wd0 et
wd1, ou sd0 s'il s'agit d'un disque SCSI.
Il nous est ensuite demandé si nous voulons utiliser tout le disque pour OpenBSD. Etant donné
que nous envisageons d'installer d'autres systèmes en multiboot par la suite, nous répondons no.
Si jamais vous ne voulez installer que OpenBSD sur votre disque, vous pouvez répondre yes, mais
attention, si vous avez dèjà un système installé, cela l'écrasera !
L'étape suivante consiste à partitionner le disque dur. La partitionnement vu par OpenBSD est
peut-être un peu différent de ce que vous pouvez connaître. Il se fait en deux étapes. La
première consiste à créer une partition propre à OpenBSD, on dit "créer une tranche", par l'outil
fdisk. La seconde consiste à découper la tranche ainsi créée en partitions internes au système
OpenBSD. On fait cela en créant des "labels" sur le disque à l'aide de l'utilitaire disklabel.
Si cela reste obscur pour vous, je vous propose de simplement suivre les consignes que je vous
commenterai. Voici un schéma du CFSSI qui présente la vue par partition à la fois par fdisk et
disklabel.
L'outil fisk est donc lancé et vous montre l'état actuel de votre disque. Dans notre cas, il est
vide. La commande print, ou p, permet de voir l'état du disque.
Il faut maintenant faire très attention pour ne pas effacer des partitions existantes. Un disque
dur possède au maximum 4 partitions primaires. OpenBSD nécessite d'utiliser une de ces
partitions primaires, sinon, il ne pourra pas démarrer. Si les quatre partitions primaires de
votre disque sont déjà utilisées, vous ne pourrez pas installer OpenBSD en plus :-(
Si vous avez des partitions de libre, vous pouvez les utiliser pour installer OpenBSD. Pour cela,
nous allons éditer ces partitions à l'aide de la commande edit, ou e pour abréger. Dans notre
cas, nous allons éditer la partition 0.
Nous entrons donc "e 0" comme indiqué ci-dessus.
Il nous est demandé si nous voulons éditer en mode CHS, si comme pour moi ou d'autres être humains
vous n'avez pas l'habitude de raisonner en cylindres, dites no.
Il vous est ensuite demandé la taille de la tranche, cela correspond à la taille complète de
notre système OpenBSD.
Nous choisissons 3Go, soit 3G (il y a aussi M pour mégas, si vous n'entrez pas d'extension,
ce sera en secteurs ! ce qui n'est pas conseillé)
Une fois ces données entrées, vous pouvez voir l'état du disque avec p (p m pour avoir les
informations sur la taille des partitions en Mo)
Il nous reste à rendre ectte partition active pour que OpenBSD soit démarré lors du boot. Si
vous avez d'autres partitions actives, ou un boot loader (lilo, grub, xosl...) cette étape peut
être négligée. Pour rendre une partition active, c'est la commande f suivie de la partition.
Nous voyons en faisant p que la partition a une petite étoile qui montre qu'elle est active.
Il ne nous reste plus qu'à sauvegarder nos modifications avec la commande quit, ou q.
C'est maintenant l'outil disklabel qui prend la main pour découper notre partition principale
OpenBSD en partitions internes au système.
**** ATTENTION ****
Les modifications que nous allons effectuer peuvent affecter TOUT le disque dur, et pas seulement
la partition OpenBSD, il faut donc faire très attention à ce qui est fait.
Nous allons d'abord regarder comment disklabel voit notre disque avec la commande print, ou p.
Ici, la partition "a" est celle que nous venons de créer pour OpenBSD, elle fait bien 3Go et "c"
est l'ensemble du disque dur. Ne me posez pas de questions sur le pourquoi du comment, c'est une
convention d'utiliser la lettre c pour la totalité du disque, "a" pour la racine / d'OpenBSD, et
"b" pour la swap. Il est nécessaire de respecter cette convention, sans quoi disklabel
n'accepterait pas de continuer.
Nous allons maintenant effacer notre partition "a" pour en recréer une nouvelle qui pointe sur
la racine de notre futur système, c'est à dire /.
Nous allons aussi créer nos différentes partitions OpenBSD, soit /, /usr, /var, /home, /tmp.
La commande delete, ou d permet d'effacer une partition, la commande add, ou a permet d'en créer
une.
**** ATTENTION ****
Pour la création de la partition racine, il est primordial de ne pas la commencer en 0 mais en 63,
car le MBR (master boot record) qui sert au disque dur pour booter est sur les 63 premiers
secteurs. Si nous faisons commencer notre partition au secteur 0, nous ne pourrons plus booter !
Nous avons maintenant créé la racine de notre système / et la partition de swap. Il nous reste
à créer les quatre de Etrnières partitions. Et voici ce que nous obtenons.
Il nous reste à sauvegarder les modifications avec la commande quit, ou q.
Puis à valider avec yes.
Le système nous demande de valider les partitions créées. nous faisons quatre fois Entrée, puis
done.
Le système nous demande alors de créer le système de fichiers sur chaque nouvelle partition,
nous acceptons avec yes.
Les systèmes de fichiers sont créés. Le nom de la machine nous est alors demandé. Entrez ce que
vous voulez comme nom de machine. Pour nous, c'est open35.
Puis on nous demande si nous voulons configurer le réseau. Bien sûr que nous le voulons, puisque
nous allons justement effectuer l'installation par le réseau. Nous tapons Entrée pour valider.
Le système nous liste alors les interfaces réseau qu'il a trouvé sur notre machine. Nous n'en
avons qu'une et allons donc utiliser celle-là :-) avec Entrée. Nous confirmons le nom avec Entrée.
Enfin, il nous est demandé si nous voulons configurer notre carte réseau manuellement ou par
dhcp (attribution dynamique d'une adresse)
Dans notre cas, c'est un seveur dhcp sur notre réseau qui va nous fournir une adresse, sinon, il
faut entrer les informations à la main. Attention, si vous entrez de mauvaises informations,
vous n'aurez pas accès au réseau pour installer le système OpenBSD par la suite.
Et nous recevons bien une adresse par dhcp !
Il nous est aussi demandé notre nom de domaine. Si vous ne le connaissez pas, ce n'est pas bien
grave. Nous entrons adm.esiea.fr qui est le domaine auquel nous appartenons.
Et nous faisons Entrée pour les questions suivantes dont les réponses nous ont été données par
dhcp.
Enfin, le mot de passe root nous est demandé. Vous pouvez entrer un mot de passe simple car
vous le modifierez après avoir booté la machine.
Nous sommes maintenant prêts à télécharger le système OpenBSD, il nous reste à préciser comment
le faire. Tout d'abord, nous devons préciser par quel protocole ramener les fichiers
d'installations. Nous choisissons http, mais cela peut se faire aussi bien en ftp ou cdrom si
vous avez eu la bonne idée d'acheter OpenBSD.
Nous entrons donc h. Puis l'adresse de notre proxy. Si vous n'ne avez pas, appuyez sur Entrée.
Enfin, dans sa grande bonté, OpenBSD nous propose de lister les serveurs http qu'il connait.
Nous acceptons donc volontiers de voir la liste avec y. Et choisissons un miroir proche de chez
nous pour que le téléchargement aille plus vite !
Le système nous propose où chercher dans l'arborescence les fichiers d'installation et étant
donné que l'endroit proposé est correct, nous appuyons sur Entrée.
Le système va maintenant parcourir le répertoir pour voir les fichiers disponibles et nous les
proposer.
Le minimum à prendre est bsd (le noyau), base35 pour les commandes de base, etc35 pour les
fichiers de configuration. Ceci pour une configuration de serveur pour laquelle vous ne voulez
rien compiler directement sur la machine. Pour un poste bureautique ou serveur simple, ajouter
misc35 et comp35 pour les ajouts et les compilateurs, man35 pour les pages de manuel, et enfin
tous les fichiers x* si vous voulez installer un environnement graphique.
Vous devriez arriver au même résultat que moi. Sachant que ceci peut s'obtenir en tapant all,
puis -bsd.rd, puis -g*.
Quand cela nous convient, nous tapons done, puis yes. Et le téléchargement commence !
Une fois terminé, done, et c'est bon ! Le système prépare le disque.
Vérifiez que vous n'avez pas de message d'erreur, comme ici ou l'écriture du MBR (master boot
record) qui vous sert à booter semble incorrecte.
Mais plutôt cela.
On vous demande si vous voulez démarrer le démon ssh, ce qui est plutôt une bonne idée, donc y.
Puis l'environnement graphique, y encore si vous le souhaitez.
Enfin, la zone dans laquelle vous habitez vous est demandée pour configurer l'heure. Nous
entrons Europe, puis Paris.
Magnifique ! le système s'est installé correctement et nous propose de rebooter. Ce que nous
faisons avec la commande reboot, et hop, nous voilà lancés !
Une fois rebooté, OpenBSD vous propose de vous loguer. Comme nous n'avons pour l'instant qu'un
seul utilisateur, nous n'avons pas le choix, on entre donc root, puis le mot de passe mis
pendant l'installation.
4-1 Changer le shell par défaut
Le type de terminal à utiliser nous est demandé, la proposition vt220 nous convenant, Entrée.
Nous voilà face à notre shell préféré ! ou presque, puisqu'il s'agit de csh, shell ancestral
pas très ergonomique. Pour changer cela, rien de plus simple, la commande chsh permet de modifier
certains attributs d'un compte. Lédition se fait par vi, si vous ne connaissez pas vi, je vous
conseille de vous documenter dessus car son utilisation n'est pas intuitive.
Il vous faut donc changer la ligne concernant le shell pour remplacer /bin/csh par /bin/ksh.
Puis quitter vi en sauvegardant.
Pour avoir effectivement votre nouveau shell, il faut vous déloguer puis vous reloguer.
Normalement votre prompt a du changer est est réduit au caractère #.
4-2 Le fichier afterboot
OpenBSD est bon avec vous, il vous propose même un fichier afterboot qui vous guide dans les
modifications à effectuer après le premier boot. Pour lire ce fichier, un simple "man afterboot"
fera l'affaire. Nous n'allons pas passer en revue toutes les modifications proposées, mais
seulement celles qui nous intéressent (ou m'intéressent...)
Tout d'abord, le système que vous avez téléchargé est une version que l'on appelle BASE, c'est
à dire qu'il s'agit du noyau OpenBSD tel qu'il est sorti avec la nouvelle version d'OpenBSD.
Il est possible que des failles de sécurité ou des mises à jour soient sorties entre temps, il
vous est donc conseillé d'aller voir régulièrement sur le site d'OpenBSD si de nouveaux patchs
sont à jour, de patcher votre noyau, et de le recompiler. Si cela est du chinois pour vous, je
proposerai bientôt une page sur la recompilation du noyau.
Ensuite, il vous est proposé de modifier la configuration de OpenSSH. C'est une bonne idée, et
je vous invite à lire le document sur OpenSSH qui vous présente sa mise en oeuvre.
Puis, on vous propose de modifier le mot de passe root, ce qui est indispensable si vous n'avez
pas choisi un mot de passe fort, pour cela, vous avez la commande "passwd root" à votre
disposition.
Il vous est ensuite proposé de modifier la date de votre machine. la commande "date" vous permet
de voir la date actuelle, et si elle est incorrecte, de la modifier.
Par exemple pour nous, le 28 octobre 2004 à 09h46
# date 200410280946
Ensuite, il vous est proposé de modifier les différents scripts et services lancés au démarrage
de la machine. Cela demande une compréhension du fonctionnement du boot du système OpenBSD.
Pour cela, je vous invite à regarder cet excellent schéma du CFSSI qui présente les différents
scripts lancés au boot d'OpenBSD.
Le fonctionnement est extrèmement simple, le script rc est lancé au départ, et c'est à partir de
lui que sont lancés tous les autres scripts. En cas de problème lors du démarrage, il nous
suffira donc de regarder ce script pour résoudre le problème :-)
Il est important de comprendre par ailleurs que les scripts d'origine d'OpenBSD ne doivent jamais
être modifiés. Les modifications doivent se faire dans les scripts *.local, pendants des scripts
d'origine. Par exemple, si nous voulons faire une modification ou un ajout du script rc.conf,
nous éditerons rc.conf.local, qui sera appelé après rc.conf et aura donc la priorité sur ce qui
est effectué.
Dans notre cas, nous allons donc créer le fichier rc.conf.local, et le modifier pour arrêter les
services dont nous n'avons pas besoin.
Pour cela, nous spécifions l'état des flags des services que nous voulons arrêter.
Nous voyons par exemple dans le fichier rc que si la valeur de la variable $inetd ne vaut
pas YES, alors le script n'est pas lancé.
Pour ne pas démarrer ce service au démarrage, il nous suffit de mettre une autre valeur que YES
dans le fichier rc.conf.local.
A vous de voir quels sont les services que vous souhaitez démarrer. Sinon, vous pouvez prendre
la même fichier rc.conf.local que moi.
Il est temps maintenant d'ajouter un ou plusieurs utilisateurs si vous le souhaitez. Pour cela,
vous avez la commande "adduser" qui ne demande qu'à être suivie pour la suite.
Et voilà, vous êtes prêts pour commencer à utiliser votre système !
Je vous propose ici de faire quelques manipulations supplémentaires qui vous facilliteront la
vie si vous souhaitez utiliser votre OpenBSD comme machine cliente ou bureautique. Si vous ne
la destinez qu'à une utilisation serveur, ces modifications ne seront pas très utiles.
Tout d'abord
5-1 Les packages
L'installation de nouveaux logiciels sous OpenBSD est hyper simple. De la même façon que sous
certaines distributions linux ou FreeBSD, OpenBSD possède un outil de gestion de packages qui
facilite l'installation de logiciels (qui vient en fait de FreeBSD)
Pour cela, vous avez à votre disposition la commande pkg_add. Il faut cependant prendre en
considération que l'effort de développement sécurisé n'est fait que sur le système OpenBSD de
base, et pas sur les packages. L'installation de ces packages peut donc introduire des failles
de sécurité.
Ce qu'il y a de bien avec les packages, c'est que les dépendances entre les différents packages
sont gérées par pkg_add. Il vous suffit de spécifier à quel endroits sont situés les paquets.
Pour cela, il existe une variable d'environnement qui est PKG_PATH. Nous allons donc spécifier
la valeur de cette variable.
Il faut ensuite rendre cette variable globale par la commande export, "export PKG_PATH".
Et tester l'installation d'un package, par exemple wget.
Pour rendre la variable PKG_PATH accessible en permanence, il suffit de la placer dans le
fichier .profile de votre compte et de la rendre globale avec export.
Et désormais, pour installer un package, il vous suffira d'entrer pkg_add suivi du nom du
paquet !
5-2 L'environnement graphique
Si vous avez installé les paquets de l'environnement graphique, vous pouvez très facilement y
accéder. Pour cela, il vous suffit d'utiliser l'outil xf86config qui va configurer votre
environnement en quelques questions. Pour connaître les réponses, vous pouvez aller voir le
matériel que le système a découvert lors du boot par la commande "dmesg |more"
Il vous suffit maintenant de lancer la commande "xf86config". Cependant, il y a des chances
pour que le système ne trouve pas cette commande. Pour quelle raison ? c'est très simple. Il
existe une variable d'environnement qui précise au système dans quels répertoires chercher une
commande, c'est la variable $PATH. Si jamais le répertoire contenant la commande xf86config
n'est pas dans le PATH, le système ne trouvera pas la commande. Ainsi, à l'aide d'un find, nous
trouvons la localisation de xf86config, et nous l'ajoutons au PATH. Pour rendre cettte
modification permanente, nous faisons la modification dans le .profile de l'utilisateur.
En lançant maintenant la commande "xf86config" ça devrait marcher (pourtant, nous n'avons pas
rendue cette variable globale avec export ! mais le système l'avait déjà fait avant nous en
lisant le .profile dans le quel il est précisé de globaliser la variable $PATH)
Voici ce sur quoi vous tombez.
Appuyez sur Entrée pour continuer.
Selectionnez votre type de souris, si vous ne savez pas quoi mettre, entrez 2 ou 1.
Entrez y et y pour émuler les 3 boutons et la molette, même si vous n'en possédez pas (ça ne
fait de mal à personne) Puis entrez le device sur lequel la souris est branchée. Il s'agit en
général de /dev/wsmouse.
Ensuite, il vous est demandé le type de clavier que vous utilisez. Là encore, le choix 4 est le
plus commun.
Il faut ensuite entrer le type de clavier que vous utilisez en fonction de votr pays. Pour la
France, le numéro est 28.
Ne souhaitant pas ajouter de fonctionnalités à notre clavier, nous entrons no.
Il va ensuite falloir entrer les caractéristiques techniques de votre moniteur. Je vous propose
un choix commun, le choix 7. Si jamais vous avez un message d'erreur, vous pourrez toujours
choisir un balayage moins évolué.
De la même façon pour les caractéristiques techniques suivantes, je vous propose une solution
standard qui offre de bons résultats.
Enfin, il vous est demandé le nom du constructeur de votre moniteur. Là cela dépend du
constructeur et du modèle de votre moniteur.
La suite concerne votr modèle de carte video, celle que vous avez du voir dans le message
d'initialisation de votr système, dmesg.
Il vous est proposé de voir la liste des cartes connues du système, c'est une bonne chose pour
être sûr que votr carte est reconnue. Si vous ne trouvez pas le modèle de votr carte, choisissez
un modèle proche ou identique.
Il vous est alors demandé la quantité de mémoire disponible sur votre carte video. Regardez les
caractéristiques de votre carte sur Internet si vous ne les connaissez pas.
Il vous est ensuite demandé de confirmer le nom de votre carte, Entrée suffit normalement.
Puis différents modes d'affichage vous sont proposés en fonction de capacités d'affichage.
Les mode sont normalement déjà calibrés pour votr matériel. On entr donc 4.
Vient ensuite le choix d'affichage de couleurs. Nous prenons le plus évolué, choix 5.
Il vous est ensuite demandé de confirmer l'ensemble de vos choix, donc y.
Puis, vous pouvez tester l'environnement graphique par la commande startx.
Voici le genre de choses que vous devriez obtenir.
Ce n'est pas ce qu'il y a de plus joli. Si vous souhaitez installer un autre environnement
graphique, comme fluxbox dans mon cas, vous pouvez télécharger le package correspondant.
# pkg_add fluxbox-0.1.14
Pour que cet environnement soit lancé automatiquement avec la commande startx, il faut créer dans
votre répertoire local un fichier .xinitrc. Pour cela, vous pouvez copier le fichier d'exemple
présent dans /etc/X11/xinit/xinitc dans /root/, puis le renommer .xinitrc et l'éditer.
dans notre cas, nous remplaçons l'utilitaire graphique de base fvwm par fluxbox.
Et maintenant, en lançant startx, c'est fluxbox qui est lancé !
Voilà pour l'instant. Vous avez un système prêt à être utilisé.
Bonne route sous OpenBSD !
|