Anleitung:Installation Linux Webserver für den Betrieb von CMS inklusive Open Source Verwaltungsoberfläche (Server-Management-Panel) ISPConfig
-
Anforderungen an den Webserver
-
Minimum Hardware für Webserver mit CMS
-
Linux Betriebssystem Installation (Auswahl vom installierten Betriebssystem)
-
SSH
-
HTOP – Serverauslastung
-
Serverupdate Linux
-
VIM Editor installation
-
Linux Netzwerkeinstellungen
-
Network Time Protocol (NTP)
-
Linux Ubuntu sources.list ändern
-
Shell ändern
-
AppArmor löschen
-
Installation Email: Postfix / Dovecot & MySQL, Rootkit rkhunter, binutils
-
Mail-Servern Virenscanner und Spam Filter: amavisd-new, SpamAssassin, & ClamAV
-
Installation: Apache2, PHP, phpMyadmin, FastCGI & suExec, Pear (PHP Extension and Application Repository), Mcrypt PHP Verschlüsselung
-
Weiter Apache Module installieren: Xcache & PHP-FPM
-
FTP Server PureFTPd
-
(BIND DNS Server: nur wenn eigener DNS benötigt wird)
-
Vlogger (Virtual Host Logs), Webalizer & AWstats
-
Sicherheitstool – fail2ban
-
Server-Management-Panel : ISPConfig 3
-
SSH Absicherung
-
fail2ban erweitern
-
Log Monitoring / Überwachung
-
Routing Block IPs
-
phpMyAdmin htaccess
-
ISPConfig htacces Passwort
-
Intrusion Prevention System gegen Denyal of Service Angriffe : ModEvasive
-
Smart disk monitoring (Hardware Server, nicht VPS) SMART
-
MaxRequestLen 15728640 Optimieren /etc/apache2/mods-available/fcgid.conf
-
Raid überwachen (Hardware Server)
-
MYSQL Optimieren
-
Cron: MySql täglich reparieren
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.
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.
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.
Ü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.
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.
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.
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
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.
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!!
Damit sich die Systemzeit automatisch mit einem Internetzeitserver synchronisiert, wird der NTP Client Dienst installiert:
apt-get install ntp ntpdate
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
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!
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
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.
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
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.
Im zweiten Fenster „Configure phpmyadmin“ wählt man No.
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:
AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
einfügen.
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.
Nun wird der Apache neu gestartet, damit alle Änderungen wirksam werden.
service apache2 restart
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
Ü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.
Ändern zu:
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
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)
Benutzer ist: admin
Passwort ist: admin
Als erstes wird das Passwort geändert.
Dies findet man unter: System – CP User
Ende Installationsanleitung von ISPConfig
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
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!
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.
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
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
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)
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
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:
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
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
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
Die Zeile MaxRequestLen 15728640 einfügen.
service apache2 restart
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
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.
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)
[…] 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. […]
[…] einen Server oder PC im öffentlich Netz betreibt, wie z.B. einen Webserver, wird sehr viele Angriffe feststellen. 90% aller Angriffe kommen aus China. Die restlichen 10% […]