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:
Quote:
Ein Fehler, der bei dem einen oder anderen auftreten wird, entsteht beim Kompilieren. So meldet der Linker folgenden Fehler zurück:
Code:
collect2: error: ld terminated with signal 9 [Killed]
make[1]: *** [objs/nginx] Error 1
make[1]: Leaving directory `/root/sources/nginx-1.7.9'
make: *** [build] Error 2
Kurz übersetzt heißt es, dass während des Vorgangs nicht genügend RAM zur Verfügung steht und gleichzeitig die SWAP Partition oder Datei nicht groß genug ist.
Es gibt 2 Möglichkeiten um das Problem zu lösen:
- Mehr RAM (Wer hätte das gedacht)
- SWAP Größe eröhen (dazu bitte Google benutzen)
Wer mit einem Server ankommt, der nur 512MB RAM hat, braucht gar nicht daran zu denken einfach die SWAP Größe für die Dauer der Installation zu erhöhen. Das System wird mit allen Komponenten nicht mit 512MB RAM auskommen, ich bezweifle sogar, dass 1GB ausreichen.
|
Quote:
|
Ein weiterer Fehler kann bei der Eingabe des Passworts auftreten, so liegt es leider an der Natur von Bash, dass Sonderzeichen wie $ " ' # ` ´ / \ nicht genutzt werden dürfen, sonst wird die Installation von ViMbAdmin fehlschlagen und Postfix und Dovecot sich nicht am MySQL-Server anmelden können. Ich suche aktuell nach einer vernünftigen Lösung, bis dahin sollte man Passwörter ib der Kombination von a-z A-Z 0-9 und Sonderzeichen wie § % & ( ) [ ] = ? ß * + ~ _ - , . nutzen.
|
Quote:
Dem ein oder anderen wird bei der Installation des ClamAV-Milters folgende Meldung angezeigt:
Code:
WARNING: Can't download daily.cvd from db.local.clamav.net
Dies ist kein Fehler im eigentlichen Sinne, das bedeutet lediglich nur, dass der Host oder der Server dahinter nicht reagiert. Das Installationsskript des milters ist so konfiguriert, dass der Schritt so oft wiederholt wird, bis die angefragte Datei verfügbar ist.
|
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