Einführung
A firewall is a system that provides network security by filtering incoming and outgoing network traffic based on a set of user-defined rules. In general, the purpose of a firewall is to reduce or eliminate the occurrence of unwanted network communications while allowing all legitimate communication to flow freely. In most server infrastructures, firewalls provide an essential layer of security that, combined with other measures, prevent attackers from accessing your servers in malicious ways.
In diesem Leitfaden wird erläutert, wie Firewalls funktionieren, wobei der Schwerpunkt auf zustandsorientierten Software-Firewalls wie iptables und FirewallD liegt, da sie sich auf Cloud-Server beziehen. Wir beginnen mit einer kurzen Erklärung von TCP-Paketen und den verschiedenen Arten von Firewalls. Anschließend werden wir verschiedene Themen besprechen, die für zustandsorientierte Firewalls relevant sind. Schließlich werden wir Links zu anderen Anleitungen bereitstellen, die Ihnen helfen, eine Firewall auf Ihrem eigenen Server einzurichten.
TCP-Netzwerkpakete
Bevor wir die verschiedenen Arten von Firewalls besprechen, werfen wir einen kurzen Blick darauf, wie der Transport Control Protocol (TCP) Netzwerkverkehr aussieht.
TCP-Netzwerkverkehr bewegt sich in einem Netzwerk in Paketen, die Container sind und aus einem Paketheader bestehen – dieser enthält Steuerungsinformationen wie Quell- und Zieladressen sowie Informationen zur Paketsequenz – und den Daten (auch als Nutzlast bekannt). Während die Steuerungsinformationen in jedem Paket dazu beitragen, sicherzustellen, dass die zugehörigen Daten ordnungsgemäß übermittelt werden, bieten die Elemente, die es enthält, auch Firewalls eine Vielzahl von Möglichkeiten, Pakete mit Firewall-Regeln abzugleichen.
Es ist wichtig zu beachten, dass das erfolgreiche Empfangen eingehender TCP-Pakete erfordert, dass der Empfänger ausgehende Bestätigungspakete an den Sender zurücksendet. Die Kombination der Steuerinformationen in den eingehenden und ausgehenden Paketen kann verwendet werden, um den Verbindungszustand (z. B. neu, etabliert, verwandt) zwischen Sender und Empfänger zu bestimmen.
Arten von Firewalls
Lassen Sie uns kurz die drei grundlegenden Arten von Netzwerkfirewalls besprechen: Paketfilterung (zustandslos), zustandsorientiert und Anwendungsschicht.
Paketfilterung oder zustandslose Firewalls funktionieren durch die Inspektion einzelner Pakete isoliert voneinander. Sie sind daher nicht über den Verbindungszustand informiert und können Pakete nur auf der Grundlage einzelner Paketheader zulassen oder ablehnen.
Zustandsorientierte Firewalls sind in der Lage, den Verbindungszustand von Paketen zu bestimmen, was sie wesentlich flexibler macht als zustandslose Firewalls. Sie sammeln zusammenhängende Pakete, bis der Verbindungszustand bestimmt werden kann, bevor Firewall-Regeln auf den Datenverkehr angewendet werden.
Anwendungsschicht-Firewalls gehen noch einen Schritt weiter, indem sie die übertragenen Daten analysieren, was es ermöglicht, den Netzwerkverkehr mit Firewall-Regeln abzugleichen, die spezifisch für einzelne Dienste oder Anwendungen sind. Diese werden auch als Proxy-basierte Firewalls bezeichnet.
Zusätzlich zu Firewall-Software, die auf allen modernen Betriebssystemen verfügbar ist, kann die Firewall-Funktionalität auch von Hardwaregeräten wie Routern oder Firewall-Appliances bereitgestellt werden. Auch hier wird unsere Diskussion auf Zustands softwarebasierte Firewalls konzentriert sein, die auf den Servern ausgeführt werden, die sie schützen sollen.
Firewall-Regeln
Wie oben erwähnt, wird der Netzwerkverkehr, der eine Firewall durchläuft, mit Regeln abgeglichen, um festzustellen, ob er durchgelassen werden soll oder nicht. Eine einfache Möglichkeit, Firewall-Regeln zu erklären, ist die Darstellung einiger Beispiele, also machen wir das jetzt.
Angenommen, Sie haben einen Server mit dieser Liste von Firewall-Regeln, die für den eingehenden Verkehr gelten:
- Zulassen von neuem und etabliertem eingehendem Verkehr über die öffentliche Netzwerkschnittstelle auf den Ports 80 und 443 (HTTP- und HTTPS-Webverkehr)
- Verwerfen des eingehenden Verkehrs von IP-Adressen der nichttechnischen Mitarbeiter in Ihrem Büro zum Port 22 (SSH)
- Zulassen von neuem und etabliertem eingehendem Verkehr aus Ihrem Büro-IP-Bereich auf die private Netzwerkschnittstelle am Port 22 (SSH)
Beachten Sie, dass das erste Wort in jedem dieser Beispiele entweder „akzeptieren“, „ablehnen“ oder „verwerfen“ ist. Dies bestimmt die Aktion, die die Firewall ausführen soll, wenn ein Netzwerkverkehr mit einer Regel übereinstimmt. Akzeptieren bedeutet, den Datenverkehr durchzulassen, ablehnen bedeutet, den Datenverkehr zu blockieren, aber mit einem „nicht erreichbar“ Fehler zu antworten, und verwerfen bedeutet, den Datenverkehr zu blockieren und keine Antwort zu senden. Der Rest jeder Regel besteht aus der Bedingung, gegen die jedes Paket abgeglichen wird.
Es stellt sich heraus, dass der Netzwerkverkehr gegen eine Liste von Firewall-Regeln in einer Sequenz oder Kette von der ersten bis zur letzten Regel abgeglichen wird. Genauer gesagt, sobald eine Regel übereinstimmt, wird die zugehörige Aktion auf den betreffenden Netzwerkverkehr angewendet. In unserem Beispiel würden Buchhaltungsmitarbeiter beispielsweise aufgrund von Regel 2 abgelehnt werden, bevor Regel 3 überhaupt überprüft wird. Ein Systemadministrator hingegen würde akzeptiert, da er nur Regel 3 entspricht.
Standardrichtlinie
Es ist üblich, dass eine Kette von Firewall-Regeln nicht ausdrücklich jede mögliche Bedingung abdeckt. Aus diesem Grund muss für Firewall-Ketten immer eine Standardrichtlinie angegeben werden, die nur aus einer Aktion (akzeptieren, ablehnen oder verwerfen) besteht.
Angenommen, die Standardrichtlinie für die oben genannte Kette wurde auf drop festgelegt. Wenn ein Computer außerhalb Ihres Büros versuchen würde, eine SSH-Verbindung zum Server herzustellen, würde der Datenverkehr abgelehnt, da er nicht den Bedingungen einer Regel entspricht.
Wenn die Standardrichtlinie auf akzeptieren gesetzt wäre, könnten alle außer Ihren eigenen nicht-technischen Mitarbeitern eine Verbindung zu jedem offenen Dienst auf Ihrem Server herstellen. Dies wäre ein Beispiel für eine sehr schlecht konfigurierte Firewall, da sie nur einen Teil Ihrer Mitarbeiter aussperrt.
Eingehender und ausgehender Datenverkehr
Da Netzwerkverkehr aus der Perspektive eines Servers entweder eingehend oder ausgehend sein kann, verwaltet eine Firewall einen eigenen Satz von Regeln für jeden Fall. Datenverkehr, der anderswo entsteht, eingehender Datenverkehr, wird anders behandelt als ausgehender Datenverkehr, den der Server sendet. Es ist üblich, dass ein Server den meisten ausgehenden Datenverkehr zulässt, da der Server sich selbst in der Regel vertrauenswürdig ist. Dennoch kann der ausgehende Regelssatz verwendet werden, um unerwünschte Kommunikation zu verhindern, falls ein Server von einem Angreifer oder einer bösartigen ausführbaren Datei kompromittiert wird.
Um die Sicherheitsvorteile einer Firewall zu maximieren, sollten Sie alle Wege identifizieren, auf denen Sie möchten, dass andere Systeme mit Ihrem Server interagieren, Regeln erstellen, die dies ausdrücklich erlauben, und dann den gesamten anderen Datenverkehr ablehnen. Beachten Sie, dass die entsprechenden ausgehenden Regeln vorhanden sein müssen, damit ein Server ausgehende Bestätigungen für entsprechende eingehende Verbindungen senden kann. Da ein Server typischerweise seinen eigenen ausgehenden Datenverkehr aus verschiedenen Gründen initiieren muss – zum Beispiel zum Herunterladen von Updates oder zum Verbinden mit einer Datenbank -, ist es wichtig, diese Fälle ebenfalls in Ihrem Satz ausgehender Regeln zu berücksichtigen.
Verfassen ausgehender Regeln
Angenommen, unsere Beispiel-Firewall ist standardmäßig auf drop ausgehenden Datenverkehr eingestellt. Dies bedeutet, dass unsere eingehenden akzeptieren Regeln nutzlos wären, ohne ergänzende ausgehende Regeln.
Um die Beispiel eingehenden Firewall-Regeln (1 und 3) aus dem Abschnitt Firewall-Regeln zu ergänzen und eine ordnungsgemäße Kommunikation auf diesen Adressen und Ports zu ermöglichen, könnten wir diese ausgehenden Firewall-Regeln verwenden:
- Akzeptieren Sie etablierten ausgehenden Datenverkehr an der öffentlichen Netzwerkschnittstelle auf Port 80 und 443 (HTTP und HTTPS)
- Akzeptieren Sie etablierten ausgehenden Datenverkehr an der privaten Netzwerkschnittstelle auf Port 22 (SSH)
Beachten Sie, dass wir keine explizite Regel für eingehenden Datenverkehr, der abgewiesen wird (eingehende Regel 2), schreiben müssen, da der Server keine Verbindung herstellen oder bestätigen muss.
Firewall-Software und -Werkzeuge
Jetzt, da wir besprochen haben, wie Firewalls funktionieren, werfen wir einen Blick auf gängige Softwarepakete, die uns dabei helfen können, eine effektive Firewall einzurichten. Obwohl es viele andere firewallbezogene Pakete gibt, sind diese wirksam und diejenigen, auf die Sie am häufigsten stoßen werden.
Iptables
Iptables ist eine Standard-Firewall, die standardmäßig in den meisten Linux-Distributionen enthalten ist (eine moderne Variante namens nftables wird sie allmählich ersetzen). Es handelt sich tatsächlich um eine Front-End-Schnittstelle zu den kernelinternen Netfilter-Hooks, die den Linux-Netzwerkstapel manipulieren können. Es funktioniert, indem es jedes Paket, das die Netzwerkschnittstelle überquert, mit einem Satz von Regeln abgleicht, um zu entscheiden, was zu tun ist.
Um zu lernen, wie man eine Firewall mit iptables implementiert, schauen Sie sich diese Links an:
- So richten Sie eine Firewall mit IPTables unter Ubuntu 14.04 ein
- Wie man eine einfache Firewall-Vorlage mit Iptables auf Ubuntu 14.04 implementiert
- Wie man eine Iptables-Firewall einrichtet, um den Datenverkehr zwischen Ihren Servern zu schützen
UFW
UFW, was für Uncomplicated Firewall steht, ist eine Schnittstelle zu iptables, die darauf abzielt, den Prozess der Konfiguration einer Firewall zu vereinfachen.
Weitere Informationen zur Verwendung von UFW finden Sie in diesem Tutorial: Wie man eine Firewall mit UFW auf einem Ubuntu- und Debian-Cloud-Server einrichtet.
FirewallD
FirewallD ist eine komplette Firewall-Lösung, die standardmäßig auf CentOS 7-Servern verfügbar ist. Übrigens verwendet FirewallD iptables, um netfilter zu konfigurieren.
Weitere Informationen zur Verwendung von FirewallD finden Sie in diesem Tutorial: Wie man FirewallD konfiguriert, um Ihren CentOS 7-Server zu schützen.
Wenn Sie CentOS 7 verwenden, aber lieber iptables verwenden möchten, folgen Sie diesem Tutorial: So migrieren Sie von FirewallD zu Iptables unter CentOS 7.
Fail2ban
Fail2ban ist eine Software zur Einbruchverhütung, die automatisch Ihre Firewall konfigurieren kann, um Brute-Force-Anmeldeversuche und DDOS-Angriffe zu blockieren.
Um mehr über Fail2ban zu erfahren, besuchen Sie diese Links:
- Wie Fail2ban funktioniert, um Dienste auf einem Linux-Server zu schützen
- Wie Sie SSH mit Fail2Ban unter Ubuntu 14.04 schützen können
- Wie Sie einen Nginx-Server mit Fail2Ban unter Ubuntu 14.04 schützen können
- Wie Sie einen Apache-Server mit Fail2Ban unter Ubuntu 14.04 schützen können
Abschluss
Nun, da Sie verstehen, wie Firewalls funktionieren, sollten Sie in Betracht ziehen, eine Firewall zu implementieren, die die Sicherheit Ihres Server-Setups verbessert, indem Sie die oben genannten Anleitungen verwenden.
Wenn Sie mehr über die Funktionsweise von Firewalls erfahren möchten, schauen Sie sich diese Links an:
Source:
https://www.digitalocean.com/community/tutorials/what-is-a-firewall-and-how-does-it-work