Étapes recommandées pour les nouveaux serveurs FreeBSD 12.0

De Get Docs
Aller à :navigation, rechercher

Introduction

Lors de la configuration d'un nouveau serveur FreeBSD, vous pouvez suivre un certain nombre d'étapes facultatives pour mettre votre serveur dans un état plus convivial pour la production. Dans ce guide, nous aborderons certains des exemples les plus courants.

Nous allons mettre en place un pare-feu simple et facile à configurer qui refuse la plupart du trafic. Nous nous assurerons également que le fuseau horaire de votre serveur reflète précisément son emplacement. Nous allons configurer l'interrogation NTP afin de maintenir l'heure exacte du serveur et, enfin, montrer comment ajouter de l'espace d'échange supplémentaire à votre serveur.

Avant de commencer avec ce guide, vous devez vous connecter et configurer votre environnement shell comme vous le souhaitez. Vous pouvez découvrir comment procéder en suivant ce guide.

Note: As of July 1, 2022, DigitalOcean no longer supports the creation of new FreeBSD Droplets through the Control Panel or API. However, you can still spin up FreeBSD Droplets using a custom image. Learn how to import a custom image to DigitalOcean by following our product documentation.


Comment configurer un pare-feu IPFW simple

La première tâche consiste à configurer un pare-feu simple pour sécuriser votre serveur.

FreeBSD prend en charge et inclut trois pare-feux distincts. Ceux-ci sont appelés pf, ipfw, et ipfilter. Dans ce guide, nous utiliserons ipfw comme pare-feu. ipfw est un pare-feu sécurisé et dynamique écrit et maintenu dans le cadre de FreeBSD.

Configuration du pare-feu de base

La quasi-totalité de votre configuration aura lieu dans le /etc/rc.conf dossier. Pour modifier la configuration, vous utiliserez le sysrc commande, qui permet aux utilisateurs de modifier la configuration dans /etc/rc.conf de manière sûre. Dans ce fichier, vous ajouterez un certain nombre de lignes différentes pour activer et contrôler la façon dont le ipfw le pare-feu fonctionnera. Vous commencerez par les règles essentielles; exécutez la commande suivante pour commencer :

sudo sysrc firewall_enable="YES"

Chaque fois que tu cours sysrc pour modifier votre configuration, vous recevrez une sortie indiquant les modifications :

Outputfirewall_enable: NO -> YES

Comme vous vous en doutez, cette première commande active le ipfw pare-feu, le démarrant automatiquement au démarrage et lui permettant d'être démarré avec l'habituel service commandes.

Exécutez maintenant ce qui suit :

sudo sysrc firewall_quiet="YES"

Cela raconte ipfw de ne rien sortir vers la sortie standard lorsqu'il effectue certaines actions. Cela peut sembler être une question de préférence, mais cela affecte en fait la fonctionnalité du pare-feu.

Deux facteurs se combinent pour en faire une option importante. La première est que le script de configuration du pare-feu est exécuté dans l'environnement shell actuel, et non en tâche de fond. La seconde est que lorsque le ipfw commande lit un script de configuration sans le "quiet" flag, il lit et sort chaque ligne, tour à tour, vers la sortie standard. Lorsqu'il sort une ligne, il immédiatement exécute l'action associée.

La plupart des fichiers de configuration de pare-feu vident les règles actuelles en haut du script afin de recommencer à zéro. Si la ipfw Si le pare-feu rencontre une ligne comme celle-ci sans l'indicateur silencieux, il videra immédiatement toutes les règles et reviendra à sa politique par défaut, qui consiste généralement à refuser toutes les connexions. Si vous configurez le pare-feu sur SSH, cela supprimera la connexion, fermera la session shell en cours et aucune des règles qui suivent ne sera traitée, ce qui vous empêchera d'accéder au serveur. L'indicateur silencieux permet au pare-feu de traiter les règles comme un ensemble au lieu de les implémenter individuellement.

Après ces deux lignes, vous pouvez commencer à configurer le comportement du pare-feu. Sélectionnez maintenant "workstation" comme type de pare-feu que vous configurerez :

sudo sysrc firewall_type="workstation"

Cela définit le pare-feu pour protéger le serveur à partir duquel vous configurez le pare-feu à l'aide de règles avec état. Un pare-feu avec état surveille l'état des connexions réseau au fil du temps et stocke des informations sur ces connexions en mémoire pendant une courte période. En conséquence, non seulement des règles peuvent être définies sur les connexions que le pare-feu doit autoriser, mais un pare-feu avec état peut également utiliser les données qu'il a apprises sur les connexions précédentes pour évaluer quelles connexions peuvent être établies.

La /etc/rc.conf vous permet également de personnaliser les services auxquels vous souhaitez que les clients puissent accéder en utilisant le firewall_myservices et firewall_allowservices options.

Exécutez la commande suivante pour ouvrir les ports qui doivent être accessibles sur votre serveur, tels que le port 22 pour votre connexion SSH et votre port 80 pour un serveur Web HTTP classique. Si vous utilisez SSL sur votre serveur Web, assurez-vous d'ajouter un port 443:

sudo sysrc firewall_myservices="22/tcp 80/tcp 443/tcp"

La firewall_myservices L'option est définie sur une liste de ports ou de services TCP, séparés par des espaces, qui doivent être accessibles sur votre serveur.

Remarque : Vous pouvez également utiliser les services par leur nom. Les services que FreeBSD connaît par leur nom sont listés dans le /etc/services dossier. Par exemple, vous pouvez remplacer la commande précédente par quelque chose comme ceci :

firewall_myservices="ssh http https"

Cela aurait les mêmes résultats.


La firewall_allowservices L'option répertorie les éléments qui doivent être autorisés à accéder aux services fournis. Il vous permet donc de limiter l'accès à vos services exposés (de firewall_myservices) à des machines ou à des plages de réseau particulières. Par exemple, cela peut être utile si vous souhaitez qu'une machine héberge du contenu Web pour un réseau interne d'entreprise. Le mot clé "any" signifie que n'importe quelle IP peut accéder à ces services, les rendant complètement publics :

sudo sysrc firewall_allowservices="any"

La firewall_logdeny l'option indique ipfw pour consigner toutes les tentatives de connexion refusées dans un fichier situé à /var/log/security. Exécutez la commande suivante pour définir ceci :

sudo sysrc firewall_logdeny="YES"

Pour vérifier les modifications que vous avez apportées à la configuration du pare-feu, exécutez la commande suivante :

grep 'firewall' /etc/rc.conf

Cette partie de la /etc/rc.conf le fichier ressemblera à ceci :

Outputfirewall_enable="YES"
firewall_quiet="YES"
firewall_type="workstation"
firewall_myservices="22 80 443"
firewall_allowservices="any"
firewall_logdeny="YES"

N'oubliez pas de régler le firewall_myservices possibilité de référencer les services que vous souhaitez exposer aux clients.

Autoriser les connexions UDP (facultatif)

Les ports et services répertoriés dans le firewall_myservices possibilité dans le /etc/rc.conf fichier autorise l'accès pour les connexions TCP. Si vous souhaitez exposer des services qui utilisent UDP, vous devez modifier le /etc/rc.firewall dossier:

sudo vi /etc/rc.firewall

Vous avez configuré votre pare-feu pour utiliser le "workstation" type de pare-feu, recherchez donc une section qui ressemble à ceci :

/etc/rc.firewall

. . .

[Ww][Oo][Rr][Kk][Ss][Tt][Aa][Tt][Ii][Oo][Nn])

. . .

Il y a une section dans ce bloc qui est dédiée au traitement des firewall_allowservices et firewall_myservices valeurs que vous définissez. Il ressemblera à ceci:

/etc/rc.firewall

for i in ${firewall_allowservices} ; do
  for j in ${firewall_myservices} ; do
    ${fwcmd} add pass tcp from $i to me $j
  done
done

Après cette section, vous pouvez ajouter tous les services ou ports qui doivent accepter les paquets UDP en ajoutant des lignes comme celle-ci :

${fwcmd} add pass udp from any to me port_num

Dans vi, presse i passer à INSERT mode et ajoutez votre contenu, puis enregistrez et fermez le fichier en appuyant sur ESC, en tapant :wq, et en appuyant sur ENTER. Dans l'exemple précédent, vous pouvez laisser le "any" si la connexion doit être autorisée pour tous les clients ou remplacez-la par une adresse IP ou une plage de réseau spécifique. La port_num doit être remplacé par le numéro de port ou le nom du service auquel vous souhaitez autoriser l'accès UDP. Par exemple, si vous utilisez un serveur DNS, vous souhaiterez peut-être avoir une ligne qui ressemble à ceci :

for i in ${firewall_allowservices} ; do
  for j in ${firewall_myservices} ; do
    ${fwcmd} add pass tcp from $i to me $j
  done
done

${fwcmd} add pass udp from 192.168.2.0/24 to me 53

Cela permettra à tout client de l'intérieur du 192.168.2.0/24 plage réseau pour accéder à un serveur DNS fonctionnant sur le port standard 53. Notez que dans cet exemple, vous voudriez également ouvrir ce port pour les connexions TCP car il est utilisé par les serveurs DNS pour les réponses plus longues.

Enregistrez et fermez le fichier lorsque vous avez terminé.

Démarrage du pare-feu

Lorsque vous avez terminé votre configuration, vous pouvez démarrer le pare-feu en tapant :

sudo service ipfw start

Le pare-feu démarrera correctement, bloquant le trafic indésirable tout en respectant vos services et ports autorisés. Ce pare-feu démarrera automatiquement à chaque démarrage.

Vous souhaitez également configurer une limite sur le nombre de refus par adresse IP que vous enregistrerez. Cela empêchera vos journaux de se remplir à partir d'un seul utilisateur persistant. Vous pouvez le faire dans le /etc/sysctl.conf dossier:

sudo vi /etc/sysctl.conf

Au bas du fichier, vous pouvez limiter votre journalisation à "5" en ajoutant la ligne suivante :

/etc/sysctl.conf

...
net.inet.ip.fw.verbose_limit=5

Enregistrez et fermez le fichier lorsque vous avez terminé. Cela configurera ce paramètre au prochain démarrage.

Pour implémenter ce même comportement pour votre session actuellement active sans redémarrer, vous pouvez utiliser le sysctl commande lui-même, comme ceci :

sudo sysctl net.inet.ip.fw.verbose_limit=5

Cela devrait immédiatement implémenter la limite pour ce démarrage.

Comment définir le fuseau horaire de votre serveur

C'est une bonne idée de régler correctement le fuseau horaire de votre serveur. Il s'agit d'une étape importante lorsque vous configurez la synchronisation de l'heure NTP dans la section suivante.

FreeBSD est livré avec un outil basé sur un menu appelé tzsetup pour configurer les fuseaux horaires. Pour définir le fuseau horaire de votre serveur, appelez cette commande avec sudo privilèges :

sudo tzsetup

Tout d'abord, il vous sera demandé de sélectionner la région du monde dans laquelle se trouve votre serveur :

Vous devrez ensuite choisir une sous-région ou un pays :

Remarque : Pour naviguer dans ces menus, vous devez utiliser le PAGE UP et PAGE DOWN clés. Si vous ne les avez pas sur votre clavier, vous pouvez utiliser FN + DOWN ou FN + UP.


Enfin, sélectionnez le fuseau horaire spécifique qui convient à votre serveur :

Confirmez la sélection de fuseau horaire qui est présentée en fonction de vos choix.

À ce stade, le fuseau horaire de votre serveur doit correspondre aux sélections que vous avez effectuées.

Comment configurer NTP pour conserver une heure précise

Maintenant que le fuseau horaire est configuré sur votre serveur, vous pouvez configurer NTP ou Network Time Protocol. Cela aidera à synchroniser l'heure de votre serveur avec celle des autres dans le monde. Ceci est important pour les interactions client-serveur sensibles au facteur temps ainsi que pour une journalisation précise.

Encore une fois, vous pouvez activer le service NTP sur votre serveur en ajustant le /etc/rc.conf dossier. Exécutez la commande suivante pour ajouter la ligne ntpd_enable="YES" au dossier :

sudo sysrc ntpd_enable="YES"

Vous devez également ajouter une deuxième ligne qui synchronisera l'heure de votre machine avec les serveurs NTP distants au démarrage. Ceci est nécessaire car cela permet à votre serveur de dépasser la limite de dérive normale lors de l'initialisation. Votre serveur sera probablement en dehors de la limite de dérive au démarrage car votre fuseau horaire sera appliqué avant le démarrage du démon NTP, ce qui décalera votre heure système :

sudo sysrc ntpd_sync_on_start="YES"

Si vous n'aviez pas cette ligne, votre démon NTP échouerait au démarrage en raison des paramètres de fuseau horaire qui faussent l'heure de votre système avant le processus de démarrage.

Vous pouvez commencer votre ntpd service en tapant :

sudo service ntpd start

Cela maintiendra l'heure de votre serveur en se synchronisant avec les serveurs NTP répertoriés dans /etc/ntp.conf.

Comment configurer un espace d'échange supplémentaire

You can check how much swap space your server has with the following command:

sudo swapinfo -g

Il devrait afficher quelque chose comme ceci :

OutputDevice          1G-blocks     Used    Avail Capacity
/dev/gpt/swapfs         1        0        1     0%

Certains utilisateurs et applications peuvent avoir besoin de plus d'espace d'échange que cela. Ceci est accompli en ajoutant un fichier d'échange.

La première chose que vous devez faire est d'allouer une partie du système de fichiers au fichier que vous souhaitez utiliser pour le swap. Vous utiliserez le truncate commande, qui peut rapidement allouer de l'espace à la volée.

Nous allons mettre le fichier d'échange dans /swapfile pour ce tutoriel, mais vous pouvez placer le fichier où vous le souhaitez, comme /var/swapfile par exemple. Ce fichier fournira 1 gigaoctet supplémentaire d'espace d'échange. Vous pouvez ajuster ce nombre en modifiant la valeur donnée au -s option:

sudo truncate -s 1G /swapfile

Après avoir alloué l'espace, vous devez verrouiller l'accès au fichier. Les utilisateurs normaux ne devraient pas avoir accès au fichier :

sudo chmod 0600 /swapfile

Ensuite, associez un pseudo-périphérique à votre fichier et configurez-le pour qu'il se monte au démarrage en tapant :

echo "md99 none swap sw,file=/swapfile,late 0 0" | sudo tee -a /etc/fstab

Cette commande ajoute une ligne qui ressemble à ceci au /etc/fstab dossier:

md99 none swap sw,file=/swapfile,late 0 0

Une fois la ligne ajoutée à votre /etc/fstab fichier, vous pouvez activer le fichier d'échange pour la session en tapant :

sudo swapon -aqL

Vous pouvez vérifier que le fichier d'échange fonctionne maintenant en utilisant le swapinfo commande à nouveau :

sudo swapinfo -g

Vous devriez voir le périphérique supplémentaire (/dev/md99) associé à votre fichier d'échange :

OutputDevice          1G-blocks     Used    Avail Capacity
/dev/gpt/swapfs         1        0        1     0%
/dev/md99               1        0        1     0%
Total                   2        0        2     0%

Ce fichier d'échange sera monté automatiquement à chaque démarrage.

Conclusion

Les étapes décrites dans ce guide peuvent être utilisées pour amener votre serveur FreeBSD dans un état plus prêt pour la production. En configurant les éléments essentiels de base comme un pare-feu, la synchronisation NTP et un espace d'échange approprié, votre serveur peut être utilisé comme une bonne base pour les installations et services futurs.