Jump to content

[Tipp] Serverkonfiguration vServer / Rootserver mit Linux/Debian - Was, Wie,Wo und Warum


Lausli

Recommended Posts

Hallo,

 

ich versuch mal so ein Thema, weiß aber nicht richtig ob es gebraucht wird und oder in dieses Forum gehört.

 

Allerdings finde ich es wichtig, dass man ggf. mal darüber spricht. Prestashop ist ja nicht gerade sparsam was die Ressourcen vom Server angeht.

 

Daher stellt sich für den ein oder anderen wohl auch die Frage welchen Server man braucht, was dieser können muss und woran man das bemisst.

 

Daher sollte man sich 2 ganz grundsätzliche dinge überlegen:

 

  1. Hat man Zeit, Lust und Interesse einen Server selbst ein zu richten und Konfigurieren sowie Warten oder
  2. möchte man damit so rein gar nichts zu tun haben.

Für den 2 Punkt:

In diesem Fall sollte man sich mit einem Anbieter zuerst in Verbindung setzen und erklären, was man möchte. Der Anbieter wird einem dann ein Produkt empfehlen.

 

Wichtig: Spracht ruhig auch Eventualitäten an. Sprich sowas wie: Werden Backups gemacht, hat man Zugriff auf die php.ini, was kann ich überhaupt selbst einstellen, was übernimmt der Anbieter. Werden Backups gemacht, sind diese inkl. oder müssen diese dazu gekauft werden? Wie oft sind diese Backups, hat man darauf Zugriff? etc.

 

Kleiner Tipp:

Es gibt Anbieter, die kann ich prinzipiell nicht empfehlen und ich kann welche empfehlen. Da ich aber nicht möchte, dass dieses Thema zur Werbetrommel wird, lasse ich das mal außen vor. Man sollte sich aber Überlegen, was man von einem Zukünftigen Anbieter erwartet und ob diese das erfüllen kann.

 

Zu diesen Erwartungen sollte auch unbedingt gehören:

Gibt es Zertifikate, wie teuer sind diese? Gibt es sogar ein Kostenloses Zertifikate von Let's encrypt!?

Brauche ich eine Server-Manegemant Oberfläche wie Froxlor oder Ajenti, ist das Kompatibel oder verfügbar.

Wie sind die Supportzeiten, passen die zu meinem Shop und meiner Arbeitszeit. Lande ich in einem CallCenter oder habe ich "richtige Mitarbeiter" am Telefon?

Kann ich den Festplattenspeicher erweitern, gibt es eine Möglichkeit SSD zu nutzen etc.

 

Da gibt es viel zu beachten um am Ende nicht einen Shop zu haben der nur Ärger statt Einnahmen und Gewinne generiert.

 

Ganz wichtig:

SICHERHEIT! Lest euch die AGB durch, auch bei Management Systemen. Für was und in welchem Umfang übernimmt der Anbieter Haftung. Kann er Hilfe bei Einbrüchen ins System leisten etc.

 

 

Für den 1 Punkt:

 

Der Server

Dieser wird richtig interessant. Du hast Lust, Zeit und Interesse an deinem Server zu arbeiten? Klasse.

Dann musst Du dir trotzdem Überlegen, was dein Projekt für eine Größenordnung ist und dann schauen welcher Anbieter das beste Angebot hat.

 

Ein vServer oder Rootserver ist nicht in einen Topf zu werfen.

 

Ein vServer ist ein Virtueller Server auf einem Rootserver. Das heißt, du Teilst dir mit z.B. 3 Kunden einen Rootserver. Hier solltest du mit deinem Anbieter Klären wie viele Kunden auf dem Wirtsystem sind und vor allem wie viel Leistung dir garantiert werden kann. Auch welche Leistung du nutzen kannst und darfst.

 

Ein Rootserver, wie Du ggf. schon vermutest ist ein eigener Server, ein PC der in einem Rechenzentrum steht und den du allein nutzt. Das kostet natürlich auch mehr. Dieser kostet ~12 - 24 € im Monat. Sicherlich mal günstiger, mal teuer. Aber das ist ein Durchschnitt.

 

Allgemein: Ein Vserver reicht für viele Kunden erstmal aus. Ein mittlerer vServer kostet zwischen 3 und 12 € im Monat. Für den Preis kannst du eine Leistung erwarten mit der zu Arbeiten kannst.

 

Hast du Dir ein Produkt ausgesucht, kannst du schauen ob es Linux oder Windows als Betriebssystem sein soll. Dringende Empfehlung: Linux, für Windows Server wirst du innerhalb dieses Themas keinen Support oder Hilfe von mir erwarten können, weil ich das nicht nutze.

 

Du hast jetzt einen vServer für 9€ im Monat. Klasse. Dann kannst du loslegen.

Der erste Schritt ist meistens, dass du dich mit dem Server Verbinden musst. Vielen würden jetzt sagen, nimm putty. Dem stimme ich zu.

 

Für mich die bessere Wahl ist aber Kitty. Es ist ein Fork von Putty und erweitert es um sinnvolle Funktionen. 

 

Verbinden tut man sich Meistens mit der Server IP und einem Benutzer + Passwort.

Das könnte so aussehen:

cd1c95d8f31a42be971f404a125265ec.png

 

Server IP + Port, default ist 22, mehr dazu später.

 

Danach öffnet sich der entsprechende dialog der nach dem Usernamen Fragt. Danach das Passwort. 

 

Jetzt bist du mit dem Server verbunden und kannst loslegen. Um Dir das zu erleichtern, gibt es ein fertiges Script, welches Dir die Installation und Konfiguration des Server abnimmt. Dieses Script setzt auf Sicherheit! 

 

Es setzt auf das Script "Der perfekte Rootserver" by Zypr auf. Er ist ein äußert erfahrener User, der nicht nur in diesem Forum sehr aktiv ist/war sondern auch in anderen einschlägigen Foren hohes Ansehen hat.

 

Daher verweise ich bezüglich der Funktionalitäten des Scripts auch auf das Thema "Der perfekte Rootserver" by Zypr .

Lest es euch ruhig durch.

 

Die Systemanforderungen möchte ich jedoch noch einmal herrausstreichen:

 

Bevor es los geht, hier noch einmal die Voraussetzungen, um das Script benutzen zu können:

  • vServer / Root Server
  • Debian 8 (Jessie) minimal (frisch installiert!)
  • Mindestens 1 GB RAM, empfohlen 2 GB!
  • Mindestens 1 CPU Core, empfohlen 2!
  • Eine TLD! -> Top-Level-Domain ? Wikipedia
Die Möglichkeit, die DNS Records dieser Domain verändern zu können. Dienste wie CloudFlare werden teilweise unterstützt.
Die Möglichkeit, den Reverse DNS zu verändern (Keine Pflicht)
 
Eine Domain und die Möglichkeit, DNS Records dieser Domain zu verändern, ist eine Pflichtvoraussetzung.

 

 

Das erfüllt ihr mit 90% der angebotenen vServer sowie Rootserver.

 

Da Zypr das Script leider (aktuell) nicht mehr wartet wird es weiter eben durch dritte weiter entwickelt. 

Das neue Script, findet ihr hier:

 

https://github.com/shoujii/perfectrootserver

 

Dort wird u.A. auch die Möglichkeit geboten Teamspeak und Ajenti zu installieren. Weitere Möglichkeiten für FTP Server etc. werden folgen.

 

Das zweite Script, ist ein Update / Upgrade Script für den Server bzw. dessen Installation.

 

Das findet ihr hier:

 

https://github.com/shoujii/perfectrootserver-update

 

Damit habt ihr die Möglichkeit im späteren Verlauf Komponenten wie Nginx oder Roundcube zu aktualisieren.

 

Das Script wurde so aufbereitet, dass der Shop auf dem System nach Installation problemlos Installiert werden kann und auch die Benutzerfreundlichen URLS laufen.

 

Außerdem ist das Grundsystem sehr gut abgehärtet und bietet Schutz gegen Potenzielle Angreifer.

Dazu zählt u.a.

  • Der default SSH Port ist nicht mehr 22
  • der Server akzeptiert nur noch https Anfragen
  • Aktuelle Versionen der Komponenten
  • gleiche Struktur wie z.B. ich und andere die das Script nutzen. So kann man viele sachen auf seinem eigenen System gegenprüfen!
  • Der Login per Passwort ist gesperrt
  • Eure Firewall blockt gleich zu beginn tausende IP's, die dem Server ansonsten unnötig viele Anfragen schicken würden (versuchen sich einzuloggen)
  • fail2ban sichert euch vor Brutforce Attacken ab

 

 

 

 

Sobald ihr das Script auf eurem PC oder Server habt, solltet ihr die Datei "userconfig.cfg" öffnen und entsprechend bearbeiten.

Auf eurem Server Empfehle ich euch WinSCP zu verwenden, das macht das Bearbeiten von Dateien auf dem Server deutlich leichter!

 

Wie die Userconfig aussieht, sehr ihr hier:

https://github.com/shoujii/perfectrootserver/blob/master/userconfig.cfg

 

Am besten ihr Öffnet Sie in einem neuen Tab, dann liest und guckt es sich besser, deswegen unter anderem auch nicht Inline :)

Außerdem ist es immer aktuell, auch wenn ich mal den Beitrag nicht aktualisiere.

 

Zeile 12:

Hier tragt ihr eine 1 ein, wenn ihr fertig seit.

 

 

Zeile 37-41:

Hier werden die aktuellen Versionen der einzelnen Komponenten eingetragen. Derzeit muss da nix geändert werden. Sobald neue Versionen raus kommen und Kompatibel sind wird das da schon eingetragen sein.

 

Zeile 51:

Könnt ihr Theoretisch genau so lassen

 

Zeile 56:

Hier trägst du deine Domain ein. Wichtig: Ohne www. oder https etc. Nur einfach deine-domain.de

 

Zeile 63:

Hier solltest du einen Port eintragen über den dein SSH Server später läuft. Dieser darf nicht "22" sein. Das ist nämlich der default Port und so ziemlich jedes blöde Scriptkiddy versucht es da. Nicht nur Kinder die keine Ahnung haben, dass ein Angriff auf einen Server eine Straftat ist, auch Bots und Scripte größerer Hackergruppen klopfen das Internet nach Servern mit Port 22 ab. Deshalb: Nimm einen anderen! Das Script erlaubt sowieso auch kein Port 22. Es sollte auch kein Port sein, den ein anderes Programm verwendet. Außerdem sollte und darf einer der nachfolgenden Ports nicht werden:

21, 25, 53, 80, 143, 443, 587, 990, 993, 2008, 8000, 10011, 30033, 41144

 

 

Zeile 68:

Hier kannst du dir selbst ein Passwort für deinen SSH Zugriff auswählen. Lass es aber lieber. Da kommt meistens irgendwas raus, was man für sicher hält und am Ende ist es das vielleicht nicht. Es wird nämlich automatisch ein sehr sicheres Passwort generiert, wenn du dort nichts einträgst.

 

Zeile 72:

Hier kannst du angeben, ob du ein echtes Valides SSH Zertifikat möchtest. sprich, hier entscheidest du ob dein Server selbst ein Zertifikat generiert und nutzt oder du das Kostenlose von Let's encrypt nutzt. Es sollte unbedingt der default Wert "1" genommen werden.

 

Zeile 91:

Hier MUSST du eine / DEINE richtige E-Mail Adresse eintragen. Keine Sorge, keiner bekommt die zu sehen. Sie dient aber dem Recovery, wenn oder falls du mal deine Zertifikate verloren hast.

Also kein Trash-mail, keine Fake mails oder sonst was. Deine wirklich echt genutzte E-Mail.

 

Zeile 96:

Hier kannst du angeben, ob du einen Mailserver benutzen möchtest. Das heißt, willst du am ende eine E-Mail Adresse wie [email protected], [email protected] etc. oder willst du eigene E-Mail Adresse wie [email protected] gmx etc. nutzen. Also eben die Frage ob du einen E-Mail Server installieren möchtest.

 

Diese E-Mails kannst du dann dann z.B. mit Outlook oder Thunderbird etc. empfangen und senden.

 

Zeile 97:

Falls du Zeile 96 mit dem Wert "1" bejast, kannst du dich später einloggen. Also musst oder solltest du hier einen Benutzernamen eintragen.

 

Zeile 98:

Wie in Zeile 68, hier trägst du entweder ein eigenes Passwort ein oder du lässt es einfach so. Du solltest es unbedingt lassen und eines generieren lassen. Achso, keine Sorte, am Ende der Installation bekommst du alle Logins und Passwörter auf deinem Server in einer Datei gespeichert. :)

 

Zeile 103:

Hier kannst du angeben ob du einen Web-Mail Server Insatllieren möchtest. Das heißt, ob du ein E-Mail Interface benutzen möchtest wie du es vielleicht von gmail, web.de oder hotmail kennst. Einloggen und E-Mails Schreiben. Hier wird Roundcube verwendet.

 

Zeile 108:

Hier kannst du angeben, ob du für deinen Server phpMyAdmin nutzen möchtest oder nicht. Solltest du es nicht machen, kann es den Support erschweren bzw. du kannst deine Datenbank dann nur noch per SSH bearbeiten. Alternativ kannst du auch Tools wie HeidiSQL nutzen.

Ich empfehle Dir, es zu installieren.

 

Zeile 109:

hier trägst du den Benutzernamen für dein http Auth ein. Das heißt, du musst um zu phpMyAdmin zu gelangen erstmal den Zugang dazu kennen bevor du dich da überhaupt einlogge kannst.

 

Zeile 110 - 111:

Hier werden wieder Passwörter generiert. Davon gibt es viele. Hacker mögen sowas nicht so gern ;)

 

Zeile 117:

Hier wird angegeben ob phpMyAdmin nur per SSH Tunnel zu erreichen ist. Tools wie HeidiSQL machen es leicht. Per shell, naja. Lass es lieber.

 

Zeile 122

Das ist das Passwort für dein MySQL Zugang. Es sollte wie alle Passwörter generiert werden.

 

Zeile 125 - 143:

Hier werden die Datenbanken angelegt. Naja, nicht direkt. Es sind die zukünftigen Namen deiner Datenbanken. Sie können geändert werden, müssen es aber nicht. 

 

Explizit Zeile 128,135 und 142:

Hier werden die Benutzernamen zu den einzelnen System angegeben.

 

Zeile 149:

Willst du TeamSpeak? Brauchst du TeamSpeack? Eig. nicht. Lass es einfach weg.

 

Zeile 154:

Hier gibst du an, ob du ein Server Management System nutzen möchtest. Hier ist es Ajenti. Brauchst du eig. für einen Shop mit diesem Script nicht. Lass es weg, wenn du nicht weißt was du tust. Außerdem kostet es Geld, wenn du es für ein Kommerzielles Projekt nutzen möchtest. Weiterhin geht dies nur mit einem Validen SSL Zertifikat. Also dann, wenn du Zeile 72 mit einer 1 einschaltest.

 

 

Zeile 166:

Das wird später mal dein MySQL Hostname. Lass einfach localhost.

 

Zeile 172:

Kennst du Cloudflare?  Lern es ruhig kennen. Wird für große Shops ggf. nützlich sein. Ich unterstelle innerhalb dieses Beitrags aber mal, dass Du das nicht benötigst. Lass es deaktiviert mit der 0.

 

 

So, das war es. Das war die Konfiguration. Trägst du alles richtig ein, macht dein Server 10-40 Minuten schräge sachen und danach steht dein Server und du kannst mit der Installation beginnen :)

 

Bearbeitung:

Eckpunkte vom Script im Bezug auf Sicherheit erklärt.

Die Konfigurationsdatei erklärt und beschrieben

Edited by Lausli (see edit history)
  • Like 3
Link to comment
Share on other sites

So, das wird der Teil 2, den ersten Teil werde ich weiter ausarbeiten, brauch den 2. Post aber als Platzhalter für den Inhalt.

 

Hier soll es sich um das Thema Servereinbruch drehen.

 

Das heißt: Wie erkenne ich ob mein Server noch mir gehört, was kann ich tun und was sollte ich tun. Schwerpunkt natürlich: Datensicherheit - Shop. Kundendaten etc.

 

Dabei setze ich voraus, dass ist "perfektrootserver" nutzt, da hier äußert wichtige Anker gesetzt wurden. Sprich Port verändert, Zugangsnamen anpassen etc.

 

Deshalb aus Zeitmangel jetzt erstmal das wichtigste:

 

Server Abschalten! Ganz ganz wichtig, SOBALD ihr glaubt,

dass eurer Server gehackt wurde: Schaltet die Kiste aus!

 

Kreditkarte verloren? Sperren lassen, UMGEHEND!

 

Wie man das raus finden kann und analysiert, werde ich hier die Tage noch schreiben.

Link to comment
Share on other sites

  • 3 weeks later...

Der Obere Beitrag wird in kürze Bearbeitet, in diesem erfahrt ihr dann viel über den Umgang mit Kompromittierten Servern. Wie man es erkennt und gegensteuert etc.

 

Hier möchte ich jedoch letztmalig etwas ausführlicher das Script erklären, da diesbezüglich einige PNs gekommen sind.

 

Auf der Webseite www.perfectrootserver.de wird Zentral ein Script zur Installation sowie Administration eines Root oder vServers verwaltet und Entwickelt.

 

Was genau macht das Script?

Es verwaltet bzw. Installiert euren kompletten Webserver / Server. Einen Webserver macht das Script darauf.

Es wird ganz erheblicher Wert auf Sicherheit und Aktualität gelegt.

Der Zweite Punkt ist das die Usereingabe auf ein Minimum beschränkt wird. Dazu gibt es eine userconfig.cfg die nach der Extraktion auf dem Server liegt. Dort wird alles nötige eingetragen und per 0 für nein und 1 für ja gesteuert.

 

Am Ende, wenn euer Server steht habt ihr einen hochsicheren Webserver und ein kostenloses valides SSL Zertifikat von Let's Encrypt

post-1091593-0-01560600-1474032628_thumb.png

 

Note A+

 

 

Zu den aktuell am meist gefragten Wünschen gibt es bereits lauffähige und getestete Addons, die direkt mit dem Server installiert werden können.
 
Dazu zählt u.a.
  • Ajenti
  • Minecraft
  • Teamspeak 3
  • VSFTPd
Weiter in aktueller Entwicklung sind
  • Disable root Login
  • AddNewSite (wird wohl am Wochenende fertig)
  • PHP7.x (interne Entwicklung, auch nicht über testing branch erreichbar)
Auf der ToDo derzeit
  • Serverüberwachung (z.B. Munin)
  • Backuplösungen
  • System Hashes - Dient später zur integritätsprüfung des Systems
Außerdem läuft auf dem Server anschließend
  • OpenSSL v1.1.0
  • Nginx v1.11.4
Updates, Updates Updates
Wir wissen, dass diese sehr wichtig sind und bieten daher bald auch in einer Stable Version ein Updatescript an, welches euren Server aktualisiert.
Dazu zählt u.a.
  • Nginx
  • RoundCube
  • Mail
  • MySQL/MariaDB
  • Systemupdates
 
Außerdem möchten wir jedem gern anbieten zu helfen, sollte es mal Probleme bei der Installation geben. Dazu bieten wir euch auch individuelle Patches an, sofern sich das im Rahmen hält und die System minimal Voraussetzungen erfüllt werden.
 
Wir möchten euch gern auf unserer Webseite begrüßen, um dort zentral Neuigkeiten verwalten zu können. Daher werden unsere Beiträge innerhalb dieses Forums entweder wegfallen oder stark begrenzt werden.
 
Im Script selbst sowie auf der Webseite ist jeder Willkommen und jede Hilfe gern gesehen. Verbesserungsvorschläge neue Ideen und Tipps sind immer willkommen!
 
Warum aber poste ich das hier auf Prestashop?
Ganz einfach: Ich benutze Prestashop, wie ihr. Ich weiß  um die Ressourcen die Prestashop einem Server abverlangt und weiß mittlerweile recht gut, wie man damit umgehen kann und muss und wie man viele Probleme in den Griff bekommt. Unter anderem auch speziell mit dem eBay Modul welches z.B. nicht mit der Aktuellen Pagespeed Version Kompatibel ist und bei Aktivierung einfach den dienst einstellt.
 
Weiterhin möchte ich gerade neuen Benutzern den Einstieg erleichtern und vorab einige Hürden nehmen. Denn so ein Server kostet Geld und nicht jeder möchte oder kann gleich einen Management Server Mieten. Gerade am Anfang einer Selbstständigkeit ist jeder Cent Eigenkapital und Wertvoller denn je. Die Frustrationsgrenze kann da schon sehr niedrig sein, weil wer will sich schon damit auseinander setzen, wenn er eig,. nur Artikel verkaufen will:
if [ ${CLOUDFLARE} == '0' ] && [ ${USE_VALID_SSL} == '1' ]; then
	echo "${info} Creating valid SSL certificates..." | awk '{ print strftime("[%H:%M:%S] |"), $0 }'
	git clone https://github.com/letsencrypt/letsencrypt ~/sources/letsencrypt -q
	cd ~/sources/letsencrypt
	if [ ${USE_MAILSERVER} == '1' ]; then
		./letsencrypt-auto --agree-tos --renew-by-default --non-interactive --standalone --email ${SSLMAIL} --rsa-key-size 2048 -d ${MYDOMAIN} -d www.${MYDOMAIN} -d mail.${MYDOMAIN} -d autodiscover.${MYDOMAIN} -d autoconfig.${MYDOMAIN} -d dav.${MYDOMAIN} certonly >/dev/null 2>&1
	else
		./letsencrypt-auto --agree-tos --renew-by-default --non-interactive --standalone --email ${SSLMAIL} --rsa-key-size 2048 -d ${MYDOMAIN} -d www.${MYDOMAIN} certonly >/dev/null 2>&1
	fi
	ln -s /etc/letsencrypt/live/${MYDOMAIN}/fullchain.pem /etc/nginx/ssl/${MYDOMAIN}.pem
	ln -s /etc/letsencrypt/live/${MYDOMAIN}/privkey.pem /etc/nginx/ssl/${MYDOMAIN}.key.pem
else
	echo "${info} Creating self-signed SSL certificates..." | awk '{ print strftime("[%H:%M:%S] |"), $0 }'
	openssl ecparam -genkey -name secp384r1 -out /etc/nginx/ssl/${MYDOMAIN}.key.pem >/dev/null 2>&1
	openssl req -new -sha256 -key /etc/nginx/ssl/${MYDOMAIN}.key.pem -out /etc/nginx/ssl/csr.pem -subj "/C=/ST=/L=/O=/OU=/CN=*.${MYDOMAIN}" >/dev/null 2>&1
	openssl req -x509 -days 365 -key /etc/nginx/ssl/${MYDOMAIN}.key.pem -in /etc/nginx/ssl/csr.pem -out /etc/nginx/ssl/${MYDOMAIN}.pem >/dev/null 2>&1
fi
HPKP1=$(openssl x509 -pubkey < /etc/nginx/ssl/${MYDOMAIN}.pem | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64)
HPKP2=$(openssl rand -base64 32)

Achso, wo wir beim Code sind:

Der Code ist Quelloffen und für JEDEN einsehbar. Und zwar hier auf Github

 

Keine Hacks, kein Betrug! Nur ehrliche Arbeit um anderen zu helfen!

 

Ganz wichtig: 

Die Sicherheit, mit der Ihr euch beschäftigen müsst umfasst nicht nur die Rechtliche euren Angeboten gegenüber. Genauso wichtig ist die Sicherheit der Daten eurer Kunden! Deswegen ist es wichtig, dass ihr wisst was eurer Server macht, was wo ist etc.

 

Bei vielen Vorinstallierten System sind Tools und Programme dabei, die euch das Leben leichter machen sollen. Froxlor z.B. 

 

Froxlor ist toll aber: Wollt ihr ein Reseller für Webspace werden oder einen Onlineshop eröffnen?

 
Für Fragen stehe ich euch jederzeit zur Verfügung. Ebenfalls seit ihr gern auf der Webseite  https://perfectrootserver.de Willkommen um da Zentral über Fragen und Wünsche sowie Verbesserungsvorschläge zu sprechen.
 
Danke für eure Aufmerksamkeit!
 
 

 

 

Link to comment
Share on other sites

×
×
  • Create New...