Datenbank dauerhaft im Speicher halten

  • Hallo an Alle,


    wir haben auf einem Server (Domino 9.0.1 auf Linux) eine Firewall-Applikation, die Events entgegennimmt und IP-Adressen, von denen ein STMP-Authentication-Fehler ausgelöst wurde, für einige Zeit per iptables sperrt.
    Das ganze funktioniert wirklich hervorragend und hat nur ein einziges Problem.
    Wenn längere Zeit kein Event auftritt schmeißt der Server die Datenbank aus dem Speicher und muss diese beim nächsten Event erst wieder laden. Dieses laden dauert natürlich einige Zeit, sodass "Angreifer" die Möglichkeit haben mehrere Attacken gegen den SMTP-Server zu fahren (der schnellste hat 5 geschafft). Wenn die DB noch im Speicher ist, ist das System so schnell, dass die IP-Adresse schon nach dem ersten Versuch gesperrt ist und der Server für den potentiellen Angreifer nicht mehr sichtbar ist.


    Frage: wie kann man den Domino-Server dazu bewegen diese Datenbank permanent geladen zu haben?


    Schon mal vielen Dank für Eure Hilfe.


    Gruß Thorsten



    Hintergrund: nach einigen Brute-Force-Attacken, die zum Glück alle erfolglos blieben, haben wir uns diese Lösung überlegt. Die IP-Adressen werden erst mal nur für eine Stunde gesperrt und gespeichert. Jeder weitere Angriffsversuch von einer bekannten IP-Adresse verdoppelt diese Zeit. Wir haben so die Anzahl der Attacken von bis zu 50000/Stunde auf ca. 5/Tag reduzieren können.
    Wir sind einfach mal davon ausgegangen, dass Server, die Angriffsversuche auf unseren SMTP-Task loslassen uns wohl kaum ernsthaft in nahe liegender Zeit eine Nachricht senden möchten oder eine der Webseiten besuchen, die auf dem Server liegen ;)
    Mit einer kleinen Erweiterung haben wir auch IP-Adressen ausgesperrt, von denen versucht wird Seiten mit bestimmten Adressen (z.B. wp-login.php etc.) auszusperren. Da wir PHP auf diesem Server und den darauf liegenden Webseiten nicht nutzen, können dies nur Versuche von bösen Buben sein, die glauben ein CMS finden zu können, bei dem das Default-Passwort nicht geändert wurde. Wir sind mal davon ausgegangen, dass sich keiner derart vertippt.

  • Gar nicht.


    Du kannst höchstens den Cache Speicher vergrößern oder eben dafür sorgen, daß die DB auch wirklich die ganze Zeit benutzt wird.


    Allerdings frage ich mich wieso die DB denn so lange zum Laden braucht wenn sie nicht mehr im Cache ist, evtl sollte man eher mal an der Stelle ansetzen

  • Hallo taurec,


    erst mal vielen danke für die Antwort. Das hatte ich bereits befürchtet.
    Das Problem ist weniger die Geschwindigkeit, in der der Server die DB lädt, sondern eher die Geschwindigkeit einer Brute-Force-Attacke.
    Bei den üblichen Attacken werden viele Anfragen abgefeuert ohne erst auf eine Antwort des Servers zu warten. Da sind schnell mal einige Anfragen an den SMTP-Task geschickt, bevor der Server die DB geladen hat. Leider haben normale HDs im Einsatz und keine SSDs und hier kann bei dem vorliegenen Problem schon die Latenzzeit der Platten stören.


    An welcher Stelle muss ich schrauben um den Cache zu erhöhen?

  • Noch ein kleiner Nachtrag für Interessierte.
    Das Problem lag nicht an der Geschwindigkeit des Servers oder, dass die Datenbank nicht geladen war, sondern an der Reihenfolge wie unsere Firewall agierte.
    Wir hatten erst eine Reverse-DNS-Abfrage und eine Whois-Abfrage gestartet - man möchte ja schließlich wissen, wer der Böse Bube ist - bevor die IP-Adresse gesperrt wurde.
    Leider hat die Whois-Abfrage in einigen Fällen zu lange gedauert, sodass in der Zwischenzeit mehrere Angriffe auf den Server abgefeuert werden konnten.


    Nachdem wir die Reihenfolge geändert hatten - erst sperren und dann mal schauen wer's ist - funktioniert alles wie gewünscht :)