So wählen Sie eine effektive Firewall-Richtlinie zum Schutz Ihrer Server

Einführung

Bei der Verwendung einer Firewall geht es sowohl um intelligente Richtlinienentscheidungen als auch um das Erlernen der Syntax. Firewalls wieiptables können Richtlinien durchsetzen, indem sie vom Administrator festgelegte Regeln interpretieren. Als Administrator müssen Sie jedoch wissen, welche Arten von Regeln für Ihre Infrastruktur sinnvoll sind.

Während sichother guidesauf die Befehle konzentriert, die für die Inbetriebnahme erforderlich sind, werden in diesem Handbuch einige der Entscheidungen erläutert, die Sie bei der Implementierung einer Firewall treffen müssen. Diese Auswahl wirkt sich darauf aus, wie sich Ihre Firewall verhält, wie gesperrt Ihr Server ist und wie sie auf verschiedene Bedingungen reagiert, die von Zeit zu Zeit auftreten können. Wir werdeniptables als Beispiel verwenden, um Einzelheiten zu diskutieren, aber die meisten tatsächlichen Entscheidungen werden unabhängig von den verwendeten Tools relevant sein.

Festlegen einer Standardrichtlinie

Bei der Erstellung einer Firewall ist eine der grundlegenden Entscheidungen, die Sie treffen müssen, die Standardrichtlinie. Hiermit wird festgelegt, was passiert, wenn für den Datenverkehr keine anderen Regeln gelten. Standardmäßig kann eine Firewall entwederaccept Datenverkehr, der von früheren Regeln nicht erreicht wurde, oderdeny Datenverkehr.

Default Drop vs Default Accept

Eine Standardrichtlinie von "accept" (Akzeptieren) bedeutet, dass nicht übereinstimmender Datenverkehr auf den Server gelangen darf. Dies wird im Allgemeinen nicht empfohlen, da dies bedeutet, dass Sie effektiv eine schwarze Liste führen. Schwarze Listen sind schwierig zu verwalten, da Sie den unerwünschten Datenverkehr voneveryexplizit antizipieren und blockieren müssen. Dies kann zu Wartungsproblemen führen und ist im Allgemeinen anfällig für Fehler, Fehlkonfigurationen und unerwartete Lücken in der festgelegten Richtlinie.

Die Alternative ist eine Standardrichtlinie für das Löschen. Dies bedeutet, dass kein Datenverkehr zugelassen wird, der nicht mit einer expliziten Regel übereinstimmt. Dies entspricht einer White-List-ACL. Jeder einzelne Dienst muss explizit zugelassen werden, was auf den ersten Blick als erheblicher Forschungs- und Arbeitsaufwand erscheinen kann. Dies bedeutet jedoch, dass Ihre Richtlinie zur Sicherheit tendiert und Sie genau wissen, welche Daten auf Ihrem Server empfangen dürfen.

Grundsätzlich hängt die Wahl von einer Tendenz zur Standard-Sicherheit oder zu sofort erreichbaren Diensten ab. Es ist zwar verlockend, eine Firewall zu implementieren, die auf die Verfügbarkeit von Diensten abzielt, es ist jedoch fast immer besser, den Datenverkehr zu blockieren, sofern dies nicht ausdrücklich gestattet ist.

Standard-Drop-Richtlinie vs. Endgültige Drop-Regel

Die obige Auswahl einer Standard-Drop-Richtlinie führt zu einer weiteren subtilen Entscheidung. Mitiptables und anderen ähnlichen Firewalls kann die Standardrichtlinie mithilfe der integrierten Richtlinienfunktionalität der Firewall festgelegt oder durch Hinzufügen einer Catch-All-Drop-Regel am Ende der Regelliste implementiert werden.

Der Unterschied zwischen diesen beiden Methoden besteht darin, was passiert, wenn die Firewall-Regeln gelöscht werden.

Wenn die integrierte Richtlinienfunktion Ihrer Firewall auf "Löschen" gesetzt ist und Ihre Firewall-Regeln jemals gelöscht (zurückgesetzt) ​​werden oder wenn bestimmte übereinstimmende Regeln entfernt werden, ist der Remote-Zugriff auf Ihre Dienste sofort nicht mehr möglich. Dies ist häufig eine gute Idee, wenn Richtlinien für nicht kritische Dienste festgelegt werden, damit Ihr Server keinem böswilligen Datenverkehr ausgesetzt ist, wenn die Regeln entfernt werden.

Der Nachteil dieses Ansatzes ist, dass Ihre Dienste für Ihre Kunden erst dann verfügbar sind, wenn Sie die zulässigen Regeln wiederhergestellt haben. Sie könnten sich sogar möglicherweise aus dem Server ausschließen, wenn Sie keinen lokalen oder bandexternen Zugriff haben, um das Problem zu umgehen. (Auf DigitalOcean-Server kann unabhängig von den Netzwerkeinstellungen über die Schaltfläche "Konsolenzugriff" im Bereich "Zugriff" zugegriffen werden.) Teil der Seite Ihres Droplets in der Systemsteuerung). Wenn das Löschen der Firewall beabsichtigt ist, können Sie dies vermeiden, indem Sie die Standardrichtlinie kurz vor dem Zurücksetzen der Regeln auf "Akzeptieren" setzen.

Die Alternative zum Festlegen einer Drop-Richtlinie mithilfe der integrierten Richtlinienfunktionalität besteht darin, die Standardrichtlinie Ihrer Firewall auf "Akzeptieren" festzulegen und anschließend eine Drop-Richtlinie mit regulären Regeln zu implementieren. Sie können am Ende Ihrer Kette eine normale Firewall-Regel hinzufügen, die allen verbleibenden nicht übereinstimmenden Datenverkehr berücksichtigt und ablehnt.

In diesem Fall sind Ihre Dienste zugänglich, aber ungeschützt, wenn Ihre Firewall-Regeln gelöscht werden. Abhängig von Ihren Optionen für den lokalen oder alternativen Zugriff kann dies ein notwendiges Problem sein, um sicherzustellen, dass Sie Ihren Server erneut betreten können, wenn die Regeln gelöscht werden. Wenn Sie sich für diese Option entscheiden, müssen Sie sicherstellen, dass die Sammelregel immer dielast-Regel in Ihrem Regelsatz bleibt.

Verkehr ablehnen oder ablehnen

Es gibt verschiedene Möglichkeiten, einen Paketdurchgang zu seinem beabsichtigten Ziel zu verweigern. Die Wahl zwischen diesen hat Einfluss darauf, wie der Client seinen Verbindungsversuch wahrnimmt und wie schnell er feststellen kann, dass seine Anfrage nicht bearbeitet wird.

Die erste Möglichkeit, Pakete abzulehnen, ist das Verwerfen. Das Löschen kann als Standardrichtlinie oder als Ziel für Übereinstimmungsregeln verwendet werden. Wenn ein Paket verworfen wird, wirftiptables es einfach weg. Es sendet keine Antwort zurück an den Client, der versucht, eine Verbindung herzustellen, und gibt keinen Hinweis darauf, dass es jemals die fraglichen Pakete empfangen hat. Dies bedeutet, dass Kunden (legitim oder nicht) keine Bestätigung über den Empfang ihrer Pakete erhalten.

Bei TCP-Verbindungsversuchen wird die Verbindung angehalten, bis das Zeitlimit erreicht ist. Da UDP ein verbindungsloses Protokoll ist, ist die fehlende Antwort für Clients noch mehrdeutig. In der Tat ist das Nicht-Zurück-Empfangen eines Pakets in diesem Fall oft ein Hinweis darauf, dass das Paket akzeptiert wurde. Wenn sich der UDP-Client um den Empfang seiner Pakete kümmert, muss er sie erneut senden, um festzustellen, ob sie akzeptiert wurden, während der Übertragung verloren gingen oder verworfen wurden. Dies kann die Zeit erhöhen, die ein böswilliger Akteur aufwenden muss, um ordnungsgemäße Informationen über den Status Ihrer Serverports abzurufen, kann jedoch auch Probleme mit dem legitimen Datenverkehr verursachen.

Eine Alternative zum Verwerfen von Datenverkehr besteht darin, Pakete, die Sie nicht zulassen, explizit abzulehnen. ICMP (Internet Control Message Protocol) ist ein Metaprotokoll, das im gesamten Internet zum Senden von Status-, Diagnose- und Fehlermeldungen zwischen Hosts als Out-of-Band-Kanal verwendet wird und nicht auf den herkömmlichen Kommunikationsprotokollen wie TCP oder UDP basiert. Wenn Sie das Ablehnungsziel verwenden, wird der Datenverkehr abgelehnt und ein ICMP-Paket wird an den Absender zurückgesendet, um ihn darüber zu informieren, dass sein Datenverkehr empfangen wurde, aber nicht akzeptiert wird. Die Statusmeldung kann auf den Grund hinweisen.

Dies hat eine Reihe von Konsequenzen. Unter der Annahme, dass ICMP-Verkehr zum Client abfließen darf, werden sie sofort darüber informiert, dass ihr Verkehr gesperrt ist. Für legitime Clients bedeutet dies, dass sie sich an den Administrator wenden oder die Verbindungsoptionen überprüfen können, um sicherzustellen, dass sie den richtigen Port erreichen. Für böswillige Benutzer bedeutet dies, dass sie ihre Scans abschließen und die offenen, geschlossenen und gefilterten Ports in kürzerer Zeit zuordnen können.

Bei der Entscheidung, ob der Verkehr unterbrochen oder abgelehnt werden soll, ist eine Menge zu beachten. Eine wichtige Überlegung ist, dass der meiste böswillige Datenverkehr tatsächlich von automatisierten Skripten ausgeführt wird. Da Skripte in der Regel nicht zeitkritisch sind, hat das Löschen von unzulässigem Datenverkehr keine negativen Auswirkungen auf legitime Benutzer. Mehr zu diesem Thema finden Sie unterhere.

Drop vs Reject-Antworttabelle

Die folgende Tabelle zeigt, wie ein durch eine Firewall geschützter Server auf unterschiedliche Anforderungen reagiert, je nachdem, welche Richtlinie auf den Zielport angewendet wird.

Client-Pakettyp NMap-Befehl Port-Richtlinie Antwort Abgeleiteter Hafenstaat

TCP

nmap [-sT

-sS] -Pn

Akzeptieren

TCP SYN / ACK

Open

TCP

nmap [-sT

-sS] -Pn

Drop

(keiner)

Gefiltert

TCP

nmap [-sT

-sS] -Pn

Ablehnen

TCP RESET

Geschlossen

UDP

nmap -sU -Pn

Akzeptieren

(keiner)

Öffnen oder gefiltert

UDP

nmap -sU -Pn

Drop

(keiner)

Öffnen oder gefiltert

UDP

nmap -sU -Pn

Die erste Spalte gibt den vom Client gesendeten Pakettyp an. In der zweiten Spalte haben wir dienmap-Befehle aufgeführt, mit denen jedes Szenario getestet werden kann. Die dritte Spalte gibt die auf den Port angewendete Portrichtlinie an. Die vierte Spalte gibt die Antwort an, die der Server zurücksendet, und die fünfte Spalte gibt an, was der Client anhand der erhaltenen Antwort über den Port ableiten kann.

ICMP-Richtlinien

Ähnlich wie bei der Frage, ob verweigerter Datenverkehr verworfen oder abgelehnt werden soll, gibt es unterschiedliche Meinungen darüber, ob ICMP-Pakete für Ihren Server akzeptiert werden sollen.

ICMP ist ein Protokoll, das für viele Dinge verwendet wird. Wie wir oben gesehen haben, wird es oft zurückgeschickt, um Statusinformationen über Anforderungen zu geben, die andere Protokolle verwenden. Möglicherweise ist es die bekannteste Funktion, Netzwerk-Pings zu senden und darauf zu antworten, um die Verbindbarkeit mit Remote-Hosts zu überprüfen. Es gibt jedoch viele andere Anwendungen für ICMP, die nicht so bekannt, aber dennoch nützlich sind.

ICMP-Pakete sind nach "Typ" und dann weiter nach "Code" organisiert. Ein Typ gibt die allgemeine Bedeutung der Nachricht an. Typ 3 bedeutet beispielsweise, dass das Ziel nicht erreichbar war. Ein Code wird häufig verwendet, um weitere Informationen zu einem Typ zu geben. Beispiel: ICMP-Typ-3-Code 3 bedeutet, dass der Zielport nicht verfügbar war, während ICMP-Typ-3-Code 0 bedeutet, dass das Zielnetzwerk nicht erreicht werden konnte.

Typen, die immer blockiert werden können

Einige ICMP-Typen sind veraltet, daher sollten sie möglicherweise unbedingt blockiert werden. Unter diesen befinden sich ICMP-Quellenlöschung (Typ 4-Code 0) und alternativer Host (Typ 6). Die Typen 1, 2, 7 und Typ 15 und höher sind veraltet, für die zukünftige Verwendung reserviert oder experimentell.

Zu blockierende Typen abhängig von der Netzwerkkonfiguration

Einige ICMP-Typen sind in bestimmten Netzwerkkonfigurationen nützlich, sollten jedoch in anderen blockiert werden.

Zum Beispiel können ICMP-Umleitungsnachrichten (Typ 5) nützlich sein, um ein schlechtes Netzwerkdesign aufzudecken. Eine ICMP-Umleitung wird gesendet, wenn dem Client direkt eine bessere Route zur Verfügung steht. Wenn ein Router also ein Paket empfängt, das an einen anderen Host im selben Netzwerk weitergeleitet werden muss, sendet er eine ICMP-Umleitungsnachricht, um den Client anzuweisen, die Pakete in Zukunft über den anderen Host zu senden.

Dies ist hilfreich, wenn Sie Ihrem lokalen Netzwerk vertrauen und bei der Erstkonfiguration Ineffizienzen in Ihren Routingtabellen feststellen möchten (das Korrigieren Ihrer Routen ist eine bessere langfristige Lösung). In einem nicht vertrauenswürdigen Netzwerk kann ein böswilliger Benutzer jedoch möglicherweise ICMP-Umleitungen senden, um die Routingtabellen auf den Hosts zu manipulieren.

Andere ICMP-Typen, die in einigen Netzwerken nützlich und in anderen möglicherweise schädlich sind, sind ICMP-Router-Advertisement-Pakete (Typ 9) und Router-Solicitation-Pakete (Typ 10). Router Advertisement- und Solicitation-Pakete werden als Teil von IRDP (ICMP Internet Router Discovery Protocol) verwendet, einem System, mit dem Hosts beim Booten oder Beitreten zu einem Netzwerk verfügbare Router dynamisch erkennen können.

In den meisten Fällen ist es für einen Host besser, statische Routen für die von ihm verwendeten Gateways zu konfigurieren. Diese Pakete sollten in den gleichen Situationen wie die ICMP-Umleitungspakete akzeptiert werden. Da der Host die bevorzugte Route für den Datenverkehr über erkannte Routen nicht kennt, werden Umleitungsnachrichten häufig direkt nach der Erkennung benötigt. Wenn Sie keinen Dienst ausführen, der Router-Werbepakete sendet oder Ihre Routen basierend auf Werbepaketen (wierdisc) ändert, können Sie diese Pakete sicher blockieren.

Typen, deren Zulassen häufig sicher ist

Die normalerweise zulässigen ICMP-Typen sind unten aufgeführt. Sie können sie jedoch deaktivieren, wenn Sie besonders vorsichtig sein möchten.

  • Typ 8 - Echoanfrage: Dies sind an Ihren Server gerichtete Ping-Anfragen. Es ist normalerweise sicher, diese zuzulassen (das Ablehnen dieser Pakete verbirgt Ihren Server nicht. Es gibt viele andere Möglichkeiten für Benutzer, um herauszufinden, ob Ihr Host aktiv ist. Sie können sie jedoch blockieren oder die Quelladressen einschränken, auf die Sie antworten, wenn Sie möchten.

  • Typ 13 - Zeitstempelanforderung: Diese Pakete können von Clients zum Sammeln von Latenzinformationen verwendet werden. Sie können in einigen Fingerabdruckverfahren des Betriebssystems verwendet werden. Blockieren Sie sie also, wenn Sie den Adressbereich, auf den Sie antworten möchten, einschränken möchten.

Die folgenden Typen können normalerweise ohne explizite Regeln zugelassen werden, indem Sie Ihre Firewall so konfigurieren, dass Antworten auf von ihr gestellte Anforderungen möglich sind (indem Sie das Modulconntrackverwenden, um den Datenverkehr vonESTABLISHED undRELATEDzuzulassen).

  • Typ 0 - Echoantworten: Dies sind Antworten auf Echoanfragen (Pings).

  • Typ 3 - Nicht erreichbares Ziel: Legitime nicht erreichbare Zielpakete sind Antworten auf Anforderungen, die von Ihrem Server erstellt wurden und darauf hinweisen, dass das Paket nicht zugestellt werden konnte.

  • Typ 11 - Zeitüberschreitung: Dies ist ein Diagnosefehler, der zurückgegeben wird, wenn ein von Ihrem Server generiertes Paket vor Erreichen des Ziels aufgrund eines Überschreitens seines TTL-Werts abgestorben ist.

  • Typ 12 - Parameterproblem: Dies bedeutet, dass ein von Ihrem Server ausgehendes Paket fehlerhaft ist.

  • Typ 14 - Zeitstempelantworten: Dies sind die Antworten auf Zeitstempelabfragen, die von Ihrem Server generiert wurden.

Das Blockieren des gesamten eingehenden ICMP-Datenverkehrs wird von einigen Sicherheitsexperten weiterhin empfohlen. Viele Personen empfehlen jedoch jetzt intelligente ICMP-Akzeptanzrichtlinien. Die Linkshere undhere enthalten weitere Informationen.

Verbindungsbeschränkung und Ratenbeschränkung

Bei einigen Diensten und Datenverkehrsmustern möchten Sie möglicherweise den Zugriff zulassen, sofern der Client diesen Zugriff nicht missbraucht. Zwei Möglichkeiten, die Ressourcennutzung einzuschränken, sind die Begrenzung der Verbindung und die Begrenzung der Rate.

Verbindungsbeschränkung

Die Verbindungsbeschränkung kann mithilfe von Erweiterungen wieconnlimit implementiert werden, um zu überprüfen, wie viele aktive Verbindungen ein Client geöffnet hat. Dies kann verwendet werden, um die Anzahl der Verbindungen zu beschränken, die gleichzeitig zulässig sind. Wenn Sie sich für eine Beschränkung der Verbindung entscheiden, müssen Sie einige Entscheidungen in Bezug auf deren Anwendung treffen. Die allgemeine Aufschlüsselung der Entscheidungen ist:

  • Auf eine Adresse, ein Netzwerk oder eine globale Basis beschränken?

  • Datenverkehr für einen bestimmten Dienst oder für den gesamten Server anpassen und einschränken?

Verbindungen können Host für Host begrenzt werden, oder es kann ein Limit für ein Netzwerksegment festgelegt werden, indem ein Netzwerkpräfix angegeben wird. Sie können auch eine globale maximale Anzahl von Verbindungen für einen Dienst oder den gesamten Computer festlegen. Beachten Sie, dass es möglich ist, diese zu mischen und abzugleichen, um komplexere Richtlinien zur Steuerung Ihrer Verbindungsnummern zu erstellen.

Ratenbegrenzung

Mithilfe der Ratenbeschränkung können Sie Regeln erstellen, die die Rate oder Häufigkeit regeln, mit der der Datenverkehr von Ihrem Server akzeptiert wird. Es gibt eine Reihe verschiedener Erweiterungen, die zur Ratenbegrenzung verwendet werden können, einschließlichlimit,hashlimit undrecent. Die Wahl der von Ihnen verwendeten Erweiterung hängt weitgehend von denwayab, mit denen Sie den Datenverkehr begrenzen möchten.

Die Erweiterung vonlimitbewirkt, dass die betreffende Regel übereinstimmt, bis das Limit erreicht ist. Danach werden weitere Pakete verworfen. Wenn Sie ein Limit wie „5 / Sek.“ Festlegen und die Regel 5 Pakete pro Sekunde zulässt, stimmt die Regel nicht mehr überein. Dies ist gut, um ein globales Ratenlimit für einen Dienst festzulegen.

Die Erweiterunghashlimit ist flexibler, sodass Sie einige der Werte angeben können, dieiptables hasht, um eine Übereinstimmung auszuwerten. Zum Beispiel kann es die Quelladresse, den Quellport, die Zieladresse, den Zielport oder eine beliebige Kombination dieser vier Werte betrachten, um jeden Eintrag zu hashen. Es kann durch empfangene Pakete oder Bytes begrenzt werden. Grundsätzlich bietet dies eine flexible Begrenzung der Rate pro Client oder pro Service.

Die Erweiterungrecentfügt einer Liste dynamisch Client-IP-Adressen hinzu oder vergleicht sie mit einer vorhandenen Liste, wenn die Regel übereinstimmt. Auf diese Weise können Sie Ihre Begrenzungslogik auf verschiedene Regeln für komplexe Muster verteilen. Es kann wie die anderen Limiter eine Trefferanzahl und einen Zeitbereich angeben, aber auch den Zeitbereich zurücksetzen, wenn zusätzlicher Datenverkehr festgestellt wird, wodurch ein Client gezwungen wird, den gesamten Datenverkehr zu stoppen, wenn dieser begrenzt ist.

Die Auswahl der zu verwendenden Erweiterung mit Ratenbeschränkung hängt von den genauen Richtlinien ab, die Sie durchsetzen möchten.

Monolithisches vs. kettenbasiertes Management

Die Firewall-Richtlinie voniptablesbasiert auf der Erweiterung der integrierten Ketten. Bei einfachen Firewalls besteht dies häufig darin, die Standardrichtlinie für die Ketten zu ändern und Regeln hinzuzufügen. Bei komplexeren Firewalls ist es häufig sinnvoll, das Verwaltungsframework durch das Erstellen zusätzlicher Ketten zu erweitern.

Vom Benutzer erstellte Ketten sind von Natur aus an ihre aufrufende Kette gebunden. Vom Benutzer erstellte Ketten haben keine Standardrichtlinie. Wenn ein Paket durch eine vom Benutzer erstellte Kette fällt, kehrt es zur aufrufenden Kette zurück und setzt die Auswertung fort. Vor diesem Hintergrund sind vom Benutzer erstellte Ketten hauptsächlich für organisatorische Zwecke nützlich, um die Regelübereinstimmungsbedingungen trockener zu gestalten und die Lesbarkeit durch Aufteilen der Übereinstimmungsbedingungen zu verbessern.

Wenn Sie feststellen, dass Sie bestimmte Übereinstimmungskriterien für eine erhebliche Anzahl von Regeln wiederholen, kann es sich lohnen, stattdessen eine Sprungregel mit den gemeinsamen Übereinstimmungskriterien für eine neue Kette zu erstellen. Innerhalb der neuen Kette können Sie diesen Regelsatz hinzufügen, wobei die gemeinsamen Übereinstimmungskriterien entfernt werden.

Abgesehen von einer einfachen Organisation kann dies einige vorteilhafte Nebenwirkungen haben. Beispielsweise bedeutet die intelligente Verwendung von Ketten für sehr ähnliche Regelsätze, dass das Hinzufügen von Regeln an der richtigen Position einfacher und weniger fehleranfällig sein kann. Es kann auch einfacher sein, die Teile der Richtlinie anzuzeigen und zu verstehen, die Sie interessieren, indem Sie sie nach Kette einschränken.

Die Entscheidung, ob Sie alle Ihre Regeln in eine der integrierten Ketten einteilen oder ob Sie zusätzliche Ketten erstellen und verwenden, hängt weitgehend davon ab, wie komplex und einfach die Verwaltung Ihres Regelsatzes ist.

Fazit

Inzwischen sollten Sie eine gute Vorstellung von einigen Entscheidungen haben, die Sie beim Entwerfen von Firewall-Richtlinien für Ihre Server treffen müssen. In der Regel ist die mit Firewalls verbundene Zeitinvestition stark an die anfängliche Einrichtung gebunden, sodass die Verwaltung recht einfach bleibt. Es kann einige Zeit dauern, bis Sie eine Richtlinie gefunden haben, die Ihren Anforderungen am besten entspricht. Auf diese Weise erhalten Sie jedoch mehr Kontrolle über die Sicherheit Ihres Servers.

Wenn Sie mehr über Firewalls undiptables erfahren möchten, lesen Sie die folgenden Artikel:

Die folgenden Handbücher können Sie bei der Implementierung Ihrer Richtlinien unterstützen. Wählen Sie die Anleitung, die zu Ihrer Firewall passt, um loszulegen: