Beiträge von kk

    Hab heute morgen zu meiner letzten Idee noch eine .dpkg-old Datei gefunden, die anscheinend von LC irgendwann man überschrieben wurde.


    Eine .dpkg-old wird dann erzeugt, wenn Sie z.B. das Apache-Paket aktualisieren und die von LiveConfig erzeugte Konfiguration mit der vom Debian-Paket überschreiben (also genau anders herum). Wenn es Änderungen an Konfigurationsdateien gibt, wird bei einem Update nachgefragt, ob Sie die bestehende Konfiguration beibehalten oder überschreiben wollen - Standard ist "beibehalten" - Sie haben dann vermutlich "überschreiben" gewählt (so wurde die bestehende (LiveConfig-)Konfiguration in die .dpkg-old weggesichert).


    Zitat

    Allerdings,
    /var/www/web01/htdocs/unterordner/kundenzugriff1 (protected2: User1, User2) (domain: kunde1.example.com)
    /var/www/web01/htdocs/unterordner/kundenzugriff2 (protected3: User1, User3) (domain: kunde2.example.com)


    funktioniert auch weiterhin nicht für User1.


    Die von LC erstellten <Directory> Einträge aus meiner web01.conf:


    Da ist etwas falsch - wenn User1 auch Zugriff auf "kundenzugriff1" bzw "kundenzugriff2" haben soll, dann muss der bei "Require user" auch mit drin stehen.
    Prüfen Sie bitte noch mal in LiveConfig, ob Sie User1 wirklich zum jeweiligen Ordner hinzugefügt haben. Das sollte dann so aussehen:
    forum.liveconfig.com/cms/attachment/13/

    Hallo,


    /var/www/web01/htdocs (domain: example.com)
    /var/www/web01/htdocs/unterordner (protected1: User1)
    /var/www/web01/htdocs/unterordner/kundenzugriff1 (protected2: User1, User2) (domain: kunde1.example.com)
    /var/www/web01/htdocs/unterordner/kundenzugriff2 (protected3: User1, User3) (domain: kunde2.example.com)


    Ich habe mal genau diese Struktur auf einem Debian 8 eingerichtet und kann keinerlei Probleme feststellen.
    User1 kann beide Websites (kunde1.example.com, kunde2.example.com) öffnen, die anderen beiden User nur jeweils eine (User2 -> kunde1, User3 -> kunde3).


    Vielleicht hatte Ihr Browser noch irgendwelche Zugangsdaten gespeichert, was zu Fehlern führte? Ggf mal Cache leeren bzw. mit einem Browser im Privat-Modus oder einem anderen Browser testen.
    (wir testen sowas übrigens immer mit curl oder lynx auf der Konsole)


    Zitat

    Was mir heute morgen noch aufgefallen ist:
    In sites-available existiert eine Konfiguration "000-default", die offensichtlich von liveconfig zuletzt bearbeitet wurde, aber nicht aktiviert ist (ich gehe mal davon aus, dass liveconfig diese normalerweise aktivieren würde).


    Das ist definitiv ein Fehler. Diese Datei sollte unter Debian 8 "000-default.conf" heißen und aktiviert sein.
    Haben Sie den Rechner neu aufgesetzt oder von einer früheren Debian-Version aktualisiert?
    Benennen Sie diese Datei bitte um (in 000-default.conf) und aktivieren Sie diese (a2enmod 000-default).


    Zitat

    Möchte ich diese nun manuell aktivieren, stürzt Apache2 mit der Fehlermeldung ab, dass Port 443 nicht zugewiesen werden konnte.


    Dann läuft auf Port 443 wohl noch irgendein anderer Dienst. Was liefert "netstat -tlpn | grep 443"?


    Viele Grüße


    -Klaus Keppler

    Natürlich, allerdings müssen Sie das aktuell noch "von Hand" einrichten.
    (mit v1.9.0 macht LiveConfig das dann automatisch, wenn im jeweiligen Zertifikat eine OCSP-URL angegeben ist).


    Bei Debian wäre /etc/apache2/conf.d/ssl.conf der richtige Ort für globale Einstellungen (die genauen Einstellungen habe ich gerade nicht auswendig da).

    LC speichert das Postfach-Passwort nicht in der (My)SQL-Datenbank, sondern nur in der passwd-Datei? Wie kommt das Passwort denn aus der GUI raus und da rein? ..


    Quantenphysik und Feenstaub. ;)


    Spaß beiseite: sobald der Eintrag in die passwd erfolgreich geschrieben wurde, löscht LC das (nur temporär gespeicherte) Passwort aus seiner Datenbank (nach dem Prinzip: sobald wir das Passwort nicht mehr brauchen, wollen wir es da auch nirgendwo mehr gespeichert haben).
    Wir planen aber, das mittelfristig zu ändern, dass die Passwörter (mit starker Krypto, also mehr als nur ein Blowfish) trotzdem im LiveConfig bleiben, um z.B. so Passwort-Dateien neu generieren zu können, oder auch den Export/Import von Postfächern inklusive Passwort zu ermöglichen. So lange das Krypto-Konzept dafür aber nicht abgeschlossen ist, speichern wir keine ungehashten Passwörter.


    Zitat

    Rsync dürfte übrigens die deutlich einfachste Methode sein, die Mails zu übertragen. Da braucht es kein IMAP-Passwort.


    rsync betrifft nur den Kopiervorgang - so oder so muss trotzdem aus der alten und der neuen /etc/dovecot/passwd das Quell- bzw. das Zielverzeichnis herausgesucht werden.

    Oha... danke für den Hinweis. Das betrifft in die "non_smtpd_milters" in Postfix - wird also bei lokal per sendmail eingereichten Mails ausgelöst.


    Es gibt da nun zwei Möglichkeiten:
    - (a) entweder wir verlagern den OpenDKIM-Socket nach /var/spool/postfix/opendkim/, oder
    - (b) wir deaktivieren OpenDKIM komplett für lokal erzeugte Mails.
    Variante (c) wäre, OpenDKIM auf einem IP-Socket (127.0.0.1:xxxxx) laufen zu lassen - bei Shared-Hosting-Systemen ist das aber eher ein Risiko, da jeder lokale User somit Zugriff darauf hat.


    Nach einer kurzen Besprechung hier tendieren wir eher zu (b), da mit DKIM bestätigt wird, dass die unterzeichnete Mail tatsächlich vom angegebenen Server stammt. Da aber jeder lokale User eine beliebige Absenderadresse verwenden kann, wäre es auch möglich, Mails von einer auf dem selben Server gehosteten fremden Domain inklusive DKIM-Signatur zu erzeugen.


    Andererseits ist ja gerade für PHP-Massenmail-Scripte usw. DKIM interessant, um Newsletter etc. besser durch Spamfilter ins Ziel zu bekommen. So lange Mailings nicht hauptsächlich per SMTP-Auth an ein "ordentliches" SMTP-Relay eingeliefert werden, wäre das also eher wieder ein Rückschritt.


    Ich würde mich also auf ein kurzes Feedback freuen, was unsere Anwender bevorzugen würden. :)

    Es ist derzeit nicht möglich, die Einstellungen mit vertretbarem Aufwand innerhalb der LiveConfig-Datenbanken zu kopieren (das Datenschema für die Postfächer verteilt sich auf die Tabellen MAILBOXES, MAILFORWARDS, MAILALIASES, MAILSERVER, POP3IMAPSERVERS und SERVERS).


    Bei 30-40 Postfächern wäre das einfachste Vorgehen, die Postfächer auf dem neuen System im LiveConfig anzulegen (das Passwort ist dabei erst mal egal, kann ein Zufallspasswort sein).
    Dann für jede angelegte Adresse auf dem *neuen* Server in /etc/dovecot/passwd das Zielverzeichnis herausfiltern, und dort die Inhalte aus dem Verzeichnis vom alten Server (dort ebenfalls in /etc/dovecot/passwd gucken) kopieren. Zum Schluß noch den Passwort-Hash aus der "alten" dovecot/passwd in die neue dovecot/passwd kopieren - fertig.
    Mit 'nem kleinen Perl-Script lässt sich das sicher stark vereinfachen (ich würde den kompletten Ordner /var/mail sowie die alte /etc/dovecot/passwd auf den neuen Server in ein temporäres Verzeichnis kopieren und dort dann mit 'nem Script in die neuen Verzeichnisse umsortieren lassen).
    Noch eine Alternative: die alte /etc/dovecot/passwd wegsichern, alle Mailpasswörter zurücksetzen (kann man z.B. auch direkt in der passw mittels sed auf 'nen Klartext-Wert setzen), dann mit imapsync alles auf den neuen Server kopieren (dort beim Anlegen der Postfächer natürlich immer ein temporäres Standardpasswort angeben). Wenn alles abgeschlossen ist, die Passwörter aus der gesicherten dovecot/passwd-Datei wiederherstellen.


    Wichtig ist eben nur, dass sich die Verzeichnisse für die einzelnen Postfächer auf dem alten und dem neuen Server unterscheiden können (/var/mail/<Vertrag>/<Nummer>, die Nummer wird fortlaufend nach Reihenfolge der Postfach-Erstellung vergeben)


    Viele Grüße & viel Erfolg


    -Klaus Keppler

    Könnten Sie das bitte etwas konkreter beschreiben?
    Welche Tabelle genau hatten Sie offen (also welche LiveConfig-Seite), und was genau meinen Sie mit "wird garnichts angezeigt" - ist die Tabelle dann leer, die Seite leer, ...?
    Zudem: welchen Browser haben Sie verwendet? Gibt es eine JavaScript-Fehlermeldung?


    Leeren Sie ggf. mal den Browser-Cache (bei Preview-Versionen kann es sein, dass die JS/CSS-Dateien bei Änderungen nicht automatisch im Cache aktualisiert werden).

    Für diesen habe im Punkt "Webspache" einen Unterordner mit einem Verzeichnischutz versehen ("User1", "****"). In diesem Ordner befinden sich dann weitere Unterordner, denen die ich auch mit einem Verzeichnisschutz versehen habe ("User2", "****"). Zusätzlich habe ich diesen Verzeichnissen User1 als Login hinzugefügt. Problem: Das wird ignoriert.


    Habe ich das richtig verstanden, dass Ihre Struktur etwa so aussieht:
    /pfad1/ => User1
    /pfad1/pfad2 => User1, User2


    ?


    Zitat

    Der "# password-protected directories:" block steht noch dazu in jedem "<VirtualHost>" Block - tut das Not?


    Ja, tut es - damit wird verhindert, dass man mit Aliasen, Symlinks, Proxy-Regeln o.ä. in einem anderen VirtualHost einen Passwortschutz umgeht.


    Zitat

    Als weiteres Problem tritt dabei auf, dass anscheinend bei jeder x-beliebige, nicht zugewiesene Subdomain bei diesem Vertrag und bei weiteren Verträgen nun diesen Verzeichnis-Login für User2 abfragt, obwohl der Unter-Unterordner gar nicht zu diesen Verträgen gehört ...


    Bitte bringen Sie ein genaues Beispiel, wie Ihre Verzeichnissstruktur aussieht und geschützt ist - ich verstehe das nicht so ganz (z.B. was Sie mit einer "nicht zugewiesenen Subdomain" meinen). Alternativ schicken Sie uns Screenshots der Passwortschutz-Einstellungen an support@liveconfig.com - wir schauen uns das gerne mal an.


    Viele Grüße


    -Klaus Keppler

    Welche main.conf meinen Sie?
    Und um welche Distribution geht es?


    Unter Debian/Ubuntu wäre z.B. für globale Einstellungen das Verzeichnis /etc/apache2/conf.d/ bzw. conf-enabled der richtige Ort; für Module ggf. /etc/apache2/mods-enabled/<Modul>.conf

    Über den Sinn des ganzen reden wir an dieser Stelle besser mal nicht... ;)


    Code
    <FilesMatch "\.html$">
        Options +ExecCGI
        SetHandler fcgid-script
    </FilesMatch>
    FcgidWrapper /var/www/web1/conf/php5/php-fcgi-starter .html


    Im Grunde also das konfigurieren, was bislang für .php in der vHost-Konfiguration steht.

    In der Liste fehlt Debian Wheezy :)


    Ups... Stimmt natürlich. Danke für den Hinweis, werde ich gleich aktualisieren.


    Zitat

    Gibt es dann für jeden Dienst eigene DH-Parameter oder werden die für jeden Host berechnet und dann bei allen Services deployed?


    Letzteres fände ich interessanter.


    Wir werden pro Dienst einzelne DH-Parameter erzeugen. Sooo gigantisch ist der Aufwand ja auch wieder nicht. ;)


    Zitat

    Kriegen wir in dem Zusammenhang dann auch automatische Updates der von LC verwalteten Config-Dateien hin? In der Vergangenheit gab es ja einige Verwirrungen, beispielsweise bei aktualisierten Ciphern, geänderten SSL-Zertifikaten oder Änderungen, die in einer neuen LC-Version mitgebracht wurden.


    Ja, das ist etwas kniffliger. Ob das in diesem Update schon mitkommt kann ich noch nicht versprechen, ist aber so geplant. Konkret hängt da die Sache mit dem Versand von Infomails durch LiveConfig mit dran (wir möchten nämlich nach einer Config-Aktualisierung zumindest mal eine Mail an den Admin zur Info senden).
    Noch eleganter wäre es, wenn der Admin entscheiden kann, ob er anstehende Änderungen an der Konfiguration automatisch übernehmen oder nur darauf hingewiesen werden möchte. ;)


    Viele Grüße


    -Klaus Keppler

    Vor wenigen Tagen wurden verschiedene Sicherheitsprobleme im Zusammenhang mit dem Diffie-Hellman-Verfahren bei verschlüsselten Verbindungen bekannt (siehe z.B. Heise Newsticker: "Logjam-Attacke: Verschlüsselung von zehntausenden Servern gefährdet").


    Wir haben uns inzwischen ausführlicher mit der Sache beschäftigt, und hier im Forum gab's an verschiedenen Stellen ja auch schon die ersten Diskussionen. Im Folgenden möchte ich etwas mehr Licht in die Sache bringen, einige Mißverständnisse beseitigen und unsere Strategie zu dieser Sache vorstellen.


    1. Weder LiveConfig noch mit LiveConfig verwaltete Dienste sind von "Logjam" betroffen.
    Mit "Logjam" wird der Angriffsvektor beschrieben, mit dem durch einen Man-in-the-middle-Angriff eine eigentlich sichere Verbindung auf unsichere Krypto-Parameter heruntergestuft wird. Das ist nur dann möglich, wenn der Server entsprechend unsichere Krypto-Parameter unterstützt - konkret ist hier von den "Export-Ciphers" die Rede.
    LiveConfig selbst und auch die damit konfigurierten Dienste (Apache, NGINX, Postfix, Dovecot, ProFTPD/vsftpd) verwenden keine Export-Ciphers. Wir konfigurieren die von dem Mozilla OpSec Team empfohlenen Ciphers.


    An dieser Stelle möchte ich übrigens dringend davon abraten, irgendwelche Cipher-Listen aus dem Internet zusammenzuklauben (konkret z.B. von der weakdh.org-Website), so lange man nicht genau weiß, was man da tut.


    2. LiveConfig nutzt eigene DH1024-Parameter
    Der zweite Angriffsvektor beruht auf der Vermutung von Forschern, dass Angreifer mit entsprechend großen Rechenkapazitäten (konkret: Geheimdienste, evtl. Industriespionage) die mit den am häufigsten genutzten Diffie-Hellman-Parametern erzeugten Schlüsseldaten knacken könnten.
    LiveConfig verwendet aktuell (v1.8.3) 1024-Bit Diffie-Hellman-Parameter, die von uns vor einer Weile individuell erzeugt wurden (sind also keine Standard-Daten). Dennoch sind diese "statisch" (also auf allen Servern gleich) und derzeit - wie das bislang eben üblich war - direkt im Code enthalten.
    Ein akutes Sicherheitsproblem besteht unsere Ansicht nach also nicht, weil es nach wie vor einen erheblichen Rechenaufwand benötigt, um die mit "unseren" DH-Parametern erzeugten Schlüsseldaten zu knacken.
    Nichts desto trotz - wir werden das ändern (s.u.).


    3. Apache 2.2 bleibt (vorerst) anfällig (Debian 6 LTS, Debian 7, Ubuntu 12.04 LTS, CentOS 5)
    Die Distributionen Debian 6 (Squeeze), Debian 7 (Wheezy), Ubuntu 12 und CentOS 5 liefern Apache httpd in der Version 2.2.x aus - in der sind die DH-Parameter ebenfalls "hardcodiert" und können somit nicht ersetzt werden. Die verwendeten DH-Parameter sind überall die selben; potenzielle Angreifer werden sich also zuerst die Arbeit machen, Dienste mit diesen extrem weit verbreiteten Parametern zu knacken.
    Unsere Empfehlung ist daher, diese "alten" Distributionen zu aktualisieren. Eventuell wird aber auch hier von den Distributionen ein Patch zurückportiert, der die DH-Parameter verwaltbar macht (bei CentOS 6 ist das nämlich der Fall - hier läuft auch ein httpd 2.2.x, der aber Änderungen aus der 2.4er-Reihe enthält).


    Unsere nächste Schritte
    Die Erzeugung von 2048bit DH-Parametern erfordert eine ganze Menge Rechenaufwand. Unsere Tests haben gezeigt, dass das auf einem handelsüblichen 3,0 GHz-System zwischen 20 Sekunden und fast 10 Minuten dauern kann - je nachdem, was der Pseudozufalls-Generator für Daten liefert. Wir haben daher beschlossen, künftig durch LiveConfig in einem Hintergrundprozess etwa alle zwei Wochen neue DH-Parameter für alle Services zu generieren; wenn diese "fertig" (berechnet) sind, ersetzt LiveConfig die dann selbständig im jeweiligen Dienst und startet den neu (Dovecot 2 macht das übrigens auch so).
    Unser Ziel ist es also, dass LiveConfig sich völlig selbständig darum kümmert, dass für alle Dienste regelmäßig neuer Krypto-Input generiert (und aktiviert) wird - ohne dass der Admin da nun alle paar Wochen irgendwelche Dateien austauschen muss.
    Das geht natürlich nicht von heute auf morgen, zudem muss das Ganze noch auf Kompatibilität mit anderen Systemen getestet werden. Die DH-Erzeugung wird also im nächsten Update (v1.9) enthalten sein, das Preview-Update mit dieser Funktion sollte Mitte/Ende nächster Woche soweit sein.


    Anfang kommender Woche werden wir auf unserer Website eine eigene Testseite bereitstellen, bei der man die DH-Parameter aller Services auf einmal durchtesten kann (und nicht nur Port 443 wie etwa bei SSLLabs oder WeakDH).


    Fazit
    Die Sache ist ernst zu nehmen, aber bei weitem sind die Server deshalb nun nicht "offen". Die Export-Ciphers sind durch LiveConfig abgeschalten, einziger Angriff ist also mit erheblichem Aufwand über stark verbreitete DH-Parameter denkbar. Soweit ich weiß stuft SSLLabs derzeit auch noch keine Bewertung herab, sondern weist lediglich auf die schwachen Parameter hin.
    In etwa einer Woche gibt's unsere Lösung zu diesem Thema.


    Bis dahin: schöne Pfingsten schonmal! :cool:


    Viele Grüße


    -Klaus Keppler

    Die optionalen PHP-Pakete für Debian wurden eben auf die Version 5.4.41, 5.5.25 und 5.6.9 aktualisiert (siehe KB#22). Die Pakete stehen in den Repositories bereit.


    Für Debian 8 (Jessie) stehen ab nächster Woche auch PHP-Pakete zur Verfügung (geplant sind 5.3, 5.4 und 5.5).

    Viele Grüße


    -Klaus Keppler

    Der ProFTPD-Fehler 4169 (CVE-2015-3306) erlaubt es unangemeldeten FTP-Benutzern, auf Dateien des Webservers zuzugreifen. Laut einem Bericht bei heise.de werde dieser Fehler derzeit aktiv ausgenutzt.


    Hier sind die Ergebnisse unserer Analysen, was mit LiveConfig verwaltete Systeme betrifft:


    • Der Fehler ist offenbar seit mindestens Mitte April 2015 bekannt (Quelle).
    • Debian 6 (Squeeze) ist nicht betroffen (dort ist mod_copy nicht enthalten)
    • Debian 7 (Wheezy) und Debian 8 (Jessie) sind betroffen (Debian Security CVE-2015-3306).


    Wir können aber in einem gewissen Umfang Entwarnung geben: in unseren Tests ließ sich auf Debian-Systemen kein Schadcode einschleusen/ausführen. Auch der von Heise verlinkte Exploit ist wirklungslos. Grund:

    • So lange kein Endkunde beim ProFTPD authentifiziert ist, läuft der betroffene ProFTPD-Prozess mit dem Benutzer "proftpd" und der Gruppe "nogroup".
    • Das beschriebene Angriffs-Szenario funktioniert indem eine ungültige Zieldatei mit einem PHP-Script als Dateinamen geöffnet werden soll; das schlägt natürlich fehl und dieser "Dateiname" wird in der ProFTPD-Logdatei protokolliert. Der Exploit schreibt bzw. verlinkt eben diese Logdatei dann in den Webspace des anzugreifenden Kunden.
    • Und genau das klappt bei mit LiveConfig verwalteten Servern nicht: der Benutzer "proftpd" hat keinerlei Zugriffsrechte auf Kunden-Verzeichnisse - nicht einmal lesend. Das heißt, es kann weder eine Datei mit Schadcode in irgendeinen Webspace geschrieben werden, noch können private Daten aus fremden Webspaces ausgelesen werden.


    Es steht aber nicht zur Diskussion, dass es sich hier um eine Sicherheitslücke handelt. Da nicht authentifizierte Benutzer zumindest in global schreibbaren Verzeichnissen (/tmp/ etc) Dateien (bzw. Symlinks) erzeugen können, bestehen andere Risiken (u.a. DoS).
    Wir empfehlen als Workaround, auf betroffenen Systemen einfach das Modul "mod_copy" zu deaktivieren:

    Code
    sed -i -e 's/^LoadModule mod_copy.c/# LoadModule mod_copy.c/g' /etc/proftpd/modules.conf
    service proftpd restart


    Die Wahrscheinlichkeit, dass auf Debian-Systemen über diese Lücke Schadcode eingeschleust wurde, halten wir mit LiveConfig für ausgeschlossen.


    Tests mit CentOS und Ubuntu laufen derzeit noch, ein weiteres Update folgt in Kürze.

    Ich schreibe gerade eine ausführliche Analyse (ist in ca. 10 min online). Vorab: es gibt noch kein Debian-Update, aber der Fehler ist unter Debian auch nicht wirklich kritisch. Details in Kürze...

    Die Syntax mit "|exec ..." funktioniert mit Apache 2.4 nicht mehr, dort muss das "||" heißen. LiveConfig schreibt schon seit längerer Zeit die "neue" Syntax in die liveconfig.conf - bei alten Installationen muss das aber eventuell angepasst werden. Wir werden das künftig in der Upgrade-Routine berücksichtigen.


    Die Lösung ist also, das "|exec " durch "||" zu ersetzen:

    Code
    CustomLog "||/usr/lib/liveconfig/lclogsplit -m /etc/apache2/accesslog.map -s /var/lib/liveconfig/apachelog.stats" Liveconfig