Posts by Netaction

    Hallo!


    Ich habe ein paar Kunden, die ein Gefühl bekommen wollen, welche Seiten besonders oft besucht werden und wie viele Besuche es generell gibt. Sie wollen dafür keine unnötigen Daten erfassen. Netcup hat im Hosting bereits AWStats und Webalizer eingebaut. Die Probleme damit sind: Man braucht das SSH-Passwort zum Zugriff, und für alle Ewigkeit stehen IP-Adressen in der Auswertung.


    Was kann einem Kunden statt dessen gegeben werden? Netcup speichert ja immer die Zugriffe der aktuellen Woche und der letzten Woche, also für 7-14 Tage. Ist es schlau, die Files für eine kleine Auswertung zu parsen? Wäre ein PHP-Script besser, das auf AWStats oder Webalizer zugreift und die wichtigsten Diagramme rausholt? Das Problem gab es bestimmt schon hundertmal, deshalb wollte ich hier fragen.


    Alternativ könnte ein Javascript von einem Mini-Matomo geholt werden. Hat jemand so etwas im Einsatz für PHP oder als Wordpress-Plugin?


    Viele Grüße

    Thomas

    Hi!

    Lässt sich im Plesk des Webhosting Seafile installieren? Ich habe ein Reseller-Webhosting und damit auch Python. Ich weiß, das Python und Nodejs in Plesk ist fast nicht zu gebrauchen, aber vielleicht hat es doch schon jemand probiert.

    Viele Grüße

    Thomas

    Mir wird gerade klar, dass ich den Reseller-Webspace ausprobieren sollte.

    Dann werden die Projekte in Plesk verwaltet, und dort sind sie mit Namen aufgelistet.

    Ich weiß wirklich nicht, warum ich das jetzt erst merke.

    Mir fällt auch gerade auf, dass die Pakete auch in den Mails immer mit dem ganzen Text "…Webhosting 4000…" bezeichnet werden und nicht nur der Nummer. Der lässt sich doch bestimmt ändern.


    Komisch, dass der Support nie hier antwortet.

    Ich habe eine erstaunliche Information vom Support bekommen: PHP mail() soll gar nicht verwendet werden, sondern SMTP an einen richtigen Mailserver. Die Webserver sind für Mail nicht besonders geeignet. Gut zu wissen!


    Also zur Ausgangsfrage: Der Fehler liegt bei Wordpress, das PHP mail() für eine gute Idee hält. Wir können aber ganz einfach in der wp_config.php über den Hook phpmailer_init SMTP konfigurieren.


    Thomas

    die Mail, die Du übergibst, den Wert bereits gesetzt hat?

    Es gibt tatsächlich ein Wordpress-Plugin mit 10 Zeilen, das genau das macht und den Return-Path setzt. (Quellcode)


    Ist das hier ein Bug in Wordpress, und alle Netcup-Kunden müssen das Plugin installieren, oder ist der Fehler doch bei Netcup? Ich habe eben mit All-Incl und Domainfactory verglichen, die setzen schlauere Header.


    Aus Sicht von SPF steht fest, dass einer der beiden kaputt ist und falsche Daten liefert.

    Hallo!


    Wordpress setzt in ausgehenden Mails keinen SENDER, sondern nur FROM.

    Die Mails gehen über PHP mail() und Phpmailer an den Mailserver.

    Phpmailer nimmt die From-Einstellung für den From: Header und die Sender-Einstellung für den MAIL FROM: Header. Im Falle von Wordpress gibt es MAIL FROM also nicht.

    Die Mail geht weiter zum Postfix, wo aus MAIL FROM der Header Return-Path: wird.


    Das ist alles so weit richtig, aber: Wordpress setzt ja am Anfang keinen SENDER, und am Ende kommt der Unix-Username als Return-Path raus. So kommt eine Mail von Wordpress an:



    Gibt es irgend ein Argument für diesen Return-Path? Ich habe viele andere Mailserver verglichen, die setzen alle FROM als Return-Path oder den Domainnamen der Webseite.


    Ein Problem mit dieser Konfiguration entsteht in Spam-Filtern. SPF geht nach dem Return-Path, und da ergibt so eine Domain keinen Sinn. Hier ein Beispiel von Google Mail.

    Code
    1. spf=neutral (google.com: 188.68.61.102 is neither permitted nor denied by best guess record for domain of hosting106351@hosting106351.a2f21.netcup.net) smtp.mailfrom=hosting106351@hosting106351.a2f21.netcup.net;


    Ich könnte es verstehen, wenn Return-Path auf einen festgelegten Wert gesetzt wird, z.B. info@domainname. Aber wo lässt sich dieser Wert festlegen?


    Mir ist bekannt, dass es im Customercontrolpanel eine Option für PHP mail() gibt und Wordpress über den Hook phpmailer_init den Wert setzen kann. Aber das sind Workarounds für einen fragwürdig konfigurierten Mailserver.


    Viele Grüße

    Thomas

    Ich sehe, dass seit meinem letzten Post die Einstellungsoptionen nachgebessert wurden. Es gibt jetzt zwei Möglichkeiten:


    Default (unsicher)


    open_basedir: {WEBSPACEROOT}{/}{:}{TMP}{/}{:}{/}var{/}lib{/}php5{/}sessions

    upload_tmp_dir: {WEBSPACEROOT}{/}tmp

    Uploads gehen hierhin:

    /var/www/vhosts/hosting106xxx.xxxxx.netcup.net/tmp/php9P7L2K

    Einstellbar (schon besser)


    open_basedir: {DOCROOT}{/}{:}{TMP}{/}{:}{/}var{/}lib{/}php5{/}sessions{:}{WEBSPACEROOT}{/}tmp

    upload_tmp_dir: {DOCROOT}{/}tmp

    Uploads gehen hierhin:

    /var/www/vhosts/hosting106xxx.xxxxx.netcup.net/domains/pflaume/tmp/phpfvP0wy


    Die beiden TMP-Verzeichnisse und standardmäßige Session-Pfad können leer gehalten werden, damit sieht dieser Aspekt jetzt so weit in Ordnung aus.



    Die ursprüngliche Frage, welche Einstellungen optimal sind, bleibt weiterhin offen. Es gibt ja Angreifer, die bei einem gehackten Wordpress

    Privilege escalations automatisiert suchen. Das Thema sollte schon umfassend geklärt sein.

    Ich stelle gerade fest, dass upload_tmp_dir nicht innerhalb von open_basedir = {DOCROOT}{/}{:}{TMP}{/} liegt. Das ist laut PHP-Doku erlaubt:


    Wenn das hier angegebene Verzeichnis nicht beschreibbar ist, nutzt PHP stattdessen das Standardverzeichnis für temporöre Dateien.


    Nur leider scheint das Standardverzeichnis falsch gesetzt zu sein, es ist nämlich nicht das erlaubte /tmp. Dateien landen vielmehr hier:


    /var/www/vhosts/hosting106xxx.xxxxx.netcup.net/tmp/phpox46IS

    /var/www/vhosts/hosting106xxx.xxxxx.netcup.net/tmp/phpJbU5Oe

    /var/www/vhosts/hosting106xxx.xxxxx.netcup.net/tmp/phpR8q4zZ


    Bei mir sind also PHP-Uploads nur möglich, wenn die Domain Vollzugriff auf alle Domains hat.

    Danke für die Einschätzung.


    Das heißt, selbst wenn komplexe Privilege Escalations wie über mail() blockiert wären, wäre der Abschottung nicht zu trauen?


    Sonst habe ich Lücken bei Hostern gefunden. Ihr sagt von euch aus, dass die Domains nicht richtig getrennt sind. Find ich gut! :thumbup:

    Einzelne Pakete buchen ist ja kein Problem.

    Hallo!


    Was muss eingestellt werden, damit die Seiten in einem Webspace-Paket sich nicht gegenseitig hacken können?


    In den PHP-Einstellungen sieht disable_functions mit exec,passthru,shell_exec,system,proc_open,popen,show_source ganz OK aus. Open_Basedir dagegen ist wohl ziemlich ungünstig und sollte sowieso als Standard auf {DOCROOT}{/}{:}{TMP}{/} gesetzt werden. Was fehlt noch?


    Bei Nodejs bin ich mir unsicher, weil Node ohne extra chroot und ohne eigenem System-User ausgeführt wird. Das klingt für mich etwas - unüblich.


    Viele Grüße

    Thomas

    Mir ist klar, dass serverweite Konfigurationen nicht beliebig angepasst werden können. Den Nginx möchte ich auch gar nicht konfigurieren. Der Funktionsumfang ist bei Netcup gar nicht so gering. Es gibt sogar den Entwickler-Modus, in dem sich der Server bei Änderungen vom Code neu startet und Abstürze auf der Webseite eingeblendet werden. Man kann mit Git klonen und NPM-Pakete auf Knopfdruck aktualisieren. Den Umfang finde ich persönlich beeindruckend.


    Neben den ganzen Entwickler-Werkzeuge gibt es ein paar Funktionen, die man als Admin im Produktivbetrieb braucht. Dazu gehört ein Logfile. Bei PHP gibt es das selbstverständlich, und von Plesk/Passenger ist das auch fest vorgesehen. Startet mal Etherpad oder irgendwas auf Express-Basis, da gibt es eigentlich immer Konsolenausgaben.


    Ich möchte nicht einen Reverse Proxy auf einen Unter-Pfad einrichten. Ich möchte nicht stand alone MongoDB installieren. Es geht mir nur darum, dass ich eine grundlegende Funktion nicht finde, die eigentlich ohne Aufwand bereits da sein müsste. Es wäre unlogisch, wenn für Devs ein paar schöne Tools gegeben wären, aber für den praktischen Einsatz nicht.


    Auch wenn der Hinweis jetzt zweimal kam: Natürlich kann ich woanders etwas anderes bestellen.

    Den Fehler habe ich mit einer Umleitung der Exceptions in eine Datei gefunden, ich hatte den Datenbank-Server falsch angegeben. Der Weg ging nur, weil das eine kleine App ist, an der ich rumprogrammieren konnte.


    Woanders einen Server habe ich schon, das verringert das Problem hier irgendwie nicht. Ich brauche einfach Webspace mit dem dokumentierten Plesk oder irgendwie anders einen stimmigen Funktionsumfang. Wie machen das denn die anderen hier? Im Blindflug die Ausgaben ignorieren ist nicht so recht, wie ich Administration gewohnt bin.


    Thomas

    Vielen Dank.


    Ich habe mittlerweile auch herausgefunden, dass im Development-Modus Fehlermeldungen auf der Webseite öffentlich stehen. Das ist halt bei Plesk so. In Verbindung mit dem automatischen Serverneustart ergibt das wohl Sinn, ist aber halt zum Entwickeln und nicht fürs produktive Monitoring.


    Meine App ist fertig, läuft bei mir lokal und auf einem anderen Server produktiv. Manche Funktionen davon gehen aber auf dem Netcup-Server nicht, das muss ich analysieren können. Momentan wird an den Browser nur eine Fehlermeldung von Passenger geschickt, nach der man ins Log gucken muss.


    Wie NPM-Pakete und Nodejs-Entwicklung funktionieren, weiß ich schon. Ich entwickele Node-Server, deshalb bin ich bei Netcup. Das Deployment geht mit Plesk ganz ordentlich, vor allem in Verbindung mit Git ist das eine runde Sache.


    Ich war gerade dabei mit Winston oder so die Fehlermeldungen in eine Datei umzuleiten. Damit wäre das Problem weitestgehend behoben. Aber das reicht nicht, da fertige Node-Apps Konsolenausgaben schreiben und sich nicht unbedingt umkonfigurieren lassen. Die Konsole wird einfach als Standard von den üblichen Apps vorausgesetzt, und Passenger erwartet, dass der Admin Zugriff auf seine Logfiles hat.


    Weiß eventuell jemand, warum Netcup die Logfiles nicht im Chroot zum Lesen anbietet? Immerhin ist das normal bei Plesk und so wie es jetzt ist wahrscheinlich kaputt. Ein Rootserver ist für mich nicht die Alternative, denn ich wollte gerade das administrierte Plesk benutzen.


    Liebe Grüße

    Thomas