it-swarm.com.de

blockiere alle bis auf ein paar ips mit firewalld

Auf einem Linux-Netzwerkcomputer möchte ich den Satz von Adressen in der "öffentlichen" Zone (Firewall-Konzept) einschränken, die ihn erreichen dürfen. Das Endergebnis wäre also, dass kein anderer Computer auf einen Port oder ein Protokoll zugreifen kann, außer auf die explizit zulässigen, eine Art Mischung aus

  --add-rich-rule='rule family="ipv4" source not  address="192.168.56.120" drop'

  --add-rich-rule='rule family="ipv4" source not  address="192.168.56.105" drop'

Das obige Problem ist, dass dies keine echte Liste ist, sondern alles blockiert, da, wenn seine eine Adresse blockiert ist, indem sie nicht mit der anderen identisch ist, ein versehentlicher "Drop All" -Effekt erzeugt wird, wie würde ich ein bestimmtes Nicht "entsperren" zusammenhängendes Set? Akzeptiert die Quelle eine Adressliste? Ich habe bisher nichts in meinem Blick auf die Dokumente oder das Google-Ergebnis gesehen.


EDIT: Ich habe gerade Folgendes erstellt:

# firewall-cmd  --zone=encrypt --list-all
encrypt (active)
  interfaces: eth1
  sources: 192.168.56.120
  services: ssh
  ports: 6000/tcp
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

Aber ich kann Port 6000 immer noch über .123 Erreichen. Meine Absicht war, dass eine Quelle, die nicht aufgeführt ist, keinen Dienst oder Port erreichen kann

18
mike

Die reichhaltigen Regeln sind überhaupt nicht notwendig.

Wenn Sie eine Zone auf einen bestimmten Satz von IPs beschränken möchten, definieren Sie diese IPs einfach als Quellen für die Zone selbst (und entfernen Sie eventuell vorhandene Schnittstellendefinitionen, da diese Quell-IPs überschreiben).

Sie möchten dies jedoch wahrscheinlich nicht in der "öffentlichen" Zone tun, da dies semantisch dafür gedacht ist, dass öffentlich zugängliche Dienste für die Welt offen sind.

Versuchen Sie stattdessen, eine andere Zone wie "intern" für meist vertrauenswürdige IP-Adressen zu verwenden, um auf potenziell vertrauliche Dienste wie sshd zuzugreifen. (Sie können auch eigene Zonen erstellen.)

Warnung: Verwechseln Sie die spezielle "vertrauenswürdige" Zone nicht mit der normalen "internen" Zone. Alle Quellen, die der "vertrauenswürdigen" Zone hinzugefügt wurden, werden an allen Ports zugelassen. Das Hinzufügen von Diensten zur "vertrauenswürdigen" Zone ist zulässig, macht jedoch keinen Sinn.

firewall-cmd --zone=internal --add-service=ssh
firewall-cmd --zone=internal --add-source=192.168.56.105/32
firewall-cmd --zone=internal --add-source=192.168.56.120/32
firewall-cmd --zone=public --remove-service=ssh

Das Ergebnis ist eine "interne" Zone, die den Zugriff auf ssh ermöglicht, jedoch nur von den beiden angegebenen IP-Adressen. Führen Sie jeden Befehl mit angehängtem --permanent Aus, um ihn dauerhaft zu machen.

24
Michael Hampton

Gemäß firewalld.richlanguage:

Quelle Quelle [nicht] Adresse = "Adresse [/ Maske]"

   With the source address the Origin of a connection attempt can be limited to the source address. An address is either a single IP address, or a network IP address. The address has to match the rule family (IPv4/IPv6). Subnet mask is expressed in either
   dot-decimal (/x.x.x.x) or prefix (/x) notations for IPv4, and in prefix notation (/x) for IPv6 network addresses. It is possible to invert the sense of an address by adding not before address. All but the specified address will match then.

Geben Sie eine Netzmaske für die Adresse an, um zusammenhängende Blöcke zuzulassen.

Andernfalls können Sie versuchen, ein ipset für eine nicht zusammenhängende Liste zulässiger IP-Adressen zu erstellen.

Zum Beispiel in /etc/firewalld/direct.xml:

<?xml version="1.0" encoding="utf-8"?>
<direct>
   <rule ipv="ipv4" table="filter" chain="INPUT" priority="0">-m set --match-set whitelist src -j ACCEPT</rule>
</direct>

Das eigentliche ipset muss separat erstellt werden.

1
dawud

Sie können einfach mit Rich Rule verwalten.

Erster Schritt

firewall-cmd --permanent --set-default-zone=home
firewall-cmd --permanent --zone=drop --change-interface=eth0

Zweiter Schritt - Rich Rule hinzufügen

firewall-cmd --permanent --zone=home --add-rich-rule='rule family="ipv4" source address="192.168.78.76/32" accept'

Auf alle Ports kann bis 192.168.2.2 zugegriffen werden, sobald Sie eine Rich-Regel hinzugefügt und jeden Port von einer anderen Quelle blockiert haben.

Wenn Sie einen Port oder Dienst mit dem folgenden Befehl hinzufügen, können alle Quellen darauf zugreifen.

firewall-cmd --zone=public --add-service=ssh
firewall-cmd --zone=public --add-port=8080

Wenn Sie einen bestimmten Port für eine bestimmte IP als den folgenden Befehl öffnen möchten

firewall-cmd --permanent --zone=home --add-rich-rule='rule family="ipv4" port="8080/tcp" source address="192.168.78.76/32" accept'
0
Ranjeet Ranjan