Hosteurope und ISPConfig3

Voraussetzung

Frisch installiertes Debian 6 aus KIS. Bitte daran denken, das root passwort zu ändern.

Bugfixes

cron.hourly, cron.daily und cron.monthly werden nicht ausgeführt

Standardmäßig ist das Programm anacron instaliert, welches aber nicht startet. Abhilfe schaft hier

root
apt-get remove --purge anacron

Vergleiche: Faq hosteurope: Fehlende Statistiken/Cronjobs unter Ubuntu/Plesk (Anacron)

SSH-Key

Es befindet sich in /etc/init.d eine Datei Namens ssh_key_hack.sh
Auszug aus der Datei:

Korrektur ssh_key_hack.sh
...
/usr/sbin/update-rc.d ssh_key_hack.sh remove >/dev/null 2>&1
...

hier ist ein meiner Meinung nach ein Fehler. Die Zeile sollte lauten:

ssh_key_hack.sh
/usr/sbin/update-rc.d -f  ssh_key_hack.sh remove >/dev/null 2>&1

Also führen wir den Befehl von hand aus:

root
/usr/sbin/update-rc.d -f  ssh_key_hack.sh remove
Ausgabe
Removing any system startup links for /etc/init.d/ssh_key_hack.sh ...
   /etc/rc0.d/K20ssh_key_hack.sh
   /etc/rc1.d/K20ssh_key_hack.sh
   /etc/rc2.d/S20ssh_key_hack.sh
   /etc/rc3.d/S20ssh_key_hack.sh
   /etc/rc4.d/S20ssh_key_hack.sh
   /etc/rc5.d/S20ssh_key_hack.sh
   /etc/rc6.d/K20ssh_key_hack.sh

Das wars schon, in Zukunft wird der ssh-key nicht neu erstelltwink.

bind DNS-Server startet nach reboot nicht

ssh_key_hack.sh
update-rc.d bind9 defaults 15 85

Apache startet nach Reboot nicht

Möglichkeit 1

Ohne Neuinstallation:

root
/usr/sbin/update-rc.d apache2 defaults

Möglichkeit 2

apache2 komplett löschen

root
apt-get remove --purge "apache2*"

Die Neuinstallation von apache2 sparen wir uns, da gehe ich später nochmal darauf ein.

Hostname, hosts und resolv.conf (optional) dauerhaft speichern

init.d-Script erstellen

root
#Die folgende Zeile UNBEDINGT an Deine Gegebenheiten anpassen!!
HOSTNAME=deine.domain.tld
cat <<EOF > /etc/init.d/hostname_vps
#!/bin/bash
#
# chkconfig: 2345 7 93
# description: Host Europe virtual server hostname setting script
# Original from hosteurope.de
#
# /etc/init.d/hostname_vps
#
HOSTNAME=$HOSTNAME
[ -f /etc/hostname ] && echo \$HOSTNAME > /etc/hostname
[ -f /etc/HOSTNAME ] && echo \$HOSTNAME > /etc/HOSTNAME
[ -f /etc/sysconfig/network ] && sed -i.hebackup  s/HOSTNAME=".*"/HOSTNAME=\"\$HOSTNAME\"/ /etc/sysconfig/network
/bin/hostname \$HOSTNAME
[ -f /etc/my.resolv.conf ] && cp /etc/my.resolv.conf /etc/resolv.conf
[ -f /etc/my.hosts ] && cp /etc/my.hosts /etc/hosts
exit 0
EOF
chmod +x  /etc/init.d/hostname_vps
update-rc.d hostname_vps defaults 09

/etc/hosts anpassen

bearbeite die Datei /etc/hosts

/etc/hosts Beispiel
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
fe00::0         ip6-localnet
ff00::0         ip6-mcastprefix
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

# Auto-generated hostname. Please do not remove this comment.
#16.123.133.147 lvps16-123-133-147.dedicated.hosteurope.de lvps16-123-133-147
16.123.133.147 deine.domaine.tld deine

Erstelle eine Kopie

root
cp /etc/hosts /etc/my.hosts

Somit wird /etc/init.d/hostname_vps beim nächsten Start hosts durch my.hosts ersetzt.

/etc/resolv.conf (optional)

bearbeite die datei und kopiere sie nach /etc/my.resolv.conf

root
cp /etc/resolv.conf /etc/my.resolv.conf

Testen

root
reboot

nach dem nächsten login prüfen ob alles geklappt hat

root
hostname -f
#Ausgabe: deine.domaine.tld
hostanme -a
#Ausgabe: deine

cat /etc/hosts
#Ausgabe der Inhalt von my.hosts (Deine Anpassungen)

cat /etc/resolv.conf
#Ausgabe der Inhalt von my.resolv.conf (Deine Anpassungen)

Alles OK? Dann kanns mit der Installation von ISPConfig3 losgehen. Eines noch vorweg: Der Host wird viel speicher benötigen, wenn alles laufen soll. So verbraucht z.B. der Host nach allen Installtion ca. 700MB. Das meiste geht auf clamav zurück. Wenn Du nur 1GB Ram hast, überdenke Deine Entscheidung oder lasse die CLAMAV weg... Entscheide selber!

Alle nötigen Programme installieren

Vorbereitung

root
apt-get update; apt-get dist-upgrade -y

NTP (Network Time Protokoll)

Wird benötigt um die Serverzeit aktuell zuhalten

root
apt-get install ntp ntpdate

MySQL

Wird für ISPConfig3 benötigt

root
apt-get install mysql-client mysql-server
Fragen während der Installation
Neues Passwort für den MySQL »root«-Benutzer: Gebe ein Passwort ein
Wiederholen Sie das Passwort für den MySQL »root«-Benutzer: Gebe ein Passwort ein

MySQL lauscht nun nur localhost (127.0.0.1) das ist für mich auch gut so. Wer allerdings den Port auf machen möchte muss in der Datei /etc/mysql/my.cnf die Zeile bind-address = 127.0.0.1 mit # auskommentieren und dann den MySQL mit /etc/init.d/mysql restart neu starten.

Postfix (Mail-System)

Wir ersetzen exim4 durch postfix

Basis-System

root
apt-get install postfix postfix-mysql postfix-doc  getmail4 binutils
Fragen während der Installation
Allgemeine Art der Konfiguration: Internet-Site
System-E-Mail-Name: deine.domaine.tld
root
apt-get remove --purge "exim4*"

dovecot (IMAP und POP3)

root
apt-get install dovecot-imapd dovecot-pop3d

Spamassassin (Spamfiler)

root
apt-get install spamassassin

Spamassassin wird später über amavis bei bedarf aufgerufen somit können wir den Dienst stoppen (läuft eh nicht wegen /etc/default/spamassassin)

root
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove

clamav (Virenscanner)

root
apt-get install clamav clamav-daemon zoo zip unzip bzip2 arj nomarch lzop cabextract clamav-docs

Amavisd-new - Schnittstelle zwischen MTA, Spamfilter und Virenscanner

root
apt-get install amavisd-new apt-listchanges libnet-ldap-perl libauthen-sasl-perl libio-socket-ssl-perl daemon libio-string-perl  libnet-ident-perl

apache2, PHP5, FCGI, suExec, Pear und mcrypt

root
apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils \
libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap 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-ruby libexpat1 ssl-cert

Dann aktivieren wir die apache-Module suexec, rewrite, ssl, actions und include

root
a2enmod suexec rewrite ssl actions include

Wenn noch WebDAV genutzt werden soll

root
a2enmod dav_fs dav auth_digest

Danach startest Du Apache neu:

root
/etc/init.d/apache2 restart

PurePFT und Quota

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

Überprüfe in der Datei /etc/default/pure-ftpd-common 2 Zeilen:

/etc/default/pure-ftpd-common
...
STANDALONE_OR_INETD=standalone
...
VIRTUALCHROOT=true
...

 

Sicheit

rkhunter

root
apt-get install rkhunter

fail2ban

root
apt-get install fail2ban

Erstelle die Datei /etc/fail2ban/jail.local und trage folgendes ein:

/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

 

Nun noch die Datei /etc/fail2ban/filter.d/pureftpd.conf erstellen:

/etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@<HOST>\) \[WARNING\] Authentication failed for user.*
ignoreregex =

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

/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 =


Jetzt noch fail2ban neustarten

root
/etc/init.d/fail2ban restart

Was passiert. Versucht sich jemand einzuloggen und und hat in den letzten 5 Minuten 5 Fehlversuche, wird eine iptables-Regel angelegt und die betreffende IP-Adresse wird für 5 Minuten geblockt. Weiter Einstellung können unter /etc/fail2ban ersehen und geändert werden.

Sonstiges

DNSutils und Statiskauswertung apache

root
apt-get install dnsutils vlogger webalizer awstats geoip-bin geoip-database

Kommentiere ALLE Zeilen in /etc/cron.d/awstats aus

/etc/cron.d/awstats
#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Webgui für MySQL und E-Mail (phpmyadmin und roundcube)

root
apt-get install wngerman phpmyadmin roundcube roundcube-mysql
Fragen aus der Installation
Webserver, die automatisch konfiguriert werden sollen: apache2
phpmyadmin: Konfigurieren der Datenbank für phpmyadmin mit dbconfig-common? Nein
roundcube: Konfigurieren der Datenbank für phpmyadmin mit dbconfig-common? JA
roundcube: Datenbanktyp: mysql

Roundcube Konfigurieren

/etc/apache2/conf.d die 2 Zeilen mit Alias am Anfang auskommentieren

root
/etc/init.d/apache2 restart

Teste ob Seite aufgeht http://deine.domain/roundcube (logge dich noch nicht ein)

JailKit installieren

JailKit wird nur benötigt, wenn Du ssh-Benutzer chrooten möchtest.

make und Co installieren

root
apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper

JailKit installieren

root
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./debian/rules binary
cd ..
dpkg -i jailkit_2.14-1_*.deb
rm -rf jailkit-2.14*

Installation von ISPConfig3

root
cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/
php -q install.php

 

Fragen aus der Installation
Select language (en,de) [en]: en
Installation mode (standard,expert) [standard]: expert
Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [deine.domaine.tld]: deine.domaine.tld
MySQL server hostname [localhost]: localhost
MySQL root username [root]: root
MySQL root password []: Dein Gehmeines SQLRoot passwort
MySQL database to create [dbispconfig]: dbispconfig
MySQL charset [utf8]: utf8
Shall this server join an existing ISPConfig multiserver setup (y,n) [n]: n
Configure Mail (y,n) [y]: y
Configure Jailkit (y,n) [y]: y
Configure FTP Server (y,n) [y]: y
Configure DNS Server (y,n) [y]: y
Configure Apache Server (y,n) [y]: y
Configure Firewall Server (y,n) [y]: y
Install ISPConfig Web Interface (y,n) [y]: y
ISPConfig Port [8080]: 8080
Enable SSL for the ISPConfig web interface (y,n) [y]: y

So nun schnell Web-Console öffnen und Passwort ändern, bevor es ein anderer tut

1. Aufruf

https://IP:8080 oder https://deine.Domaine.tld:8080
Username admin
password admin
Klicke auf den Reiter Tools und dann auf Password and Language (Linke Seite) Vergebe ein neues Passwort Sicher sollte es sein wink
Bevor Du nun weitermachst erstelle Mindestens einen Client

Nacharbeit

Mails von Dynamischen IP verweigern (SPAM)

ersetze die Zeile in /etc/postfix/main.cf

/etc/postfix/main.cf
smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf

durch

/etc/postfix/main.cf
smtpd_sender_restrictions = reject_rbl_client sbl-xbl.spamhaus.org, reject_rbl_client cbl.abuseat.org, reject_non_fqdn_sender, reject_unknown_sender_domain, check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf

Postfix neu starten:

root
/etc/init.d/postfix restart

Bugfixes II

Achte darauf, dass in /etc/apache2/sites-enabled die default an 1. Stelle steht. Ich hatte dadurch etwas probleme. ein

root
mv /etc/apache2/sites-enabled/0000-default /etc/apache2/sites-enabled/0-default

löst das Problem.

Weiterführende links

Dokumentation

spam und antivirus deaktivieren

port 587 (submission) in postfix aktivieren

Roundcube Plugins

Roundcube plugins
Roundcube plugins svn