Dazu füge ich einer Zone Quellen hinzu. Überprüfen Sie zunächst, welche Quellen für Ihre Zone verfügbar sind:
firewall-cmd --permanent --zone=public --list-sources
Wenn keine vorhanden sind, können Sie sie hinzufügen. Dies ist Ihre "Whitelist".
firewall-cmd --permanent --zone=public --add-source=192.168.100.0/24
firewall-cmd --permanent --zone=public --add-source=192.168.222.123/32
(Das fügt eine ganze /24
und eine einzelne IP hinzu, nur damit Sie eine Referenz für ein Subnetz und eine einzelne IP haben.)
Legen Sie den Bereich der Ports fest, die geöffnet werden sollen:
firewall-cmd --permanent --zone=public --add-port=1-22/tcp
firewall-cmd --permanent --zone=public --add-port=1-22/udp
Dies macht nur die Ports 1 bis 22. Sie können dies erweitern, wenn Sie möchten.
Laden Sie jetzt neu, was Sie getan haben.
firewall-cmd --reload
Und überprüfe deine Arbeit:
firewall-cmd --zone=public --list-all
Randnotiz / Leitartikel: Es spielt keine Rolle, aber ich mag die "vertrauenswürdige" Zone für einen Satz von IPs auf der weißen Liste in der Firewall. Sie können eine weitere Beurteilung vornehmen, indem Sie die Vorschläge von redhat zur Auswahl einer Zone lesen .
Siehe auch:
Wenn Sie DROP
Pakete außerhalb dieser Quelle senden möchten, finden Sie hier ein Beispiel für das Löschen von Paketen außerhalb der Pakete, die /24
ich zuvor als Beispiel verwendet habe. Ich glaube , Sie können hierfür umfangreiche Regeln verwenden . Dies ist konzeptionell, ich habe es nicht getestet (abgesehen davon, dass Centos 7 den Befehl akzeptiert), aber es sollte einfach genug sein, einen PCAP durchzuführen und zu prüfen, ob es sich so verhält, wie Sie es erwarten
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.100.0/24" invert="True" drop'
Auch wenn eine Antwort akzeptiert und positiv bewertet wurde, halte ich sie nicht für richtig. Ich finde keine klare Erklärung in der Dokumentation, aber vom implementierten Verhalten sieht es so aus:
Die Antwort wäre also:
Angenommen, die Standardzone ist öffentlich und hat keine offenen Ports, fügen Sie der Arbeitszone Quelle und Portbereich hinzu:
Überprüfen Sie nun die aktiven Zonen (Standardzone ist immer aktiv):
Du wirst kriegen:
Daher gelten die Regeln für Arbeitszonen für das jeweilige Subnetz. Sie haben eine Reihe von offenen Ports für das Subnetz "Whitelist" = wie angefordert. Und natürlich verwenden Sie die
--permanent
Option in--add-xxx
Anweisungen, um das Verhalten beizubehalten.Alle Ports oder Dienste, die Sie in der "öffentlichen" (Standard-) Zone haben, gelten wiederum für alle Schnittstellen und Quelladressen.
Dasselbe System funktioniert für Schnittstellen. Sprich durch Hinzufügen der Schnittstelle "ens3" zur "Arbeits" -Zone:
Sie verwenden die Zonenregeln "Arbeit" für alle Anforderungen von der jeweiligen Schnittstelle - grobe Auswahl als "Quelle".
quelle
sources
Whitelist hatte. Der Grund war, dass der Zone eine Schnittstelle zugewiesen wurde.public
Zone entfernt werden (diese Dienste sind für alle Adressen verfügbar, da die Schnittstellenpublic
standardmäßig der Zone zugewiesen sind ). Oder ändern Sie die Standardzone in eine andere:block
oderdrop
(dies ist gängige Praxis). Oder ändern Sie daspublic
Zonenziel in%%REJECT%%
oderDROP
.Haftungsausschluss: Ich habe nicht wirklich versucht, was ich hier vorschlage, aber es ist ziemlich nah an der letzten Firewall-Einrichtung, die ich gemacht habe, also gehe ich davon aus. Firewalld stellt Ihnen zu diesem Zweck einige vorkonfigurierte Zonen zur Verfügung. Es gibt einen namens "drop", der alles fallen lässt, was hereinkommt, und einen namens "trusted", der es erlaubt jede Verbindung (dh, Sie sollten nicht einmal einzelne Ports öffnen müssen, denke ich). Der Trick besteht darin, die richtige Zone zu finden, um das auszulösen, was Sie möchten.
Firewalld wendet die Regeln für eine Zone basierend auf der folgenden Rangfolge an:
Zunächst möchten Sie Ihre vertrauenswürdigen IP-Adressen an die "vertrauenswürdige" Zone binden:
Dann setzen Sie entweder Ihre Standardzone auf "drop" oder binden Sie Ihre Schnittstelle daran:
und dann die Änderungen wirksam werden lassen (Warnung: Dies wird wahrscheinlich Ihre Verbindung unterbrechen, wenn Sie dies über das Netzwerk tun und Ihre Quell-IP nicht zur vertrauenswürdigen Zone hinzugefügt haben):
Natürlich können Sie diese auch nur vorübergehend testen, indem Sie "--permanent" weglassen (und dann müssen Sie auch nicht --reloaden).
quelle
block
kann auch verwendet werden (anstelle vondrop
), wenn Sie anderen Hosts mitteilen möchten, dass Sie nicht mit ihnen sprechen ....Ich bediene meine Firewalls auf diese Weise. Hier ist meine bevorzugte Methode, um das zu erreichen, was Sie wollen.
Sie sehen, dass Ihre Standardzone öffentlich ist und die aktivierten Dienste dhcpv6-client und ssh sind. Wir wollen doch keine öffentlichen Dienste, oder? Nur die IPs auf der Whitelist sind berechtigt. Entfernen wir also die beiden öffentlichen Dienste.
Lassen Sie uns nun eine bestimmte IP-Adresse auf die Whitelist setzen, die Zugriff auf einen beliebigen Port gewährt.
Lassen Sie uns jetzt eine andere IP-Adresse auf die Whitelist setzen, die nur Zugriff auf SSH, http und https haben soll. Keine anderen Ports.
Wenn Sie eine Verbindung über SSH herstellen, müssen Sie Ihre IP-Adresse autorisieren, bevor Sie Ihren neuen Regelsatz anwenden. Wenn Sie bereit sind, die neuen Regeln anzuwenden.
quelle
Sie können problemlos mit Rich Rule verwalten.
Erster Schritt
Zweiter Schritt - Rich Rule hinzufügen
Auf alle Ports kann von 192.168.2.2 zugegriffen werden, sobald Sie eine Rich-Regel hinzugefügt und alle Ports von anderen Quellen blockiert haben.
Wenn Sie einen Port oder Dienst mit dem folgenden Befehl hinzufügen, können alle Quellen darauf zugreifen.
Wenn Sie einen bestimmten Port für ein bestimmtes IP öffnen möchten, gehen Sie wie folgt vor
quelle
Die Top-Antwort von dougBTV ist falsch. Ich kann auf seine Antwort nicht antworten, da ich noch nicht die erforderlichen Wiederholungspunkte habe. Deshalb erkläre ich hier:
Er verwendet die Standardzone "public". Er bindet Netzwerke an diese Zone und öffnet dann Ports in dieser Zone. In einer Standardkonfiguration durchläuft der gesamte Datenverkehr jedoch die Standardzone und nicht nur die Quellnetzwerke, die Sie mit ihr verknüpfen. Seine --add-source-Befehle machen also keinen Unterschied, und seine --add-port-Befehle haben jetzt der ganzen Welt den Zugriff auf diese Ports ermöglicht.
Die 2. Antwort von Normunds Kalnberzins ist richtig. Sie möchten eine separate Zone erstellen, Ihr Netzwerk / Ihre IP-Adressen an diese Zone binden und die Ports in dieser Zone öffnen.
Alternativ können Sie alles in der Standardzone belassen und die umfangreichen Firewall-Regeln verwenden, um den Zugriff von bestimmten IP-Adressen aus zuzulassen:
Dadurch wird der gesamte Datenverkehr von 192.168.2.2 zu allen Ports zugelassen. Da ich keine Zone angegeben habe, wird dieser auf die Standardzone "public" angewendet. Get-Active-Zones, um zu sehen, welche Zonen derzeit verwendet werden.
Um den Zugriff von dieser IP nur auf einen bestimmten Port zuzulassen, würde ich Folgendes tun:
Es wird empfohlen, diese Befehle ohne --permanent (oder kurz --perm) auszuführen, was sich auf die derzeit ausgeführte Firewall auswirkt. Nachdem Sie getestet haben, ob Ihre Regel funktioniert, führen Sie sie erneut mit angefügtem --perm aus, damit sie bei nachfolgenden Firewall-Neuladungen gespeichert wird.
quelle
Nur um Normunds Antwort hinzuzufügen:
So blockieren Sie den gesamten anderen Datenverkehr:
Warnung: Wenn Sie vom Remotecomputer aus zugreifen, wird möglicherweise die Anmeldesitzung getrennt. Wenn Sie das IP-Setup für die 'Arbeits'-Zone nicht korrekt erhalten haben, können Sie keine Verbindung zu Ihrem Server herstellen.
So laden Sie die Firewall neu:
Ich konnte nicht herausfinden, wie ich mit '--add-rich-rule' zwei verschiedene IPs hinzufügen kann.
quelle
ipset
likefirewall-cmd --permanent --new-ipset=blacklist --type=hash:ip
add ips zum ipset mitfirewall-cmd --ipset=blacklist --add-entry=192.168.1.4
dann kannst dufirewall-cmd --add-rich-rule='rule source ipset=blacklist drop'
Ich bin überrascht, dass die Antworten in der vertrauenswürdigen Zone nicht die ausgewählte Antwort sind. Die vertrauenswürdige Zone hat ein Standardziel: AKZEPTIEREN, während der Rest "Ziel: Standard" ist. Obwohl es wirklich egal ist, scheint es sich aufgrund des Namens und des Standardzielwerts um die beabsichtigte Methode zu handeln.
So schließen Sie eine Box schnell ab, damit nur Sie darauf zugreifen können:
Nachdem Sie alle Zonen aufgelistet haben, sollten Sie Folgendes sehen:
Hinweis: Ich habe Zeilen mit einem Null- / fehlenden Wert entfernt. Wichtig ist, dass Trusted und Drop beide (aktiv) sind und Drop Ihre öffentliche Schnittstelle hat.
Was dies für iptables zur Demonstration bedeutet:
quelle