Empfohlene Schritte für neue FreeBSD 12.0-Server

Einführung

Wenn Sie einen neuen FreeBSD-Server einrichten, können Sie eine Reihe von optionalen Schritten ausführen, um Ihren Server in einen produktionsfreundlicheren Zustand zu versetzen. In diesem Handbuch werden einige der häufigsten Beispiele behandelt.

Wir werden eine einfache, leicht zu konfigurierende Firewall einrichten, die den meisten Datenverkehr blockiert. Wir werden auch sicherstellen, dass die Zeitzone Ihres Servers den Standort genau wiedergibt. Wir werden die NTP-Abfrage einrichten, um die Uhrzeit des Servers korrekt zu halten, und schließlich zeigen, wie Sie Ihrem Server zusätzlichen Auslagerungsspeicher hinzufügen können.

Bevor Sie mit diesem Handbuch beginnen, sollten Sie sich anmelden und Ihre Shell-Umgebung nach Ihren Wünschen konfigurieren. Informationen dazu finden Sie unter this guide.

So konfigurieren Sie eine einfache IPFW-Firewall

Die erste Aufgabe besteht darin, eine einfache Firewall einzurichten, um Ihren Server zu schützen.

FreeBSD unterstützt und enthält drei separate Firewalls. Diese heißen "+ pf ", " ipfw " und " ipfilter ". In diesem Handbuch wird https://www.freebsd.org/doc/handbook/firewalls-ipfw.html [` ipfw `] als Firewall verwendet. ` ipfw +` ist eine sichere, statusbehaftete Firewall, die als Teil von FreeBSD geschrieben und gewartet wird.

Konfigurieren der Basisfirewall

Fast Ihre gesamte Konfiguration findet in der Datei "+ / etc / rc.conf " statt. Um die Konfiguration zu ändern, verwenden Sie den Befehl " sysrc ", mit dem Benutzer die Konfiguration in " / etc / rc.conf " auf sichere Weise ändern können. In dieser Datei werden Sie eine Reihe von Zeilen einfügen, um die Funktionsweise der " ipfw +" - Firewall zu aktivieren und zu steuern. Sie beginnen mit den wesentlichen Regeln. Führen Sie den folgenden Befehl aus, um zu beginnen:

sudo sysrc firewall_enable="YES"

Jedes Mal, wenn Sie "+ sysrc +" ausführen, um Ihre Konfiguration zu ändern, erhalten Sie eine Ausgabe mit den folgenden Änderungen:

Outputfirewall_enable: NO -> YES

Wie zu erwarten, wird mit diesem ersten Befehl die Firewall "+ ipfw " aktiviert, die beim Booten automatisch gestartet wird und mit den üblichen Befehlen " service +" gestartet werden kann.

Führen Sie nun Folgendes aus:

sudo sysrc firewall_quiet="YES"

Dies weist + ipfw + an, nichts auszugeben, wenn bestimmte Aktionen ausgeführt werden. Dies scheint eine Frage der Präferenz zu sein, wirkt sich jedoch tatsächlich auf die Funktionalität der Firewall aus.

Zwei Faktoren machen dies zu einer wichtigen Option. Das erste ist, dass das Firewall-Konfigurationsskript in der aktuellen Shell-Umgebung und nicht als Hintergrundaufgabe ausgeführt wird. Das zweite ist, dass, wenn der Befehl "+ ipfw " ein Konfigurationsskript ohne das Flag "" quiet "+" liest, jede Zeile gelesen und ausgegeben wird, um sie zu standardisieren. Wenn es eine Zeile ausgibt, führt es die zugehörige Aktion * sofort * aus.

Die meisten Firewall-Konfigurationsdateien leeren die aktuellen Regeln oben im Skript, um neu zu starten. Wenn die "+ ipfw +" - Firewall auf eine Zeile wie diese ohne das "quiet" -Flag stößt, werden sofort alle Regeln gelöscht und die Standardrichtlinie wiederhergestellt, bei der normalerweise alle Verbindungen verweigert werden. Wenn Sie die Firewall über SSH konfigurieren, wird die Verbindung getrennt, die aktuelle Shell-Sitzung geschlossen und keine der folgenden Regeln wird verarbeitet, sodass Sie effektiv vom Server ausgeschlossen werden. Mit dem stillen Flag kann die Firewall die Regeln als Gruppe verarbeiten, anstatt sie einzeln zu implementieren.

Nach diesen beiden Zeilen können Sie das Verhalten der Firewall konfigurieren. Wählen Sie nun "" Workstation "" als Typ der zu konfigurierenden Firewall:

sudo sysrc firewall_type="workstation"

Hiermit wird die Firewall so eingerichtet, dass der Server, von dem aus Sie die Firewall konfigurieren, mithilfe von Stateful-Regeln geschützt wird. Eine Stateful Firewall überwacht den Status von Netzwerkverbindungen über einen längeren Zeitraum und speichert für kurze Zeit Informationen zu diesen Verbindungen im Speicher. Infolgedessen können nicht nur Regeln definiert werden, welche Verbindungen die Firewall zulassen soll, sondern eine Stateful-Firewall kann anhand der über frühere Verbindungen erfassten Daten auch bewerten, welche Verbindungen hergestellt werden können.

Mit der Datei "+ / etc / rc.conf " können Sie auch die Dienste anpassen, auf die Clients zugreifen sollen, indem Sie die Optionen " firewall_myservices " und " firewall_allowservices +" verwenden.

Führen Sie den folgenden Befehl aus, um Ports zu öffnen, auf die auf Ihrem Server zugegriffen werden soll, z. B. Port "+ 22 " für Ihre SSH-Verbindung und Port " 80 " für einen herkömmlichen HTTP-Webserver. Wenn Sie SSL auf Ihrem Webserver verwenden, stellen Sie sicher, dass Sie Port ` 443 +` hinzufügen:

sudo sysrc firewall_myservices="22/tcp  "

Die Option "+ firewall_myservices +" ist auf eine Liste von TCP-Ports oder -Diensten eingestellt, die durch Leerzeichen getrennt sind und auf Ihrem Server zugänglich sein sollen.

Die Option "+ firewall_allowservices " listet Elemente auf, die auf die bereitgestellten Dienste zugreifen dürfen sollen. Daher können Sie den Zugriff auf Ihre exponierten Dienste (von " firewall_myservices ") auf bestimmte Computer oder Netzwerkbereiche beschränken. Dies kann beispielsweise hilfreich sein, wenn ein Computer Webinhalte für ein internes Unternehmensnetzwerk hosten soll. Das Schlüsselwort "" any "+" bedeutet, dass alle IP-Adressen auf diese Dienste zugreifen können, sodass sie vollständig öffentlich sind:

sudo sysrc firewall_allowservices="any"

Die Option "+ firewall_logdeny " weist " ipfw " an, alle Verbindungsversuche zu protokollieren, die in einer Datei unter " / var / log / security +" abgelehnt wurden. Führen Sie den folgenden Befehl aus, um dies festzulegen:

sudo sysrc firewall_logdeny="YES"

Führen Sie den folgenden Befehl aus, um die Änderungen zu überprüfen, die Sie an der Firewall-Konfiguration vorgenommen haben:

grep 'firewall' /etc/rc.conf

Dieser Teil der Datei + / etc / rc.conf + sieht folgendermaßen aus:

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

Denken Sie daran, die Option "+ firewall_myservices +" anzupassen, um auf die Dienste zu verweisen, die Sie für Clients verfügbar machen möchten.

Zulassen von UDP-Verbindungen (optional)

Die in der Option "+ firewall_myservices " in der Datei " / etc / rc.conf " aufgeführten Ports und Dienste ermöglichen den Zugriff auf TCP-Verbindungen. Wenn Sie Dienste haben, die Sie mit https://en.wikipedia.org/wiki/User_Datagram_Protocol[UDP] verfügbar machen möchten, müssen Sie die Datei " / etc / rc.firewall +" bearbeiten:

sudo vi /etc/rc.firewall

Sie haben Ihre Firewall so konfiguriert, dass sie den Firewall-Typ "" Workstation "" verwendet. Suchen Sie daher nach einem Abschnitt, der folgendermaßen aussieht:

/etc/rc.firewall

. . .

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

. . .

Es gibt einen Abschnitt in diesem Block, der der Verarbeitung der von Ihnen festgelegten Werte für "+ firewall_allowservices " und " firewall_myservices +" gewidmet ist. Es wird so aussehen:

/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

Nach diesem Abschnitt können Sie alle Dienste oder Ports hinzufügen, die UDP-Pakete akzeptieren sollen, indem Sie folgende Zeilen hinzufügen:

${fwcmd} add pass udp from  to me

Drücken Sie in "+ vi " " i ", um in den " INSERT " - Modus zu wechseln, und fügen Sie Ihren Inhalt hinzu. Speichern und schließen Sie die Datei, indem Sie " ESC " drücken, ": wq " eingeben und " ENTER " drücken . Im vorherigen Beispiel können Sie das Schlüsselwort "" any "" belassen, wenn die Verbindung für alle Clients zulässig sein soll, oder es in eine bestimmte IP-Adresse oder einen bestimmten Netzwerkbereich ändern. Das ` port_num +` sollte durch die Portnummer oder den Dienstnamen ersetzt werden, auf den UDP zugreifen soll. Wenn Sie beispielsweise einen DNS-Server betreiben, möchten Sie möglicherweise eine Zeile, die ungefähr so ​​aussieht:

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  to me

Auf diese Weise kann jeder Client aus dem Netzwerkbereich "+ 192.168.2.0 / 24 " auf einen DNS-Server zugreifen, der über den Standardport " 53 +" betrieben wird. Beachten Sie, dass Sie in diesem Beispiel diesen Port auch für TCP-Verbindungen öffnen möchten, da dies von DNS-Servern für längere Antworten verwendet wird.

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Starten der Firewall

Wenn Sie mit Ihrer Konfiguration fertig sind, können Sie die Firewall starten, indem Sie Folgendes eingeben:

sudo service ipfw start

Die Firewall wird ordnungsgemäß gestartet und blockiert unerwünschten Datenverkehr, während die zulässigen Dienste und Ports eingehalten werden. Diese Firewall wird bei jedem Start automatisch gestartet.

Sie möchten auch ein Limit für die Anzahl der Verweigerungen pro IP-Adresse konfigurieren, die Sie protokollieren möchten. Dadurch wird verhindert, dass Ihre Protokolle von einem einzelnen, beständigen Benutzer ausgefüllt werden. Sie können dies in der Datei + / etc / sysctl.conf + tun:

sudo vi /etc/sysctl.conf

Am Ende der Datei können Sie Ihre Protokollierung auf "" 5 "" begrenzen, indem Sie die folgende Zeile hinzufügen:

/etc/sysctl.conf

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

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Dadurch wird diese Einstellung beim nächsten Start konfiguriert.

Um dasselbe Verhalten für Ihre derzeit aktive Sitzung ohne Neustart zu implementieren, können Sie den Befehl + sysctl + wie folgt verwenden:

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

Dies sollte sofort das Limit für diesen Boot implementieren.

So stellen Sie die Zeitzone für Ihren Server ein

Es ist eine gute Idee, die Zeitzone für Ihren Server richtig einzustellen. Dies ist ein wichtiger Schritt, wenn Sie im nächsten Abschnitt die NTP-Zeitsynchronisation konfigurieren.

FreeBSD wird mit einem menübasierten Tool namens "+ tzsetup " zum Konfigurieren von Zeitzonen ausgeliefert. Um die Zeitzone für Ihren Server festzulegen, rufen Sie diesen Befehl mit den Rechten ` sudo +` auf:

sudo tzsetup

Zuerst werden Sie aufgefordert, die Region der Welt auszuwählen, in der sich Ihr Server befindet:

Als nächstes müssen Sie eine Unterregion oder ein Land auswählen:

Wählen Sie abschließend die für Ihren Server geeignete Zeitzone aus:

Bestätigen Sie die Zeitzonenauswahl, die auf Grundlage Ihrer Auswahl angezeigt wird.

Zu diesem Zeitpunkt sollte die Zeitzone Ihres Servers mit Ihrer Auswahl übereinstimmen.

So konfigurieren Sie NTP, um die genaue Zeit einzuhalten

Nachdem Sie die Zeitzone auf Ihrem Server konfiguriert haben, können Sie NTP oder Network Time Protocol einrichten. Auf diese Weise können Sie die Zeit Ihres Servers mit anderen auf der ganzen Welt synchronisieren. Dies ist wichtig für zeitkritische Client-Server-Interaktionen sowie für eine genaue Protokollierung.

Sie können den NTP-Dienst auf Ihrem Server wieder aktivieren, indem Sie die Datei "+ / etc / rc.conf " anpassen. Führen Sie den folgenden Befehl aus, um der Datei die Zeile ` ntpd_enable =" YES "+` hinzuzufügen:

sudo sysrc ntpd_enable="YES"

Sie müssen auch eine zweite Zeile hinzufügen, die die Uhrzeit auf Ihrem Computer beim Booten mit den Remote-NTP-Servern synchronisiert. Dies ist erforderlich, da Ihr Server bei der Initialisierung die normale Abweichungsgrenze überschreiten kann. Ihr Server wird beim Booten wahrscheinlich außerhalb des Drift-Limits liegen, da Ihre Zeitzone vor dem Start des NTP-Dämons angewendet wird, wodurch Ihre Systemzeit verschoben wird:

sudo sysrc ntpd_sync_on_start="YES"

Wenn Sie diese Zeile nicht hätten, würde Ihr NTP-Dämon beim Starten aufgrund der Zeitzoneneinstellungen, die Ihre Systemzeit vor dem Startvorgang verzerren, fehlschlagen.

Sie können Ihren + ntpd + - Dienst starten, indem Sie Folgendes eingeben:

sudo service ntpd start

Auf diese Weise wird die Zeit Ihres Servers durch die Synchronisierung mit den in "+ / etc / ntp.conf +" aufgeführten NTP-Servern aufrechterhalten.

So konfigurieren Sie zusätzlichen Swap Space

Auf auf DigitalOcean konfigurierten FreeBSD-Servern wird 1 Gigabyte swap space unabhängig von der Größe Ihres Servers automatisch konfiguriert. Sie können dies sehen, indem Sie Folgendes eingeben:

sudo swapinfo -g

Es sollte ungefähr so ​​aussehen:

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

Einige Benutzer und Anwendungen benötigen möglicherweise mehr Auslagerungsspeicher. Dies wird durch Hinzufügen einer Auslagerungsdatei erreicht.

Als Erstes müssen Sie der Datei, die Sie für den Austausch verwenden möchten, einen Teil des Dateisystems zuweisen. Sie verwenden den Befehl "+ truncate +", mit dem Sie im Handumdrehen schnell Speicherplatz zuweisen können.

Wir werden die Swap-Datei für dieses Tutorial in "+ / Swap-Datei " einfügen, aber Sie können die Datei an einer beliebigen Stelle ablegen, z. B. in " / var / Swap-Datei ". Diese Datei stellt zusätzlich 1 Gigabyte Auslagerungsspeicher zur Verfügung. Sie können diese Zahl anpassen, indem Sie den Wert für die Option " -s +" ändern:

sudo truncate -s  /swapfile

Nachdem Sie den Speicherplatz zugewiesen haben, müssen Sie den Zugriff auf die Datei sperren. Normale Benutzer sollten keinen Zugriff auf die Datei haben:

sudo chmod 0600 /swapfile

Verknüpfen Sie als Nächstes ein Pseudogerät mit Ihrer Datei und konfigurieren Sie es so, dass es beim Start eingehängt wird, indem Sie Folgendes eingeben:

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

Dieser Befehl fügt der + / etc / fstab + Datei eine Zeile hinzu, die so aussieht:

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

Nachdem die Zeile zu Ihrer + / etc / fstab + - Datei hinzugefügt wurde, können Sie die Auslagerungsdatei für die Sitzung aktivieren, indem Sie Folgendes eingeben:

sudo swapon -aqL

Sie können überprüfen, ob die Auslagerungsdatei jetzt funktioniert, indem Sie den Befehl + swapinfo + erneut verwenden:

sudo swapinfo -g

Sie sollten das zusätzliche Gerät (+ / dev / md99 +) sehen, das Ihrer Auslagerungsdatei zugeordnet ist:

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

Diese Auslagerungsdatei wird bei jedem Start automatisch bereitgestellt.

Fazit

Mit den in diesem Handbuch beschriebenen Schritten können Sie Ihren FreeBSD-Server in einen produktionsbereiten Zustand versetzen. Durch die Konfiguration grundlegender Elemente wie Firewall, NTP-Synchronisierung und geeigneten Auslagerungsspeicher kann Ihr Server als gute Basis für zukünftige Installationen und Dienste verwendet werden.