Der perfekte Rootserver (Nginx, SSL, Mailserver, Roundcube, phpMyAdmin, Firewall)

08/12/2014 14:37 Der Anbieter#31
Quote:
Originally Posted by -_Robben_- View Post
/usr/bin/php5 -q /var/www/htdocs/froxlor/scripts/froxlor_master_cronjob.php --force
mkdir: cannot create directory `/etc/bind/domains/': No such file or directory
PHP Warning: fopen(/etc/bind/domains/comvice.org.zone): failed to open stream: No such file or directory in /var/www/htdocs/froxlor/scripts/jobs/cron_tasks.inc.dns.10.bind.php on line 146
PHP Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/htdocs/froxlor/scripts/jobs/cron_tasks.inc.dns.10.bind.php on line 147
PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/htdocs/froxlor/scripts/jobs/cron_tasks.inc.dns.10.bind.php on line 148
PHP Warning: fopen(/etc/bind/froxlor_bind.conf): failed to open stream: No such file or directory in /var/www/htdocs/froxlor/scripts/jobs/cron_tasks.inc.dns.10.bind.php on line 104
PHP Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/htdocs/froxlor/scripts/jobs/cron_tasks.inc.dns.10.bind.php on line 105
PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/htdocs/froxlor/scripts/jobs/cron_tasks.inc.dns.10.bind.php on line 106
sh: /etc/init.d/bind9: No such file or directory

Hat jemand eine Idee?
Code:
apt-get install bind9
Mfg
09/10/2014 19:31 Tulskie#32
Danke erstmal für das Howto.
Eine Frage hätte ich da noch.
Für WBB4 brauche ich eine andere Einstellung im Vhost.

Im Moment steht da location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;

Ich benötige aber location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
Kann mir jemand helfen wie ich das in die Vhost Dateien bekomme? Manuell ändern bringt nichts da Froxlor die ja immer wieder überschreibt.

LG
Tulskie

Keiner eine Idee?
In die Eigene vHost-Einstellungen: eintragen wollte ich gerne vermeiden.
09/14/2014 15:45 msiws#33
Hallo,
erstmal ein Danke an dieses schöne HowTo, aber...
Ich bin nun auch seit 3 Tagen dran, den Froxlor zum laufen zu bringen.
Erst sah es ja ganz gut aus, doch nachdem ich dann im Froxlor den locrotate und cron ausgeführt habe, ging nichts mehr. Meldung 502 und im nginx-errorlog die duplicate meldung, sowie bei restart von nginx der nginx failed.
Kann es sein, das die neue Version vom Froxlor doch andere Einstellungen benötigt oder überschreibt oder anders konfiguriert werde muss als es in dem tutorial beschrieben ist? Oder gibt es schon eine neue Beschreibung? April ist ja nun doch schon länger her..:D
10/06/2014 21:23 Hotstyle#34
Moin Moin,

kann mir vlt. jemand helfen? Ich hab die Anleitung bestimmt schon gefühlte 12x durchgearbeitet auf einem KVM Server. Auf das Froxlor interface komme ich rauf, sehe aber das er die jobs rechts nicht durchführt die noch offen sind.

Sobald ich den Server neustartet bekomme ich beim wegzugriff immer 502 Bad Gateway, der einzige weg das ich das Froxlor interface wieder erreichen kann ist

/usr/bin/php5 -q /var/www/htdocs/froxlor/scripts/froxlor_master_cronjob.php --force

in der shell auszuführen. Aber dann startet er nur das Webinterface und die Cronjobs werden wieder nicht ausgeführt.

Fehlt da was in der Anleitung oder mach ich etwas falsch?

Könnte mir einer vlt. helfen.

Vielen Dank :-)
10/16/2014 02:21 DjDune86#35
Also die Anleitung funktioniert mal gar nicht :( Schade eigentlich wirklich! Stehe nämlich gerade vor dem Unbrauchbaren Server.... den ich nun aber nutzen müsste....
11/04/2014 20:08 Dissle#36
Ich hab dieses Tutorial auch mal ausprobiert. Nginx und Froxlor hatte ich bislang nie selbst ausprobierte, obwohl ich schon seit mindestens 10 Jahren Server besitze und Linux einsetze. Da ein weiterer Server dazukam, hab ich mir mal die Mühe gemacht was anderes auszuprobieren.

Erstmal muss ich, trotz einige Flüchtigkeitsfehler, den Thread-Ersteller loben. Super Tutorial, leider aber auch nicht unbedingt für komplette Volleinsteiger geeignet.

Gehen wir mal davon aus das man sich wirklich Debian 7 Minimal draufhaut. Und diese Anleitung Stepp-by-Stepp befolgt.

Dann soll man den folgenden Cronjob ausführen BEVOR man Bind9 installieren soll, was natürlich nicht geht, da dieser Bind9 vorraussetzt und es auch nicht vorinstalliert ist:
Code:
/usr/bin/php5 -q /var/www/htdocs/froxlor/scripts/froxlor_master_cronjob.php --force
Viel schwerwiegender ist allerdings das Problem das sich PHP-FPM nach einem System-Reboot nicht mehr ausführen lässt. Was das für ein Problem darstellt, brauch ich ja nicht näher ausführen. Das hier Anfänger absolut überfordert sind, brauch ich hoffentlich auch nicht extra erwähnen.

Man könnte jetzt auch einfach sagen: RTFM (read the fucking manual)! Finde ich aber gut das man sich hier auf ein anderes Niveau begibt.

Ich habe es bei mir wie folgt gelöst:
Code:
sudo vim /etc/init.d/php-fpm-fix
Das einfügen:

Code:
#!/bin/sh
#/etc/init.d/php-fpm-fix

runDirAlreadyExists=0

if [ ! -d "/var/run/nginx" ]
then
	mkdir -p /var/run/nginx
else
	runDirAlreadyExists=1
fi

if [ -f "/etc/init.d/php5-fpm" ] && [ ! -f "/etc/init.d/php-fpm" ]
then
	cp /etc/init.d/php5-fpm /etc/init.d/php-fpm
	chmod 755 /etc/init.d/php-fpm
fi

if [ $runDirAlreadyExists = 0 ]
then
	service nginx restart
	if /bin/ps ax | grep -v grep | grep "php-fpm" > /dev/null
	then
		service php5-fpm restart
	else
		service php5-fpm start
	fi
fi

if [ -f "/var/www/htdocs/froxlor/scripts/froxlor_master_cronjob.php" ]
then 
	/usr/bin/php5 -q /var/www/htdocs/froxlor/scripts/froxlor_master_cronjob.php --force
fi

exit 0
Abspeichern und noch folgendes ausführen um dem Script ausführberechtigungen zu geben und es in den Autostart hinzuzufügen:
Code:
sudo chmod 755 /etc/init.d/php-fpm-fix
sudo update-rc.d php-fpm-fix defaults
("warning: /etc/init.d/php-fpm-fix missing LSB information" Das sollte keinen verunsichern, das Script wird dennoch funktionieren.)

Kurze Erklärung zum Script:
Das Script schaut nach ob der Ordner "/var/run/nginx" existiert und legt ihn ggf an, falls nötig. Selbes gilt für die "/etc/init.d/php-fpm" Datei. Im Anschluss wird Nginx und PHP-FPM neugestartet, falls Änderungen vorgenommen wurden. Und ganz zum Schluss wird der Cronjob noch ausgeführt.

Hoffe es hilft jemanden, mir hats geholfen und PHP-FPM läuft auch nach einem Reboot direkt.
11/04/2014 21:54 Zypr#37
Hallo Dissle,

erst einmal bin ich erstaunt, dass es immer noch User gibt, die sich die Anleitung in voller Länge reinziehen und Anfänger sich ggf. in den Wahnsinn treiben.. aber wer ein wenig mehr mit Linux gearbeitet hat, weiß, wie sich stundenlanges "googeln" anfühlt.. ;D

Eins muss definitiv beachtet werden: Das Tutorial ist leider ziemlich outdated und müsste überarbeitet werden!

Ich habe es mir immer wieder vorgenommen, allerdings habe ich durch einen neuen Job relativ wenig Zeit und nutze diese lieber mit meiner Familie. Ich möchte die Anleitung auf jeden Fall auf den aktuellsten Stand bringen, kann allerdings nichts versprechen und hoffe, dass die User sich bis dahin nicht all zu sehr die Zähne ausbeißen.

Ansonsten wünsche ich jedem viel Erfolg mit seinem Vorhaben! (:
01/03/2015 14:50 TakeThisBitch#38
Schade, das es nicht mehr gepflegt wird.

bei mir geht der start vom fpm auch nicht.
01/20/2015 22:00 ausgebaut#39
Kenne das Tutorial schon seit mehreren Monaten und es hat mir immer mal geholfen, vielen Dank dafür! :)
Freue mich auf die neue Version. :D
01/21/2015 18:33 hi i am banned at epvp#40
Mir hat das Tutorial auch bei meinen ersten vServern sehr geholfen!
Freue mich jetzt schon auf die neue Version, da .interp sich bei der ersten schon extrem viel Mühe gegeben hat und auch Heute noch vieles aus der alten Version leider bei den meisten "Admins" nicht standart ist bzw. der Schutz an letzter Stelle steht.
02/01/2015 02:22 REtender#41
Ich bin schon sehr gespannt auf die neue Version des Threads :)
02/01/2015 03:15 Punisher.biz#42
Ich ebenfalls, kann es kaum abwarten :)
02/01/2015 19:54 Zypr#43
INFO!: Die neue Version ist fast fertig!

Als kleinen Vorgeschmack erwartet euch unter anderem folgendes:

SSLLABS SSL Server Test mit A+

Status: 90% (01.02.2015)
02/02/2015 20:39 TrustedBot#44
Kanns kaum abwarten! So viel Aufwand ^^
02/04/2015 01:21 Zypr#45
Update 06.02:

Dank der zahlreichen Testuser konnten nun erste Probleme erkannt und beseitigt werden. Ich möchte noch einmal deutlich darauf hinweisen, dass diese Version des Skripts nicht mit einem VPS kompatibel ist! Das Problem dabei ist, dass es sich bei einem VPS um keine vollwertige Virualisierung handelt, deshalb kann der Kernel des Gastsystems auch nicht modifizieren werden. Aus diesem Grund ist die Verwendung von Fuse nicht möglich, da das entsprechende Kernelmodul nicht geladen werden kann.

An diese Stelle noch einmal vielen Dank für die zahlreiche Hilfe! Die Testphase der kritischen Systeme ist zu Ende, es folgen lediglich noch einige Kleinigkeiten, bei denen ich mir keine Sorgen um die Kompatabilität mache. Ich bin zuversichtlich, dass ich das fertige Skript bis Sonntag Abend präsentieren kann.

Bisherige Fehler und Probleme:

Fast geschafft!

Bald ist es soweit, die neue Version fast fertig und benötigt nur noch etwas Feinschliff.

Noch ein paar Details zu den Funktionalitäten und Änderungen:

Automation:
Ich habe mich dieses Mal für einen etwas benutzerfreundlicheren Weg entschieden, so übernimmt ein Bash-Skript 95% aller Installationsschritte und hilft dabei, das System innerhalb weniger Minuten zum perfekten Rootserver umzufunktionieren. Wäre nicht der Diffie-Hellman-Schlüsselaustausch und die damit verbundene Erstellung des Schlüssels, bräuchte das Skript je nach Server ca. 10 Minuten. Als Vergleich: Die manuelle Installation dauert ca. 120 Minuten (exkl. DH-Schlüssel), bei einem Anfänger rechne ich mit 180+ Minuten.

Verschlüsselung:
Das Setup sieht es vor, dass jegliche Verbindung zum Server verschlüsselt wird. Selbst, wenn man eine unverschlüsselte Verbindung erzwingen möchte, wird es nicht klappen (Webserver). Es wird stets die neuste Version von OpenSSL installiert, sodass etwaige Sicherheitslücken nach Erscheinen eines neuen Patches sofort geschlossen werden. Das Augenmerkmal liegt hierbei bei den eingesetzten Ciphers und dem Cryptosystem. So wird die Verbindung zum Webserver durch einen 384 bit starken ECDSA Schlüssel geschützt. Als Vergleich: Bei Verwendung von RSA benötigt man einen 7680 bit starken Schlüssel, um das Niveau von ECDSA zu erreichen, was allerdings die Rechenzeit der CPU erheblich erhöht. RSA hat zwar den Vorteil, dass es abwärtskompatibel ist, skaliert aber nicht wenn sich die Länge des Schlüssels erhöht. ECDSA ist bei gleicher Schlüssellänge 10x schneller und schont somit auch unsere CPU. Zusätzlich zu der sicheren Verbindung zu unserem Mailserver werden alle E-Mails inkl. Anhang auf der Festplatte verschlüsselt, sodass im Fall der Fälle niemand an unsere Daten kommt oder damit ganz paranoide Menschen ein ruhiges Gewissen haben ;D

Webserver:
Der wichtigste Part an dem Setup ist der Webserver. Auch dieses Mal kommt natürlich Nginx zum Einsatz, allerdings wird die Software nun selbst kompiliert. Nginx kommt zusammen mit einigen Modulen und bietet richtig konfiguriert den optimalen Webserver für eine hohe Anzahl von Besuchern.

Folgendes erwartet euch:

  • Aktuelle Nginx mainline version
  • PageSpeed
  • NPN (SPDY)
  • HTTP Auth Digest
  • ModSecurity standalone mit OWASP
  • 384 bit ECDSA SHA-256 Zertifikat
  • HSTS, OCSP
  • Loadbalancing + Caching
  • Otimierung des TLS Time To First Byte für dynamische Inhalte
  • Verschleierung des Strings, indem dieser aus dem Header und den automatisch generierten Fehlerseiten entfernt wird
  • uvm.

Mailserver:
Der Mailserver ist neben unserem Nginx Webserver ein wichtiger Bestandteil eines erfolgreichen Projekts. Administratoren haben nach einiger Zeit stark mit Spam, Viren und Bots zu kämpfen, so muss man dafür sorgen, dass auch dieses System optimal funktioniert.

Wie auch oben erwähnt, wird jegliche Verbindung zu dem Mailserver verschlüsselt. Schutz bietet ClamAV und SpamAssassin gegen den Schmutz aus dem Netz. Als Hilfe kommen auch diesmal die Listen von Spamhaus und Spamcop zum Einsatz. Die Authentifizierung findet wie auch in der letzten Version über MySQL statt und wird durch eine kryptische Authentifizierung mittels DKIM an dem DNS-Server, der die Einträge der Domain verwaltet, ergänzt. Zusätzlich erschwert SPF das Fälschen einer Absenderadresse. Schickt also jemand von einem anderen Server eine E-Mail mit dem Absender unserers Servers, prüft der Emfänger, ob der Absender überhaupt berechtigt ist. Hierzu werden die Felder "MAIL FROM" und "HELO" in der SMTP-Verbindung mit den der SPF Regel des DNS-Servers verglichen. Stimmt also z. Bsp. die IP-Adresse des Absenders nicht, wird die E-Mail verworfen. Damit die E-Mail Postfächer nicht alle per Hand gepflegt werden müssen, dient uns ViMbAdmin als administratorische Hilfe. ViMbAdmin bringt eine Weboberfläche mit sich, sieht cool aus und ist auch noch sehr sicher. Die Passwörter werden im SHA512-CRYPT Format gespeichert.

System:
Wie auch in der Version zuvor wird das System mit Hilfe einer Software-Firewall (Arno-Iptables-Firewall), Fail2Ban und der Anpassung des Kernels etwas abgehärtet. Fail2Ban scant außerdem die Logs und reagiert entsprechend mit einem Ban, wenn verdächtige Aktivitäten wie z. Bsp. mehrmals hintereinander fehlgeschlagene Loginversuche.

Adminpanel:
Ich habe mich dieses Mal gegen Froxlor entschieden, da es meiner Meinung nach in diesem Setup nichts zu suchen hat. Als Alternative habe ich mir Ajenti angesehen und war auf den ersten Blick sehr angetan. Ajenti ist im Vergleich zu Froxlor nicht so konzipiert, dass die dahinterliegenden Systeme von dem Adminpanel abhängig sind. Außerdem ist Froxlor eher fürs Webhosting gedacht und das ist nicht das Ziel. Da ich diesen Punkt als letzten Schritt ansteuern möchte, lasse ich die Wahl des Adminpanels noch offen..

Viele Grüße