Empfohlene Schritte für neue FreeBSD 10.1-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 uns mit der Einrichtung einer einfachen, leicht zu konfigurierenden Firewall befassen, die den meisten Datenverkehr blockiert. Wir werden auch sicherstellen, dass die Zeitzone Ihres Servers den Standort genau wiedergibt. Wir werden das NTP-Polling einrichten, um die Uhrzeit des Servers korrekt zu halten, und schließlich zeigen wir, wie Sie Ihrem Server zusätzlichen Swap-Speicherplatz 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, die wir angehen werden, ist das Einrichten einer einfachen Firewall, um unseren Server zu sichern.

FreeBSD unterstützt und enthält drei separate Firewalls mit jeweils eigenen Stärken und Schwächen. Diese heißen "+ pf ", " ipfw " und " ipfilter ". In diesem Handbuch werden wir " ipfw +" verwenden, da wir mit einer sicheren, statusbehafteten Firewall problemlos einsatzbereit sind.

Konfigurieren der Basisfirewall

Fast die gesamte Konfiguration findet in der Datei "+ / etc / rc.conf " statt. Öffnen Sie diese Datei mit den Privilegien " sudo +" in Ihrem Editor:

sudo vi /etc/rc.conf

Im Inneren müssen wir eine Reihe von verschiedenen Zeilen hinzufügen, um die Funktionsweise der "+ ipfw +" - Firewall zu aktivieren und zu steuern. Beginnen wir mit den wesentlichen Regeln. Fügen Sie diese am Ende der Datei hinzu:

. . .

firewall_enable="YES"
firewall_quiet="YES"

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

Der zweite Befehl weist + ipfw + an, bei bestimmten Aktionen nichts auszugeben, was dem Standard entspricht. 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 nacheinander gelesen und ausgegeben wird, um einen Standardausgang zu erzielen. 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 mit einem sauberen Slate zu beginnen. 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 dadurch die Verbindung getrennt, die aktuelle Shell-Sitzung geschlossen und keine der folgenden Regeln verarbeitet, sodass Sie effektiv vom Server ausgeschlossen werden. Mit dem stillen Flag kann die Firewall die Regeln im Set verarbeiten, anstatt sie einzeln zu implementieren.

Nach diesen beiden Zeilen können wir mit der Konfiguration des Firewall-Verhaltens beginnen:

. . .

firewall_type="workstation"
firewall_myservices="22 80"
firewall_allowservices="any"
firewall_logdeny="YES"

Als erstes wählen wir "Workstation" als Typ der zu konfigurierenden Firewall. Dies ist eine Stateful-Firewall mit einem guten Standardverhalten. Außerdem können wir die Dienste, auf die Clients zugreifen sollen, mithilfe der Optionen "+ firewall_myservices " und " firewall_allowservices " auf einfache Weise anpassen. Schließlich konfigurieren wir " ipfw +", um alle Verbindungen zu protokollieren, die von den konfigurierten Regeln abgelehnt werden.

Die Option "+ firewall_myservices " sollte auf eine Liste von TCP-Ports oder -Diensten gesetzt werden, die durch Leerzeichen getrennt sind und auf Ihrem Server zugänglich sein sollen. Sie können die Ports wie hier verwenden (wir haben Port 22 für unsere SSH-Verbindung und Port 80 für einen herkömmlichen HTTP-Webserver konfiguriert). Sie können auch Dienste nach Namen verwenden. Die Dienste, die FreeBSD namentlich kennt, sind in der Datei ` / etc / services +` aufgeführt. Zum Beispiel könnten wir das oben Gesagte so ändern:

firewall_myservices="ssh http"

Dies hätte die gleichen Ergebnisse. Wenn Sie auf Ihrem Webserver SSL verwenden, müssen Sie dieser Liste entweder den Port "+ 443 " oder den Dienst " https +" hinzufügen.

Die Listenelemente "+ firewall_allowservices +" sind die Clients, denen Zugriff auf die bereitgestellten Dienste gewährt werden soll. Das Schlüsselwort "any" bedeutet, dass alle Clients auf diese Dienste zugreifen können. Wenn wir die Clients einschränken möchten, die eine Verbindung zu unseren Diensten herstellen können, können wir dies hier tun.

Die Option "+ firewall_logdeny " weist " ipfw " an, alle Verbindungsversuche zu protokollieren, die in einer Datei unter " / var / log / security +" abgelehnt wurden.

Alles in allem sollte dieser Teil der Datei "+ / etc / rc.conf" folgendermaßen aussehen:

. . .

firewall_enable="YES"
firewall_quiet="YES"
firewall_type="workstation"
firewall_myservices="22 80"
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. Wenn Sie fertig sind, speichern und schließen Sie die Datei.

UDP-Verbindungen zulassen

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 UDP verwenden sollen, müssen Sie die Datei " / etc / rc.firewall +" bearbeiten:

sudo vi /etc/rc.firewall

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

. . .

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

. . .

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

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

Im obigen Beispiel können Sie das Schlüsselwort "any" belassen, wenn die Verbindung für alle Clients zulässig sein soll, oder sie in eine bestimmte IP-Adresse oder einen bestimmten Netzwerkbereich ändern. Das oben stehende + 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 innerhalb des Netzwerkbereichs "+ 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 sollte ordnungsgemäß funktionieren und unerwünschten Datenverkehr blockieren, während die zulässigen Dienste und Ports eingehalten werden. Diese Firewall wird bei jedem Start automatisch gestartet.

Wir möchten auch ein Limit für die Anzahl der Ablehnungen pro IP-Adresse konfigurieren, die protokolliert werden sollen. Dadurch wird verhindert, dass unsere 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 wir unsere Protokollierung auf "5" begrenzen, indem wir Folgendes hinzufügen:

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 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 für die Konfiguration der NTP-Zeitsynchronisation im nächsten Abschnitt.

FreeBSD enthält ein menübasiertes Tool mit dem Namen "+ tzsetup " zum Konfigurieren von Zeitzonen. Um die Zeitzone für Ihren Server festzulegen, rufen Sie diesen Befehl mit den Rechten ` sudo +` auf:

sudo tzsetup

Sie sehen den ersten Menübildschirm, in dem Sie gefragt werden, ob Ihre Hardware-Uhr auf UTC oder auf Ortszeit eingestellt ist:

Wählen Sie hier "Nein". Als Nächstes 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 wir die Zeitzone auf unserem Server konfiguriert haben, können wir NTP oder Network Time Protocol auf unserem Server 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.

Wieder können wir den NTP-Dienst auf unserem Server aktivieren, indem wir die Datei "+ / etc / rc.conf " anpassen. Öffne dies mit ` sudo +` Privilegien:

sudo vi /etc/rc.conf

Fügen Sie in dieser Datei die folgende Zeile hinzu:

ntpd_enable="YES"

Außerdem müssen wir eine zweite Zeile hinzufügen, die die Uhrzeit auf unserem Computer beim Booten mit den Remote-NTP-Servern synchronisiert. Dies ist erforderlich, da unser Server die normale Driftgrenze bei der Initialisierung überschreiten kann. Unser Server wird beim Booten wahrscheinlich außerhalb des Drift-Limits sein, da unsere Zeitzone vor dem Start des NTP-Daemons angewendet wird, wodurch unsere Systemzeit verschoben wird:

ntpd_enable="YES"

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

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

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 FreeBSD-Servern, die mit DigitalOcean konfiguriert wurden, wird automatisch 1 Gigabyte Swap-Speicherplatz konfiguriert, unabhängig von der Größe Ihres Servers. Sie können dies sehen, indem Sie Folgendes eingeben:

sudo swapinfo -g

Es sollte ungefähr so ​​aussehen:

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

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

Das erste, was wir tun müssen, ist, der Datei, die wir für den Austausch verwenden möchten, einen Teil des Dateisystems zuzuweisen. Wir werden den Befehl + truncate + verwenden, mit dem Sie schnell Speicherplatz zuweisen können.

In diesem Handbuch wird die Auslagerungsdatei unter "+ / swapfile " abgelegt, Sie können jedoch jeden vernünftigen Speicherort innerhalb des Dateisystems verwenden. 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 wir den Speicherplatz zugewiesen haben, müssen wir 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 unserer Datei und konfigurieren Sie es so, dass es beim Booten eingehängt wird, indem Sie Folgendes eingeben:

sudo sh -c 'echo "md99 none swap sw,file=/swapfile,late 0 0" >> /etc/fstab'

Der obige 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 unserer + / etc / fstab + Datei hinzugefügt wurde, können wir die Auslagerungsdatei für die Sitzung aktivieren, indem wir Folgendes eingeben:

sudo swapon -aqL

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

sudo swapinfo -g

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

Device          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.