| FreeBSD Handbuch | ||
|---|---|---|
| Zurück | Kapitel 10. Sicherheit | Nach vorne |
Firewalls sind sehr wichtig für Leute, die mit dem Internet verbunden sind. Weiterhin halten sie Einzug in private Netzwerke, um dort die Sicherheit zu verbessern. Dieser Abschnitt erklärt, was Firewalls sind, wie sie benutzt werden und wie man die Möglichkeiten von FreeBSD benutzen kann, um eine Firewall zu implementieren.
Anmerkung: Es wird oft gedacht, dass eine Firewall zwischen dem internen Netzwerk und dem ``weiten, schlechten Internet'' alle Sicherheitsprobleme löst. Eine Firewall kann die Sicherheit erhöhen, doch eine schlecht aufgesetzte Firewall ist ein größeres Sicherheitsrisiko als gar keine Firewall. Eine Firewall ist nur eine weitere Sicherheitsschicht, sie verhindert aber nicht, dass ein wirklich entschlossener Cracker in Ihr internes Netz eindringt. Wenn Sie Ihre interne Sicherheit vernachlässigen, weil Sie Ihre Firewall für undurchdringlich halten, machen Sie den Crackern die Arbeit leichter.
Auf dem Internet sind momentan zwei Arten von Firewalls gebräuchlich. Die erste Art ist ein Paketfilter, in dem ein Kernel auf einer Maschine mit mehreren Netzwerkverbindungen auf Grund von Regeln entscheidet, ob er ein Paket weiterleitet oder nicht. Der zweite Typ sind Proxy-Server, die auf Dæmonen angewiesen sind. Die Dæmonen authentifizieren Benutzer und leiten Pakete weiter, das heißt sie können auf Maschinen mit mehreren Netzwerkverbindungen laufen, auf denen das Weiterleiten von Paketen durch den Kernel ausgeschaltet ist.
Manchmal werden beide Arten einer Firewall kombiniert und es ist nur einer besonderen Maschine, die Bastion Host genannt wird, erlaubt, Pakete in das interne Netzwerk über einen Paketfilter zu schicken. Auf dem Bastion Host laufen Proxy-Dienste, die im Allgemeinen sicherer als normale Authentifizierungsmechanismen sind.
FreeBSD besitzt einen Kernel-Paketfilter (IPFW), der im Rest dieses Abschnitts behandelt wird. Proxy-Server können mit Hilfe von Software von Drittherstellern auf FreeBSD realisiert werden, doch gibt es so viele Proxy-Server, dass deren Behandlung den Rahmen dieses Abschnitts sprengen würde.
Ein Router ist eine Maschine, die Pakete zwischen zwei oder mehr Netzwerken weiterleitet. Ein Paketfilter ist ein spezieller Router, der extra Code im Kernel hat, der es im erlaubt, die Pakete mit Regeln zu vergleichen, bevor er das Paket weiterleitet. Um die Filter zu aktivieren, müssen Sie zuerst die Regeln definieren, die festlegen, ob ein Paket weitergeleitet wird oder nicht.
Um zu entscheiden, ob ein Paket weitergeleitet wird, sucht der Code des Paketfilters eine Regel, die auf den Inhalt des Paketheaders passt. Wenn eine passende Regel gefunden wurde, wird die Aktion der Regel ausgeführt. Die Aktion kann das Paket blockieren, weiterleiten oder auch dem Sender eine ICMP-Nachricht schicken. Die Regeln werden der Reihenfolge nach durchsucht und nur die erste passende Regel wird angewandt. Daher wird auch von einer ``Regelkette'' gesprochen.
Die Kriterien, nach denen Sie ein Paket spezifizieren können, hängen von der eingesetzten Software ab. Typischerweise können Sie Pakete nach der Quell IP-Adresse, der Ziel IP-Adresse, dem Quellport, dem Zielport (bei Protokollen, die diese unterscheiden) oder dem Pakettyp (UDP, TCP, ICMP) unterscheiden.
Auf Proxy-Servern werden die normalen Systemdienste (telnetd, ftpd, usw.) durch besondere Server ersetzt. Diese Server werden Proxy-Server genannt, da sie normalerweise nur weitergehende Verbindungen erlauben (proxy engl. für Stellvertreter). Zum Beispiel können Sie auf Ihrer Firewall einen Proxy-Telnet Server laufen lassen, der es Personen erlaubt, aus dem Internet auf die Firewall eine Telnet-Verbindung zu öffnen. Dort laufen Sie durch einen Authentifizierungsmechanismus und haben dann Zugriff auf Ihr internes Netzwerk. Für den umgekehrten Weg können Sie natürlich auch Proxy-Server einsetzen.
Proxy-Server sind in aller Regel sicherer als normale Server und bieten oft eine Reihe von Authentifizierungsmechanismen. Dazu gehören Einmal-Passwort Systeme, bei denen das zum Anmelden verwendete Passwort sofort ungültig wird und nicht zu einer weiteren Anmeldung benutzt werden kann, auch wenn es abgehört wurde. Da Proxy-Server den Benutzern keinen Zugang zu dem System geben, wird es für einen Angreifer sehr schwer, Hintertüren zur Umgehung Ihres Sicherheitssystems zu installieren.
Mit Proxy-Servern lassen sich die Zugriffe meist noch weiter beschränken. Der Zugriff kann auf bestimmte Rechner eingeschränkt werden und oft ist es möglich, festzulegen, welcher Benutzer mit welcher Zielmaschine kommunizieren darf. Welche Möglichkeiten Sie haben, hängt stark von der Proxy-Software ab, die Sie einsetzen.
IPFW, das von FreeBSD zur Verfügung gestellt wird, ist ein Paketfilter und ein Accounting-System, das im Kernel läuft und mit ipfw(8) ein Werkzeug im Userland zur Verfügung stellt. Beide Teile zusammen erlauben es Ihnen, die Regeln für Routing Entscheidungen im Kernel zu definieren oder abzufragen.
In IPFW gibt es zwei zusammenhängende Teile. Mit der Firewall können Sie einen Paketfilter konfigurieren. Das IP-Accounting Modul erlaubt es Ihnen, mit ähnlichen Regeln wie den Firewall-Regeln, die Nutzung Ihres Routers zu überwachen. Damit können Sie zum Beispiel sehen, wie viel Verkehr auf Ihrem Router von einer bestimmten Maschine kommt oder wie viel WWW (World Wide Web) Verkehr durch Ihren Router geht.
Durch das Design von IPFW können Sie IPFW auch auf Maschinen, die keine Router sind, einsetzen und einen Paketfilter für eingehende und ausgehende Verbindungen konfigurieren. Dies ist ein Spezialfall der normalen Verwendung von IPFW und daher werden dieselben Kommandos und Techniken benutzt.
Der größte Teil des IPFW-Systems befindet sich im Kernel, daher müssen Sie die Konfigurationsdatei des Kernels editieren und anschließend den Kernel neu übersetzen. Das Kapitel Konfiguration des FreeBSD Kernels beschreibt, wie Sie dazu vorzugehen haben.
Warnung: In der Voreinstellung verbietet IPFW alle Verbindungen. Sie haben sich ausgesperrt, wenn Sie den Kernel mit Firewall-Unterstützung starten und keine eigenen Regeln, die einen Zugriff erlauben, definiert haben. Zum ersten Überprüfen der Firewall-Funktion können Sie die Firewall öffnen, indem Sie firewall_type=open in /etc/rc.conf eintragen und danach, wenn alles funktioniert hat, die Regeln in /etc/rc.firewall anpassen. Um zu vermeiden, dass Sie sich aus Versehen aussperren, konfigurieren Sie die Firewall nicht über eine ssh-Verbindung sondern an der Konsole. Sie können auch in der Voreinstellung alle Verbindungen zulassen, indem Sie die Option IPFIREWALL_DEFAULT_TO_ACCEPT in die Kernelkonfiguration aufnehmen.
Momentan gibt es vier Optionen in der Kernelkonfiguration, die IPFW betreffen:
Fügt den Paketfilter-Code in den Kernel ein.
Aktiviert das Loggen von Paketen mit syslogd(8). Ohne diese Option werden keine Pakete geloggt, auch wenn Sie in den Filterregeln das Loggen angeben.
Begrenzt die Anzahl der über syslogd(8) geschriebenen Einträge. Die Option ist in Umgebungen mit hoher Aktivität nützlich, in denen Sie die Firewall Aktivitäten loggen möchten, aber einem Angreifer nicht die Möglichkeit eines Denial of Service Angriffs durch das Überlasten von syslog geben wollen.
Erreicht eine Regel der Regelkette die angegebene Grenze, so wird für diesen Eintrag das Loggen abgestellt. Um das Loggen von Paketen wieder zu aktivieren, müssen Sie den Zähler mit ipfw(8) zurücksetzen:
# ipfw zero 4500
Hier ist 4500 die Nummer der Regel in der Regelkette, für die Sie das Log weiterführen möchten.
Ändert die Voreinstellung der Firewall, sodass alle Verbindungen erlaubt anstatt verboten sind. Diese Einstellung vermeidet, dass Sie sich aussperren, wenn Sie einen Kernel mit IPFIREWALL und ohne eigene Regeln starten. Wenn Sie ipfw(8) wie einen Filter zum Lösen spezieller Probleme bei deren Auftreten verwenden, kann diese Option sehr nützlich sein. Diese Einstellung öffnet die Firewall und verändert ihre Arbeitsweise. Gehen Sie daher sehr vorsichtig mit ihr um.
Anmerkung: Frühere Versionen von FreeBSD stellten die Option IPFIREWALL_ACCT zur Verfügung. Die Option ist mittlerweile überholt, da der Firewall Code automatisch Accounting Möglichkeiten bereitstellt.
Mit ipfw(8) konfigurieren Sie die IPFW-Software. Die Syntax dieses Kommandos sieht ziemlich kompliziert aus, doch wenn Sie einmal den Aufbau der Kommandos verstanden haben, ist es sehr einfach.
Das Kommando unterstützt vier verschiedene Operationen: Hinzufügen/Löschen, Anzeigen und Zurücksetzen von Regeln, sowie das Zurücksetzen von Paketzählern. Die Operationen Hinzufügen/Löschen werden genutzt, um die Regeln, nach denen Pakete akzeptiert, blockiert oder geloggt werden, zu erstellen. Die Operation Anzeigen zeigt die Regelkette und die Paketzähler an. Die Operation Zurücksetzen löscht alle Regeln der Regelkette. Mit der letzten Operation können Sie ein oder mehrere Paketzähler auf den Wert Null zurücksetzen.
Die Syntax für diese Operation lautet:
ipfw [-N] Kommando [index] Aktion [log] Protokoll Adressen [Optionen]
Dieser Aufruf unterstützt eine Option:
Löst Adressen und Namen von Diensten in der Ausgabe auf.
Kommando kann auf die kürzeste eindeutige Länge reduziert werden. Gültig sind die Werte:
Fügt einen Eintrag in die Firewall/Accounting Regelkette ein.
Löscht einen Eintrag in der Firewall/Accounting Regelkette.
Frühere Versionen von IPFW verfügten über getrennte Firewall- und Accounting-Einträge in der Regelkette. In der jetzigen Version steht das Accounting für jeden Eintrag in der Firewall-Regelkette zur Verfügung.
Wenn ein Wert für index angegeben ist, so wird die Regel an entsprechender Stelle in die Regelkette eingefügt. Ansonsten wird die Regel an das Ende der Kette gestellt, wobei der Index um 100 größer ist als der Index der letzten Regel (die voreingestellte letzte Regel mit der Nummer 65535 wird in diesem Verfahren nicht berücksichtigt).
Wenn der Kernel mit IPFIREWALL_VERBOSE erstellt wurde, gibt die Regel mit der Option log Meldungen auf der Systemkonsole aus.
Gültige Werte für Aktion sind:
Blockiert das Paket und schickt dem Sender die ICMP-Nachricht ``host or port unreachable''.
Leitet das Paket normal weiter. Zulässige Aliase sind pass und accept.
Blockiert das Paket und benachrichtigt den Sender nicht mit einer ICMP-Nachricht. Dem Sender kommt es so vor, als hätte das Paket sein Ziel nie erreicht.
Erhöht den Paketzähler für diese Regel, trifft aber keine Entscheidung wie mit dem Paket zu verfahren ist, das heißt die nächste Regel der Kette wird auf das Paket angewendet.
Es ist möglich, die kürzeste eindeutige Form der Aktion anzugeben.
Für Protokoll können die folgenden Werte angegeben werden:
Trifft auf jedes IP-Paket zu.
Passt auf jedes ICMP-Paket.
Passt auf jedes TCP-Paket.
Trifft auf jedes UDP-Paket zu.
Die Syntax für Adresse lautet:
from Adresse/Maske [Port] to Adresse/Maske [Port] [via Interface]
Port können Sie nur angeben, wenn das Protokoll auch Ports unterstützt (UDP und TCP).
via ist optional und gibt die IP-Adresse, den Domainnamen eines lokalen Interfaces oder den Namen des Interfaces (z.B. ed0) an und trifft nur auf Pakete zu, die durch dieses Interface gehen. Die Nummern der Interfaces können mit einem Platzhalter angegeben werden, ppp* trifft auf alle Kernel-PPP Interfaces zu.
Adresse/Maske können Sie wie folgt angeben:
Adresse
oder
Adresse/Bitmaske
oder
Adresse:Maskenmuster
Anstelle einer IP-Adresse können Sie einen gültigen Hostnamen angeben. Bitmaske ist eine dezimale Zahl, die angibt, wie viele Bits in der Adressmaske gesetzt werden sollen. Die Angabe 192.216.222.1/24 erstellt eine Maske, die auf jede Adresse des Klasse C Subnetzes 192.216.222 zutrifft. Das Maskenmuster wird mit der gegebenen IP-Adresse logisch UND verknüpft. Das Schlüsselwort any trifft auf jede IP-Adresse zu.
Die Portnummern werden wie folgt angegeben:
Port [,Port [,Port [...]]]
Dies gibt entweder einen Port oder eine Liste von Ports an.Port-Port
Gibt einen Portbereich an. Sie können einen einzelnen Bereich mit einer Liste kombinieren, müssen aber den Bereich immer zuerst angeben.Die verfügbaren Optionen sind:
Trifft auf Pakete zu, die nicht das erste Fragment eines Datagrams sind.
Trifft auf eingehende Pakete zu.
Trifft auf ausgehende Pakete zu.
Trifft auf alle IP-Pakete zu, deren Header die in spec angegebenen, durch Kommata separierte, Optionen enthalten. Die unterstützten IP-Optionen sind: ssrr (strict source route), lsrr (loose source route), rr (record packet route), und ts (time stamp). Ein führendes ! trifft auf alle Pakete zu, die diese Option nicht gesetzt haben.
Trifft auf alle Pakete zu, die zu einer schon bestehenden TCP-Verbindung gehören, das heißt das RST- oder ACK-Bit ist gesetzt. Sie können den Durchsatz der Firewall verbessern, wenn Sie die established Regeln soweit wie möglich an den Anfang der Regelkette stellen.
Passt auf alle Pakete, die versuchen eine TCP-Verbindung aufzubauen, das heißt das SYN-Bit ist gesetzt und das ACK-Bit ist nicht gesetzt.
Trifft auf alle Pakete zu, die im TCP-Header eine der durch Kommata getrennten Option gesetzt haben. Die gültigen Optionen sind: fin, syn, rst, psh, ack und urg. Mit einem führenden ! kann die Abwesenheit einer Option angegeben werden.
Trifft auf ICMP-Pakete vom Typ types. Hier kann eine Kommata separierte Aufzählung von Bereichen oder einzelnen Typen angegeben werden. Gebräuchliche Typen sind: 0 echo reply (ping reply), 3 destination unreachable, 5 redirect, 8 echo request (ping request) und 11 time exceeded, das die Überschreitung der TTL angibt und zum Beispiel von traceroute(8) genutzt wird.
Die Syntax für dieses Kommando lautet:
ipfw [-a] [-t] [-N] l
Drei Optionen sind für diese Form gültig:
Zeigt die Paketzähler zu den Regeln an. Diese Option ist die einzige Möglichkeit, die Zähler zu sehen.
Zeigt die Zeit, zu der die Regel zuletzt aktiviert wurde. Die Syntax dieser Ausgabe ist nicht kompatibel mit der Eingabesyntax von ipfw(8).
Versucht Adressen und Namen von Diensten aufzulösen.
Die Regeln setzen Sie wie folgt zurück:
ipfw flush
Damit werden alle Regeln der Regelkette, mit Ausnahme der Vorgaberegel 65535 gelöscht. Seien Sie vorsichtig, wenn Sie die Regeln zurücksetzen. Die Vorgabe für die Regel 65535 ist es, alle Pakete zu blockieren, das heißt, das System ist solange vom Netzwerk abgeschnitten, bis wieder neue Regeln in die Kette eingefügt werden.
Um einen oder mehrere Paketzähler zurückzusetzen, verwenden Sie folgende Syntax:
ipfw zero [index]
Wenn Sie das Argument index nicht angeben, werden alle Paketzähler zurückgesetzt. Wenn Sie das Argument angeben, wird nur der Zähler der angegebenen Regel zurückgesetzt.
Das folgende Kommando blockiert alle Pakete, die von dem Host evil.crackers.org auf den Telnet-Port von nice.people.org gehen:
# ipfw add deny tcp from evil.crackers.org to nice.people.org 23
Das nächste Beispiel verbietet jeden IP-Verkehr von dem ganzen crackers.org Klasse C Netzwerk zu der Maschine nice.people.org:
# ipfw add deny log tcp from evil.crackers.org/24 to nice.people.org
Wenn Sie X-Sitzungen zu Ihrem internen Netzwerk, einem Subnetz eines C Klasse Netzwerkes, verbieten wollen, wenden Sie das folgende Kommando an:
# ipfw add deny tcp from any to my.org/28 6000 setup
Um die Accounting Einträge zu sehen:
# ipfw -a list
oder kürzer
# ipfw -a l
Den Zeitpunkt, an dem eine Regel das letzte Mal aktiviert wurde, sehen Sie mit:
# ipfw -at l
Anmerkung: Beachten Sie bitte, dass die folgenden Vorschläge wirklich nur Vorschläge sind. Die Anforderungen jeder Firewall sind verschieden und wir können Ihnen wirklich nicht sagen, wie Sie Ihre maßgeschneiderte Firewall einrichten müssen.
Wenn Sie Ihre Firewall außerhalb eines kontrollierten Testumfelds aufbauen, empfehlen wir Ihnen dringend, das Loggen der Regeln im Kernel zu aktivieren und Regeln zu verwenden, die loggen. Das macht es Ihnen leichter, Fehler zu finden und diese ohne große Unterbrechungen zu beheben. Auch nachdem Sie die Firewall aufgesetzt haben, empfehlen wir Ihnen, die `deny'-Regeln zu loggen. Dies macht es leichter, Angriffen nachzugehen und das Regelwerk Ihrer Firewall zu ändern, wenn sich die Anforderungen einmal ändern.
Anmerkung: Wenn Sie Pakete der accept-Regel loggen, denken Sie bitte daran, dass Sie leicht sehr große Datenmengen erzeugen können, da jedes durchgelassene Paket einen Eintrag im Log generiert. Es kann vorkommen, das große FTP oder HTTP Übertragungen das System langsamer machen. Weiterhin wird für jedes der betroffenen Pakete die Latenzzeit erhöht, da von Seiten des Kernels mehr Arbeit zum Weiterleiten des Paketes erforderlich ist. Da alle Daten auf die Platte ausgeschrieben werden wird syslogd auch mehr Prozessorzeit beanspruchen und es kann leicht passieren, dass die Partition, die /var/log enthält voll läuft.
Sie sollten Ihre Firewall aus /etc/rc.conf.local oder /etc/rc.conf aktivieren. Die entsprechende Manualpage zeigt Ihnen, welche Einstellungen Sie vornehmen müssen und zeigt einige vorgegebene Firewall-Konfigurationen. Wenn Sie keine der Vorgaben verwenden, können Sie Ihre Regelkette mit ipfw list in eine Datei ausgeben und diese Datei in /etc/rc.conf angeben. Wenn sie weder /etc/rc.conf.local oder /etc/rc.conf benutzen, um Ihre Firewall zu aktivieren, stellen Sie bitte sicher, dass die Firewall aktiviert ist, bevor die IP-Interfaces konfiguriert werden.
Als nächstes müssen Sie festlegen, was Ihre Firewall machen soll. Das wird sehr stark davon abhängen welche Zugriffe Sie von außen auf Ihr Netzwerk erlauben wollen und welche Zugriffe von innen nach außen erlaubt sein sollen. Einige gebräuchliche Regeln sind:
Blockieren Sie jeden einkommenden Zugriff auf Ports unter 1024 für TCP. Dort befinden sich die meisten der sicherheitsrelevanten Dienste wie finger, SMTP (Post) und telnet.
Blockieren Sie jeden einkommenden UDP-Verkehr. Es gibt wenige nützliche UDP-Dienste und die, die nützlich sind, stellen meist eine Bedrohung der Sicherheit dar (z.B. die RPC- und NFS-Protokolle von Sun). Dies bringt allerdings auch Nachteile mit sich. Da UDP ein verbindungsloses Protokoll ist, verbieten Sie auch die Antworten auf ausgehende UDP-Pakete, wenn Sie eingehende UDP-Verbindungen blockieren. Dies kann zum Beispiel Probleme für Anwender des internen Netzwerks hervorrufen, wenn diese einen externen Archie-Server (prospero) verwenden. Wenn Sie den Zugriff auf Archie erlauben wollen, müssen Sie Pakete von den Ports 191 und 1525 zu jedem internen UDP-Port durch Ihre Firewall lassen. Ein anderer Dienst, den Sie vielleicht erlauben wollen, ist ntp, der vom Port 123 ausgeht.
Verbieten Sie Verkehr von außen zum Port 6000. Der Port 6000 wird für den Zugriff auf X-Server genutzt und kann eine Bedrohung der Sicherheit darstellen, insbesondere wenn die Anwender gewohnt sind xhost + zu benutzen. Tatsächlich kann X einen Bereich von Ports verwenden, der bei 6000 anfängt. Die Obergrenze ist durch die Anzahl der Displays, die auf einer Maschine laufen, gegeben. Laut RFC 1700 (Assigned Numbers) hat der höchst mögliche Port die Nummer 6063.
Überprüfen Sie, welche Ports von internen Servern (z.B. SQL-Servern) benutzt werden. Da diese normalerweise aus dem oben angesprochenen Bereich von 1-1024 fallen, ist es wahrscheinlich gut, diese Ports ebenfalls zu blockieren.
Eine Checkliste zum Aufbau einer Firewall ist vom CERT unter http://www.cert.org/tech_tips/packet_filtering.html erhältlich.
Wie oben schon gesagt, können wir Ihnen nur Richtlinien geben. Sie müssen selbst entscheiden, welche Regeln Sie auf Ihrer Firewall einsetzen wollen. Wir übernehmen keine Verantwortung dafür, dass jemand in Ihr Netzwerk eindringt, auch wenn Sie die obigen Ratschläge befolgt haben.
Viele Leute wollen wissen, wie viel zusätzliche Last IPFW auf einem System erzeugt. Hauptsächlich hängt dies von der Art der Regelkette und der Geschwindigkeit des Prozessors ab. Für die meisten Anwendungen mit einer kleinen Regelkette auf einem Ethernet ist der Aufwand vernachlässigbar klein. Wenn Sie genaue Zahlen brauchen, lesen Sie bitte weiter.
Die folgenden Messungen wurden auf einem 486-66 mit 2.2.5-STABLE durchgeführt. Obwohl sich IPFW in späteren FreeBSD Versionen leicht geändert hat, läuft es doch mit vergleichbarer Geschwindigkeit. Zur Durchführung der Messungen wurde in IPFW die verbrauchte Zeit in der Routine ip_fw_chk gemessen. Die Ergebnisse wurden alle 1000 Pakete auf der Konsole ausgegeben.
Zwei Regelsätze mit je 1000 Regeln wurden getestet. Der erste Regelsatz sollte den schlimmsten Fall durch wiederholte Anwendung der folgenden Regel demonstrieren:
# ipfw add deny tcp from any to any 55555
Da ein Großteil der Routine, die die Pakete überprüft, durchlaufen werden muss, bevor entschieden werden kann, ob das Paket wegen der Portnummer nicht auf die Regel passt, wird mit dieser Regel der schlimmste Fall gut simuliert. Nach 999 Wiederholungen dieser Regel folgte die Regel allow ip from any to any.
Der zweite Regelsatz wurde so entworfen, dass die Überprüfung der Regel schnell abgeschlossen werden kann:
# ipfw add deny ip from 1.2.3.4 to 1.2.3.4
Die Regel kann aufgrund einer nicht passenden IP-Adresse sehr schnell verlassen werden. Nach 999 Wiederholungen dieser Regel folgte wie im ersten Fall die Regel allow ip from any to any.
Im ersten Fall betrug der zusätzliche Aufwand 2,703 ms pro Paket also ungefähr 2,7 µs pro Regel. Damit könnten maximal ungefähr 370 Pakete pro Sekunde verarbeitet werden. Mit einem 10 Mbps Ethernet und Paketen, die ungefähr 1500 Bytes groß sind, entspricht dies einer Ausnutzung von 55% der zur Verfügung stehenden Bandbreite.
Im letzten Fall wurde jedes Paket in 1,172 ms abgearbeitet, was ungefähr 1,2 µs pro Regel entspricht. In diesem Fall könnten maximal 853 Pakete pro Sekunde verarbeitet werden, was die Bandbreite eines 10 Mbps Ethernet vollständig ausnutzt.
Die große Anzahl und die Beschaffenheit der Regeln in den Beispielen entsprechen nicht der Wirklichkeit. Die Regeln dienten nur der Messung der Geschwindigkeit. Wenn Sie eine effiziente Regelkette aufbauen wollen, sollten Sie die folgenden Ratschläge berücksichtigen:
Setzen Sie eine established Regel so früh wie möglich in die Regelkette, um den Großteil des TCP Verkehrs abzudecken. Vor dieser Regel sollten Sie keine allow tcp Regeln stehen haben.
Plazieren Sie häufig benutzte Regeln vor selten benutzten Regeln, ohne dabei den Sinn der Regelkette zu ändern. Welche Regeln häufig durchlaufen werden, können Sie den Paketzählern mit ipfw -a l entnehmen.
| Zurück | Zum Anfang | Nach vorne |
| Kerberos | Nach oben | OpenSSL |
Wenn Sie Fragen zu FreeBSD haben,
schicken Sie eine EMail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie
eine Email an <de-bsd-translators@de.FreeBSD.org>.