GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Panels

Virtuelle Multiserver-Umgebung mit dedizierten Web- und MySQL-, E-Mail- und DNS-Servern auf Debian Squeeze mit ISPConfig 3

Virtuelle Multiserver-Umgebung mit dediziertem Web &MySQL, E-Mail- und DNS-Server auf Debian Squeeze mit ISPConfig 3

Version 1.0
Autor:Michel Käser

Dieses Tutorial beschreibt, wie Sie einen einzelnen dedizierten Server als virtuelle Multiserver-Umgebung mit OpenVZ mit dedizierten Web- und MySQL-, E-Mail- und DNS-Servern auf Debian Squeeze einrichten können. Außerdem erfahren Sie, wie Sie all diese Server warten. Außerdem erfahren Sie, wie Sie einige sehr nützliche Pakete auf allen installieren, wie Sie sie schützen und überwachen können.

Am Ende haben Sie eine voll funktionsfähige virtuelle Multiserver-Umgebung, bereit für Shared Hosting.

Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!

1 Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie Folgendes:

  • ein dedizierter Server
  • mindestens 5 IPs
  • viel Zeit

2 Vorbemerkung

In diesem Tutorial verwende ich diesen dedizierten Server:http://www.hetzner.de/hosting/produkte_rootserver/ex4 mit dem Flexi-Pack und einem zusätzlichen /28-Subnetz (14 IPs).

Das Ziel ist, diese Server zu haben:

  • Typ:Knoten
  • Hardware:Dediziert
  • Hostname:root.example.tld
  • 192.168.1.1
  • Typ:Behälter
  • Hardware:Virtuell
  • Hostname:web.example.tld
  • 192.168.1.2
  • Typ:Behälter
  • Hardware:Virtuell
  • Hostname:mail.example.tld
  • 192.168.1.3
  • Typ:Behälter
  • Hardware:Virtuell
  • Hostname:ns1.example.tld
  • 192.168.1.4
  • Typ:Behälter
  • Hardware:Virtuell
  • Hostname:ns2.example.tld
  • 192.168.1.5

3 Das Basissystem

Ich nehme an, Sie haben denselben dedizierten Server wie ich genommen. Über das Hetzner Web-Interface können Sie eine Reihe von Distributionen installieren. Nehmen Sie das minimale Debian 6.0 64-Bit.

Dadurch wird das Basissystem für Sie installiert und Sie müssen es nicht selbst konfigurieren. Sie erhalten auch das Root-Passwort.

4 Installation von OpenVZ + OVZ Web Panel

Sobald Ihr Server bereit ist, melden Sie sich mit den erhaltenen Anmeldeinformationen an. Wir werden zuerst ein Update/Upgrade durchführen:

apt-get update &&apt-get -y upgrade &&apt-get -y dist-upgrade

Dadurch wird unser Server auf die neueste Version aktualisiert.

Wir installieren einige zusätzliche Pakete nach:

apt-get -y install nano wget ntp ntpdate

4.1 OpenVZ installieren

Wir wollen nun OpenVZ installieren, die Basis für unsere virtuelle Multiserver-Umgebung.

Ein OpenVZ-Kernel und die vzctl-, vzquota- und vzdump-Pakete sind in den Debian Squeeze-Repositories verfügbar, sodass wir sie wie folgt installieren können:

apt-get install linux-image-openvz-amd64 vzctl vzquota vzdump

Erstellen Sie einen symbolischen Link von /var/lib/vz nach /vz, um Abwärtskompatibilität zu gewährleisten:

ln -s /var/lib/vz /vz

Öffnen Sie /etc/sysctl.conf und vergewissern Sie sich, dass Sie die folgenden Einstellungen darin haben:

nano /etc/sysctl.conf

[...]
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eth0.proxy_arp=1
[...]

Wenn Sie /etc/sysctl.conf ändern mussten, führen Sie

aus

sysctl -p

danach.

Der folgende Schritt ist wichtig, wenn die IP-Adressen Ihrer virtuellen Maschinen aus einem anderen Subnetz stammen als die IP-Adresse des Hostsystems. Wenn Sie dies nicht tun, funktioniert das Netzwerk in den virtuellen Maschinen nicht!

Öffnen Sie /etc/vz/vz.conf und setzen Sie NEIGHBOUR_DEVS auf all:

nano /etc/vz/vz.conf

[...]
# Controls which interfaces to send ARP requests and modify APR tables on.
NEIGHBOUR_DEVS=all
[...]

Starten Sie abschließend das System neu:

Neustart

Wenn Ihr System ohne Probleme neu startet, ist alles in Ordnung!

Ausführen

uname -r

und Ihr neuer OpenVZ-Kernel sollte erscheinen:

[email protected]:~# uname -r
2.6.32-5-openvz-amd64

Da Hetzner /home auf einer separaten Festplatte mountet, können wir es als OpenVZ-Backup-Speicherort verwenden. Führen Sie dazu Folgendes aus:

rm -rf /var/lib/vz/dump
ln -s /home/backup/vz /var/lib/vz/dump

Da wir fail2ban in unseren virtuellen Containern verwenden werden, müssen wir einige IPTables-Unterstützung für sie aktivieren. Dazu bearbeiten wir die Datei /etc/vz/vz.conf:

nano /etc/vz/vz.conf

Suchen Sie die Zeile, die mit IPTABLES beginnt, und kommentieren Sie sie (#). Fügen Sie danach Folgendes ein:

[...]
IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state"

Als nächstes aktivieren Sie das Zustandsmodul im Kernel:

modprobe xt_state

4.2 Installieren des OVZ-Webpanels

Das OpenVZ Web Panel ist ein webbasiertes GUI-Frontend zur Steuerung der Hardware und virtueller Server mit der OpenVZ-Virtualisierungstechnologie.

Der einfachste Weg, OpenVZ Web Panel zu installieren, ist die Ausführung des folgenden Befehls:

wget -O - http://ovz-web-panel.googlecode.com/svn/installer/ai.sh | sh

Nach der Installation sollte das Panel unter der folgenden URL verfügbar sein:

http://<192.168.1.1>:3000

Die Anmeldeinformationen des Standardadministrators lauten:admin/admin. Vergessen Sie nicht, das Standardkennwort zu ändern.

Virtuelle Multiserver-Umgebung mit dedizierten Web- und MySQL-, E-Mail- und DNS-Servern auf Debian Squeeze mit ISPConfig 3 - Seite 2

5 Erstellen der virtuellen Server

Wir werden jetzt das OVZ Web Panel verwenden, um unsere virtuellen Server zu erstellen. Melden Sie sich im Panel an und fügen Sie Ihre IPs unter IP-Adressen hinzu. Klicken Sie dann auf localhost und OS Templates.

Wir müssen jetzt eine Vorlage für unsere virtuellen Server herunterladen. Klicken Sie dazu auf Neues Betriebssystem-Template installieren -> Beigesteuert und wählen Sie debian-6.0-amd64-minimal.

aus

Gehen Sie nun zurück zu localhost und klicken Sie auf Virtuellen Server erstellen. Füllen Sie die Felder wie folgt aus:

  • Server-ID (VEID):eine Zahl (ich würde den letzten Teil Ihrer IP wählen, also 2 für den ersten)
  • OS-Template:Recht bereits ausgewählt
  • Servervorlage:unbegrenzt
  • IP-Adresse:192.168.1.2
  • Hostname:web.example.tld
  • DNS-Server:8.8.4.4 8.8.8.8 (das sind die DNS von Google)
  • Lassen Sie den Rest wie er ist und weisen Sie Speicherplatz, RAM und CPU zu wie Sie wollen...

Wiederholen Sie diesen Schritt für alle Ihre virtuellen Server (zuletzt 4 mal:Web, Mail, 2x DNS).

5.1 Vorbereiten der virtuellen Server

Sie sollten sich jetzt bei jedem einzelnen virtuellen Server anmelden und diese Befehle ausführen:

apt-get update &&apt-get -y upgrade &&apt-get -y dist-upgrade
apt-get -y install nano wget ntp ntpdate

Dadurch werden sie auf die neueste Version aktualisiert und einige fehlende Pakete installiert.

6 Installation der dedizierten Server

6.1 Installation des Web-/DB-Servers

Bearbeiten Sie die Hosts-Datei und fügen Sie die IP-Adressen und Hostnamen für alle Server hinzu. Die Hostnamen und IP-Adressen müssen an Ihr Setup angepasst werden.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Legen Sie den Hostnamen des Servers fest:

echo web.example.tld> /etc/hostname
/etc/init.d/hostname.sh start

Installieren Sie den MySQL-Server. Auf jedem Server ist eine MySQL-Serverinstanz erforderlich, da ISPConfig sie verwendet, um die Konfiguration zwischen den Servern zu synchronisieren.

apt-get -y install mysql-client mysql-server

Geben Sie das neue Passwort für MySQL ein, wenn Sie vom Installationsprogramm dazu aufgefordert werden.

Wir möchten, dass MySQL auf allen Schnittstellen auf dem Master-Server lauscht, nicht nur auf localhost, deshalb bearbeiten wir /etc/mysql/my.cnf und kommentieren die Zeile bind-address =127.0.0.1:

aus

nano /etc/mysql/my.cnf

[...]

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1

[...]

Starten Sie dann MySQL neu:

/etc/init.d/mysql Neustart

Installieren Sie nun Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear und mcrypt wie folgt:

apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert 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 libopenssl-ruby libapache2-mod-ruby sudo zip wget

Sie sehen die folgende Frage:

Webserver zur automatischen Neukonfiguration:<-- apache2

Führen Sie dann den folgenden Befehl aus, um die Apache-Module „suexec“, „rewrite“, „ssl“, „actions“, „headers“, „expires“ und „include“ zu aktivieren:

a2enmod suexec rewrite SSL-Aktionen enthalten Ruby dav_fs dav auth_digest Header läuft ab

PureFTPd kann mit dem folgenden Befehl installiert werden:

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

Bearbeiten Sie die Datei /etc/default/pure-ftpd-common...

vi /etc/default/pure-ftpd-common

... und stellen Sie sicher, dass virtualchroot auf VIRTUALCHROOT=true gesetzt ist:

[...]
VIRTUALCHROOT=true
[...]

Jetzt konfigurieren wir PureFTPd so, dass FTP- und TLS-Sitzungen zugelassen werden. FTP ist ein sehr unsicheres Protokoll, da alle Passwörter und alle Daten im Klartext übertragen werden. Durch die Verwendung von TLS kann die gesamte Kommunikation verschlüsselt werden, wodurch FTP viel sicherer wird.

Wenn Sie FTP- und TLS-Sitzungen zulassen möchten, führen Sie

aus

echo 1> /etc/pure-ftpd/conf/TLS

Um TLS verwenden zu können, müssen wir ein SSL-Zertifikat erstellen. Ich erstelle es in /etc/ssl/private/, also erstelle ich zuerst dieses Verzeichnis:

mkdir -p /etc/ssl/private/

Anschließend können wir das SSL-Zertifikat wie folgt generieren:

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

Ländername (2-Buchstaben-Code) [AU]:<-- Geben Sie Ihren Ländernamen ein (z. B. "DE").
Staats- oder Provinzname (vollständiger Name) [Some-State]:<-- Geben Sie Ihren Staat ein oder Provinzname.
Ortsname (zB Stadt) []:<-- Geben Sie Ihre Stadt ein.
Organisationsname (zB Firma) [Internet Widgits Pty Ltd]:<-- Geben Sie Ihren Organisationsnamen ein (z. B. der Name Ihres Unternehmens).
Name der Organisationseinheit (z. B. Abteilung) []:<-- Geben Sie den Namen Ihrer Organisationseinheit ein (z. B. "IT-Abteilung").
Allgemeiner Name (z. B. IHR Name) []:<-- Geben Sie den vollständig qualifizierten Domänennamen des Systems ein (z. B. "web.example.tld").
E-Mail-Adresse []:<-- Geben Sie Ihre E-Mail-Adresse ein.

Ändern Sie die Berechtigungen des SSL-Zertifikats:

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

vlogger, webalizer und awstats installieren:

apt-get -y vlogger webalizer awstats installieren

Danach /etc/cron.d/awstats öffnen...

vi /etc/cron.d/awstats

... und kommentieren Sie beide Cron-Jobs in dieser Datei aus:

#*/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

Installieren Sie Jailkit:Jailkit wird nur benötigt, wenn Sie SSH-Benutzer chrooten möchten. Es kann wie folgt installiert werden (Wichtig:Jailkit muss vor ISPConfig installiert werden - es kann nicht nachträglich installiert werden!):

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

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*

Fail2ban installieren:Dies ist optional, wird aber empfohlen, da der ISPConfig-Monitor versucht, das Protokoll anzuzeigen:

apt-get install fail2ban

Damit fail2ban PureFTPd überwacht, erstellen Sie die Datei /etc/fail2ban/jail.local:

vi /etc/fail2ban/jail.local

[pureftpd]

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

Erstellen Sie dann die folgende Filterdatei:

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

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

Danach fail2ban neu starten:

/etc/init.d/fail2ban Neustart

Als nächstes werden wir ISPConfig 3 installieren. Um die Download-URL der neuesten stabilen Version von ISPConfig 3 zu erhalten, besuchen Sie bitte die ISPConfig-Website:http://www.ispconfig.org/ispconfig-3/download/

Dieser Server ist der Master-Server in unserem Setup, auf dem die ISPConfig-Systemsteuerungsschnittstelle ausgeführt wird. Damit sich die anderen MySQL-Instanzen während der Installation mit der MySQL-Datenbank auf diesem Knoten verbinden können, müssen wir MySQL-Root-Benutzereinträge in der Master-Datenbank für jeden Hostnamen und jede IP-Adresse des Slave-Servers hinzufügen. Der einfachste Weg, dies zu tun, ist die Verwendung des webbasierten phpmyadmin-Administrationstools, das wir bereits installiert haben. Öffnen Sie die URL http://192.168.1.2/phpmyadmin in einem Webbrowser, melden Sie sich als MySQL-Root-Benutzer an und führen Sie diese MySQL-Abfragen aus:

ERSTELLEN SIE BENUTZER 'root'@'192.168.1.3' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'192.168.1.3' IDENTIFIZIERT DURCH 'myrootpassword' MIT GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

ERSTELLEN SIE BENUTZER 'root'@'192.168.1.4' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'192.168.1.4' IDENTIFIZIERT DURCH 'myrootpassword' MIT GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

ERSTELLEN SIE BENUTZER 'root'@'192.168.1.5' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * AN 'root'@'192.168.1.5' IDENTIFIZIERT DURCH 'myrootpassword' MIT GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

ERSTELLEN SIE BENUTZER 'root'@'mail.example.tld' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHREN SIE ALLE PRIVILEGIEN AUF * . * TO 'root'@'mail.example.tld' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

ERSTELLE BENUTZER 'root'@'ns1.example.tld' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHRE ALLE PRIVILEGIEN AUF * . * AN 'root'@'ns1.example.tld' IDENTIFIZIERT DURCH 'myrootpassword' MIT GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

ERSTELLE BENUTZER 'root'@'ns2.example.tld' IDENTIFIZIERT DURCH 'myrootpassword';
GEWÄHRE ALLE PRIVILEGIEN AUF * . * AN 'root'@'ns2.example.tld' IDENTIFIZIERT DURCH 'myrootpassword' MIT GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Ersetzen Sie in den obigen SQL-Befehlen die IP-Adressen (192.168.1.3 - 192.168.1.5) durch die IP-Adressen Ihrer Server und ersetzen Sie mail.example.tld, ns1.example.tld und ns2.example.tld durch die Hostnamen Ihrer server und myrootpassword mit dem gewünschten Root-Passwort.

Klicken Sie auf die Schaltfläche Berechtigungen neu laden oder starten Sie MySQL neu. Schließen Sie dann phpmyadmin.

Gehen Sie zurück zur Shell von web.example.tld und laden Sie die neueste stabile Version von ISPConfig 3 herunter:

cd /tmp
wgethttp://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/ installieren/

Starten Sie dann das Installationsskript:

php -q install.php

Sprachauswahl (en,de) [en]:<-- de
Installationsmodus (standard,expert) [standard]:<-- expert
Vollqualifizierter Hostname (FQDN) des Servers, zB server2 .domain.tld [web.example.tld]:<-- web.example.tld
Hostname des MySQL-Servers [localhost]:<-- localhost
MySQL-Root-Benutzername [root]:<-- root
MySQL-Root-Passwort []:<-- Geben Sie hier Ihr MySQL-Root-Passwort ein
MySQL-Datenbank zum Erstellen von [dbispconfig]:<-- dbispconfig
MySQL-Zeichensatz [utf8]:<-- utf8
Soll dieser Server einem bestehenden ISPConfig-Multiserver-Setup beitreten (j,n) [n]:<-- n
Mail konfigurieren (j,n) [j]:<-- n
Jailkit konfigurieren (y,n) [y]:<-- y
FTP-Server konfigurieren (y,n) [y]:<-- y
DNS-Server konfigurieren (y,n) [y]:<-- n
Apache-Server konfigurieren (y,n) [y]:<-- y
Firewall-Server konfigurieren (y,n) [y]:<--n
Installieren Sie ISPConfig Web -Interface (y,n) [y]:<--y
ISPConfig Port [8080]:<-- 8080
SSL für die ISPConfig-Weboberfläche aktivieren (y,n) [y]:<-- y
Landesname (2-Buchstaben-Code) [AU]:<-- ENT ER
Name des Staates oder der Provinz (vollständiger Name) [Some-State]:<-- ENTER
Ortsname (z. B. Stadt) []:<-- ENTER
Name der Organisation (z. B. Unternehmen) [Internet Widgits Pty Ltd]:<-- ENTER
Name der Organisationseinheit (z. B. Abschnitt) []:<-- ENTER
Gemeinsamer Name (z. B. IHR Name) []:<-- ENTER
E-Mail-Adresse []:<-- ENTER
Ein Challenge-Passwort []:<-- ENTER
Ein optionaler Firmenname []:<-- ENTER

Bereinigen Sie die Installationsverzeichnisse:

cd /tmp
rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

6.2 Installation des Mailservers

Bearbeiten Sie die Hosts-Datei und fügen Sie die IP-Adressen und Hostnamen für alle Server hinzu. Die Hostnamen und IP-Adressen müssen an Ihr Setup angepasst werden.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Legen Sie den Hostnamen des Servers fest:

echo mail.example.tld> /etc/hostname
echo mail.example.tld> /etc/mailname
/etc/init.d/hostname.sh start

Installieren Sie Postfix, Dovecot und MySQL mit einem einzigen Befehl:

apt-get -y postfix installieren postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d

Geben Sie das neue Passwort für mysql ein, wenn Sie vom Installer dazu aufgefordert werden, und beantworten Sie die nächsten Fragen wie unten beschrieben:

Allgemeine Art der Konfiguration? <-- Internetseite
E-Mail-Name? <-- mail.example.tld

Um amavisd-new, SpamAssassin und ClamAV zu installieren, führen wir Folgendes aus:

apt-get -y installiere 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

Wenn Sie Mailinglisten auf Ihrem Server verwenden möchten, installieren Sie mailman. Dieser Schritt ist optional. Mailman benötigt einen Apache-Webserver, wenn Sie also keine Apache-Instanz auf Ihrem Mailserver ausführen möchten, installieren Sie Mailman nicht.

apt-get -y Mailman installieren

Der apt-Installer für Mailman fordert Sie dann auf, die Sprachen für die Mailingliste auszuwählen. Aktivieren Sie alle Sprachen, die Sie für Mailman verwenden möchten. Erstellen Sie als Nächstes die Mailingliste "mailman".

Mailman neu auflisten

und geben Sie die E-Mail-Adresse und das neue Passwort für den Mailinglisten-Administrator ein. Das ist der letzte Schritt der Mailman-Installation. Der nächste Befehl zum Installieren von PHP muss auf jedem Server ausgeführt werden, unabhängig davon, ob Sie Mailman installiert haben oder nicht.

Installieren Sie dann die Befehlszeilenversion von PHP, um PHP-basierte Shell-Skripte für ISPConfig ausführen zu können:

apt-get -y install php5-cli php5-mysql php5-mcrypt mcrypt

Fail2ban installieren:Dies ist optional, wird aber empfohlen, da der ISPConfig-Monitor versucht, das Protokoll anzuzeigen:

apt-get install fail2ban

Damit fail2ban PureFTPd und Dovecot überwacht, erstellen Sie die Datei /etc/fail2ban/jail.local:

vi /etc/fail2ban/jail.local

[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

Erstellen Sie dann die folgende Filterdatei:

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 =

Danach fail2ban neu starten:

/etc/init.d/fail2ban Neustart

Jetzt werde ich ISPConfig 3 auf diesem Server installieren. Um die Download-URL der neuesten stabilen Version von ISPConfig 3 zu erhalten, besuchen Sie bitte die ISPConfig-Website:http://www.ispconfig.org/ispconfig-3/download/

Laden Sie die neueste stabile Version von ISPConfig 3 herunter:

cd /tmp
wgethttp://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/ installieren/

Starten Sie dann das Installationsskript:

php -q install.php

Sprachauswahl (en,de) [en]:<-- de
Installationsmodus (standard,expert) [standard]:<-- expert
Vollqualifizierter Hostname (FQDN) des Servers, zB server1 .domain.tld [mail.example.tld]:<-- mail.example.tld
Hostname des MySQL-Servers [localhost]:<-- localhost
MySQL-Root-Benutzername [root]:<-- root
MySQL-Root-Passwort []:<-- Geben Sie hier Ihr MySQL-Root-Passwort ein
MySQL-Datenbank zum Erstellen von [dbispconfig]:<-- dbispconfig
MySQL-Zeichensatz [utf8]:<-- utf8
Soll dieser Server einem bestehenden ISPConfig-Multiserver-Setup beitreten (y,n) [n]:<-- y
Hostname des MySQL-Master-Servers []:<-- web.example.tld
MySQL-Master Server-Root-Benutzername [root]:<-- root
MySQL-Master-Server-Root-Passwort []:<-- Geben Sie hier das Root-Passwort des Master-Servers ein
MySQL-Master-Server-Datenbankname [dbispconfig]:<- - dbispconfig
Mail konfigurieren (y,n) [y]:<-- y

Country Name (2-Buchstaben-Code) [AU]:<-- DE (Geben Sie hier den ISO-Ländercode Ihres Wohnortes ein)
State or Province Name (vollständiger Name) [Some-State]:<-- Niedersachsen (Enter das Bundesland, in dem Sie hier leben)
Ortsname (zB Stadt) []:<-- Lüneburg (Geben Sie hier die Stadt ein)
Organisationsname (zB Firma) [Internet Widgits Pty Ltd]:<-- ENTER
Name der Organisationseinheit (z. B. Abschnitt) []:<-- ENTER
Allgemeiner Name (z. B. IHR Name) []:<-- ENTER
E-Mail-Adresse []:<-- EINGABETASTE

Jailkit konfigurieren (y,n) [y]:<-- n
FTP-Server konfigurieren (y,n) [y]:<-- n
DNS-Server konfigurieren (y,n) [y] :<-- n
Apache-Server konfigurieren (y,n) [y]:<-- n
Firewall-Server konfigurieren (y,n) [y]:<--n
Installieren ISPConfig Web-Interface (y,n) [y]:<--n

Lauf...

rm -f /var/www/ispconfig

... um den ISPConfig-Interface-Link im /var/www-Verzeichnis zu entfernen.

Bereinigen Sie die Installationsverzeichnisse:

rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

Virtuelle Multiserver-Umgebung mit dedizierten Web- und MySQL-, E-Mail- und DNS-Servern auf Debian Squeeze mit ISPConfig 3 - Seite 3

6.3 Installation des primären DNS-Servers

Bearbeiten Sie die Hosts-Datei und fügen Sie die IP-Adressen und Hostnamen für alle Server hinzu. Die Hostnamen und IP-Adressen müssen an Ihr Setup angepasst werden.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Legen Sie den Hostnamen des Servers fest:

echo ns1.example.tld> /etc/hostname
/etc/init.d/hostname.sh start

MySQL-Client und -Server installieren:

apt-get -y install mysql-client mysql-server

Geben Sie das neue Passwort für MySQL ein, wenn Sie vom Installationsprogramm dazu aufgefordert werden.

Installieren Sie dann die Befehlszeilenversion von PHP, um PHP-basierte Shell-Skripte für ISPConfig ausführen zu können:

apt-get -y install php5-cli php5-mysql php5-mcrypt mcrypt

Fail2ban installieren:Dies ist optional, wird aber empfohlen, da der ISPConfig-Monitor versucht, das Protokoll anzuzeigen:

apt-get install fail2ban

Installieren Sie den BIND-DNS-Server:

apt-get -y install bind9 dnsutils

Als nächstes installieren Sie ISPConfig 3 auf dem DNS-Server. Um die Download-URL der neuesten stabilen Version von ISPConfig 3 zu erhalten, besuchen Sie bitte die ISPConfig-Website:http://www.ispconfig.org/ispconfig-3/download/

Laden Sie die neueste stabile Version von ISPConfig 3 herunter:

cd /tmp
wgethttp://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/ installieren/

Starten Sie dann das Installationsskript:

php -q install.php

Sprachauswahl (en,de) [en]:<-- de
Installationsmodus (standard,expert) [standard]:<-- expert
Vollqualifizierter Hostname (FQDN) des Servers, zB server2 .domain.tld [ns1.example.tld]:<-- ns1.example.tld
Hostname des MySQL-Servers [localhost]:<-- localhost
MySQL-Root-Benutzername [root]:<-- root
MySQL-Root-Passwort []:<-- Geben Sie hier Ihr MySQL-Root-Passwort ein
MySQL-Datenbank zum Erstellen von [dbispconfig]:<-- dbispconfig
MySQL-Zeichensatz [utf8]:<-- utf8
Soll dieser Server einem bestehenden ISPConfig-Multiserver-Setup beitreten (y,n) [n]:<-- y
Hostname des MySQL-Master-Servers []:<-- web.example.tld
MySQL-Master Server-Root-Benutzername [root]:<-- root
MySQL-Master-Server-Root-Passwort []:<-- Geben Sie hier das Root-Passwort des Master-Servers ein
MySQL-Master-Server-Datenbankname [dbispconfig]:<- - dbispconfig
Mail konfigurieren (j,n) [j]:<-- n
Jailkit konfigurieren (j,n) [j]:<-- n
FTP-Server konfigurieren (j, n) [y]:<-- n
DNS-Server konfigurieren (y,n) [y]:<-- y
Konfigur e Apache Server (y,n) [y]:<-- n
Firewall Server konfigurieren (y,n) [y]:<--n
ISPConfig Web-Interface installieren (y,n) [y]:<--n

Lauf...

rm -f /var/www/ispconfig

... um den ISPConfig-Interface-Link im /var/www-Verzeichnis zu entfernen.

Bereinigen Sie die Installationsverzeichnisse:

rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

6.4 Installieren des sekundären DNS-Servers

Bearbeiten Sie die Hosts-Datei und fügen Sie die IP-Adressen und Hostnamen für alle Server hinzu. Die Hostnamen und IP-Adressen müssen an Ihr Setup angepasst werden.

nano /etc/hosts

127.0.0.1 localhost
192.168.1.2 web.example.tld
192.168.1.3 mail.example.tld
192.168.1.4 ns1.example.tld
192.168.1.5 ns2.example.tld

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Legen Sie den Hostnamen des Servers fest:

echo ns2.example.tld> /etc/hostname
/etc/init.d/hostname.sh start

MySQL-Client und -Server installieren:

apt-get -y install mysql-client mysql-server

Geben Sie das neue Passwort für MySQL ein, wenn Sie vom Installationsprogramm dazu aufgefordert werden.

Installieren Sie dann die Befehlszeilenversion von PHP, um PHP-basierte Shell-Skripte für ISPConfig ausführen zu können:

apt-get -y install php5-cli php5-mysql php5-mcrypt mcrypt

Fail2ban installieren:Dies ist optional, wird aber empfohlen, da der ISPConfig-Monitor versucht, das Protokoll anzuzeigen:

apt-get install fail2ban

Installieren Sie den BIND-DNS-Server:

apt-get -y install bind9 dnsutils

Als nächstes installieren Sie ISPConfig 3 auf dem DNS-Server. Um die Download-URL der neuesten stabilen Version von ISPConfig 3 zu erhalten, besuchen Sie bitte die ISPConfig-Website:http://www.ispconfig.org/ispconfig-3/download/

Laden Sie die neueste stabile Version von ISPConfig 3 herunter:

cd /tmp
wgethttp://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/ installieren/

Starten Sie dann das Installationsskript:

php -q install.php

Sprachauswahl (en,de) [en]:<-- de
Installationsmodus (standard,expert) [standard]:<-- expert
Vollqualifizierter Hostname (FQDN) des Servers, zB server2 .domain.tld [ns2.example.tld]:<-- ns2.example.tld
Hostname des MySQL-Servers [localhost]:<-- localhost
MySQL-Root-Benutzername [root]:<-- root
MySQL-Root-Passwort []:<-- Geben Sie hier Ihr MySQL-Root-Passwort ein
MySQL-Datenbank zum Erstellen von [dbispconfig]:<-- dbispconfig
MySQL-Zeichensatz [utf8]:<-- utf8
Soll dieser Server einem bestehenden ISPConfig-Multiserver-Setup beitreten (y,n) [n]:<-- y
Hostname des MySQL-Master-Servers []:<-- web.example.tld
MySQL-Master Server-Root-Benutzername [root]:<-- root
MySQL-Master-Server-Root-Passwort []:<-- Geben Sie hier das Root-Passwort des Master-Servers ein
MySQL-Master-Server-Datenbankname [dbispconfig]:<- - dbispconfig
Mail konfigurieren (j,n) [j]:<-- n
Jailkit konfigurieren (j,n) [j]:<-- n
FTP-Server konfigurieren (j, n) [y]:<-- n
DNS-Server konfigurieren (y,n) [y]:<-- y
Konfigur e Apache Server (y,n) [y]:<-- n
Firewall Server konfigurieren (y,n) [y]:<--n
ISPConfig Web-Interface installieren (y,n) [y]:<--n

Lauf...

rm -f /var/www/ispconfig

... um den ISPConfig-Interface-Link im /var/www-Verzeichnis zu entfernen.

Bereinigen Sie die Installationsverzeichnisse:

rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

6.5 Anpassen der Servereinstellungen in ISPConfig

Melden Sie sich mit einem Webbrowser bei ISPConfig auf dem Master-Server an:

http://192.168.1.2:8080

Klicken Sie auf System> Serverdienste> web.example.tld und deaktivieren Sie alle Kontrollkästchen außer den Kontrollkästchen Webserver, Fileserver und DB-Server und klicken Sie auf Speichern.

Klicken Sie auf System> Serverdienste> mail.example.tld und deaktivieren Sie alle Kontrollkästchen außer dem Kontrollkästchen Mailserver und klicken Sie auf Speichern.

Klicken Sie auf System> Serverdienste> ns1.example.tld und deaktivieren Sie alle Kontrollkästchen außer dem Kontrollkästchen DNS-Server und klicken Sie auf Speichern.

Klicken Sie auf System> Server-Dienste> ns2.example.tld und deaktivieren Sie alle Kontrollkästchen außer dem Kontrollkästchen DNS-Server und wählen Sie ns1.example.tld in der Auswahlbox Ist Spiegel des Servers aus und klicken Sie auf Speichern.

6.6 Reverse-DNS einstellen

Da die meisten Mailserver nach einem gültigen Reverse-DNS-Eintrag suchen, müssen wir einen für unseren Mailserver einrichten. Hetzner ermöglicht uns dies in ihrem Webinterface:

Beachten Sie den Eintrag für IP 176.9.221.50. Für Sie sollten Sie unter IP 192.168.1.3 Folgendes eingeben:mail.example.tld

Virtuelle Multiserver-Umgebung mit dedizierten Web- und MySQL-, E-Mail- und DNS-Servern auf Debian Squeeze mit ISPConfig 3 - Seite 4

7 Erweitern unserer Server

Wir haben jetzt eine perfekt funktionierende Umgebung mit einem dedizierten Server, auf dem unsere virtuellen Server laufen. Es gibt jedoch viele Optimierungen, die wir an ihnen vornehmen können und sollten. Wir werden dies jetzt tun. Nicht dass alle davon optional sind, aber sehr zu empfehlen.

Die ersten Schritte können auf allen Servern wiederholt werden.

7.0.1 SSH mit Authentifizierungsschlüssel statt Passwort

Die Verwendung der SSH-Schlüsselauthentifizierung ist viel sicherer als ein Passwort, da Sie den privaten Schlüssel besitzen müssen, um auf den Server zuzugreifen. Wenn Sie noch keinen haben, erstellen Sie ein RSA-Schlüsselpaar (auf Ihrem lokalen Computer):

ssh-keygen

Generieren eines öffentlichen/privaten RSA-Schlüsselpaars.
Geben Sie die Datei ein, in der der Schlüssel gespeichert werden soll (/home/Benutzername/.ssh/id_rsa):Geben Sie die Passphrase ein (leer für keine Passphrase):
Geben Sie die gleiche Passphrase erneut ein:
Ihre Identifikation wurde in /home/username/.ssh/id_rsa gespeichert.
Ihr öffentlicher Schlüssel wurde in /home/username/.ssh/id_rsa.pub gespeichert.

Sobald der öffentliche Schlüssel auf dem Server installiert ist, wird der Zugriff ohne Passwortabfrage gewährt. SSH wird normalerweise mit einem Dienstprogramm namens ssh-copy-id geliefert, das einfach den Inhalt von ~/.ssh/id_rsa.pub des Clients zu ~/.ssh/authorized_keys des Servers hinzufügt:

ssh-copy-id -i .ssh/id_rsa.pub [email protected]

An diesem Punkt kann das Root-Konto auf dem Server für die Passwortauthentifizierung gesperrt werden:

Bitte versuchen Sie zuerst, mit dem Schlüssel auf den Server zuzugreifen, bevor Sie diesen Befehl ausführen!

passwd -l root

7.0.2 Installieren von Logwatch

Logwatch ist ein kleines Paket, das Ihnen detaillierte Berichte darüber sendet, was auf Ihrem Server passiert ist/läuft. Es ist absolut nützlich für die Überwachung.

apt-get -y install logwatch

Passen Sie dann seine Konfiguration an:

nano /usr/share/logwatch/default.conf/logwatch.conf

und setzen Sie diese Werte:

Output = mail
Format = text
MailTo = [email protected]
Detail = High
Service = All

Sie erhalten nun täglich eine E-Mail von Logwatch. Du wirst sehen, das ist großartig!

7.0.3 Aktivieren zusätzlicher fail2ban-Regeln

Fail2ban ist eine großartige Möglichkeit, unerwünschte Benutzer am Zugriff auf unsere Server zu hindern. Since we already have it installed on our Web &MySQL Server as well on our Mail Server, you can skip the first step on them. Run this on your node and both DNS servers:

apt-get -y install fail2ban

We now will tell fail2ban what services it should monitor and how to handle bad requests:

These have to be run on all servers (including the Web &MySQL server and the Mail server):

nano /etc/fail2ban/jail.local

and add the following to the file (do not replace already existing content!):

[ssh]
enables = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 3

[ssh-ddos]

enabled = true
port    = ssh
filter  = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 5

Fail2ban will now detect SSH break-in attemps and block them. Finally, restart fail2ban:

/etc/init.d/fail2ban restart

7.1 Extending the Node Server

7.1.1 Installing Ajenti

Ajenti is a nice server control panel. I primary use it for managing the firewall and because of the built in filemanager, console and terminal.

First we have to add it's repository to our sources.list:

nano /etc/apt/sources.list

and add:

deb http://repo.ajenti.org/debian main main

Afterwards you have to import it's Key:

wget http://repo.ajenti.org/debian/key -O- | sudo apt-key add -

You should now be able to access the CP via:http://192.168.1.1:8000. The default username/password is:admin

If you plan to use the built in terminal you have to install the Python PIL module:

apt-get -y install python-imaging

7.1.2 Installing Archey

This is very optional, however I like it. Archey will show you some nice information on login.

To install it, simply run:

apt-get install lsb-release scrot
cd /tmp
wget https://github.com/downloads/djmelik/archey/archey-0.2.8.deb
dpkg -i archey-0.2.8.deb
rm archey-0.2.8.deb
nano /etc/bash.bashrc

At the very end, add:archey.

7.2 Extending The Web/DB Server

These steps are only run on our Web/DB server.

7.2.1 Installing cURL

apt-get -y install curl php5-curl libcurl3-dev

7.2.2 Installing ionCube Loader

You should now be able to do this by yourself. Just download the correct version over at http://www.ioncube.com/loaders.php and follow its introductions.

7.2.3 Installing APC and other useful apps

In this section we will install apc (php accelarator), which is developed by the guys who develop php and some apps (htop, iptraf, logwatch, tiger).

apt-get -y install php-apc htop iptraf tiger

Edit /etc/php5/conf.d/apc.ini, so as to increase the memory cache:

nano /etc/php5/conf.d/apc.ini

And append the following line:

apc.shm_size=128

Finally restart Apache:

/etc/init.d/apache2 restart

With htop you can see system info in a better way than top, with iptraf you can see real time statistics for your connection and with tiger you can have yourself mailed with a periodically report of your system's security vulnerabilities (if any exists).

As a lot of scripts/apps send a lot of mails to user root, you can alias root's mail, to a more 'real' email address. So, after you set up a 'real' mail for your example.tld domain, you can edit the aliases and add an alias to root user:

nano /etc/aliases

and change the line

root:root

to something like

root:[email protected]

After this execute:

newaliases

If you want to install Drupal (or other cms) you will propably need uploadprogress and json. To accomplish their installation, do:

apt-get -y install php5-dev php-services-json
pecl install uploadprogress
touch /etc/php5/apache2/conf.d/uploadprogress.ini
nano /etc/php5/apache2/conf.d/uploadprogress.ini

And append the following line:

extension=uploadprogress.so

Finally restart Apache:

/etc/init.d/apache2 restart

7.2.4 Installing mod_security

Install the apache mod-security 2 module with apt from the Debian repositories:

apt-get -y install libapache-mod-security

Create the folder for the mod-security configuration files:

mkdir /etc/apache2/mod-security
chmod 600 /etc/apache2/mod-security

Download and unpack the mod-security rules:

cd /tmp
wget http://www.modsecurity.org/download/modsecurity-core-rules_2.5-1.6.1.tar.gz
tar fvx modsecurity-core-rules_2.5-1.6.1.tar.gz
mv *.conf /etc/apache2/mod-security/
ln -s /var/log/apache2 /etc/apache2/logs

Configure apache to load the activated mod-security rules:

nano /etc/apache2/conf.d/mod-security.conf
Include /etc/apache2/mod-security/*.conf

To enable mod-security, edit the file

nano /etc/apache2/mod-security/modsecurity_crs_10_config.conf

and remove the # in front of the line:

SecDefaultAction
"phase:2,log,deny,status:403,t:lowercase,t:replaceNulls,t:compressWhitespace"

Then reload Apache.

/etc/init.d/apache2 force-reload

Mod security will now start to block hack attempts to your websites and log the actions in the file /var/log/apache2/modsec_audit.log.

tail /var/log/apache2/modsec_audit.log

You will see very likely some falsely blocked URL's. To whitelist them, you can add the ID's of the rules that should not be used in the whitelist file.

Example:

nano /etc/apache2/mod-security/modsecurity_crs_99_whitelist.conf
SecRuleRemoveById 960015
SecRuleRemoveById 960016

7.2.5 MySQL Tuning

Download tuning-primer.sh and mysqltuner.pl. These will help you to improve mysql's configuration file.

cd /root/scripts
wget http://www.day32.com/MySQL/tuning-primer.sh
wget http://mysqltuner.com/mysqltuner.pl
chmod 700 tuning-primer.sh mysqltuner.pl

To execute them:

perl /root/scripts/mysqltuner.pl
/root/scripts/tuning-primer.sh

The scripts will ask some simple questions (user/pass) and will display in red colour, their suggestions for critical settings. You can use their suggestions to boost the performance of mysql-server.

7.2.6 Installing RoundCube

Following the above instructions you can install roundcube via apt-get. However following another logic (if you have the time and the courage) you can install roundcube in it's own subdomain, manually.

In "Perfect Server ...." you usually install Squirrelmai. However if you don't want it you can remove it:

apt-get remove squirrelmail
rm /etc/apache2/conf.d/squirrelmail.conf

Install roundcube. (You MUST have the mysql administrator's password before you proceed -- Let dbconfig-common configure the database. You will be asked some questions about the password of the db administrator and the password of the new user that will be created for roundcube. Answer those questions and continue:

apt-get -y install roundcube roundcube-mysql

Examle answers:
"Configure database for roundcube with dbconfig-common?" .... Answer Yes
"Database type to be used by roundcube:...Answer mysql
"Password of the database's administrativeuser:" ... Answer your-admin-DB-password
"MySQL application password for roundcube:" ... Answer the-password-you-want-to-give-to-the-roundcube-user
"Password confirmation:"... Answer the-password-you-want-to-give-to-the-roundcube-user

If something goes wrong you can always run:

dpkg-reconfigure roundcube-core

For more information, please see this post.

For everyone to be able to access his webmail (under his domain name) you have to create or edit the file /etc/apache2/conf.d/roundcube so as to set the alias to 'webmail'. If you want SSL you should include the last two directives (IfModule mod_rewrite.c) to have apache ALWAYS redirect to your SSL installation of ISPConfig.

nano /etc/apache2/conf.d/roundcube
# Those aliases do not work properly with several hosts on your apache server
# Uncomment them to use it or adapt them to your configuration
# Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce/www/
Alias /roundcube /var/lib/roundcube
Alias /webmail /var/lib/roundcube

# Access to tinymce files
<Directory "/usr/share/tinymce/www/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>

<Directory /var/lib/roundcube/>
Options +FollowSymLinks
# This is needed to parse /var/lib/roundcube/.htaccess. See its
# content before setting AllowOverride to None.
AllowOverride All
order allow,deny
allow from all
</Directory>

# Protecting basic directories:
<Directory /var/lib/roundcube/config>
Options -FollowSymLinks
AllowOverride None
</Directory>

<Directory /var/lib/roundcube/temp>
Options -FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
</Directory>

<Directory /var/lib/roundcube/logs>
Options -FollowSymLinks
AllowOverride None
Order allow,deny
Deny from all
</Directory>

<IfModule mod_rewrite.c>
<IfModule mod_ssl.c>
<Location /webmail>
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}:50443%{REQUEST_URI} [L]
</Location>
</IfModule>
</IfModule>

<IfModule mod_rewrite.c>
<IfModule mod_ssl.c>
<Location /roundcube>
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}:50443%{REQUEST_URI} [L]
</Location>
</IfModule>
</IfModule>

Edit /var/lib/roundcube/config/main.inc.php:

nano /var/lib/roundcube/config/main.inc.php

and SET some variables in the file (if this is the first time you edit the file the lines are 60 and 66):

auto_create_user = TRUE;
$rcmail_config['default_host'] = 'mail.example.tld';

If you will install the following plugin (the logger that helps fail2ban) you have to extend the list of plugins in the same file. Ifthe only plugin is the one that will be istalled right afterward you have to edit the line (42) as below:

$rcmail_config['plugins'] = array('fail2ban'); 

Install the roundcube logger plugin from http://mattrude.com/projects/roundcube-fail2ban-plugin/.

Basically you have to download the file (fail2ban.php) and paste it in the fail2ban folder in the plugins folder of roundcube. Finally you must have this file:  /usr/share/roundcube/plugins/fail2ban/fail2ban.php. Execute:

cd /usr/share/roundcube/plugins/
wget --no-check-certificate http://cloud.github.com/downloads/mattrude/rc-plugin-fail2ban/roundcube-fail2ban-plugin.1.1.tgz
tar -xvzf roundcube-fail2ban-plugin.1.1.tgz
touch /var/log/roundcube/userlogins
rm roundcube-fail2ban-plugin.1.1.tgz
chown www-data:www-data /var/log/roundcube/userlogins

This plugin will update the log file with each failed login attempt:/var/log/roundcube/userlogins

Don't forget to edit the link for the webmail in ISPConfig (System -> Interface Config -> (tab) Mail) and set it to /webmail. Lastly, restart apache.

/etc/init.d/apache2 restart

You can now access webmail at http://web.example.tld/webmail

Virtual Multiserver Environment With Dedicated Web &MySQL, Email &DNS Servers On Debian Squeeze With ISPConfig 3 - Page 5

Auf dieser Seite

  1. 7.2.7 Installing fail2ban
  2. 7.2.8 Installing mod_evasive With fail2ban Support
  3. 7.3 Extending the Mail Server
  4. 7.3.1 Enhanced e-mail SPAM protection
  5. 7.3.2 Installing Postgrey
  6. 7.4 Securing The Servers Using SSL
  • 8 Maintaining Our Servers
  • 9 Links/Credits/Sources
  • 7.2.7 Installing fail2ban

    Extend the jail.local file that falko suggests in ThePerfect Server - Debian Squeeze (Debian 6.0) With BIND &Courier [ISPConfig 3]:/etc/fail2ban/jail.local

    nano /etc/fail2ban/jail.local

    You have to append or edit the following:

    [roundcube]
    enabled = true
    port = http
    filter = roundcube
    logpath = /var/log/roundcube/userlogins
    maxretry = 5

    Last (and very important) don't forget to create the roundcube.conf file /etc/fail2ban/filter.d/roundcube.conf.

    nano /etc/fail2ban/filter.d/roundcube.conf

    with the following contents:

    [Definition]
    failregex = FAILED login for .*. from <HOST>
    ignoreregex =

    Restart fail2ban:

    /etc/init.d/fail2ban restart

    You can check that all jails are active with the command:

    iptables -L -n 

    7.2.8 Installing mod_evasive With fail2ban Support

    mod_evasive is an Apache module for handling DDoS attacks. We will install it and configure fail2ban to auto ban/unban reported attacks.

    apt-get install libapache2-mod-evasive
    mkdir /var/lock/mod-evasive
    chown www-data /var/lock/mod-evasive
    ln -s /etc/alternatives/mail /bin/mail
    nano /etc/apache2/mods-available/mod-evasive.conf

    and paste:

    <IfModule  mod_evasive20.c>
       DOSHashTableSize 3097
       DOSPageCount 3
       DOSSiteCount 60
       DOSPageInterval 1
       DOSSiteInterval 2
       DOSBlockingPeriod 15
       DOSEmailNotify [email protected]
       DOSLogDir "/var/lock/mod_evasive"
    </IfModule>

    Afterwards we activate the module and restart apache

    a2enmod mod-evasive
    /etc/init.d/apache2 restart

    mod_evasive will not detect DDoS attacks. To ban them by IPTables, we have to create the file:/etc/fail2ban/filter.d/apache-dosevasive.conf:

    # Fail2Ban configuration file
    #
    # Author: Xela
    #
    # $Revision: 728 $
    #
    
    [Definition]
    
    # Option:  failregex
    # Notes.:  regex to match the Forbidden log entrys in apache error.log
    #          maybe (but not only) provided by mod_evasive
    #
    # Values:  TEXT
    #
    failregex = ^\[[^\]]*\]\s+\[error\]\s+\[client <HOST>\] client denied by server configuration:\s
    
    # Option:  ignoreregex
    # Notes.:  regex to ignore. If this regex matches, the line is ignored.
    # Values:  TEXT
    #
    ignoreregex =

    and to /etc/fail2ban/jail.local we add:

    [apache-dosevasive]
    
    enabled = true
    filter  = apache-dosevasive
    action = iptables-allports[name=dos]
    logpath = /var/log/apache*/*error.log
    bantime = 600
    maxretry = 10

    7.3 Extending the Mail Server

    7.3.1 Enhanced e-mail SPAM protection

    The command below enables a stricter SPAM handling for postfix on ISPConfig 3 servers.

    postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_unauth_destination, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_rbl_client cbl.abuseat.org,reject_rbl_client dul.dnsbl.sorbs.net,reject_rbl_client ix.dnsbl.manitu.net, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination'

    Then restart postfix:

    /etc/init.d/postfix restart

    7.3.2 Installing Postgrey

    Postgrey will eliminate 99% of all spam emails you receive. To install it, run these commands:

    apt-get install postgrey
    /etc/init.d/postgrey start

    The Postfix configuration files are located in /etc/postfix. Edit /etc/postfix/main.cf and add check_policy_service inet:127.0.0.1:60000 to the smtpd_recipient_restrictions.

    Then reload postfix's configuration:

    postfix reload

    7.4 Securing The Servers Using SSL

    Last but not least you should follow this tutorial:https://www.howtoforge.com/securing-your-ispconfig-3-installation-with-a-free-class1-ssl-certificate-from-startssl. Don't forget to execute the commands on the right server!

    8 Maintaining Our Servers

    You should regulary run this to keep your servers up-to-date:

    apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade

    9 Links/Credits/Sources

    Since most is not from me, here are all the links used for this tutorial:

    • http://www.faqforge.com/linux/enhanced-e-mail-spam-protection-in-ispconfig-3/
    • https://www.howtoforge.com/greylisting_postfix_postgrey
    • https://www.howtoforge.com/extending-perfect-server-debian-squeeze-ispconfig-3-p4
    • http://spielwiese.la-evento.com/xelasblog/archives/56-Apache-DOS-Attacken-erschweren-mit-mod_evasive.html
    • http://www.faqforge.com/linux/apache-mod-security-installation-on-debian-6-0-squeeze/
    • http://forum.whmcs.com/showpost.php?s=f876c3e3a7d56bd2f325685a80d746cf&p=16768&postcount=4
    • https://www.howtoforge.com/extending-perfect-server-debian-squeeze-ispconfig-3-p3
    • http://debian.nimmervoll.eu/tag/debian-logwatch-einrichten/
    • http://www.debian-administration.org/articles/530
    • https://www.howtoforge.com/securing-your-ispconfig-3-installation-with-a-free-class1-ssl-certificate-from-startssl
    • https://www.howtoforge.com/multiserver-setup-with-dedicated-web-email-dns-and-mysql-database-servers-on-debian-squeeze-with-ispconfig-3
    • http://debian.nimmervoll.eu/archey-debian-installation/
    • http://ajenti.org/
    • http://code.google.com/p/ovz-web-panel/wiki/Installation
    • https://www.howtoforge.com/installing-and-using-openvz-on-debian-squeeze-amd64

    Panels
    1. Webserver mit Lastenausgleich und MySQL-Server

    2. Erstellen einfacher virtueller Hosts mit mod_mysql_vhost auf Lighttpd (Debian Etch)

    3. So sichern Sie MySQL-Datenbanken mit mylvmbackup auf Debian Squeeze

    4. Erstellen einfacher virtueller Hosts mit mod_mysql_vhost auf Lighttpd (Debian Squeeze)

    5. Upgrade von Debian 6 Squeeze mit ISPConfig und Courier/Postfix auf Debian 7 Wheezy

    So installieren Sie Drupal 5.6 auf Debian Etch mit ISPConfig

    So betreiben Sie Ihre eigenen DNS-Server (primär und sekundär) mit ISPConfig 3 (Debian Squeeze)

    Der perfekte Server – Debian Squeeze (Debian 6.0) mit BIND &Dovecot [ISPConfig 3]

    Der perfekte Server – Debian Squeeze (Debian 6.0) mit BIND, Dovecot &Nginx [ISPConfig 3]

    Installieren eines Web-, E-Mail- und MySQL-Datenbankclusters unter Debian 6.0 mit ISPConfig 3

    Multiserver-Setup mit dedizierten Web-, E-Mail-, DNS- und MySQL-Datenbankservern auf Debian Squeeze mit ISPConfig 3