Firewall Eine Firewall ist eine Reihe von Regeln. Wenn ein Paket einen geschützten Netzwerkbereich betritt oder verlässt, wird der Inhalt des Pakets (insbesondere Informationen zu seiner Quelle, seinem Ziel und dem geplanten Protokoll) anhand der Firewall-Regeln geprüft, um zu bestimmen, ob das Paket passieren darf. Hier ist ein einfaches Beispiel: Firewalls können Anforderungen anhand protokoll- oder zielbasierter Regeln filtern. Einerseits ist iptables ein Tool zum Verwalten von Firewall-Regeln auf Linux-Rechnern. Andererseits ist Firewalld auch ein Tool zum Verwalten von Firewall-Regeln auf Linux-Rechnern. Haben Sie eine Meinung dazu? Was wäre, wenn ich Ihnen sagen würde, dass es ein anderes Tool namens nftable gibt? Okay, ich gebe zu, dass die ganze Sache ein bisschen komisch riecht, also lassen Sie es mich erklären. Alles beginnt mit Netfilter, das den Zugriff auf den Netzwerkstapel auf der Ebene des Linux-Kernelmoduls steuert. Jahrzehntelang war der iptables-Regelsatz das wichtigste Befehlszeilentool zum Verwalten von Netfilter-Hooks. Da die zum Aufrufen dieser Regeln erforderliche Syntax etwas kryptisch sein kann, wurden verschiedene benutzerfreundliche Implementierungen wie UFW und Firewalld als Netfilter-Interpreter auf hoher Ebene eingeführt. UFW und Firewalld wurden jedoch in erster Linie entwickelt, um die Art von Problemen zu lösen, mit denen eigenständige Computer konfrontiert sind. Für den Aufbau umfassender Netzwerklösungen sind in der Regel die zusätzlichen Funktionen von iptables oder seit 2014 dessen Ersatz nftables (über das Befehlszeilentool nft) erforderlich. Von nun an werde ich anhand von Beispielen zeigen, wie Firewalld und iptables einfache Verbindungsprobleme lösen können. Konfigurieren des HTTP-Zugriffs mit Firewalld Wie der Name schon vermuten lässt, ist Firewalld ein Mitglied der systemd-Familie. Firewalld kann auf Debian-/Ubuntu-Rechnern installiert werden, ist jedoch auf RedHat und CentOS standardmäßig installiert. Wenn auf Ihrem Computer ein Webserver wie Apache ausgeführt wird, können Sie die ordnungsgemäße Funktion der Firewall überprüfen, indem Sie zum Webstammverzeichnis des Servers navigieren. Wenn die Site nicht erreichbar ist, erledigt Firewalld seine Arbeit. Sie verwenden das Tool Firewall-cmd, um die Firewalld-Einstellungen über die Befehlszeile zu verwalten. Fügen Sie den Parameter --state hinzu, um den aktuellen Firewall-Status zurückzugeben: # Firewall-Befehl --state läuft Standardmäßig ist Firewalld aktiv und lehnt den gesamten eingehenden Datenverkehr mit wenigen Ausnahmen wie SSH ab. Dadurch wird Ihre Website nicht zu stark besucht und Sie sparen auf jeden Fall eine Menge Kosten für die Datenübertragung. Da dies jedoch wahrscheinlich nicht das ist, was Sie sich unter einem Webserver vorgestellt haben, müssen Sie die HTTP- und HTTPS-Ports öffnen, die üblicherweise als 80 bzw. 443 bezeichnet werden. Firewalld bietet hierfür zwei Möglichkeiten. Eine Möglichkeit ist der Parameter --add-port, der direkt auf die Portnummer und das zu verwendende Netzwerkprotokoll verweist (in diesem Fall TCP). Der Parameter --permanent weist Firewalld an, diese Regel bei jedem Serverstart zu laden: # Firewall-Befehl --permanent --add-port=80/tcp # Firewall-cmd --permanent --add-port=443/tcp Der Parameter --reload wendet diese Regeln auf die aktuelle Sitzung an: # Firewall-cmd --reload Neugierig auf Ihre aktuellen Einstellungen Ihrer Firewall? Führen Sie –list-services aus: # Firewall-Befehl --list-services dhcpv6-client http https ssh Vorausgesetzt, Sie haben wie zuvor beschrieben Browserzugriff hinzugefügt, sollten jetzt alle HTTP-, HTTPS- und SSH-Ports geöffnet sein (dhcpv6-Client). Dadurch kann Linux eine IPv6-IP-Adresse von einem lokalen DHCP-Server anfordern. Konfigurieren eines gesperrten Kundenkiosks mit iptables Sie haben bestimmt schon Kioske gesehen – das sind Tablets, Touchscreens und Geldautomaten-ähnliche PCs in einer Box, die man überall in Flughäfen, Bibliotheken und Geschäftsräumen findet und die Kunden und Passanten einladen, sich die Inhalte anzusehen. Das Problem bei den meisten Kiosken besteht darin, dass die Benutzer ihre Geräte im Allgemeinen nicht so behandeln sollen, als wären es ihre eigenen zu Hause. Sie werden normalerweise nicht zum Surfen, Ansehen von YouTube-Videos oder Starten von Denial-of-Service-Angriffen auf das Pentagon verwendet. Um sicherzustellen, dass sie nicht missbraucht werden, müssen Sie sie wegschließen. Eine Möglichkeit besteht darin, eine Art Kioskmodus anzuwenden, entweder durch geschickten Einsatz des Linux-Display-Managers oder auf Browserebene. Um sicherzustellen, dass alle Schwachstellen geschlossen sind, können Sie jedoch auch einige harte Netzwerkkontrollen über eine Firewall hinzufügen. Im nächsten Abschnitt beschreibe ich, wie Sie dies mit iptables erreichen. Bei der Verwendung von iptables müssen Sie zwei wichtige Dinge beachten: Die Reihenfolge, in der Sie die Regeln angeben, ist entscheidend, und die Iptable-Regeln allein überstehen einen Neustart nicht. Ich werde sie hier einzeln durchgehen. Kiosk-Engineering <br /> Um dies alles zu veranschaulichen, stellen wir uns vor, wir arbeiten in einer großen Ladenkette namens BigMart. Es gibt sie schon seit Jahrzehnten; tatsächlich sind unsere imaginären Großeltern wahrscheinlich schon als Kinder dort eingekauft. Doch dieser Tage zählen die Leute in der Unternehmenszentrale von BigMart wahrscheinlich nur die Stunden, bis Amazon sie endgültig aus dem Sortiment nimmt. Dennoch tut die IT-Abteilung von BigMart ihr Bestes und hat Ihnen gerade einige WLAN-fähige Kioskgeräte geschickt, die Sie an strategischen Standorten im gesamten Geschäft installieren können. Die Idee dahinter ist, dass sie einen Webbrowser anzeigen, der bei einer Produktseite von BigMart.com angemeldet ist und es ihnen ermöglicht, Artikelmerkmale, Gangpositionen und Lagerbestände nachzuschlagen. Diese Kioske erfordern auch Zugriff auf bigmart-data.com, wo viele der Bild- und Videomedien gespeichert sind. Darüber hinaus möchten Sie auch Updates und ggf. Paketdownloads ermöglichen. Letztendlich möchten Sie eingehenden SSH-Zugriff nur von Ihrer lokalen Arbeitsstation aus zulassen und alle anderen blockieren. Das folgende Diagramm veranschaulicht, wie das Ganze funktioniert: Der Verkehrsfluss des Kiosks wird durch iptables gesteuert. Skript So fügen Sie dies alles in ein Bash-Skript ein: #!/bin/bash iptables -A AUSGABE -p tcp -d bigmart.com -j AKZEPTIEREN iptables -A AUSGABE -p tcp -d bigmart-data.com -j AKZEPTIEREN iptables -A AUSGABE -p tcp -d ubuntu.com -j AKZEPTIEREN iptables -A AUSGABE -p tcp -d ca.archive.ubuntu.com -j AKZEPTIEREN iptables -A AUSGABE -p tcp --dport 80 -j DROP iptables -A AUSGABE -p tcp --dport 443 -j DROP iptables -A INPUT -p tcp -s 10.0.3.1 --dport 22 -j AKZEPTIEREN iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP Die grundlegende Anatomie unserer Regel beginnt mit -A und teilt iptables mit, dass wir die folgende Regel hinzufügen möchten. OUTPUT: Dies bedeutet, dass diese Regel Teil der Ausgabekette sein sollte. -p gibt an, dass diese Regel nur für Pakete gilt, die das TCP-Protokoll verwenden, während -d uns mitteilt, dass das Ziel bigmart.com ist. Das Flag -j weist auf ACCEPT als die auszuführende Aktion hin, wenn ein Paket der Regel entspricht. In der ersten Regel besteht die Aktion darin, die Anfrage zuzulassen oder anzunehmen. Auf einer niedrigeren Ebene können Sie jedoch Anfragen sehen, die entfernt oder abgelehnt werden. Denken Sie daran, dass die Reihenfolge wichtig ist. Dies liegt daran, dass iptables eine Anforderung über alle seine Regeln hinaus ausführt, aber nur, bis eine Übereinstimmung gefunden wird. Eine ausgehende Browseranfrage an beispielsweise youtube.com durchläuft die ersten vier Regeln, wird aber gelöscht, wenn sie die Regel --dport 80 oder --dport 443 erreicht – je nachdem, ob es sich um eine HTTP- oder HTTPS-Anfrage handelt. Iptables macht sich nicht die Mühe, noch einmal nachzuprüfen, da es eine Übereinstimmung gibt. Wenn das System hingegen bei ubuntu.com ein Software-Upgrade anfordert, wird dies durchgeführt, wenn die entsprechende Regel erfüllt ist. Offensichtlich lassen wir hier nur das Senden von HTTP- oder HTTPS-Anfragen an unser BigMart- oder Ubuntu-Ziel zu und an keine anderen Ziele. Die letzten beiden Regeln verarbeiten eingehende SSH-Anfragen. Da sie nicht Port 80 oder 443, sondern 22 verwenden, werden sie von den beiden vorherigen DROP-Regeln nicht abgelehnt. In diesem Fall werden Anmeldeanforderungen von meiner Arbeitsstation akzeptiert, Anforderungen von anderen Orten werden jedoch gelöscht. Dies ist wichtig: Stellen Sie sicher, dass die IP-Adresse, die Sie für die Port-22-Regel verwenden, mit der Adresse des Computers übereinstimmt, mit dem Sie sich anmelden. Andernfalls werden Sie sofort gesperrt. Das ist natürlich kein großes Problem, da Sie bei der aktuellen Konfiguration einfach den Server neu starten können und die iptables-Regeln entfernt werden. Wenn Sie einen LXC-Container als Server verwenden und sich von Ihrem LXC-Host aus anmelden, verwenden Sie die IP-Adresse, die Ihr Host für die Verbindung mit dem Container verwendet, und nicht seine öffentliche Adresse. Wenn sich die IP meines Computers jemals ändert, müssen Sie daran denken, diese Regel zu aktualisieren. Andernfalls werden Sie ausgesperrt. Zu Hause spielen (hoffentlich auf einer ausrangierten VM)? Großartig zum Erstellen eigener Skripte. Jetzt kann ich das Skript speichern, mit chmod ausführbar machen und als sudo ausführen. Machen Sie sich wegen des Fehlers „bigmart-data.com nicht gefunden“ keine Sorgen – die Datei kann natürlich nicht gefunden werden, sie existiert nicht. chmod +X Skriptname.sh sudo ./Skriptname.sh Sie können cURL von der Befehlszeile aus verwenden. Die Anforderung von ubuntu.com funktioniert, aber manning.com schlägt fehl. curl ubuntu.com curl.manning.com Konfigurieren Sie iptables so, dass es beim Systemstart geladen wird Wie erreiche ich nun, dass diese Regeln bei jedem Start des Automaten automatisch geladen werden? Der erste Schritt besteht darin, das Tool iptables-save zu verwenden. Dadurch wird in Ihrem Stammverzeichnis eine Datei mit einer Liste von Regeln erstellt. Dieses Pipe-Zeichen, gefolgt vom Tee-Befehl, wendet meine Sudo-Berechtigungen auf den zweiten Teil der Zeichenfolge an: das tatsächliche Speichern der Datei im ansonsten eingeschränkten Stammverzeichnis. Ich kann dem System dann sagen, dass es bei jedem Booten ein Programm namens „iptables-restore“ ausführen soll. Normale Cron-Jobs, wie wir sie in den vorherigen Modulen gesehen haben, helfen nicht, da sie zu festgelegten Zeiten ausgeführt werden, wir jedoch nicht wissen, wann unser Computer abstürzt und neu startet. Es gibt viele Möglichkeiten, mit diesem Problem umzugehen. Hier ist eines: Auf meiner Linux-Box werde ich ein Programm namens Anacron installieren, das eine Datei namens Anacrontab im Verzeichnis /etc/ bereitstellt. Ich würde diese Datei bearbeiten und den folgenden iptables-restore-Befehl hinzufügen, der sie anweist, die aktuellen Werte dieser .Rule-Datei jeden Tag (falls erforderlich) eine Minute nach dem Booten in iptables zu laden. Ich gebe dem Job eine Kennung (iptables-restore) und füge dann den Befehl selbst hinzu. Da Sie mit mir zu Hause spielen, sollten Sie Ihr System neu starten, um das Ganze zu testen. sudo iptables-save | sudo tee /root/my.active.firewall.rules sudo apt installiere anacron sudo nano /etc/anacrontab 1 1 iptables-restore iptables-restore < /root/my.active.firewall.rules Ich hoffe, diese praktischen Beispiele haben veranschaulicht, wie Sie mit iptables und firewalld Verbindungsprobleme auf einer Linux-basierten Firewall beheben können. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
>>: Lassen Sie uns über das v-on-Parameterproblem in Vue sprechen
Inhaltsverzeichnis 1. Schnittstelle zusammenführe...
In diesem Artikel wird der spezifische JavaScript...
1. Vorbereitung 1.1 Laden Sie das Python-Installa...
Überblick Der grundlegende Unterschied zwischen a...
Im Vergleich zu anderen großen Datenbanken wie Or...
Inhaltsverzeichnis Klassenkomponente Funktionale ...
Normale MySQL-Sortierung, benutzerdefinierte Sort...
Vorwort Bei der Entwicklung eines Gateway-Projekt...
Als ich kürzlich das Intranet-Portal änderte, sti...
Inhaltsverzeichnis Vorwort 1. Vorbereitung 2. Tat...
Dieser Artikel erläutert anhand von Beispielen di...
Hintergrund Für die virtuelle VirtualBox-Maschine...
Ich habe ECharts schon einmal bei einem Projekt v...
Inhaltsverzeichnis 1. Einfach zu lesender Code 1....
Vorschau: Code: Seitenabschnitte: <Vorlage>...