Installation Linux Webserver

2
7322

Anleitung:Installation Linux Webserver für den Betrieb von CMS inklusive Open Source Verwaltungsoberfläche (Server-Management-Panel) ISPConfig

  1. Anforderungen an den Webserver

  2. Minimum Hardware für Webserver mit CMS

  3. Linux Betriebssystem Installation (Auswahl vom installierten Betriebssystem)

  4. SSH

  5. HTOP – Serverauslastung

  6. Serverupdate Linux

  7. VIM Editor installation

  8. Linux Netzwerkeinstellungen

  9. Network Time Protocol (NTP)

  10. Linux Ubuntu sources.list ändern

  11. Shell ändern

  12. AppArmor löschen

  13. Installation Email: Postfix / Dovecot & MySQL, Rootkit rkhunter, binutils

  14. Mail-Servern Virenscanner und Spam Filter: amavisd-new, SpamAssassin, & ClamAV

  15. Installation: Apache2, PHP, phpMyadmin, FastCGI & suExec, Pear (PHP Extension and Application Repository), Mcrypt PHP Verschlüsselung

  16. Weiter Apache Module installieren: Xcache & PHP-FPM

  17. FTP Server PureFTPd

  18. (BIND DNS Server: nur wenn eigener DNS benötigt wird)

  19. Vlogger (Virtual Host Logs), Webalizer & AWstats

  20. Sicherheitstool – fail2ban

  21. Server-Management-Panel : ISPConfig 3

  22. SSH Absicherung

  23. fail2ban erweitern

  24. Log Monitoring / Überwachung

  25. Routing Block IPs

  26. phpMyAdmin htaccess

  27. ISPConfig htacces Passwort

  28. Intrusion Prevention System gegen Denyal of Service Angriffe : ModEvasive

  29. Smart disk monitoring (Hardware Server, nicht VPS) SMART

  30. MaxRequestLen 15728640 Optimieren /etc/apache2/mods-available/fcgid.conf

  31. Raid überwachen (Hardware Server)

  32. MYSQL Optimieren

  33. Cron: MySql täglich reparieren

 

  1. Anforderungen an den Webserver

Der Linux Webserver soll für den Betrieb verschiedener Content Management Systeme geeignet sein.
Type: Linux Apache2 Webserver.
Unterstützte Skriptsprachen: PHP, Perl, Python, Ruby.
Datenbank MySQL.
Dateizugriff für Benutzer über FTP.
Mailserver.
Webservermanagement System auf Open Source Basis ISPConfig.

  1. Minimum Hardware für Webserver mit CMS

CMS Systeme stellen oft große Anforderungen an den Webserver. Besonders WordPress, welches das am Meisten eingesetzte System ist, benötigt viel Ressourcen. Besonders wenn es große Webseiten sind, steigen die Anforderungen enorm. Für den Betrieb von einer Webseite mit einem CMS wie WordPress sollte man minimum:

  • 1 CPU mit 2000Mhz
  • 2 GB Ram
  • Speicherplatz je man Bedarf,

für ein Besucheraufkommen von 2000 User pro Tag rechnen. Dabei ist nicht eingerechnet, wenn ein aggressiver Bot (Suchserver) die Seite scannt.
Mit dem Einsatz einer SSD als Festplatte kann man die Leistung eines Webservers um etwa 100% steigern.
Für jede weitere Webseite sollte man ca. 20% an CPU und Ram hinzufügen. Bei virtuellen Serversystemen sollte man darauf achten, dass die Leistung auch tatsächlich für das System reserviert ist.

 

  1. Linux Betriebssystem Installation (Auswahl vom installierten Betriebssystem)

Da man in den wenigsten Fällen tatsächlich das Betriebssystem selbst installieren muss, wird in dieser Beschreibung die Installation des Betriebssystems nicht behandelt.  Im Normalfall wird der Server bei einem Provider bestellt. Dort kann man dann auswählen, mit welchen Betriebssystem der Server geliefert werden soll. Viele Provider bieten auch eine automatisierte Image Installation an. Hier wird in der Zugangskonsole eingestellt, welches Betriebssystem installiert werden soll. Auch gibt es hier oft Systeme, die bereits mit fast allen Anforderungen an einen Webserver installiert werden. Man kann so jederzeit den Server neu installieren.
In diesem Beispiel gehen wir von einer „Minimum Ubuntu 14.04 LTS“ Installation aus.

 

  1. SSH

Über die Secure Shell SSH Konsole erhalten wir Zugriff auf unseren Webserver. Bei der bestellung wird dieser Dienst immer installiert. Das Passwort und den Benutzer erhalten wir per Mail oder über die Konsole beim Provider.
Standardmäßig wird der Server mit dem Benutzer root ausgeliefert.  Da dieser Benutzer der Hauptangriffspunkt von Hackerattacken ist, sollte man einen weitern Benutzer anlegen. Mit diesem Benutzer meldet man sich dann am Server an und verbietet die Remoteanmeldung für den Benutzer root. Einer der bekanntesten SSH Clients ist Putty.

Anleitung:
Als root User an der Konsole anmelden.
Neuen User anlegen:

sudo adduser *neuername*

*neuername* durch den gewünschten Namen ersetzten (ohne * *).

 

SSH Login für Root verbieten:
Die Konfigurationsdatei für den SSH Dienst bearbeiten.

vim /etc/ssh/sshd_config

 

Hier suchen wir nach dem Eintrag:

PermitRootLogin yes

Diesen ändert man zu:

PermitRootLogin no

Nun wird der Dienst mit dem Befehl neu gestartet:

sudo /etc/init.d/ssh restart

 

Nun sollte man sich aus dem System abmelden und nochmals versuchen, sich mit dem Benutzer root anzumelden. Dies sollte nun nicht mehr möglich sein. Ab sofort meldet man sich nur noch mit dem neuen Benutzer an. Somit hat man die Angriffsstelle „Benutzer root“ beseitigt.

 

  1. HTOP Serverauslastung

Htop ist ein kleines Tool um die Serverauslastung und verendeten Ressourcen am Server anzuzeigen. Ebenso kann man Prozesse über dieses Tool beenden.

 

Anleitung: Installation HTOP:

apt-get install htop

 

Der Aufruf erfolgt nach der Installation mit dem Befehl:

htop

 

Nach der Neuinstallation eines Servers, besonders bei VPS Systemen, kommt es immer wieder vor, dass einige Prozesse, wegen fehlerhafter Installation, zu viel Leistung (CPU und RAM) verbrauchen. Ein erster Blick in HTOP zeigt an, ob alles sauber ohne Last läuft.

htop
htop

 

Wie im Bild zu sehen ist, verbraucht der Server momentan nur 84Mb Ram und 0% CPU. Somit sollte der Server sauber laufen.

 

Die Festplattenbelegung kann man sich mit dem Befehl:

df –h

ansehen.

 

  1. Serverupdate Linux Betriebssystem

Wenn die Server ausgeliefert werden, so haben diese oft eine veraltete Version installiert. Eine der ersten Schritte, bevor man weiter Software installiert, sollte ein Update sein

 

Anleitung Serverupdate Linux Betriebssystem:

Man führt diese 2 Befehle aus und die Updates werden installiert:

apt-get update

apt-get upgrade

Nachfolgende Schritte orientieren sich nach der Installationsanleitung von ISPConfig von
https://www.howtoforge.com/perfect-server-ubuntu-14.04-apache2-php-mysql-pureftpd-bind-dovecot-ispconfig-3-p3

 

  1. VIM Editor installation

Nach der installation sind verschiedene Texteditoren installiert. Meist sind dies Nano, Vi und Vim. Da der Standardeditor Vim einige Fehler hat, sollt man vim-nox installieren.

Anleitung:

Über diesen befehl wird der Editor installiert:

apt-get install vim-nox

 

Damit dieser Editor auch verwendet wird, wenn man dem Befehl vim aufruft, muss dieser noch aktiviert werden.

 

So wird der Editor umgestellt:

update-alternatives --config editor

Nun werden alle Editoren angezeigt. Hier wählt man die Nummer von vim.nox.

 

  1. Netzwerkeinstellungen

Nach der Auslieferung des Servers, sollten im Normalfall die Netzwerkeinstellugen bereits richtig sein. Dies kontrolliert man in der Konfigurationsdatei /etc/network/interfaces

 

Anleitung:
Konfigurationsdatei öffnen:

vi /etc/network/interfaces

Hier sollte man diese Parameter kontrollieren.

address 0.0.0.0
  netmask 0.0.0.0
  network 0.0.0.0
  broadcast 0.0.0.0
  gateway 0.0.0.0
  dns-nameservers 0.0.0.0 0.0.0.0

 

(durch die richtigen Adressen ersetzen 0.0.0.0)

 

In der /etc/hosts Konfigurationsdatei muss der Name vom Server stehen.

Konfigurationsdatei öffnen:

vi vi /etc/hosts

 

In der zweiten Zeile muss die IP Adresse stehen, gefolgt vom vollen Namen mit Domain und dann nur der Name von Server ohne Domain.

Beispiel:

192.1.1.1           server1.meinedomain.at server1

 

Nun wird der volle Name auch noch in die /etc/hostname Datei eingetragen.

Befehl:

echo server1.meinedomain.at > /etc/hostname

Service neu starten.

service hostname restart

 

Nun wird der Eintrag mit dem Befehl kontrolliert:

hostname

hostname –f

 

 

Bei beiden Befehlen muss der volle Name mit Domain (server1.meinedomain.at) angezeigt werden. Ist dies nicht der Fall, gibt es später viele Probleme!!

 

  1. Network Time Protocol (NTP)

Damit sich die Systemzeit automatisch mit einem Internetzeitserver synchronisiert, wird der NTP Client Dienst installiert:

apt-get install ntp ntpdate

 

  1. Linux Ubuntu sources.list ändern

Ubuntu aktualisiert und installiert Software über die, in der /etc/apt/sources.list Datei eingetragenen Server. Die diese Standardliste nicht alle Server listet, die wir für die Installation brauchen, wird diese durch die nachfolgende Ausgetauscht.

Anleitung:

vi /etc/apt/sources.list

Hier alle Einträge löschen und durch die neue ersetzen. (Man kann sie auch unten anhängen. Dann kommen einige Meldungen, dass diverse Einträge doppelt sind)

# deb cdrom:[Ubuntu-Server 14.04 LTS _Trusty Tahr_ - Release amd64 (20140416.2)]/ trusty main restricted

#deb cdrom:[Ubuntu-Server 14.04  LTS _Trusty Tahr_ - Release amd64 (20130423.2)]/ trusty main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to

# newer versions of the distribution.

deb http://de.archive.ubuntu.com/ubuntu/ trusty main restricted

deb-src http://de.archive.ubuntu.com/ubuntu/ trusty main restricted

## Major bug fix updates produced after the final release of the

## distribution.

deb http://de.archive.ubuntu.com/ubuntu/ trusty-updates main restricted

deb-src http://de.archive.ubuntu.com/ubuntu/ trusty-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu

## team. Also, please note that software in universe WILL NOT receive any

## review or updates from the Ubuntu security team.

deb http://de.archive.ubuntu.com/ubuntu/ trusty universe

deb-src http://de.archive.ubuntu.com/ubuntu/ trusty universe

deb http://de.archive.ubuntu.com/ubuntu/ trusty-updates universe

deb-src http://de.archive.ubuntu.com/ubuntu/ trusty-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu

## team, and may not be under a free licence. Please satisfy yourself as to

## your rights to use the software. Also, please note that software in

## multiverse WILL NOT receive any review or updates from the Ubuntu

## security team.

deb http://de.archive.ubuntu.com/ubuntu/ trusty multiverse

deb-src http://de.archive.ubuntu.com/ubuntu/ trusty multiverse

deb http://de.archive.ubuntu.com/ubuntu/ trusty-updates multiverse

deb-src http://de.archive.ubuntu.com/ubuntu/ trusty-updates multiverse

## N.B. software from this repository may not have been tested as

## extensively as that contained in the main release, although it includes

## newer versions of some applications which may provide useful features.

## Also, please note that software in backports WILL NOT receive any review

## or updates from the Ubuntu security team.

deb http://de.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-src http://de.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu trusty-security main restricted

deb-src http://security.ubuntu.com/ubuntu trusty-security main restricted

deb http://security.ubuntu.com/ubuntu trusty-security universe

deb-src http://security.ubuntu.com/ubuntu trusty-security universe

deb http://security.ubuntu.com/ubuntu trusty-security multiverse

deb-src http://security.ubuntu.com/ubuntu trusty-security multiverse

## Uncomment the following two lines to add software from Canonical's

## 'partner' repository.

## This software is not part of Ubuntu, but is offered by Canonical and the

## respective vendors as a service to Ubuntu users.

# deb http://archive.canonical.com/ubuntu trusty partner

# deb-src http://archive.canonical.com/ubuntu trusty partner

## Uncomment the following two lines to add software from Ubuntu's

## 'extras' repository.

## This software is not part of Ubuntu, but is offered by third-party

## developers who want to ship their latest software.

# deb http://extras.ubuntu.com/ubuntu trusty main

# deb-src http://extras.ubuntu.com/ubuntu trusty main

 

Nun die Änderungen einlesen.

apt-get update

 

 

  1. Shell ändern

Damit die Installation von ISPConfig problemlos funktioniert, muss die Linux Shell (Terminalfenster) umgestellt werden.

dpkg-reconfigure dash

 

Es öffnet sich ein farbiges Fenster. Nun wählt man NO!

 

  1. AppArmor löschen

Standardmäßig ist das Linux Sicherheitsprogramm AppArmor. Da dieses System nicht mit dem Webserver zusammenarbeitet und durch ein anders ersetzt wird, werden wir dieses nun löschen.

# service apparmor stop

# update-rc.d -f apparmor remove

# apt-get remove apparmor apparmor-utils

 

  1. Installation Email: Postfix / Dovecot & MySQL, , Rootkit rkhunter, binutils

Als Email Server wird Postfix und Dovecot installiert.
Als Datenbankserver MySQL.
Rootkit rkhunter: Überwacht das System auf schädliche Dateien und sucht nach Rootkits.
Binutils: Sammlung von Programmierwerkzeugen.
Bei nahezu jeder installation von Linux wird sendmail installiert. Über diesen Dienst versendet der Server nachrichten per Email. Da wir Postfix installieren, muss dieser als erstes deinstalliert werden.

 

Anleitung Sendmail löschen:

service sendmail stop; update-rc.d -f sendmail remove

 

Nun kann man Postfix / Dovecot & MySQL installieren.

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudo

 

Es öffnet sich ein Fenster mit der MySQL root user Passwort Erstellung. Hier muss man nun ein neues Passwort erstellen und dies 2 mal eingeben. Bitte dieses Passwort notieren, da man es später noch oft braucht!

Als nächstes erscheint das „Configuing dovecot-core“ Fenster um ein SSL Zertifikat zu erstellen. Man wählt hier YES und bestätigt alle Fragen mit Enter (oder gibt eigene Daten ein)

Nun kommt das „Postfix Configuration“ Fenster. Hier wählt man „Internet Site

Als 4. Fenster kommt System mail name. Hier sollte der Name vom Server bereits eingetragen sein.

Nun die Postfix Konfiguration öffnen

vi /etc/postfix/master.cf

In dieser Datei ist alles auskommentiert (am Anfang jeder Zeile ist ein #)

Hier muss man nun den Bereich submission und smtps aktivieren und jeweils die ersten 3 Zeilen aktivieren. Darunter muss man jeweils die Zeile

-o smtpd_client_restrictions=permit_sasl_authenticated,reject

einfügen.

Postfix
Postfix

 

Danach wird Postfix neu gestartet.

service postfix restart

 

 

MYSQL Zugriff auf den Server von außen.

Mit der Standardinstallation akzeptiert der MYSQL Server nur intern Zugriffe 127.0.0.1. Um sich von Extern auf den Server verbinden zu können, muss man dies erlauben.

vi /etc/mysql/my.cnf

Die Zeile bind-address           = 127.0.0.1 suchen und auskommentieren.

# bind-address           = 127.0.0.1

MySQL Service neu starten.

service mysql restart

 

 

  1. Mail-Servern Virenscanner und Spam Filter: amavisd-new, SpamAssassin, & ClamAV

Jeder Mailserver benötig einen Virenscanner um den Benutzer bereits am Server vor Viren zu schützen und Spamfilter, um die Spamflut zu minimieren.

 

Anleitung:

Installation der benötigten Pakete:

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

 

Da die Software ISPConfig, welche wir später installieren, einen eigenen Filter für SpamAssassin verwendet, kann man diesen wieder deaktivieren und löschen.

service spamassassin stop
update-rc.d -f spamassassin remove

 

15.  Installation: Apache2, PHP, phpMyadmin, FastCGI & suExec, Pear (PHP Extension and Application Repository), Mcrypt PHP Verschlüsselung

Installation Apache2 Webserver und die Standarderweiterungen.

Anleitung:

apt-get install apache2 apache2-doc apache2-utils libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-python php5-curl php5-intl php5-memcache php5-memcached php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached snmp

 

Im ersten Fenster „Configure phymyadmin“ wählt man apache2.

phpmyadmin
phpmyadmin

 

Im zweiten Fenster „Configure phpmyadmin“ wählt man No.

phpmyadmin2
phpmyadmin2

Nun werden noch einige Module, welche installiert sind aber noch nicht aktiviert sind, aktiviert.

php5enmod mcrypt
a2enmod suexec rewrite ssl actions include cgi
a2enmod dav_fs dav auth_digest

 

Bearbeiten der /etc/apache2/mods-available/suphp.conf Datei, damit PHP Dateien im richtigem Modus betreiben werden.

vi /etc/apache2/mods-available/suphp.conf

 

 

Hier muss man die Zeile 2,3, und 4 auskommentieren und dann die Zeile:

apache2a
apache2a
AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml

einfügen.

apache2b
apache2b

 

Wenn auch Ruby Dateien am Webserver laufen sollen, muss man die Konfiguration /etc/mime.types bearbeiten.

vi /etc/mime.types

 

Hier sich man die Zeile application/x-ruby

und kommentiert diese aus.

ruby
ruby

 

Nun wird der Apache neu gestartet, damit alle Änderungen wirksam werden.

service apache2 restart

 

  1. Weiter Apache Module installieren: Xcache & PHP-FPM

Xcache beschleunigt PHP Anwendungen enorm und entlastet so den Webserver. PHP-FPM ist ein anderer PHP-Interpreter. Man kann später über ISPConfig zwischen den einzelnen PHP-Interpreter auswählen und für jede Seite festlegen. Je nach installierten CMS, ist der eine oder andere besser. Die optimale Lösung findet man meist in der CMS Dokumentation.

Anleitung:

apt-get install php5-xcache
service apache2 restart
apt-get install libapache2-mod-fastcgi php5-fpm
a2enmod actions fastcgi alias
service apache2 restart

 

Es besteht die Möglichkeit weiter PHP Versionen zu installieren. Eine Anleitung dazu findet man unter:
https://www.howtoforge.com/how-to-use-multiple-php-versions-php-fpm-and-fastcgi-with-ispconfig-3-ubuntu-12.10

 

  1. FTP Server PureFTPd

Über den FTP Dienst, kann der Benutzer die Dateien auf den Webserver laden.

Anleitung:

apt-get install pure-ftpd-common pure-ftpd-mysql

 

Konfiguration /etc/default/pure-ftpd-common bearbeiten.

vi /etc/default/pure-ftpd-common

In dieser Datei muss man 2 Zeilen kontrollieren und abändern.

 

PureFTPd
PureFTPd

Ändern zu:

PureFTPd2
PureFTPd2

 

VIRTUALCHROOT=true

 

FTP über TLS Verschlüsselung aktivieren:

echo 1 > /etc/pure-ftpd/conf/TLS
mkdir -p /etc/ssl/private/

SSL Zertifikat erstellen:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

 

Die nachfolgenden Fragen füllt man je nach Bedarf aus.

chmod 600 /etc/ssl/private/pure-ftpd.pem

service pure-ftpd-mysql restart

 

18.  (BIND DNS Server: nur wenn eigener DNS benötigt wird)

Ein eigener DNS Server wird in vielen Fällen nicht benötigt. Somit sollte man diesen nur bei Bedarf installieren. Er benötigt teilweise viel Leistung und erzeugt eine zusätzliche Angriffsfläche für Hacker. In dieser Anleitung wird er nicht behandelt.

19.  Vlogger (Virtual Host Logs), Webalizer & AWstats

Dies sind die Standard – Statistik – Tools für den Apache Webserver

Installation:

apt-get install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl

 

Die Cronjob Konfiguration von Awstats öffnen und alles auskommentieren

vi /etc/cron.d/awstats
Awstats
Awstats

  1. Sicherheitstool – fail2ban

Fail2ban ist ein Sicherheitsprogramm, welches die LOG Dateien überwacht. Wenn jemand versucht, sich an einen Dienst anzumelden und dabei eine bestimmte Anzahl von Versuchen überschreitet, wird dieser (IP), auf eine bestimmte Zeit über die Firewall gesperrt. So kann man SSH, FTP, MySQL usw. überwachen. Im fail2ban Log kann man dann Angreifer – IPs identifizieren und bei wiederholten, andauernden Angriffen, entweder beim Provider sperren lassen, bei der Polizei anzeigen oder die Netzwerkkonfiguration (routing) so abändern, dass der Server auf diese IP Adressen nicht antwortet.

Anleitung Installation von fail2ban:

apt-get install fail2ban

 

Konfiguration für FTP & Mail

Datei /etc/fail2ban/jail.local erstellen und nachfolgende Konfiguration erstellen.

vi /etc/fail2ban/jail.local

 

[pureftpd]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[postfix-sasl]
enabled  = true
port     = smtp
filter   = postfix-sasl
logpath  = /var/log/mail.log
maxretry = 3

 

Filter 1 erstellen:

vi /etc/fail2ban/filter.d/pureftpd.conf

 

[Definition]
failregex = .*pure-ftpd: \(.*@<HOST>\) \[WARNING\] Authentication failed for user.*
ignoreregex =

 

Filter 2 erstellen:

vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf

 

[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P<host>\S*),.*
ignoreregex =

 

echo "ignoreregex =" >> /etc/fail2ban/filter.d/postfix-sasl.conf
service fail2ban restart

 

21.  Server-Management-Panel : ISPConfig 3

Über ISPConfig 3 kann man den Webserver komfortabel konfiguriern. Man kann Benutzer anlegen und diese können dann ihre Webseite, FTP Zugänge und Datenbanken selbst erstellen und verwalten. ISPConfig ist ein Open Source System und ist für jeden kostenlos erhältlich.

Installation ISPConfig 3

In das tmp Verzeichnis wechseln.

cd /tmp

 

ISPConfig downloaden.

wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz

ISPConfig entpacken

tar xfz ISPConfig-3-stable.tar.gz

In das Verzeichnis wechseln

cd ispconfig3_install/install/

Installation starten

php -q install.php

Die ersten 5 Punkte mit Enter bestätigen. Dann muss man das MYSQL Root Passwort eingeben, welches man am Anfang der Installation angelegt hat. Alle weiteren Fragen mit Enter bestätigen.
Zum Schluss sollte man die Meldung: „Installation completed.“ sehen.

Die Weboberfläche ruft man nun mit:
https://server1.meinedomain.at:8080/ auf. (oder mit der IP https://ip:8080)

ISPConfig
ISPConfig

Benutzer ist: admin
Passwort ist: admin

Als erstes wird das Passwort geändert.

Dies findet man unter: System – CP User

ISPConfig3
ISPConfig3

 

 Ende Installationsanleitung von ISPConfig

  1. SSH Absicherung verstärken

Der SSH Service ist die Hauptangriffsfläche für jeden Hacker. Es gibt viele automatisierte Programme, die ständig versuchen, einen SSH Zugang zu finden. Meist mit sogenannten „Brute Force“ attacken. Leider kann man den SSH Dienst nicht abschalten, da man sonst nicht mehr auf den Server kommt. Jedoch kann man den Zugang erschweren.

Da wir bereits unter Punkt 20 das Tool Fail2bann installiert haben, können wir dieses nutzen und SSH besser absichern. (Man kann auch den SSH – Dienst Port ändern. Die Meisten probieren es nur über Port 22)

Anleitung:

vi /etc/fail2ban/jail.conf

 

In der Konfigurationsdatei jail.conf sucht man den Eintrag [ssh] maxretry = 6.
Diesen ändern wir auf 3. Somit wird der Benutzer bereits an 3 fehlerhaften Login-versuchen über die Firewall gesperrt.
Ebenso den Eintrag [ssh-ddos] maxretry = 6 auf 3 ändern.

Anschließend Service neu starten.

/etc/init.d/fail2ban restart

 

  1. Fail2ban erweitern

Mit der Installation von Fail2ban ist das System sehr moderat eingestellt. Um das ganze etwas zu verschärfen, erhöhen wir die Zeitspanne, nach der Fail2ban die Logs untersucht und erhöhen gleichzeitig die Sperrzeit.

Dies passiert über die Datei /etc/fail2ban/jail.conf.

Anleitung:

vi /etc/fail2ban/jail.conf

Hier gibt es die Parameter:
bantime = 600
findtime= 600

(Zeit in Sekunden)

Diese erhöhen wir auf:
bantime = 172800
findtime= 60000

Oder bei Bedarf noch höher!

  1. Log Monitoring / Überwachung

Um sich das Überwachen der LOG Dateien zu erleichtern, kann man sich täglich eine Zusammenfassung der LOGs per Mail schicken lassen. Dazu kann man die Software Logwatch einsetzen.

Installation Logwatch: (Basiert auf https://help.ubuntu.com/community/Logwatch)

apt-get install logwatch
mkdir /var/cache/logwatch
cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

Nun die Konfiguration bearbeiten.

vi /etc/logwatch/conf/logwatch.conf

Folgene Einträge bearbeiten:
MailFrom = Logwatch

ändern zu

MailFrom = Name-des Servers
—————-

Detail = Low

ändern zu

Detail = High
———————

MailTo = root

ändern zu

MailTo = emailadresse@meinserver.de

—————

cp /usr/share/logwatch/default.conf/logfiles/http.conf /etc/logwatch/conf/logfiles/

 

Ab sofort bekommt man jeden Tag per Mail eine Zusammenfassung der LOG Dateien.

  1. Routing Block IPs

Da wir jetzt die angreifenden IP – Adressen täglich im Mail von Logwatch sehen, sollt man die diversen IPs, welche immer wieder Angriffe starten, fest aus dem System aussperren. Dies funktioniert am effektivsten, wenn der Server auf Anfragen von diesen IPs nicht mehr reagiert.

Dazu erstellen wir Routingeinträge, welche ins Leere führen.

Um einzelne IPs zu blockieren, gibt man z.B. ein:

/sbin/route add -host 23.250.6.166 reject

 

Dadurch wird die IP 23.250.6.166 blockiert.

mit:

 /sbin/route del -host 23.250.6.166 reject

Kann man die Adresse wieder erlauben.

Möchte man ein ganzen Netzwerk (255 Adressen) blockieren, so gibt man z:B.

/sbin/route add -net 23.250.6.0/24 gw 127.0.0.1 lo

Und zum Löschen der Blockierung:

/sbin/route dell -net 23.250.6.0/24 gw 127.0.0.1 lo

Diese Einträge in der Routing Tabelle halten nur bis zum nächsten Neustart des Servers. Um die IPs dauerhaft zu sperren, trägt man diese in die /etc/rc.local ein.

vi /etc/rc.local
rc.local
rc.local

Das sperren diverser böser IPs sollt man regelmäßig durchführen.

Eine Gute Liste für Böse IPs gibt es auf www.blocklist.de

  1. phpMyAdmin htaccess

Sehr viele Angriffe auf den Webserver kommen auch über die phpMyAdmin Oberfläche. Damit der Angreifen überhaupt nicht bis zur phpMyAdmin Oberfläche kommt, kann man diese per .htaccess schützen. (Quelle http://ww1.4hf.de/2016/01/phpmyadmin-mit-htaccess-schuetzen-ispconfig.html)

  1. ISPConfig htacces Passwort

Auch die ISPConfig Oberfläche ist ein beliebter Angriffspunkt für Hacker. Diesen kann man ebenso per .htaccess schützen.
Für die aktivieren hat ISPConfig bereits ein Script bei der Installation auf den Server kopiert. Es liegt unter /usr/local/ispconfig/server/scripts/ispconfig_htaccess.php.

Man muss dieses Script nur starten.

Man sollt vor dem Start dieses Scripts die Benutzer angelegt haben. (Zugangsdaten vom Panel)

php /usr/local/ispconfig/server/scripts/ispconfig_htaccess.php

 

  1. Intrusion Prevention System gegen Denyal of Service Angriffe : ModEvasive

Modevasive ist ein Modul, welches zu viele Zugriffe in kurzer Zeit von einer Adresse auf den Server verhindert. Angreifer versuchen durch sehr viele Anfragen an den Webserver eine Überlastung zu erzeugen. Dadurch können einzelne Dienste ausfallen. Dadurch kann es passieren, das der Angreifer Zugriff auf den Server erhält.
ModEvasive kann dagegen teilweise schützen. Das Modul leitet den Angreifer auf eine „Zugriff verweigert 403“ Seite um.

Installation ModEvasive: (Basis: https://wiki.ubuntuusers.de/Apache/mod_evasive/)

apt-get install libapache2-mod-evasive
a2enmod evasive
mkdir /var/log/mod_evasive
chown www-data:root /var/log/mod_evasive
ln -s /etc/postfix/mail /bin/mail

Die Konfiguration:

vi /etc/apache2/mods-available/evasive.conf

 

Beispiel:

mod_evasive
mod_evasive

 

 

Wenn diverse Fehlermeldungen bei CMS Systemen kommen, sollte man im LOG nachsehen. Manchmal muss man die Werte in der Konfiguration erhöhen. Besonders   „DOSPageCount  2“ kann bei schnellen Verbindungen oft zu klein sein.

Am Besten testet man den Webserver, in dem man eine Webseite aufmacht und auf der F5 Taste bleibt. Nach einigen Sekunden sollte die Seite „Zugriff verweigert“ kommen.
Dabei die Serverauslastung mit HTOP im Auge behalten. Es sollten keine Dienste ausfallen und der Server nicht zu lange auf 100% laufen. Kommt die Meldung „Zugriff verweigert“ nicht, und Dienste am Server (z.B. MySQL) stürzt ab, so kann man die Werte verringern in der evasive.conf. Nach spätestens 5-10 Sekunden sollte  „Zugriff verweigert“ kommen.
Nach jeder Änderung den Apache neu starten:

service apache2 restart

  1. Smart disk monitoring (Hardware Server, nicht VPS) SMART

Mit den Smartmontools kann man die Festplatte auf Fehler überprüfen und laufend überwachen lassen. Wenn man den Webserver auf einem physikalischen Server (kein VPS) läuft, sollte man die Festplatten laufend überwachen. Im Normalfall kann man so einen Ausfall frühzeitig erkennen. Das Programm Smartmontools kann die Festplatten überwachen und bei Problemen bekommt meine eine Nachricht per Email.
Eine Anleitung zur Installation gibt es auf: https://help.ubuntu.com/community/Smartmontools

  1. MaxRequestLen 15728640 Error Optimieren /etc/apache2/mods-available/fcgid.conf

Wird eine Seite im FASTCGI Modus betrieben, so kommt es bei der Standardinstallation bei manchen Seiten beim Upload von Dateien zum Error 500. Abhilfe schafft die Konfigurationsdatei /etc/apache2/mods-available/fcgid.conf.

vi /etc/apache2/mods-available/fcgid.conf

 

fcgid
fcgid

Die Zeile MaxRequestLen 15728640 einfügen.

 

service apache2 restart

 

  1. Raid überwachen (Hardware Server)

Wird der Server mit einem Software Raid ausgeliefert, so sollt man sich ebenfalls über Probleme mit dem Raid per Email informieren lassen.

Anleitung: https://wiki.hetzner.de/index.php/Softwareraid

  1. MYSQL Optimieren

Um die Einstellungen vom MYSQL Datenbankserver zu optimieren, kann man das Programm mysqltuner verwenden.

Installation:

apt-get install mysqltuner

 

Gestartet wird das Programm mit:

mysqltuner

 

Hier muss man dann den root User und das Passwort vom root User der MYSQL DB eingeben.

Es werden dann verschiedene Optimierungen angezeigt. Diese Einstellungen findet man alle in der /etc/mysql/my.cnf

Der Server sollt einige Tage laufen, bevor man mysqltuner startet. Danach die Optimierungen durchführen und wieder einige Tage warten. Nach 1-2 Woche sollt dann der MYSQL mit den optimalen Einstellungen laufen.

  1. Cron: MySql täglich reparieren

In der DB entstehen immer wieder überhänge aus leeren Tabellen in der DB. Diese können manchmal zu Problemen führen. Um dies zu verhindern, kann man alle Datenbanken am MYSQL Server automatisch reparieren und optimieren lassen.

Dazu legt man einen Cron Job an. Diesen führt man je nach belieben aus, wenn am Server die geringste last ist.

Cron Anlegen:

crontab –e

 

10 01 * * * mysglcheck -uroot -pPassword --auto-repair --optimize --all-databases >/dev/null

 

Dieses Beispiel optimiert jeden Tag um 01:10 die Datenbank. Das Wort „Password“ durch das tatsächliche Passwort ersetzen. (Passwort vom root User)

2 KOMMENTARE

  1. […] Ab Ubuntu 16 gibt es die Datei /etc/rc.local nicht mehr und ebenso der Dienst läuft nicht mehr, welcher die rc.local abarbeitet. Die rc.local wurde immer dazu benutzt, bei Start von Linux verschiedene Befehle auszuführen (Autostartdatei). Sie konnte man hier die Routen zu verschiedenen Netzwerken eintragen und so auch den Server vor ungewollten Angriffen schützen. Dazu gibt es bereits eine Anleitung für die Installation vom Linux Webserver. […]

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here