[HOWTO] Debian 6.x System Konfiguration & Absicherung (LEMP, E-Mail, FTP, OpenPanel, DDoS, Spam, uvm.)

  • Hey zusammen,


    ich hab zurzeit leider sehr wenig Zeit, somit kann ich unter der Woche zwar kurz reinschauen, aber nicht bis ins Detail auf jede Frage eingehen. Ich werde mir nachher nochmal alles in Ruhe anschauen und ggf. versuchen zu helfen. Ich bitte alle Froxlor User für alle Fragen bezüglich dieses Administrations Panels und die damit verbundene Konfiguration in einem separaten Thread zu klären, ich bitte um Verständnis.


    Für die Fragen bezüglich der Domains, hier eine kurze Checkliste:


    • Die DNS-Records müssen korrekt eingetragen sein. (A-Record muss auf eure Server IP verweisen)
    • Sollten seperate Logfiles genutzt werden, MUSS der angegebene Ordner vorhanden sein, sonst startet nginx nicht.
      Möchte man bereits vorhandene Logfiles nutzen, muss das so aussehen:

      Zitat

      access_log /var/www/log/access.log combined;
      error_log /var/www/log/error.log error;


    • Das default darf nur in einer einzigen VHosts-Datei stehen, da es nur einen "Standard"-Server geben kann.
      Leider habe ich es im Tutorial nicht erwähnt und konnt es nicht mehr editieren, da es hier im Forum so eingestellt ist. Eine Antwort von nectup bekomme ich diesbezüglich auch nicht. Eine ziemlich schlechte Voraussetzung, um ein Tutorial Aktuell halten zu können.
      Sprich in Kurzform: Die erste Config, die angelegt wird, enthält das "default" unter listen. Alle anderen VHost-Dateien haben einen Eintrag ohne default am Ende, also "listen 37.221.xxx.xxx:80;"


    Die Config sieht am Ende bis auf die wenigen Ausnahmen absolut identisch aus. Natürlich bezieht sich das nicht auf Rewrites, etc., aber das erklärt sich ja von selbst.


    Grüße

  • dann stimmt was in der config nicht, ich habe auch mehrere und die laufen ohne Probleme.
    Kannst du mal ein paar Details nennen?

    Hallo


    ich hab einfach ne subdomain erstellt indem ich ne 2te .conf erstellt habe unter anderem Namen.
    diese hab ich natürlich angepasst und auch das benötigte verz in htdocs erstellt.

    Code
    listen	37.221.XXX.XX:80;
        	server_name seite.v2201301696XXXXX.yourvserver.net;
        	access_log  	/var/www/log/access.log combined;
        	error_log	/var/www/log/error.log error;
        	root 	/var/www/htdocs/seite/;


    sobald diese 2te conf besteht restartet nginx nicht mehr.
    wird die Datei gelöscht startet er
    Was ich gerade rausgefunden habe:


    ändere ich den port unter listen
    startet der server auch wieder
    aber die Seite ist dann logischerweise nicht erreicghbar
    also denke ich es liegt an dem listen -Eintrag


    Achja falls ich den Eindruck erweckt habe, dass es sich um ein froxlor -Problem handelt
    das war so nicht gedacht ich hatte es nur mit aufgeführt dass es eben mit oder ohne panel nicht funzt ;)


    gruss


    michi

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

  • hier mal die default die subdomain hab ich ja weiter oben schon

    Code
    listen	37.221.XXX.XXX:80 default;
        	server_name   v220130169XXXXX.yourvserver.net *.v220130169XXXXXXX.yourvserver.net ;
        	access_log  	/var/www/log/access.log combined;
        	error_log	/var/www/log/error.log error;
        	root 	/var/www/htdocs/;


    Der Rest ist alles orginal aus dem TUT

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

  • Nimm *.v220130169XXXXXXX.yourvserver.net mal aus der default Config raus. Außerdem schau dir den kompletten Inhalt genau an, es könnte irgendwo ein Semikolon fehlen oder sonst etwas falsch sein. Daran sind wir alle bereits schon mal gescheitert und kennen das Phänomen. Siehe das Leerzeichen vor dem Semikolon am Ende von server_name.


    Grüße

  • Da ich für KVM den Server eh neu aufsetzen muss und dieses nette Tutorial gefunden habe wollte ich nginx testen. Meine Seite, die vorher unter Apache2 lief, produzierte bei Aufruf einer Unterseite die Fehlermeldung:


    502 Bad Gateway


    im errorlog stand:
    [error] 1067#0: *28 upstream sent too big header while reading response header from upstream, client:


    als Lösung habe ich mit Google gefunden:


    die Datei
    /etc/nginx/nginx.conf


    mit diesen zwei Zeilen ergänzen


    http {
    ...
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    ...
    }


    Die Seite funktioniert jetzt, ich würde nur gerne Wissen ob das eine sinnvolle Lösung ist oder ob man besser etwas anders konfiguriert.

  • so ich hab jetzt nochmal alles nachgesehen und komm nicht weiter :(
    es wäre ja auchj seltsam wenn ich 7 mal den selben Fehler beim Kopieren der config gemacht hätte.
    Denn so oft hab ich das tut schon durchgearbeitet.
    sobald beid configs den selben listen eintrag haben klappts nicht mehr.
    dabei ist es egal ob mit IP oder nur Listen 80;
    sind die Einträge identisch klappts nicht mit dem restart.
    sind die Einträge ungleich
    listen IP: Port;
    und listen *:80; z.B.
    ist nur die Seite mit IP: Port erreichbar egal ob sub oder hauptdomain

    It's me, only me, pure michi 🦆

    RS 1000 SAS G8 | Cyber Quack

    VPS: 50 G7 |B Ostern 2017|200 | Karneval | piko

    WH: SmallEi | Adv17 Family |4000 SE|1000 SE

  • Hi definitiv,


    erst einmal ein großes Danke für deinen Leitfaden :) Dieser hat mir sehr geholfen, auch wenn ich was das Thema Linux betrifft nicht unbedingt auf den Kopf gefallen bin. Vor kurzem überprüfte ich meinen auth.log und stellte fest, dass auf meinem Server gerne Wörterbuchattacken auf den ssh-Port gefahren werden. Diese Angriffe werden leider nicht von fail2ban abgefangen. Da ich leider keinen gültigen Regex-Ausdruck hinbekomme wollte ich dich fragen, ob du dich auf dem Gebiet auskennst.Hier mal ein Auszug aus dem Log:

    Code
    Apr  8 18:25:07 sshd[5595]: input_userauth_request: invalid user root [preauth]Apr  8 18:25:07 sshd[5595]: Received disconnect from **: 11: Bye Bye [preauth]Apr  8 18:25:10 sshd[5597]: User root not allowed because account is lockedApr  8 18:25:10 sshd[5597]: input_userauth_request: invalid user root [preauth]Apr  8 18:25:11 sshd[5597]: Received disconnect from ***: 11: Bye Bye [preauth]Apr  8 18:25:15 sshd[5599]: Invalid user oracle from ***Apr  8 18:25:15 sshd[5599]: input_userauth_request: invalid user oracle [preauth]Apr  8 18:25:15 sshd[5599]: Received disconnect from ***: 11: Bye Bye [preauth]Apr  8 18:25:18 sshd[5601]: Invalid user oracle from ***



    MfG
    fkrone


    Edit: Ich habe es mit einer eigenen Regex in der filter.d/sshd.conf hinbekommen. Nun werden die Bots gebannt:

    Code
    ^%(__prefix_line)s.*+invalid user .* \[preauth\]\s*$

  • Die Lösung ist schonmal korrekt, nur würde ich mich eher fragen wieso so ein großer Header übermittelt wird? Nginx meldet den Error ja nicht ohne Grund, das dient mehr oder weniger der Sicherheit.
    Aber ja, es ist der einzige Lösungsweg (außer du veränderst die Größe des übermittelten Headers)




    Puh mein lieber Michi, bei dir bin ich wirklich überfragt. Ich wünschte ich hätte die Zeit, um mal zu versuchen diesen Fehler nachzustellen. Wie gesagt, ich könnte bei mir jetzt noch 10000 Domains aufschalten, wenn es denn die Kapazitäten erlauben würden, und es wäre kein Problem die alle einzeln laufen zu lassen. Wenn es bis zum Wochenende nicht geht, bin ich gerne bereit mal per Teamviewer drüber zu schauen oder ggf. die Installation mit dir durchzugehen. Denn irgendwo muss der Wurm ja versteckt sein, möglich ist es definitiv.


    Hi definitiv,


    erst einmal ein großes Danke für deinen Leitfaden :) Dieser hat mir sehr geholfen, auch wenn ich was das Thema Linux betrifft nicht unbedingt auf den Kopf gefallen bin. Vor kurzem überprüfte ich meinen auth.log und stellte fest, dass auf meinem Server gerne Wörterbuchattacken auf den ssh-Port gefahren werden. Diese Angriffe werden leider nicht von fail2ban abgefangen. Da ich leider keinen gültigen Regex-Ausdruck hinbekomme wollte ich dich fragen, ob du dich auf dem Gebiet auskennst.Hier mal ein Auszug aus dem Log:

    Code
    Apr  8 18:25:07 sshd[5595]: input_userauth_request: invalid user root [preauth]Apr  8 18:25:07 sshd[5595]: Received disconnect from **: 11: Bye Bye [preauth]Apr  8 18:25:10 sshd[5597]: User root not allowed because account is lockedApr  8 18:25:10 sshd[5597]: input_userauth_request: invalid user root [preauth]Apr  8 18:25:11 sshd[5597]: Received disconnect from ***: 11: Bye Bye [preauth]Apr  8 18:25:15 sshd[5599]: Invalid user oracle from ***Apr  8 18:25:15 sshd[5599]: input_userauth_request: invalid user oracle [preauth]Apr  8 18:25:15 sshd[5599]: Received disconnect from ***: 11: Bye Bye [preauth]Apr  8 18:25:18 sshd[5601]: Invalid user oracle from ***


    MfG
    fkrone


    Hast du mal dürber nachgedacht, den Port zu ändern? Wenn die auf einen geschlossenen Port 22 schießen, dann kann dir das ja egal sein :)


    Es gibt mehrere Denkansätze/Lösungswege:


    Mit Iptables:


    Code
    iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 600 --hitcount 5 --rttl --name SSH -j DROP
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT


    Die geblockten IPs findest du dann pro Rulename (also --set --name SSH) hier: /proc/net/ipt_recent/


    Oder aber du definierst einen gültigen failregex Eintrag. Da du ja wie ich sehe den User root gesperrt hast, kannst du folgendes eintragen:


    Code
    ^%(__prefix_line)s.+Name: root \[preauth\]\s*$


    Alles was nur annährend root heißt, wird geloggt und nach der von dir definierten Anzahl an Fehlversuchen gebannt.


    Oder aber du nimmst folgenden regex Eintrag:


    Code
    ^%(__prefix_line)sReceived disconnect from <HOST>: 11: Bye Bye\s*$


    Das ist sogar etwas effektiver. Somit hättest du das Problem mit fail2ban auch gelöst.



    Hoffe ich konnte weiterhelfen :)


    Beste Grüße
    Alex

  • Mal blöde gefragt ....


    Wenn ich mit EasySCP arbeiten möchte, dann müsste ich doch das Panel installieren (benötigte Pakete wie PHP und MySQL werden während der Installation ja mit installiert) und dann direkt zu Punkt 6 springen können, oder?


    Danach noch meine Gameserver und TS3 installieren sowie die Sicherung meiner HP, und der Server müsste fertig sein!?!?

    9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die letzte summt ständig die Melodie von Tetris.

  • Erst danke für das tolle HowTo!


    Ich wollte gerade noch mal einen neuen Test-Server nach diesem HowTo einrichten. Dabei ist mir aufgefallen, dass sich ja mit dem Release von Debian 7 auch die stable Version geändert hat.


    debian 6 -> oldstable
    debian 7 -> stable


    Ich denke das die Paketquellen im HowTo angepasst werden müssen, da sonst jede menge Paketkonflikte auftauchen.


    Ich habe es so realisiert:


    Code
    deb http://ftp.de.debian.org/debian/ oldstable main non-free contrib
    deb http://ftp.de.debian.org/debian/ squeeze-updates main non-free contrib
    deb http://security.debian.org/ oldstable/updates main contrib non-free
    
    
    
    
    deb http://packages.dotdeb.org squeeze all
    deb-src http://packages.dotdeb.org squeeze all


    Könnte das noch jemand bestätigen!?


    Falls alles so korrekt ist sollte das HowTo noch dahingehen geändert werden, da Paketkonflikte für Anfänger (und auch Profis ;) ) eine große Hürde sein kann.



    Gruß

  • Am einfachsten ist es "squeeze" statt stable oder oldstable zu verwenden, dann braucht man nichts zu ändern.


    Allerdings würde ich für Neuinstallationen jetzt auch Wheezy raten, sonst muss man ja bald wieder ran...

  • Hi Dragon


    Zitat

    Am einfachsten ist es "squeeze" statt stable oder oldstable zu verwenden, dann braucht man nichts zu ändern.


    Mir geht es ja um die Anfänger die wahrscheinlich hier scheitern werden, wenn sie alles 1-zu-1 abtippen.


    Zitat

    Allerdings würde ich für Neuinstallationen jetzt auch Wheezy raten, sonst muss man ja bald wieder ran...


    Das ist richtig und es soll ja auch nur ein Test-Server sein. Aber leider ist Froxlor.org down was meine Tests hinfällig macht ;( .


    Gruß

  • Erst einmal auch von mir ein großes Danke für das HowTo.


    Ich habe das ganze jetzt unter Debian Wheezy ausgeführt, was auch bisher alles wunderbar funktioniert hat, komme jedoch jetzt nicht bei der Installation von OpenPanel weiter.


    In der sources.list habe ich folgendes eingetragen:


    Code
    deb http://download.openpanel.com/deb/ wheezy main


    Wenn ich dann wie in der Anleitung


    Code
    aptitude install openpanel-core


    ausführen will, erhalte ich folgende Fehlermeldung:


    Code
    Couldn't find any package whose name or description matched "openpanel-core"


    Gibt es OpenPanel noch nicht für Wheezy oder soll ich einfach statt wheey stable nehmen?

  • Da ich langsam die Neuaufsetzerei satt habe, habe ich mich entschlossen dieses Tutorial als APT-Package zu schreiben. Wer interesse hat mit zu helfen -> Sehr Wilkommen. Ich nenne dieses Projekt ownLEMP da hier wirklich Selbstarbeit reingesteckt worden ist und ich teilweise auch noch kleine Tunings eingebaut habe und Froxlor Tauglich. Das Standart Package soll Standartmäßig installieren : vim, mysql, php, nginx. Die Weitern Package werden mit einer Verwaltungsoberfläche noch versehen.

  • Ich persönlich würde jetzt so gut auch Wheezy ist abwarten bis alle Verwaltungsoberflächen auf Debian 7.0 sind. Hier hast du eine Anleitung wie du Debian Wheezy auf den Debian Squeezy Kernel Downgraden kannst. Das wäre aktuell die Beste Lösung.