TS: Portscans und Einbruchsversuche auf Internetservern

Hello,

vermutlich interessiert es hier nur Wenige. Ich möchte trotzdem meine verwunderten Beobachtungen hinterlassen und nachfragen, ob jemand eine Erklärung dafür hat.

Normalerweise werden auf den von mir betreuten Internetservern auf jedem täglich 15 bis 80 agressive Einbruchsversuche per ssh, smtp, IMAP, mysql/DBS, usw. vorgenommen. Agressiv bedeutet, dass nicht einige wenige Versuche, sondern Bruteforce-Angriffe über mehrere Stunden durchgeführt werden.

Die wurden von den Systemen bisher alle noch rechtzeitig erkannt und deren IPs dauerhaft geblockt.

Nun muss ich zum wiederholten Male feststellen, dass schon seit mehreren Tagen überhaupt kein (Brute-Force-)Angriff mehr stattfindet. Das finde ich bemerkenswert im eigentlichen Wortsinne.

Da die Angriffe üblicherweise von IPs rund um die Welt gestreut kommen, kann ich mir nur schwer vorstellen, dass die sich verabreden.

Unsere Hoster schwören auch, an ihren eigenen Firewallkonzepten jeweils nichts verändert zu haben.

Wer kann sich bzw. mir das Phänomen erklären?

Glück Auf
Tom vom Berg

--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.
  1. Wer kann sich bzw. mir das Phänomen erklären?

    Ist doch logisch.

    1. Hello,

      Wer kann sich bzw. mir das Phänomen erklären?

      Ist doch logisch.

      Die Option "Urlaub aller Internetgangster weltweit" fehlt aber -ö-

      Glück Auf
      Tom vom Berg

      --
      Es gibt nichts Gutes, außer man tut es!
      Das Leben selbst ist der Sinn.
    2. Hallo Jörg,

      bist Du sicher, dass der 13.2. und der 1.3. öffentlich sichtbar sein sollten?

      Rolf

      --
      sumpsi - posui - clusi
      1. bist Du sicher, dass der 13.2. und der 1.3. öffentlich sichtbar sein sollten?

        Alles gut. Sind doch nur Testdaten. Aber der 1.3. sollte da wohl raus. März ist kein Februar...

        1. Hallo,

          März ist kein Februar...

          Doch. Heute ist das so...

          Gruß
          Kalk

          1. Hm. Da wir einmal hier sind ...

            Das "1. März"-Problem habe ich behoben - aber:

            Situation: Ein Erignis vom Typ "Jahrestag" entstehe am 29.2. eines Schaltjahres.

            Frage: An welchem Tag eines Nichtschaltjahres begeht man dann den Jahrestag? (Wäre der 1.3. korrekt?)

            1. Hallo Raketenwissenschaftler,

              Situation: Ein Erignis vom Typ "Jahrestag" entstehe am 29.2. eines Schaltjahres.

              Frage: An welchem Tag eines Nichtschaltjahres begeht man dann den Jahrestag? (Wäre der 1.3. korrekt?)

              Die heißen auch Gemeinjahre. Ich würde sagen, ja. Heute habe ich in der Zeitung gelesen, dass ein Geburtstagskind am 28.2. mit der Familie feiert und am 1.3. mit den Freunden.

              Bis demnächst
              Matthias

              --
              Du kannst das Projekt SELFHTML unterstützen,
              indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
              1. (Und zwar so:)

                    private function addFeiertag ($m, $d, $name, $arCodes ) {
                		if ( 
                			29 == $d &&
                			2  == $m &&
                			0  == date('L', mktime( 0, 0, 0, 2, 1, $this->jahr ) ) 
                		) {
                				$d=1; $m=3;
                			}
                		}
                
                1. Hallo Raketenwissenschaftler,

                  ist das nicht ziemlich langsam? Ob date('L') spezielle Kalenderregeln beachtet, weiß ich nicht, aber für dich reicht doch der gregorianische Kalender der Gegenwart, d.h. $jahr%4==0 ist bis 2099 hinreichend. Soll er bis 2399 funktionieren brauchst du auch die % 100 Regel, wenn du auch das Jahr 2000 und 2400 korrekt behandeln musst, auch die % 400 Regel.

                  Rolf

                  --
                  sumpsi - posui - clusi
                  1. Is Schaltjahr: Prüfe ob der 29.2. und der 1.3. auf denselben Tag fallen

                    function isLeap($year){
                        $feb = new DateTime($year."-2-29");
                        $mrz = new DateTime($year."-3-1");
                        return $feb->format('w') == $mrz->format('w') ? 0 : 1;
                    }
                    

                    MFG

                    1. Hallo pl,

                      Is Schaltjahr: Prüfe ob der 29.2. als februales Datum ausgegeben wird

                      function isLeapYear(year) {
                        const date29_2 = new Date(year,1,29);
                        return (1 == date29_2.getMonth());
                      }
                      

                      Bis demnächst
                      Matthias

                      --
                      Du kannst das Projekt SELFHTML unterstützen,
                      indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
                    2. Is Schaltjahr: Prüfe ob der 29.2. und der 1.3. auf denselben Tag fallen

                      Besser ist es, diese Prüung über den julianischen Tag zu rechnen. Damit kann man auch die Jahre vor 1582 (Gregorianische Kalenderreform) prüfen. So ist nach dem Julianischen Kalender das Jahr 1400 ein Schaltjahr, nach dem Greg. Kalender hingegen nicht.

                      puts(juliantojd(3,1,1400), juliantojd(2,29,1400));
                      echo "\n";
                      puts(gregoriantojd(3,1,1400), gregoriantojd(2,29,1400));
                      

                      D.h, der Funktion wäre auch das Zeitalter G//J zu übergeben. Auf jeden Fall ist auch diese Rechnung wesentlich einfacher anzuwenden als die Teilerregel.

                  2. ist das nicht ziemlich langsam?

                    Hm.

                    Messen wir mal auf einem Raspi 4b+ mit 4GB RAM und 400GB-Speicherkarte:

                    • Nach Löschen des Caches (Array in Datei für das Jahr 2020):
                    Systeminformationen:
                    
                        Gebraut in 25 ms
                        Speicher: 355 KiloBytes (für Programm und 117 Ereignisse)
                        Gebraut mit PHP, Version 7.4.2
                    
                    • Nach Löschen des Caches (Array in Datei für das Jahr 2019):
                    Systeminformationen:
                    
                        Gebraut in 23 ms
                        Speicher: 355 KiloBytes (für Programm und 117 Ereignisse)
                        Gebraut mit PHP, Version 7.4.2
                    
                    • Wiederholung (also mit angelegter Cache-Datei:)

                    • 2/2019

                    • 3/2020

                        Systeminformationen:
                            Gebraut in 5 ms
                            Speicher: 355 KiloBytes (für Programm und 116 Ereignisse)
                            Gebraut mit PHP, Version 7.4.2
                            Quelltext und Projektbeschreibung
                    

                    Fazit: 😉 - Ich kann aber bestimmt noch optimieren...

                    1. Hallihallo!

                      ist das nicht ziemlich langsam?

                      Hm.

                      Fazit: 😉 - Ich kann aber bestimmt noch optimieren...

                      Derartige Testergebnisse kann ich bestätigen, genau wie die Befürchtung vorher:

                      Vor ein paar Jahren habe ich mal als Hobbyprojekt einen Kalender programmiert, damals in PHP 5.4. Leider war der fürchterlich langsam, und ich habe schnell herausgefunden, dass es an wahnsinnig langen Ausführungszeiten für sämtliche date()- Aufrufe gelegen hat.

                      Vor etwa einem halben Jahr habe ich den Kalender dann auf PHP7 umgestellt, und habe meine ganzen damaligen Würg-Arounds wieder entfernen dürfen, weil die PHP-Entwickler anscheinend in der date()- Funktion einen ordentlichen Turbo eingebaut haben.

                      Fazit: man kann jetzt auch auf langsamen Servern damit arbeiten.

                      Beste Grüsse, Tobias Hahner

                      1. Hallo derdicki,

                        naja, die beiden Ausdrücke

                           $a = ($jahr % 4 == 0 && ($jahr % 100 != 0 || $jahr % 400 == 0));
                        
                           $a = date('L', mktime( 0, 0, 0, 2, 1, $jahr ) ) ;
                        

                        haben auf http://sandbox.onlinephpfunctions.com diese Ausführungszeiten:

                        PHP % date
                        4.4.9 0.2 µs 5.1 µs
                        5.6.9 0.05 µs 2.9 µs
                        7.4.0 0.03 µs 2.3 µs

                        D.h. die Ausführungszeit hat sich für diese Funktionsvarianten halbiert.

                        Was bei PHP7 aber viel wichtiger ist, ist dies hier:

                        for ($i=0; $i<10000; $i++) {
                           $jahr = $j0;
                           // hier zu messenden Befehl einfügen
                        }
                        

                        Die Laufzeit der Rahmenschleife hat sich von 0.28µs pro Durchlauf mit PHP 4.4.9 auf 0.015µs pro Durchlauf in PHP 7.4 reduziert, d.h. die Programmausführung an sich ist extrem schneller geworden.

                        Natürlich schwanken die Zahlen, das ist das Mittel mehrerer Messungen. Es ist Mikrooptimierung, aber viele PHP Programmierer verwenden an vielen Stellen diese "bequemen" Funktionen und wundern sich dann, warum ihr Programm nicht aus den Füßen kommt.

                        Rolf

                        --
                        sumpsi - posui - clusi
                        1. haben auf http://sandbox.onlinephpfunctions.com diese Ausführungszeiten:

                          PHP % date
                          4.4.9 0.2 µs 5.1 µs
                          5.6.9 0.05 µs 2.9 µs
                          7.4.0 0.03 µs 2.3 µs

                          Hehe. Das date() wird wirklich "nicht sehr oft" (man kann sich im Kindergarten streiten, was das nun wieder bedeuten mag) ausgeführt... Und das auch nur dann, wenn aus der INI-Datei mit den Angaben zu den Ereignissen (auf Feiertage ist das schon längst nicht mehr begrenzt, sondern auch auf schräge Sachen wie "vorletzter Sonntag im Mai") gelesen werden muss. Also wenn die Cache-Datei mit dem Ereignis-Array (vertikal partitioniert nach Jahr) nicht vorhanden oder älter ist als die INI.

                          Nichtdeszutrotz habe ich die Aufrufe von date() reduziert und die Cache-Methode endlich geändert. (Vorher: var_export()/require, Jetzt json_encode(), json_decode ) Ich spare jetzt 3 Millisekunden (bei Anzeige eines Monats) bis 10 Millisekunden (bei Anzeige eines Jahres).

            2. Hallo,

              Situation: Ein Erignis vom Typ "Jahrestag" entstehe am 29.2. eines Schaltjahres.

              Frage: An welchem Tag eines Nichtschaltjahres begeht man dann den Jahrestag? (Wäre der 1.3. korrekt?)

              ja, habe ich gestern erst noch in der Tagesschau gehört. Da wurde das im Zusammenhang mit standesamtlichen Vorgängen erwähnt.

              Ciao,
               Martin

              --
              Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
  2. Wer kann sich bzw. mir das Phänomen erklären?

    Grippe. Auch logisch, Hände nicht gewaschen.

  3. Hello,

    Da die Angriffe üblicherweise von IPs rund um die Welt gestreut kommen, kann ich mir nur schwer vorstellen, dass die sich verabreden.

    Unsere Hoster schwören auch, an ihren eigenen Firewallkonzepten jeweils nichts verändert zu haben.

    Wenn es die Hoster nicht sind, wer könnte dann seine Filter scharf gemacht haben? Die DE-Angriffe waren nach meinem letzten Thread zu diesem Thema plötzlich von fast Null auf ca. 10 am Tag gestiegen. Nun sind sie wieder bei Null, wie alle anderen auch.

    Das sind alles nur Beobachtungen. Die passenden Theorien dazu fehlen mir noch :-O

    Glück Auf
    Tom vom Berg

    --
    Es gibt nichts Gutes, außer man tut es!
    Das Leben selbst ist der Sinn.