PHP-CGI verbraucht zuviel Speicher

Dieser Beitrag ist aus der Kategorie:

„Was kann da schon schief gehen“

Speicher ist billig, aber doch endlich und nicht beliebig nachrüstbar.  Es kann also Situationen geben, wo man Speicher einsparen muß, weil andere der irrigen Meinung, waren, das mit dem Speicherverbrauch  wäre kein Problem.

Aber der Reihe nach:  Was ist überhaupt das Problem ?

PHP als CGI ausgeführt, verbraucht pro Start > 400 MB Speicher fürs Nichtstun.

Beispiel:  „php-cgi -a“ startet PHP ohne irgend was zu machen.

In einer zweiten Konsole läßt man sich mit pmap anzeigen, wer in dem Prozess was an Speicher belegt:

pmap {pid of process}

Beispielausgabe ( gekürzt : Warum kommt später )

[root@xxx]# pmap 5408
5408:   php-cgi -a
0000560d00b44000   3724K r-x– php-cgi
0000560d010e6000    536K r—- php-cgi
0000560d0116c000     16K rw— php-cgi

00007fce773f8000     28K r-x– libcrypt-2.23.so
00007fce773ff000   2044K —– libcrypt-2.23.so
00007fce775fe000      4K r—- libcrypt-2.23.so
00007fce775ff000      4K rw— libcrypt-2.23.so

total           420372K

Genau, 410 MB und nicht eine Anweisung ausgeführt. 3.7 MB gehen für den PHP-Interpretercode selbst drauf, ok. 2 MB gehen alleine für die libcrypt drauf.

Und jetzt der Grund wieso die Ausgabe gekürzt ist: PHP benutzt 75 Libs => ~ 160 MB Speicherverbrauch … bei jedem Script!

Bei der Analyse ist aber aufgefallen, daß auch eine Locale eingebunden wird:

-rw-r–r– 1 root root 110562112 22. Dez 12:01 /usr/lib/locale/locale-archive
-rw-r–r– 1 root root         0 22. Dez 12:01 /usr/lib/locale/locale-archive.tmpl

Auch bekannt als 107 MB und diese Datei wird in jeden PHP Prozess geladen,  der läuft. Keine Gnade.

Locale  – was sind das ?

„Locals“ sind keine Eingeborenen, sondern nur die Informationen über jene, also Zahlensysteme, Schreibrichtung, Datumsformat, Gewichte, Längen usw. . Wer mal sehen will, welche auf seinem Linux installiert sind, gibt das ein : locale -a

Da kommen Sachen von Sprachen, wo man nicht mal sagen kann, wo die passenden Länder sind 😉

Irgendwann hat Red Hat mal entschieden, daß die einfach alle Sprachen des Planeten ausliefern, weil dann der User nicht mehr machen muß. Stimmt.

Auf einem Desktopsystem ok. Aber auf einem Server ist das nicht ok und deswegen muß das auf ein gesundes Maß gedrückt werden. Das macht man mit  : /usr/sbin/build-locale-archive -v -l „de:en:ru:jp“

„Oh… geht ja gar nicht“ ????

Doch geht, aber nur mit Trick Siebzehn aus der „Erschiesst den Trottel Ecke“.

Die obige Locale-Archiv-Datei kommt mit dem Paket „glibc-all-langpacks“ auf den Server. Damit kommt aber auch ein TEMPLATE File mit, aus dem man sich genau das Archiv selbst bauen kann, wenn man eben nicht alles haben will.

Ihr habt’s erfaßt, das wäre zu einfach gewesen 🙁

Die Templatedatei ist nämlich LEER und damit nicht zu gebrauchen. Ihr Fragt Euch jetzt : „Wie bekommt man so ein Template?“ hmm.. Tja.. aus dem Repo jedenfalls nicht und doch, bekommt man. Jetzt wird es lustig, wir kopieren das vorhandene Archiv als Template für sich selbst ! Ja, richtig, mit der Faust durchs Auge: In your Face Red Hat!

Also eingegeben:

cp locale-archive locale-archive.tmpl
/usr/sbin/build-locale-archive -v -l „de:en:ru:jp“
locale -a

und schon ist das File keine 107 MB  mehr sondern nur noch 7 MB und auch das halte ich für extrem viel Schrott für 4 Sprachen. Aber jetzt lädt das php nur noch 7 MB rein. Das macht in der Endabrechnung dann 25% weniger RAM Verbrauch.

Als nächstes muß man rausfinden, wieso die Libs jeweils 2 MB verbrennen, wenn die nur 70k groß sind. Aber das ist eine andere Geschichte aus dem |-: La-La-La-Land 😐 .

 

 

Selten eindeutiger krimineller Spam

Spams unterliegen ja wie alles andere einer Mode. Heute flatterte ein richtig eindeutiger Spam ins Haus, der sich nicht eindeutiger als Spam outen lies. Besonders war nur, was damit wirklich geplant war.

Ich hatte eigentlich bei dem Betreff „for CV“ ein Bild oder ein WordDoc erwartet, daß einen Exploit enthält, aber tatsächlich kam das hier:

Dear info,

We are looking for employees working remotely.

My name is Rich, I am the personnel manager of a large International company.
Most of the work you can do from home, that is, at a distance.

Salary is $2300-$5300.

If you are interested in this offer, please visit Our Site

http://www.buildmypodcast.com/wp-content/themes/twentyfifteen/{GEHACKTEURL}.html

d_healthHave a nice day!

Spamassassin hat die Mail  extrem eindeutig als Spam erkannt. Eine Regel sticht besonders ins Auge :

 Inhaltsanalyse im Detail:   (27.5 Punkte, 5.0 benötigt) 
 Pkte Regelname              Beschreibung
 ---- ---------------------- --------------------------------------------------
...
  3.0 URI_WP_HACKED          URI for compromised WordPress site, possible malware
...
Subject: for CV

Was meint, daß die URL in der Email eine WordPress Installation ist, die vermutlich gehackt wurde.

Spamassassin lernt also auch immer dazu, und das ist gut so 😉

Der Sinn der Sache war übrigens, den Empfänger als Finanzagent für Geldwäsche anzuwerben.  Wenn Sie also sowas sehen, wie immer, aber in die Tonne damit.

Kleine Anekdote am Rande: Für eine fiktive Deutsche Firma hat mich so ein Spam auch schon erreicht. Da in dem Fall allerdings nachvollziehbare Login, Adressen usw. vorhanden waren, ging das ausnahmsweise an die Staatsanwaltschaft, statt direkt in der Tonne zu landen.

Neulich in der Welt … ;)

Als sie im November 2015 bei Uber anfing zu arbeiten, habe der Frauenanteil bei 25 Prozent gelegen. Als sie das Unternehmen verließ, seien gerade mal sechs Prozent der Mitarbeiterinnen weiblich gewesen. Fowler wechselte Anfang des Jahres von Uber zum Bezahldienst Stripe.

Quelle: Welt.de am 20.2.2017

Backups in der Post Locky Era

Wie macht man normalerweise ein automatisches Backup ?

Ganz grob gesagt, packt man mit einem Archivprogramm wie TAR seine Dateien zusammen und speichert sie auf eine andere Festplatte. Der Speicherort könnte auch ein anderer Server sein, weil dann die Gefahr, daß wenn dem lokalen Rechner was passiert, die Daten weg sind, gebannt ist.

Jetzt die schlechte Nachricht: das Konzept ist so leider überholt.

Spielverderber: Ransomware

Seit Locky’s Linux Verwandte unterwegs sind, reicht so eine Backupstrategie nicht mehr aus, denn sie hat einen gravierenden Nachteil und der ist nicht mal auf Linux beschränkt:

Malware wie Locky verschlüsselt die Dateien, verzögert aber die Meldung, das die Daten verschlüsselt wurden, um gerne mal vier Wochen und mehr.

Die Folge

Auf dem oben beschriebenen Backupweg sichert man die verschlüsselten Dateien, löscht irgendwann die alten Backups aus Platzmangel und vermutlich erst danach kommt (zufällig) die Ransomwaremeldung.

Für den backupenden Rechner war das nicht erkenntlich, weil die Malware das verhindert, indem sie wochenlang den Zugriff auf die Dateien durchleitet (on-the-fly Entschlüsselung).

Außerdem könnte die Malware nach genau so einer Backuplösung suchen, das Ziellaufwerk einhängen und dann einfach die Backups auch verschlüsseln.

Fazit: Backup gemacht, Daten trotzdem weg.

Eine Lösung

Ein autarker Backupserver mounted den zusichernden Rechner bei sich,
prüft bestimmte Dateien, ob die noch den richtigen Type und Namen haben,
macht dann erst das inkrementelle Backup und lagert die Daten bei sich ein.

Statt Daten aktiv zu senden, werden diese gepollt.

Auf dem Weg kann eine Infektion gefunden werden, wenn ein Cryptotrojaner bereits am Werk ist. Mit etwas Glück sind die Dateien noch für ein händisches Inhaltsbackup verfügbar, aber auf jeden Fall sind die alten Backups sicher vor Überschreibung. Damit erleidet man maximal nur einen partiellen Verlust.

Natürlich hat das andere Ansprüche an die heimische Infrastruktur, also eine „Ich sichere auf die lokale NAS“ Lösung.
Beide Computer müssen an und im Netz verfügbar sein, damit das überhaupt klappen kann.

Ob das von privaten Anwendern so angenommen wird, ist fraglich, weil die Bequemlichkeit oft über Sicherheit stellen. Siehe : Facebook, kein TLS im Emailprogramm, WhatsApp, Google+, LinkedIn und wie der ganze Überwachungskram so heißt.