Wie sichert ihr eure ganze Server?

  • Nutze ich als Basis.

    Dann natürlich noch anpassen, zwecks entzug von Zugriffen. htaccess ist nur Apache :)

    Content Security Policy habe ich entfernt. Es macht bei mir leider zuviel Probleme. Aber das ist vermutlich eher wegen meiner unwissenheit zu dem Header

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • zwecks entzug von Zugriffen

    Du meinst die Gruppe und User die zugriff haben? Werde wie in diesem Thread dann nur SFTP nutzen zum hochladen der Daten muss aber noch einlesen wie ich die Rechte hier setzen muss usw. zwecks erstellung eines benutzers null plan :D


    Und BEVOR die SUPER-ADMINS sich wieder aufregen, ich mache das alles local als Test..

    ┌П┐(◉_◉)┌П┐

  • Geht zum deny all;, was 403 zurückliefert. Zum Beispiel der Odner logs

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Achso so meinst das, ja muss mich mal genau umschauen und herausfinden wie das ganze Grundgerüst aussehen soll dass es sicher ist :)

    Aber wenn du den logs-Ordner außerhalb des RootDocument setzt ist das zB gar nicht nötig.


    Vorallem das setzen verschiedener Benutzer mit Homeverzeichnis einzuschränken für SFTP upload hab ich aktuell kein Plan und wie ich die Ordner Rechte/Gruppen setzen muss usw.


    PS. Ist erstmal nur ein Test und aus Interesse und Spass.

    ┌П┐(◉_◉)┌П┐

  • Hallo,


    Fragen:

    • Muss jeder Ordner & Dateien innerhalb von /var/www/*/public die user/gruppe www-data:www-data haben (nginx)?
    • Wenn ich jetzt mit einem sftp-user eine datei in einen public lade haben die dann automatisch www-data:www-data, oder wie muss ich das machen dass die Dateien/Ordner dann standardmäßig www-data:www-data angehören?

    Muss sagen läuft lokal ziemlich gut und ist nicht ganz so schwer wie ich dachte :)

    ┌П┐(◉_◉)┌П┐

  • Hallo,


    Fragen:

    • Muss jeder Ordner & Dateien innerhalb von /var/www/*/public die user/gruppe www-data:www-data haben (nginx)?
    • Wenn ich jetzt mit einem sftp-user eine datei in einen public lade haben die dann automatisch www-data:www-data, oder wie muss ich das machen dass die Dateien/Ordner dann standardmäßig www-data:www-data angehören?

    Muss sagen läuft lokal ziemlich gut und ist nicht ganz so schwer wie ich dachte :)

    Ja. Es sollte immer ausschließlich der User/Gruppe genommen werden, welche in der nginx.conf definiert ist.

    Die Daten haben den User/gruppe deines SFTP-Users, soweit ich mich jetzt nicht vertue.

    Meine Ordnerstruktur ist:

    • /var/www/domain.tld
    • /var/www/subdomain.tld
    • usw.

    ich kann zwar nichts direkt mit www-data ersetzen aufgrund der rechte. Ich lads in den Userfolder und verschiebe die Daten dann mit der Konsole.

    Am Ende mache ich noch ein chown -R www-data:www-data /var/www/domain.tld.

    Das setzt den User und die Gruppe rekursiv und du musst dich nicht mit einzelnen Dateien rumschlagen.

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Alles klar, also immer nach dem hochladen der Dateien bzw. Ordner ein chown -R www-data:www-data /var/www/*/public (in meinem Fall) machen dass die Ordner und Dateien www-data:www-data angehören?


    Das Asterix müsste dann alle Domains mit einnehmen.


    Ist es nicht rigendwie möglich dass Dateien automatisch dann www-data:www-data angehören?


    Edit: das geht wohl man muss nur den sftp user der www-data gruppe hinzufügen:


    Danke dir :)

  • Ich habe jetzt nach dieser Anleitung ein user erstellt für sftp das funktioniert soweit alles super.


    jedoch ist der owner:group jetzt sftp-user:sftp-user, kann zwar hochladen und alles aber ich dachte es muss www-data:www-data sein?

    Irgendwie blick ich in dem Punkt nicht durch :D

    ┌П┐(◉_◉)┌П┐

  • jedoch ist der owner:group jetzt sftp-user:sftp-user, kann zwar hochladen und alles aber ich dachte es muss www-data:www-data sein?

    Irgendwie blick ich in dem Punkt nicht durch

    Wie gesagt, dateien werden immer als der User/Gruppe gesetzt, der hochlädt außer die Datei ist schon existent.

    Über konsole einfach drüber kloppen und gut ist.

    „If you can only do one thing, hone it to perfection. Hone it to the utmost limit!“ – Zenitsu Agatsuma

  • Schon aber ich wills schon richtig und ordentlich machen :D


    sudo usermod -a -G www-data [my username] hat gefehlt aber ist da so richtig und sicher? Kommt mir irgendwie komisch vor und sieht das so aus als sftp-user eingeloggt:


    EDIT: Als root eingeloggt ist dann www-data:www-data, kann sein dass ein sftp-user die richtige owner und gruppe nicht sehen kann stattdesen nur eine Zahl?

    ┌П┐(◉_◉)┌П┐

  • Sofern du PHP als FPM einsetzt, was sowieso empfehlenswert ist, dann sollten die Berechtigungen der Dateien und Verzeichnisse dieselben sein wie für den Benutzer, unter dem FPM laufen. Der Benutzer des Webservers ist dann nicht relevant, weil der da nichts schreibt.


    Damit hast du dann den Benutzer, unter dem FPM läuft als auch SFTP für die Website-Inhalte, der identisch ist. Dann passt das auch von den Berechtigungen her. :)

  • Ok, Danke.


    In NGINX ist nämlich www-data als Benutzer und wenn ich per SFTP was hochlade ist es sftp-user:sftp-user, ist das also richtig so und nicht weiter schlimm?

    Will keine Lücken produzieren auch wenns erstmal lokal ist soll man ja richtig lernen :)


    EDIT: Weil aktuell stehen dort im SFTP nur Zahlen wie oben auf dem Screenshot, das check ich nicht so ganz.


    Wenn ich mich dann als Root einloggt uns in Verzeichnis navigiere steht dort der user des des sftp


    PS. die unteren Dateien hatte ich manuell als Root erstellt und die Rechte per chown gesetzt


    Aber warum werden beim sftp nur Zahlen angezeigt und als Root als ganzes? Ist das normal?

    ┌П┐(◉_◉)┌П┐

  • Wenn du dich mit dem Benutzer "sftp-user" einloggst, ist das ja auch normal.

    Du könntest den Benutzer unter dem nginx läuft einfach in die Gruppe "sftp-user" packen :).

    Projekte:

    XIVDATA - Eorzea Database


    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...


  • Ordner haben folgende Rechte (als sftp)


    Und files:


    Ist das richtig so? :D


    Und nochwas ist es besser verschidene fmp pools zu nutzen für individuelle php settings oder einfach in nginx server block definieren?

    ┌П┐(◉_◉)┌П┐

    Edited once, last by TeRRible__KHONS ().

  • Und nochwas ist es besser verschidene fmp pools zu nutzen für individuelle php settings oder einfach in nginx server block definieren?

    Kommt drauf an.


    Nutzen alle Applikationen einen Pool und du musst den Pool aufgrund von Änderungen/Updates neustarten, kriegen das alle Applikationen ab.


    Ich nutze gerne für jede Webseite einen eigenen User, mit eigenem FPM-Pool.

    Dieser Pool läuft dann auch unter diesem einen Benutzer, damit, falls die Applikation kompromittiert wurde, man nicht von A nach B springen und das ganze System verseuchen kann.


    Vergeigst du dann natürlich die chmod-Rechte, bringt dir das natürlich auch relativ wenig.

    Generell würde ich es auch vermeiden, Benutzer wahllose in irgendwelche Gruppen zu stecken.


    SELinux/AppArmor könnte man ebenfalls als zusätzliche Sicherheitsschicht in Betracht ziehen.

  • Danke, wenn eigentlich alle php.ini überall ca. gleich eingestellt werden sollen, reicht es da nicht wenn ich die main php.ini bearbeite und alle zusätzlichen Einstellungen innerhalb von nginx selber definiere?


    Als Beispiel:

    Quote
    Code
    fastcgi_param   PHP_VALUE       "display_errors=on \n display_startup_errors=on \n error_reporting = E_ALL \n error_log = /var/log/nginx/foo-bar.error.log";

    Oder ich lese mir hier ein und nutze das so:

    https://www.digitalocean.com/c…d-php-fpm-on-ubuntu-14-04


    Weiß nicht ob das jetzt oversized ist :D


    EDIT: 2 Pools unter der gleichen Owner/Gruppe macht kein Sinn oder bzw. kann man das trotzdem machen?

    ┌П┐(◉_◉)┌П┐

    Edited once, last by TeRRible__KHONS ().

  • Ich würde eher davon ausgehen, dass Best Practice ist, für jede unterschiedliche Konfiguration auch einen eigenen Pool zu nutzen. Dann hast du Webserver und PHP auch klar getrennt bzw. die jeweilige Konfiguration an einer Stelle.

    EDIT: 2 Pools unter der gleichen Owner/Gruppe macht kein Sinn oder bzw. kann man das trotzdem machen?

    Das ergibt meines Erachtens nach keinen Sinn.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!