Installation de FreeBSD sur une Dedibox

Résumé

Cette méthode (et oui encore une autre) permet d'installer assez rapidement la version de FreeBSD de votre choix (7 ou 8), tout en vous laissant choisir le partitionnement du disque.

Ce guide est une version allégée et mise à jour du guide d'installation indiqué sur cette page:

http://freebsd.dedibox.e-tahan.com/twiki/bin/view/Main/Dedibox-FreeBSD

Cette méthode permet donc de :

    1. Créer une installation standard de FreeBSD

    2. Garde votre maitrise des fichiers installés

    3. Est rapide et assez simple par la mise à disposition de scripts d'assistance

Principe de fonctionnement

Cette méthode s'appuie sur 3 grandes étapes:

    1. Génération de l'image disque d'installation: génère, à partir d'un fichier FreeBSD ISO officiel, une petite image disque d'un FreeBSD qui va servir à lancer l'installateur standard FreeBSD depuis votre Dedibox.

    2. Installation de l'image disque sur votre Dedibox (par l'utilisation du mode rescue Linux proposé par Dedibox).

    3. Installation de 2 FreeBSD: Une version minimum (pour installer un mode rescue FreeBSD) sur une partition de 1Go et une version normale sur le reste du disque.

Pré-requis

La génération de l'image disque d'installation ce fait à partir d'un FreeBSD.

Génération de l'image disque

téléchargement des outils

Téléchargez:

    1. l'image ISO (disc1) de la version FreeBSD de votre choix. La version 8.0-RELEASE est conseillée et testée fonctionnelle.

    2. le générateur: newdedibsd.tgz

Personnalisation du générateur

Pour fonctionner, le générateur doit créer une image disque incluant la configuration réseau de votre Dedibox.

En root:

# tar -zxvf newdedibsd.tgz

# cd newdedibsd

# vi initconf.conf

Et insérez vos paramètres.

Note: Pour connaitre l'adresse MAC de votre carte réseau, entrez la commande ifconfig à partir du mode rescue.

Lancez le script de génération de l'image disque:

# ./dedibsd.sh /chemin-vers/8.0-RELEASE-i386-disc1.iso

Si tous ce passe bien, vous obtiendrez le fichier dedibsd.img.

Transfère et installation de l'image sur la Dedibox

Par l'interface web console DediBox, demarrer en mode rescue : Cliquez sur Configurer puis Système de secours

Connectez-vous sur la dedibox en SSH avec le login et le mot de passe affiché sur l'interface web.

Copier le fichier dedibsd.img sur /tmp ( Utiliser FTP ou SCP pour copier de votre ordinateur vers la dedibox)

Lancer la copie sur le disque local :

# sudo dd if=/tmp/dedibsd.img of=/dev/sda

Par l'interface web, retourner en mode normal de la dedibox

Connectez-vous en SSH sur la dedibox avec le login "root" et le mot de passe que vous avez choisi dans le fichier initconf.conf.

Vous etes maintenant connecte sur un FreeBSD qui tournent a 100% en memoire de votre DediBox.

Installation de FreeBSD

Résumé

Pour réaliser cette installation, on va:

    1. Lancer le script de pre-installation

    2. Lancer l'installateur FreeBSD (sysinstall)

    3. Lancer le script de post-installation

pre-install.sh

Le lancement de ce script va:

    • Créer 2 partitions MBR (une de 1Go et une qui prend le reste)

    • Créer des «sous-partitions» FreeBSD sur ces partitions

      • Partition 1, secours: Une seule partition "a" pour le le /

      • Partition 2, normale: Une partition "b" pour le swap de 1Go, et une partition "a" pour le /

    • Formatter et monter ces deux partitions dans /rescue et /normal

Vous pouvez changer la taille de la partition rescue et swap en éditant la variable dans le script.

On le lance par la commande:

# /root/pre-install.sh

sysinstall

Cette étape va permettre de:

    • Installer une distribution minimum dans /rescue

    • Installer une distribution normale dans /normal

    • Configurer le mot de passe root, créer un compte utilisateur (à mettre dans le groupe wheel), configurer le time zone.

Entrez la commande:

# sysinstall

pour se retrouver devant l'écran suivant:

┌─────────── FreeBSD/i386 8.0-RELEASE - sysinstall Main Menu ───────────┐

│ Welcome to the FreeBSD installation and configuration tool. Please │

│ select one of the options below by using the arrow keys or typing the │

│ first character of the option name you're interested in. Invoke an │

│ option with [SPACE] or [ENTER]. To exit, use [TAB] to move to Exit. │

│ ┌───────────────────────────────────────────────────────────────────┐ │

│ │ Usage Quick start - How to use this menu system │ │

│ │ Standard Begin a standard installation (recommended) │ │

│ │ Express Begin a quick installation (for experts) │ │

│ │ Custom Begin a custom installation (for experts) │ │

│ │ Configure Do post-install configuration of FreeBSD │ │

│ │ Doc Installation instructions, README, etc. │ │

│ │ Keymap Select keyboard type │ │

│ │ Options View/Set various installation options │ │

│ │ Fixit Repair mode with CDROM/DVD/floppy or start shell │ │

│ │ Upgrade Upgrade an existing system │ │

│ │ Load Config.. Load default install configuration │ │

│ │ Index Glossary of functions │ │

│ └───────────────────────────────────────────────────────────────────┘ │

├───────────────────────────────────────────────────────────────────────┤

│ [ Select ] X Exit Install │

└───────────────────────────────────────────────────────────────────────┘

Installation du FreeBSD rescue

Sélectionnez l'option «Custom»:

┌─────────────────── Choose Custom Installation Options ───────────────────┐

│ This is the custom installation menu. You may use this menu to specify │

│ details on the type of distribution you wish to have, where you wish │

│ to install it from and how you wish to allocate disk storage to FreeBSD. │

│ ┌──────────────────────────────────────────────────────────────────────┐ │

│ │ X Exit Exit this menu (returning to previous) │ │

│ │ 2 Options View/Set various installation options │ │

│ │ 3 Partition Allocate disk space for FreeBSD │ │

│ │ 4 Label Label allocated disk partitions │ │

│ │ 5 Distributions Select distribution(s) to extract │ │

│ │ 6 Media Choose the installation media type │ │

│ │ 7 Commit Perform any pending Partition/Label/Extract actions │ │

│ └──────────────────────────────────────────────────────────────────────┘ │

├──────────────────────────────────────────────────────────────────────────┤

│ [ OK ] Cancel │

└──────────────────────────────────────────────────────────────────────────┘

Puis sélectionnez le menu «2 Options» pour éditer les options d'installation:

Options Editor

Name Value Name Value

---- ----- ---- -----

NFS Secure NO Browser Exec /usr/local/bin/links

NFS Slow NO Media Type <not yet set>

NFS TCP NO Media Timeout 300

NFS version 3 YES Package Temp /var/tmp

Debugging NO Newfs Args -b 16384 -f 2048

No Warnings NO Fixit Console serial

Yes to All NO Re-scan Devices <*>

DHCP NO Use Defaults [RESET!]

IPv6 NO

FTP username ftp

Editor vi

Extract Detail high

Release Name 8.0-RELEASE

Install Root /rescue

Browser package links

Use SPACE to select/toggle an option, arrow keys to move,

? or F1 for more help. When you're done, type Q to Quit.

NFS server talks only on a secure port

Modifiez l'option «Install Root» en «/rescue» puis appuyer sur Q (Quit) pour revenir au menu d'installation personnalisé:

┌─────────────────── Choose Custom Installation Options ───────────────────┐

│ This is the custom installation menu. You may use this menu to specify │

│ details on the type of distribution you wish to have, where you wish │

│ to install it from and how you wish to allocate disk storage to FreeBSD. │

│ ┌──────────────────────────────────────────────────────────────────────┐ │

│ │ X Exit Exit this menu (returning to previous) │ │

│ │ 2 Options View/Set various installation options │ │

│ │ 3 Partition Allocate disk space for FreeBSD │ │

│ │ 4 Label Label allocated disk partitions │ │

│ │ 5 Distributions Select distribution(s) to extract │ │

│ │ 6 Media Choose the installation media type │ │

│ │ 7 Commit Perform any pending Partition/Label/Extract actions │ │

│ └──────────────────────────────────────────────────────────────────────┘ │

├──────────────────────────────────────────────────────────────────────────┤

│ [ OK ] Cancel │

└──────────────────────────────────────────────────────────────────────────┘

Sélectionnez «5 Distributions», pour choisir la distribution à installer:

┌─────────────────────────── Choose Distributions ───────────────────────────┐

│ As a convenience, we provide several "canned" distribution sets. │

│ These select what we consider to be the most reasonable defaults for the │

│ type of system in question. If you would prefer to pick and choose the │

│ list of distributions yourself, simply select "Custom". You can also │

│ pick a canned distribution set and then fine-tune it with the Custom item. │

│ │

│ Choose an item by pressing [SPACE] or [ENTER]. When finished, choose the │

│ Exit item or move to the OK button with [TAB]. │

│ ┌────────────────────────────────────────────────────────────────────────┐ │

│ │ <<< X Exit Exit this menu (returning to previous) │ │

│ │ All All system sources and binaries │ │

│ │ Reset Reset selected distribution list to nothing │ │

│ │ [ ] 4 Developer Full sources, binaries and doc but no games │ │

│ │ [ ] 5 Kern-Developer Full binaries and doc, kernel sources only │ │

│ │ [ ] 6 User Average user - binaries and doc only │ │

│ │ [X] A Minimal The smallest configuration possible │ │

│ │ > > B Custom Specify your own distribution set │ │

│ └────────────────────────────────────────────────────────────────────────┘ │

├────────────────────────────────────────────────────────────────────────────┤

│ [ OK ] Cancel │

└────────────[ Press F1 for more information on these options. ]─────────────┘

Cochez la case «Minimal» et OK pour revenir au menu d'installation :

┌─────────────────── Choose Custom Installation Options ───────────────────┐

│ This is the custom installation menu. You may use this menu to specify │

│ details on the type of distribution you wish to have, where you wish │

│ to install it from and how you wish to allocate disk storage to FreeBSD. │

│ ┌──────────────────────────────────────────────────────────────────────┐ │

│ │ X Exit Exit this menu (returning to previous) │ │

│ │ 2 Options View/Set various installation options │ │

│ │ 3 Partition Allocate disk space for FreeBSD │ │

│ │ 4 Label Label allocated disk partitions │ │

│ │ 5 Distributions Select distribution(s) to extract │ │

│ │ 6 Media Choose the installation media type │ │

│ │ 7 Commit Perform any pending Partition/Label/Extract actions │ │

│ └──────────────────────────────────────────────────────────────────────┘ │

├──────────────────────────────────────────────────────────────────────────┤

│ [ OK ] Cancel │

└──────────────────────────────────────────────────────────────────────────┘

ou vous sélectionnerez «6 Media» pour arriver sur l'écran de selection du Media d'installation

┌─────────────────────── Choose Installation Media ───────────────────────┐

│ FreeBSD can be installed from a variety of different installation │

│ media, ranging from floppies to an Internet FTP server. If you're │

│ installing FreeBSD from a supported CD/DVD drive then this is generally │

│ the best media to use if you have no overriding reason for using other │

│ media. │

│ ┌─────────────────────────────────────────────────────────────────────┐ │

│ │ 1 CD/DVD Install from a FreeBSD CD/DVD │ │

│ │ 2 FTP Install from an FTP server │ │

│ │ 3 FTP Passive Install from an FTP server through a firewall │ │

│ │ 4 HTTP Install from an FTP server through a http proxy │ │

│ │ 5 DOS Install from a DOS partition │ │

│ │ 6 NFS Install over NFS │ │

│ │ 7 File System Install from an existing filesystem │ │

│ │ 8 Floppy Install from a floppy disk set │ │

│ │ 9 USB Install from a USB drive │ │

│ │ X Options Go to the Options screen │ │

│ └─────────────────────────────────────────────────────────────────────┘ │

├─────────────────────────────────────────────────────────────────────────┤

│ [ OK ] Cancel │

└──────[ Press F1 for more information on the various media types ]───────┘

Sélectionnez «2 FTP», pour arriver sur l'écran de selection du serveur FTP le plus proche:

┌──────────── Please select a FreeBSD FTP distribution site ─────────────┐

│ Please select the site closest to you or "other" if you'd like to │

│ specify a different choice. Also note that not every site listed here │

│ carries more than the base distribution kits. Only Primary sites are │

│ guaranteed to carry the full range of possible distributions. │

│ ┌────-(-)────────────────────────────────────────────────────────────┐ │

│ │ Australia #2 ftp2.au.freebsd.org │ │

│ │ Australia #3 ftp3.au.freebsd.org │ │

│ │ Austria ftp.at.freebsd.org │ │

│ │ Austria #2 ftp2.at.freebsd.org │ │

│ │ Brazil ftp.br.freebsd.org │ │

│ │ Brazil #2 ftp2.br.freebsd.org │ │

│ │ Brazil #3 ftp3.br.freebsd.org │ │

│ │ Brazil #4 ftp4.br.freebsd.org │ │

│ │ Brazil #5 ftp5.br.freebsd.org │ │

│ │ Brazil #6 ftp6.br.freebsd.org │ │

│ │ Brazil #7 ftp7.br.freebsd.org │ │

│ │ Canada ftp.ca.freebsd.org │ │

│ │ China ftp.cn.freebsd.org │ │

│ │ China #2 ftp2.cn.freebsd.org │ │

│ │ Croatia ftp.hr.freebsd.org │ │

│ │ Czech Republic ftp.cz.freebsd.org │ │

│ │ Denmark ftp.dk.freebsd.org │ │

│ │ Denmark #2 ftp2.dk.freebsd.org │ │

│ │ Estonia ftp.ee.freebsd.org │ │

│ │ Finland ftp.fi.freebsd.org │ │

│ │ France ftp.fr.freebsd.org │ │

│ │ France #2 ftp2.fr.freebsd.org │ │

│ │ France #3 ftp3.fr.freebsd.org │ │

│ │ France #5 ftp5.fr.freebsd.org │ │

│ │ France #6 ftp6.fr.freebsd.org │ │

│ │ France #8 ftp8.fr.freebsd.org │ │

│ └────.(+)────────────────────────────────────────────────────────────┘ │

├────────────────────────────────────────────────────────────────────────┤

│ [ OK ] Cancel │

└────────────────────[ Select a site that's close! ]─────────────────────┘

Sélectionnez le serveur France (ftp.fr.freebsd.org), il va vous demandez confirmation:

│ ┌─────────────────── User Confirmation Requested ────────────────────┐

│ ││ Running multi-user, assume that the network is already configured? │

│ │├────────────────────────────────────────────────────────────────────┤

│ ││ [ Yes ] No │

│ │└────────────────────────────────────────────────────────────────────┘

Répondez Yes (vos paramètres réseaux sont déja configurés) pour revenir à l'écran d'installation:

┌─────────────────── Choose Custom Installation Options ───────────────────┐

│ This is the custom installation menu. You may use this menu to specify │

│ details on the type of distribution you wish to have, where you wish │

│ to install it from and how you wish to allocate disk storage to FreeBSD. │

│ ┌──────────────────────────────────────────────────────────────────────┐ │

│ │ X Exit Exit this menu (returning to previous) │ │

│ │ 2 Options View/Set various installation options │ │

│ │ 3 Partition Allocate disk space for FreeBSD │ │

│ │ 4 Label Label allocated disk partitions │ │

│ │ 5 Distributions Select distribution(s) to extract │ │

│ │ 6 Media Choose the installation media type │ │

│ │ 7 Commit Perform any pending Partition/Label/Extract actions │ │

│ └──────────────────────────────────────────────────────────────────────┘ │

├──────────────────────────────────────────────────────────────────────────┤

│ [ OK ] Cancel │

└──────────────────────────────────────────────────────────────────────────┘

Ou vous selectionnerez «7 Commit».

Puis attendez la fin de l'installation.

Installation du FreeBSD normal

Maintenant refaite la même chose mais pour le FreeBSD normal:

Il suffit, dans les options d'installation d'utiliser comme destination: la partition /normal.

Puis, lors du choix de la distribution, d'être un peux plus généreux en sélectionnant une Distributions de type «user - Average user» par exemple.

Post-configuration depuis sysinstall

A partir du menu principal de sysinstall:

┌─────────── FreeBSD/i386 8.0-RELEASE - sysinstall Main Menu ───────────┐

│ Welcome to the FreeBSD installation and configuration tool. Please │

│ select one of the options below by using the arrow keys or typing the │

│ first character of the option name you're interested in. Invoke an │

│ option with [SPACE] or [ENTER]. To exit, use [TAB] to move to Exit. │

│ ┌───────────────────────────────────────────────────────────────────┐ │

│ │ Usage Quick start - How to use this menu system │ │

│ │ Standard Begin a standard installation (recommended) │ │

│ │ Express Begin a quick installation (for experts) │ │

│ │ Custom Begin a custom installation (for experts) │ │

│ │ Configure Do post-install configuration of FreeBSD │ │

│ │ Doc Installation instructions, README, etc. │ │

│ │ Keymap Select keyboard type │ │

│ │ Options View/Set various installation options │ │

│ │ Fixit Repair mode with CDROM/DVD/floppy or start shell │ │

│ │ Upgrade Upgrade an existing system │ │

│ │ Load Config.. Load default install configuration │ │

│ │ Index Glossary of functions │ │

│ └───────────────────────────────────────────────────────────────────┘ │

├───────────────────────────────────────────────────────────────────────┤

│ [ Select ] X Exit Install │

└───────────────────────────────────────────────────────────────────────┘

Sélectionnez l'option «Configure»:

┌─────────────────────────── FreeBSD Configuration Menu ────────────────────────────┐

│ If you've already installed FreeBSD, you may use this menu to customize │

│ it somewhat to suit your particular configuration. Most importantly, │

│ you can use the Packages utility to load extra "3rd party" │

│ software not provided in the base distributions. │

│ ┌───────────────────────────────────────────────────────────────────────────────┐ │

│ │ X Exit Exit this menu (returning to previous) │ │

│ │ Distributions Install additional distribution sets │ │

│ │ Documentation installation Install FreeBSD Documentation set │ │

│ │ Packages Install pre-packaged software for FreeBSD │ │

│ │ Root Password Set the system manager's password │ │

│ │ Fdisk The disk Slice (PC-style partition) Editor │ │

│ │ Label The disk Label editor │ │

│ │ User Management Add user and group information │ │

│ │ Console Customize system console behavior │ │

│ │ Time Zone Set which time zone you're in │ │

│ │ Media Change the installation media type │ │

│ │ Mouse Configure your mouse │ │

│ └─.(+)──────────────────────────────────────────────────────────────────────────┘ │

├───────────────────────────────────────────────────────────────────────────────────┤

│ [ OK ] Cancel │

└────────────────[ Press F1 for more information on these options ]─────────────────┘

Puis selectionnez «User Management» pour créer un utilisateur dans le groupe wheel (administateur):

┌────────────── User and group management ──────────────┐

│ The submenus here allow to manipulate user groups and │

│ login accounts. │

│ │

│ ┌───────────────────────────────────────────────────┐ │

│ │ X Exit Exit this menu (returning to previous) │ │

│ │ User Add a new user to the system. │ │

│ │ Group Add a new user group to the system. │ │

│ └───────────────────────────────────────────────────┘ │

├───────────────────────────────────────────────────────┤

│ [ OK ] Cancel │

└───────[ Configure your user groups and users ]────────┘

Remplissez les informations demandées:

┌──────────────────────────────────────────────── User and Group Management ─────────────────────────────────┐

│ ┌──────────────────── Add a new user ──────────────────────────────────────────────────────────────────┐ │

│ │ Login ID: UID: Group: │ │

│ │ ┌──────────────┐ ┌──────┐ ┌──────┐ │ │

│ │ │votrelogin │ │1002 │ │wheel │ │ │

│ │ └──────────────┘ └──────┘ └──────┘ │ │

│ │ Password: Confirm Password: │ │

│ │ ┌──────────────────┐ ┌──────────────────┐ │ │

│ │ │****** │ │******** │ │ │

│ │ └──────────────────┘ └──────────────────┘ │ │

│ │ Full name: Member groups: │ │

│ │ ┌───────────────────────────────┐ ┌─────────────┐ │ │

│ │ │Mohandas Karamchand Gandhi │ │ │ │ │

│ │ └───────────────────────────────┘ └─────────────┘ │ │

│ │ Home directory: Login shell: │ │

│ │ ┌──────────────────┐ ┌───────────────────────────┐ │ │

│ └──│/home/votrelogin │───│/bin/tcsh │────────────────────────────────────────────────┘ │

│ └──────────────────┘ └───────────────────────────┘ │

│ ┌──────┐ ┌──────────┐ │

│ │ [OK] │ │ CANCEL │ │

│ └──────┘ └──────────┘ │

└────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Vérifiez bien que soit votre utilisateur est sois dans le group wheel, soit membre de se groupe (sinon vous ne pourrez pas passer root par la commande su).

Puis quitter le menu de configuration et sysinstall pour revenir sur le shell.

post-install.sh

L'utilisation de ce script va:

    • Copier les kernels et fichiers de configuration aux bons endroits

    • Accélérer le temps de démarrage (réduction du time out du bootloader: vous ne pouvez pas être devant lors du démarrage)

    • Ajouter le chargement automatiquement des drivers:

      • padlock (chiffrage matériel)

      • Serial ATA AHCI

    • Activer la réponse Y automatique au fsck lors du démarrage (car vous ne pouvez pas être devans la console pour appuyer sur y)

    • Activer l'IP v6

    • Configurer la time zone sur Paris

    • Installer un fichier d'exemple de configuration pour le firewall PF

    • Générer les fichiers fstab en utilisant les labels UFS (évite les surprises en cas de changement de drivers SATA suite à une mise à jour majeure)

Il se lance par la commande:

# /root/post-install.sh

Si tout c'est bien passé, vous pouvez maintenant re-démarrer votre serveur pour lancer votre FreeBSD tout neuf.

Configuration de base du serveur

Désactivation du checksum matériel de la carte réseau

Le driver vge de FreeBSD 8.0-RELEASE est buggué et rencontre un problème avec la génération des checksum matériel.

Ce problème empèchait les transfères de fichier par SCP et mes clients indiquaient les messages suivants:

    • "Corrupted MAC on input" (client SCP d'un autre FreeBSD)

    • "Incorrect MAC received on packet" (Putty)

Pour résoudre, désactivez la génération de checksum matériel par la commande:

# ifconfig vge0 -txcsum -rxcsum

Puis éditez le fichier /etc/rc.conf pour ajouter ces paramètres à la ligne de configuration de votre carte réseau:

ifconfig_vge0="inet 88.191.XXX.YYY netmask 255.255.255.0 -txcsum -rxcsum"

Cette action n'est hélas pas suffisante pour résourdre les problèmes de transfères SCP (stalled) de gros fichiers (plusieurs Go): Si vous êtes confronté à ce problème, une mise à jour vers 8.0-Stable est conseillé.

Heure (NTP)

Déclarez un serveur NTP pour être toujours à l'heure:

# vi etc/rc.conf

ntpdate_enable="YES"

ntpdate_program="ntpdate"

ntpdate_flags="-b fr.pool.ntp.org"

Serveur SSH

Je vous conseil de changer le port 22 par un autre port (pour limiter un peux les scans).

Si vous souhaitez forcer l'utilisation du chiffrage matériel, restreignez la liste des ciphers/MACs proposés par SSHD:

Ciphers aes128-cbc,aes192-cbc,aes256-cbc

MACs hmac-sha1,hmac-sha1-96

À chaque fois que vous modifiez votre /etc/ssh/sshd_config, prenez quelques précautions avant d'appliquer les changements par la commande /etc/rc.d/sshd reload.

Ne fermez pas votre session SSH par laquelle v

2. Lancer la suite à votre , et testez vos modifications en ouvrant une autre utilisant la nouvelle configuration ce qui permettra de corriger vos erreurs s'il y en à.

Mise à jour

On va lancer le téléchargement et l'installation des mises à jour système disponible la commande suivante:

# freebsd-update fetch install

Si le kernel est mis à jour, un redémarrage s'impose pour prendre en compte cette mise à jour.

On configure ensuite le téléchargement (mais pas l'installation!) automatique des mises à jour, tous les matins à 1 heure par exemple

# vi /etc/crontab

#Mise à jour système

0 1 * * * root /usr/sbin/freebsd-update cron

Puis un petit coup de:

# /etc/rc.d/cron restart

Si des mises à jour sont téléchargées, votre utilisateur root recevra un émail d'avertissement pour lui dire de les installer (freebsd-update install).

Attention: Les mises à jour kernel ne fonctionne qu'avec un kernel GENERIC.

Pour ceux qui installent les ports par compilation

Si vous souhaitez utilisez la méthode d'installation par compilation des ports (non conseillez si vous êtes pressés), Initialisez son utilisation par l'installation et la décompression de la liste des ports:

# portsnap fetch extract

Puis configurez la mise à jour automatique de l'index des ports et de la vérification de présence de nouvelle version tous les matins à 2 heure par exemple:

# vi /etc/crontab

# Portupdate

0 2 * * * root /usr/sbin/portsnap -I cron update && pkg_version -vIL=

Idem que pour freebs-update, la mise à jour automatique va uniquement télécharger (portsnap fetch) et non installer (portsnap update) les mise à jour.

Ceci pour éviter que les ports ne se mettent à jour pendant une compilation.

Ensuite, on en profite pour personnalisé le /etc/make.conf et lui demander une optimisation lors de la compilation des ports:

# vi /etc/make.conf

# Gestion des fonctionnalitées detectées du CPU

CPUTYPE?=native

# X11 n'est pas installé, donc évite de l'utiliser:

WITHOUT_X11=yes

Firewall

Si vous avez utilisé le script d'installation, un fichier d'exemple pour Packet Filter est livré dans /etc/pf.conf.

Éditez ce fichier pour l'adapter à vos besoins (si vous avez modifié le port SSH par exemple).

Puis vérifier ca syntaxe:

# pfctl -vnf /etc/pf.conf

Relisez votre script 10 fois, testez-le sur une machine, et quand vous êtes à 100% sur qu'il ne bloquera pas vos sessions SSH vers votre serveur, activez-le:

# /etc/rc.d/pf onestart

Pas de pannique, la déconnexion SSH est normale, maintenant essayez de vous re-connecter.

Si vous n'arrivez pas à vous reconnecter, c'est que vos règles bloquent votre accès SSH: À partir de l'interface Dedibox lancer un re-démarrage de votre serveur et re-connectez vous pour corriger votre configuration.

Une fois reconnecté, activer le démarrage automatique du pf et des logs:

# echo 'pf_enable="YES"' >> /etc/rc.conf

# echo 'pflog_enable="YES"' >> /etc/rc.conf

Affichage de l'état général du firewall par la commande:

# pfctl -s all

Rechargement du fichier de configuration et on efface les sessions en cours par:

# pfctl -F all -f /etc/pf.conf

Affichage temps réel des paquets bloqués par:

# tcpdump -i pflog0 -ttt -e -n

Affichage du contenus des logs par:

# tcpdump -r /var/log/pflog -ttt -e -n

Génération de dump

Un truc utile à faire en cas de crash du FreeBSD: Faire en sorte qu'il écrive son DUMP dans le swap avant de redémarrer.

Pour cela on vérifie que la taille du swap est au minimum égale à la taille de la RAM, puis on ajoute cette ligne dans le /etc/rc.conf:

crashinfo_enable="YES" # Automatically generate crash dump summary.

dumpdev="AUTO"

dumpdir="/var/crash" # Directory where crash dumps are to be stored

Désormais, suite à un crash, les informations contenues dans /var/crash (surtout le panic backtrace) seront très utile aux développeurs.

Remplacement du serveur de mail

Par défaut, FreeBSD inclus sendmail, qui est un très gros serveur mail qui permet d'envoyer ET de recevoir des emails.

Si votre serveur n'a pas à jouer ce rôle, je vous conseil de remplacer sendmail par ssmtp qui est beaucoup plus simple.

La doc FreeBSD est bien faites à ce sujet (chapitre outgoing-only).

On commence par désactiver sendmail:

# vi /etc/rc.conf

sendmail_enable="NO"

sendmail_submit_enable="NO"

sendmail_outbound_enable="NO"

sendmail_msp_queue_enable="NO"

Puis on stoppe le process sendmail en cours:

# /etc/rc.d/sendmail onestop

On installe ssmtp, au choix:

En utilisant les ports

# cd /usr/ports/mail/ssmtp

# make install replace clean

Ou l'installation du pkg

# pkg_add -r ssmtp

Puis on le configure (voici un exemple pour utiliser le serveur SMTP de gmail si vous avez un compte chez eux):

# vi /usr/local/etc/ssmtp/ssmtp.conf

root=votre-login@gmail.com

mailhub=smtp.gmail.com:587

AuthUser=votre-login@gmail.com

AuthPass=votre-mot-de-passe

rewriteDomain=bsdrp.net

hostname=_HOSTNAME_

FromLineOverride=YES

UseSTARTTLS=YES

Et testez votre configuration:

# echo test | mail -s "test ssmtp" votre@email.com

Configuration d'un serveur sftp chrooté

La version d'OpenSSH permet de paramétrer facilement un serveur sftp chrooté.

Ce qui permet de mettre un serveur de fichier à disposition de vos utilisateurs facilement.

Voici le concept:

    1. On créer un groupe «sftp» : tous les utilisateurs de ce groupe seront authorisé à accéder au serveur SFTP

    2. On créer un utilisateur «sftp» du groupe «sftp» qui possède un home directory (/home/sftp): C'est ce dossier qui va être accessible aux utilisateurs

    3. On change le propriétaire du dossier /home/sftp pour que le propriétaire de l'ensemble du dossier soit «root» : Les utilisateurs ne doivent pas pouvoir modifier les fichiers dans ce dossier. SSH vérifiera le propriétaire et refusera la connexion si ce n'est pas le cas.

    4. On configure le SSHD pour chrooter les utilisateurs du groupe «sftp» dans /home/sftp

    5. Il ne vous reste plus qu'a créer des utilisateurs (home: /home/sftp et shell: /sbin/nologin)

Création du groupe sftp et de l'utilisateur sftp

Pour cette étape, on se laisse guider par l'outil «adduser»:

[root@dev]/home#adduser

Username: sftp

Full name: Fake SFTP user

Uid (Leave empty for default):

Login group [sftp]:

Login group is sftp. Invite sftp into other groups? []:

Login class [default]:

Shell (sh csh tcsh nologin) [sh]: nologin

Home directory [/home/sftp]:

Home directory permissions (Leave empty for default):

Use password-based authentication? [yes]:

Use an empty password? (yes/no) [no]:

Use a random password? (yes/no) [no]:

Enter password: ******

Enter password again: *****

Lock out the account after creation? [no]: yes

Username : sftp

Password : *****

Full Name : Fake SFTP user

Uid : 1014

Class :

Groups : sftp

Home : /home/sftp

Home Mode :

Shell : /usr/sbin/nologin

Locked : yes

OK? (yes/no): yes

adduser: INFO: Successfully added (sftp) to the user database.

adduser: INFO: Account (sftp) is locked.

Add another user? (yes/no): no

Goodbye!

Modification du propriétaire du groupe /home/sftp

Étape importante pour le bon fonctionnement du SSH chrooté:

chown -R root:wheel /home/sftp

Si vous oubliez cette étape, vos logs vous insulterons avec ces mots à la tentative de connexion de l'utilisateur:

sshd[8898]: _secure_path: /home/sftp/.login_conf is not owned by uid 1005

sshd[8898]: fatal: bad ownership or modes for chroot directory "/home/sftp"

Paramétrage de SSHd

Éditez le fichier /etc/ssh/sshd_config et ajoutez à la fin:

# override default of no subsystems

Subsystem sftp internal-sftp

# Chrooted dir for sftp group

Match Group sftp

ForceCommand internal-sftp

ChrootDirectory /home/sftp

Création des utilisateurs

Maintenant il ne reste plus qu'a créer les utilisateurs authorisé à faire du SFTP. Ils doivent être créé avec les valeurs suivantes:

    • Ne pas créer leur homedir: Il vont utiliser le /home/sftp

    • Leur donner «nologin» comme shell, cela est suffisant pour le SFTP

Cet utilisateur utilise le home dir: /home/sftp (il ne faut pas lui créer un home dir) et son shell est nologin car il ne fait que des transfère SFTP.

[root@dev-old]~#adduser -D -g sftp -s nologin -w random

Username: luke

Full name: Luke Skywalker

Uid (Leave empty for default):

Login group [sftp]:

Login group is rigolo. Invite luke into other groups? []:

Login class [default]:

Shell (sh csh tcsh nologin) [nologin]:

Home directory [/home/luke]: /home/sftp

Home directory permissions (Leave empty for default):

Use password-based authentication? [yes]:

Use an empty password? (yes/no) [no]:

Use a random password? (yes/no) [yes]:

Lock out the account after creation? [no]:

Username : luke

Password : <random>

Full Name : Luke Skywalker

Uid : 1015

Class :

Groups : rigolo

Home : /home/rigolo

Home Mode :

Shell : /usr/sbin/nologin

Locked : no

OK? (yes/no): yes

adduser: INFO: Successfully added (luke) to the user database.

adduser: INFO: Password for (luke) is: xQ5anvnL/vqAt7C

Add another user? (yes/no): no

Goodbye!

Mise à jour à distance (par SSH)

Il existe 2 méthodes de mettre à jour un FreeBSD:

    • La méthode «automatique» par l'outil freebsd-update (si on utilise un noyaux générique)

    • La méthode «manuelle» par la recompilation/réinstallation complète.

Le problème est que la méthode manuelle nécessite normalement un passage par le mode single-user, ce qui n'est pas possible lors d'une mise à jour par SSH.

On va donc jouer avec le feux…

Méthode manuelle

Voici la procédure que j'utilise: HOWTO: keeping FreeBSD's base system and packages up-to-date