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
aussysctl -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.
ausGehen 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:
ausnano /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
ausecho 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
- 7.2.7 Installing fail2ban
- 7.2.8 Installing mod_evasive With fail2ban Support
- 7.3 Extending the Mail Server
- 7.3.1 Enhanced e-mail SPAM protection
- 7.3.2 Installing Postgrey
- 7.4 Securing The Servers Using SSL
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