IT-MÜCKE

Plesk: viele IP-Adressen in Firewall importieren

Beitragsdatum 12.04.2019
Letzte Aktualisierung -
Betrifft mysql, mariadb, Plesk versch. Versionen

Problem

  • Plesk unterstützt zur Zeit (Version 17.8.11) nicht den Import von IP-Listen in das Firewall-Modul
  • Möchte man nun ganze Listen importieren, bleibt nur der Weg über die Manipulation der Plesk-Datenbank
  • Denn: ändert man die iptables-Skripte auf dem Dateisystem, so werden diese spätestens bei einem neuen Aufruf des Firewall-Moduls in der Plesk-Oberfläche wieder überschrieben

Aufbau der Plesk-Datenbank bzgl. Firewallregeln

Datenbank und Tabelle

Datenbank psa
Tabelle module_firewall_rules

Aufbau der Regeln

  • Der Inhalt der jeweiligen Zelle in der Datenbank beginnt wie folgt:
    a:8:{s:4:"type";s:6:"custom";s:5:"class";s:6:"custom";s:4:"name";s:14:"diverse IPs 01";s:9:"direction";s:5:"input";s:5:"ports";a:0:{}s:4:"from";a:1:
  • Die 1 am Ende gibt die Anzahl der nun folgenden Elemente an (ein Element entspricht einer gesperrten IP-Adresse)
  • Nun folgen die IP-Adressen (in diesem Beispiel eine einzige):
    {i:0;s:13:"000.99.27.192";}
Feld Bedeutung
i:0; ID des Elements beginnend mit Null
s:13: Anzahl der Zeichen zwischen den „ (Anführungszeichen)
„000.99.27.192“; Eine IP-Adresse in Hochkommas eingeschlossen (die 000 dient der Anonymisierung hier im Blog)
  • Mehrere IP-Adressen werden einfach genauso aneinander gereiht inklusive der i- und s-Felder:
    {i:0;s:14:"000.170.57.198";i:1;s:15:"000.226.161.237";}
  • Den Abschluss macht der folgende Text:
    s:6:"action";s:4:"deny";s:10:"originalId";s:2:"72";}

Lösung

  • Im folgenden Text beschreibe ich die Schritte, die notwendig sind, um eine Liste von IP-Adressen direkt in die Datenbank von Plesk auzunehmen
    1. Plesk-Datenbank sichern:
      1. per ssh auf dem Server anmelden
      2. Datenbank-Dump erstellen:
        mysqldump --create-options -h localhost -u admin -p$(cat /etc/psa/.psa.shadow) psa > psa-backup.sql
    2. In Plesk selbst im Firewall-Modul eine Regel erstellen:
      1. „Plesk Firewallregeln modifizieren“ → „Benutzerdefinierte Regel hinzufügen“
      2. Namen vergeben
      3. „Richtungsübereinstimmung“ eingehend aktivieren
      4. „Aktion“ verweigern aktivieren
      5. Bei „Quellen“ eine beliebige IP (achtung - sperren Sie sich nicht selbst aus ;) ) eintragen und auf „Hinzufügen“ klicken
      6. „OK“ klicken
      7. Auf „Änderungen übernehmen“ klicken
      8. Dann auf „Aktivieren“ klicken
    3. IP-Liste umwandeln in benötigtes Format:
      1. Der Aufbau der Firewall-Regeln in der Plesk-Datenbank erfolgt nach einem bestimmten Format und wurde bereits weiter oben besprochen
      2. Daher muss eine IP-Adress-Liste in dieses Format umgewandelt werden
      3. Ich habe dazu Excel benutzt und in eine Spalte die IP-Adressen eingetragen
      4. In einer weiteren Spalte werden die IP-Adressen vorsichthalber geglättet (Leerzeichen entfernen: “=GLÄTTEN(…)„)
      5. Eine weitere Spalte enthält eine Formel zur Längenbestimmung der IP-Adresse (“=LÄNGE(…)„)
      6. Und eine Spalte enthält die ID, die bei Null beginnt und hochgezählt wird
      7. Anschließend wird eine Formel gebaut, die Texte verknüpft (“=VERKETTEN(…)„)
      8. So könnte das aussehen:
        Import in Excel
      9. Die Liste (Spalte „Verkettung“) kopieren und auf einem neuen Tabellenblatt über „Inhalte einfügen“ → „Werte“ und „Transponieren“ einfügen:
        Einfügen
      10. Nun kann dieser Teil in einen Texteditor kopiert werden
      11. In diesem müssen ggf. über Suchen und Ersetzen die Tab-Stopps entfernt werden
      12. Jetzt kann der gesamte Zelleninhalt gebaut werden:
        1. Anfang (s.o.) vorne dran kopieren und die Anzahl der Elemente im „a:“ anpassen (vor der geschweiften Klammer mit den IP-Adressen)
        2. Ende anfügen
      13. Tabelleninhalt modifizieren:
        1. In Datenbank anmelden:
          plesk db
        2. Datenbank auswählen:
          use psa;>/code>
                  - Eintrag suchen:<code>select * from module_firewall_rule;
        3. Da muss als ein relativ letzter Eintrag der vorhin getätigte Dummy-Eintrag zu finden sein:
          | 147 |                1 |         0 |       23 | a:8:{s:4:"type";s:6:"custom";s:5:"class";s:6:"custom";s:4:"name";s:8:"IP-Liste";s:9:"direction";s:5:"input";s:5:"ports";a:0:{}s:4:"from";a:1:{i:0;s:13:"000.99.27.192";}s:6:"action";s:4:"deny";s:10:"originalId";s:3:"123";}
        4. Die ID des Eintrags merken (147)
        5. Anpassen (richtige ID nehmen! Aus dem Texteditor die neue Regel einsetzen.):
          update module_firewall_rules set object='a:8:{s:4:"type";s:6:"custom";s:5:"class";s:6:"custom";s:4:"name";s:14:"diverse IPs 01";s:9:"direction";s:5:"input";s:5:"ports";a:0:{}s:4:"from";a:2:{i:0;s:14:"000.170.57.198";i:1;s:15:"000.226.161.237";}s:6:"action";s:4:"deny";s:10:"originalId";s:2:"72";}' where id=147;
      14. Plesk Firewall in GUI aufrufen und schauen, ob die IPs richtig angezeigt werden

Ähnliche Themen im blog:
plesk, firewall


zurück