Version 1.0
Author: Falko Timme , Christian Schmalfeld
Follow me on Twitter
Dieses Tutorial zeigt Ihnen, wie Sie einen Ubuntu 12.04 (Precise Pangolin) Server auf die Installation von ISPConfig 3 vorbereiten und diese anschließend durchführen. ISPConfig 3 ist eine Webhosting Kontrolloberfläche, welche Sie folgende Dienste mit einem Internetbrowser konfigurieren lässt: Apache Web Server, Postfix Mail Server, MySQL, BIND Nameserver, PureFTPd, SpamAssassin, ClamAV und viele mehr.
Beachten Sie bitte, dass dieses Setup nicht mit ISPConfig 2 kompatibel ist! Es ist nur für ISPConfig 3 gültig!
Für die Richtigkeit der Inhalte des Tutorials gebe ich keinerlei Garantie!
Um ein solches System zu installieren, brauchen Sie folgendes:
In diesem Tutorial benutze ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100 und dem Gateway 192.168.0.1. Diese Einstellungen werden sich von Ihren unterscheiden, Sie werden sie also an den entsprechenden Stellen ersetzen müssen.
Legen Sie die Ubuntu Installations-CD ins Laufwerk ein und starten Sie Ihren Computer davon. Wählen Sie Ihre Sprache aus (Ich werde hier Englisch wählen, die Steuerungselemente sind jedoch in allen Sprachen gleich angeordnet):
Wählen Sie Install Ubuntu Server:
Wählen Sie erneut Ihre Sprache (diese wird die Standardsprache Ihres installierten Systems sein):
Wählen Sie dann Ihr Land aus:
Haben Sie eine ungewöhnliche Kombination von Sprache und Land ausgewählt (so wie in meinem Fall Englisch als Sprache und Deutschland als Land), wird Ihnen der Installer sagen, dass er keine dazu passenden Ortseinstellungen findet. Sie müssen dann ein Land auswählen, auf dem diese Einstellungen basieren sollen (Sprache, Zeichensatz). Ich wähle hier en_US.UTF-8:
Wählen Sie ein Tastaturlayout (Sie können dies entweder durch automatische Detektion oder durch Auswahl von einer Liste tun - wählen Sie Yes für die automatische Detektion oder No für die Listenauswahl):
Der Installer überprüft die Installations-CD, Ihre Hardware, und konfiguriert das Netzwerk mit DHCP, wenn er einen DHCP Server im Netzwerk findet:
Geben Sie einen Hostnamen an. Ich wähle für dieses Beispiel den Systemnamen server1.example.com, also gebe ich server1 ein:
Erstellen Sie einen Benutzer, zum Beispiel den Benutzer Administrator mit dem Benutzernamen administrator (benutzen Sie nicht admin als Namen, da dieser unter Ubuntu 12.04 reserviert ist):
Geben Sie hier das Passwort des neuen Benutzers an:
Und bestätigen Sie es durch erneute Eingabe:
Ich brauche kein verschlüsseltes Home Vereichnis, deshalb wähle ich hier No:
Geben Sie an, ob der Installer Ihre Zeitzone korrekt erkannt hat. Ist diese richtig, wählen Sie Yes, andernfalls No:
Nun müssen Sie Ihre Festplatte partitionieren. Der Einfachheit halber wähle ich Guided - use entire disk and set up LVM - dies wird eine Datenträgergruppe mit zwei Datenträgern erstellen, einen für das / Datensystem und einen als Swap (natürlich können Sie Ihre Festplatte auch anders partitionieren - wenn Sie wissen was Sie tun, steht Ihnen die Möglichkeit offen dies manuell zu tun).
Wählen Sie die Festplatte, die Sie partitionieren möchten:
Sobald Sie gefragt werden Write the changes to disks and configure LVM?, wählen Sie Yes:
Wenn Sie wie ich Guided - use entire disk and set up LVM gewählt haben, wird der Partitionierer eine große Datenträgergruppe erstellen, die den gesamten Festplattenplatz einnimmt. Sie können jeweils konfigurieren, wie viel Platz für die / und Swap benutzt werden soll. Unter Umständen macht es Sinn, einigen Speicherplatz unbenutzt zu lassen, um später die vorhandenen Datenträger vergrößern oder neue anlegen zu können - es gibt Ihnen somit mehr Flexibilität.
Wenn Sie fertig sind, wählen Sie Yes wenn Sie dies gefragt werden: Write the changes to disks?:
Daraufhin werden Ihre Partitionen erstellt und formatiert:
Nun wird das Basissystem installiert:
Als nächstes wird die Paketverwaltung apt konfiguriert. Lassen Sie die HTTP proxy Zeile leer, esseidenn Sie wollen einen Proxy Server benutzen, um sich mit dem Intenet zu verbinden:
Ich möchte, um mehr Kontrolle zu haben, meine Server manuell aktualisieren, deshalb stelle ich die automatischen Aktualisierungen durch die Auswahl von No automatic updates ab. Natürlich können Sie hier auswählen, was Ihnen lieber ist:
Wir benötigen einen DNS-, Mail- und LAMP Server, wählen Sie hier jedoch noch keinen dieser aus. Wir werden Sie später manuell installieren um kontrollieren zu können, was genau auf dem System installiert wird. Der einzige Eintrag, den Sie ankreuzen sollten, ist OpenSSH server, damit man sich, sofort nachdem die Installation fertiggestellt ist, mit einem SSH Client wie PuTTY mit dem Server verbinden kann:
Die Installation geht weiter:
Der GRUB Boot Loader wird installiert:
Wählen Sie Yes, wenn Sie dies gefragt werden: Install the GRUB boot loader to the master boot record?:
Die Installation des Basissystems ist nun abgeschlossen. Entfernen Sie die Installations-CD aus dem Laufwerk und wählen Sie Continue, um das System neu zu starten:
Nun zum nächsten Schritt…
Nach dem Neustart können Sie sich mit dem zuvor angelegten Benutzernamen anmelden (z.B. administrator). Da Sie alle Schritte dieses Tutorials mit root-Rechten ausführen müssen, können Sie entweder jedem Befehl ein sudo voranstellen, oder sich durch folgenden befehl als root einloggen:
sudo su
(Sie können die root-Anmeldung auch durch
sudo passwd root
und die Verleihung eines root-Passwortes erlauben. Sie können sich dann direkt als root einloggen, dies wird jedoch von den Ubuntu Entwicklern als auch der Gemeinde aus verschiedenen Gründen nicht empfohlen. Lesen Sie hierzu http://ubuntuforums.org/showthread.php?t=765414.)
Haben Sie den OpenSSH Server nicht während der Systeminstallation mitinstalliert, können Sie dies nun nachholen:
apt-get install ssh openssh-server
Von jetzt an können Sie einen SSH Client wie PuTTY benutzen, um sich von Ihrer Arbeitsoberfläche mit Ihrem Ubuntu 11.10 Server zu verbinden und die restlichen Schritte des Tutorials auszuführen.
Ich werde in diesem Tutorial vi als Textbearbeitungsprogramm benutzen. Das Standardprogramm vi weist jedoch merkwürdiges Verhalten auf Ubuntu und Debian auf; um dies zu umgehen installiere ich vim-nox:
apt-get install vim-nox
(Diesen Schritt können Sie auslassen, wenn Sie einen anderen Texteditor wie joe oder nano verwenden.)
Da der Ubuntu Installer das System so konfiguriert hat, dass es seine Netzwerkeinstellungen durch DHCP bezieht, müssen wir dies umstellen, da ein Server eine statische IP-Adresse haben sollte. Editieren Sie /etc/network/interfaces und passen Sie sie nach Ihren Vorstellungen an (in diesem Beispielsetup benutze ich die IP-Adresse 192.168.0.100 und die DNS Server 8.8.8.8 und 8.8.4.4 - ab Ubuntu 12.04 können Sie /etc/resolv.conf nicht mehr direkt editieren, sondern müssen die Nameserver in Ihrer Netzwerkkonfiguration angeben - siehe
man resolvconf
für mehr Details):
vi /etc/network/interfaces
# The loopback network interface
auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1 dns-nameservers 8.8.8.8 8.8.4.4
Starten Sie dann Ihr Netzwerk neu:
/etc/init.d/networking restart
Editieren Sie dann /etc/hosts. Lassen Sie die Datei wie folgt aussehen:
vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.0.100 server1.example.com server1 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Benutzen Sie nun
echo server1.example.com > /etc/hostname
/etc/init.d/hostname restart
Danach, benutzen Sie
hostname
hostname -f
Beide sollten nun server1.example.com anzeigen.
Editieren Sie /etc/apt/sources.list. Entfernen Sie die Installations-CD oder kommentieren Sie diese aus der Datei aus und stellen Sie sicher, dass die universe und multiverse Repositories aktiviert sind. Die Datei sollte wie folgt aussehen:
vi /etc/apt/sources.list
#
# deb cdrom:[Ubuntu-Server 12.04 LTS _Precise Pangolin_ - Release amd64 (20120424.1)]/ dists/precise/main/binary-i386/ # deb cdrom:[Ubuntu-Server 12.04 LTS _Precise Pangolin_ - Release amd64 (20120424.1)]/ dists/precise/restricted/binary-i386/ # deb cdrom:[Ubuntu-Server 12.04 LTS _Precise Pangolin_ - Release amd64 (20120424.1)]/ precise main restricted #deb cdrom:[Ubuntu-Server 12.04 LTS _Precise Pangolin_ - Release amd64 (20120424.1)]/ dists/precise/main/binary-i386/ #deb cdrom:[Ubuntu-Server 12.04 LTS _Precise Pangolin_ - Release amd64 (20120424.1)]/ dists/precise/restricted/binary-i386/ #deb cdrom:[Ubuntu-Server 12.04 LTS _Precise Pangolin_ - Release amd64 (20120424.1)]/ precise main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://de.archive.ubuntu.com/ubuntu/ precise main restricted deb-src http://de.archive.ubuntu.com/ubuntu/ precise main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://de.archive.ubuntu.com/ubuntu/ precise-updates main restricted deb-src http://de.archive.ubuntu.com/ubuntu/ precise-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://de.archive.ubuntu.com/ubuntu/ precise universe deb-src http://de.archive.ubuntu.com/ubuntu/ precise universe deb http://de.archive.ubuntu.com/ubuntu/ precise-updates universe deb-src http://de.archive.ubuntu.com/ubuntu/ precise-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://de.archive.ubuntu.com/ubuntu/ precise multiverse deb-src http://de.archive.ubuntu.com/ubuntu/ precise multiverse deb http://de.archive.ubuntu.com/ubuntu/ precise-updates multiverse deb-src http://de.archive.ubuntu.com/ubuntu/ precise-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://de.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse deb-src http://de.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu precise-security main restricted deb-src http://security.ubuntu.com/ubuntu precise-security main restricted deb http://security.ubuntu.com/ubuntu precise-security universe deb-src http://security.ubuntu.com/ubuntu precise-security universe deb http://security.ubuntu.com/ubuntu precise-security multiverse deb-src http://security.ubuntu.com/ubuntu precise-security multiverse ## Uncomment the following two lines to add software from Canonical's ## 'partner' repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. # deb http://archive.canonical.com/ubuntu precise partner # deb-src http://archive.canonical.com/ubuntu precise partner ## Uncomment the following two lines to add software from Ubuntu's ## 'extras' repository. ## This software is not part of Ubuntu, but is offered by third-party ## developers who want to ship their latest software. # deb http://extras.ubuntu.com/ubuntu precise main # deb-src http://extras.ubuntu.com/ubuntu precise main
Benutzen Sie dann
apt-get update
um die apt Paketdatendank zu aktualisieren und
apt-get upgrade
um die neusten Updates zu installieren (falls es welche gibt). Falls Sie sehen, dass ein neuer Kernel mit den Updates installiert wird, sollten Sie Ihr System danach neustarten:
reboot
/bin/sh ist ein Symlink zu /bin/dash, wir brauchen aber /bin/bash, nicht /bin/dash. Deshalb führen Sie dies aus:
dpkg-reconfigure dash
Use dash as the default system shell (/bin/sh)?
Tun Sie dies nicht, wird die Installation von ISPConfig fehlschlagen.
AppArmor ist ein erweiterter Sicherheitsdienst (ähnlich SELinux). Er sollte eigentlich die Sicherheit des Systems verbessern, verursacht aber eher Probleme. Meiner Meinung nach brauchen Sie es nicht, um ein sicheres System zu konfigurieren (AppArmor meldet ab und zu ein Problem mit einem Dienst, welches es selbst verursacht). Um später ISPConfig zu installieren, muss der Dienst ohnehin deaktiviert werden, deshalb beschreibe ich nun, wie es funktioniert:
Sie können es wie folgt deaktivieren:
/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils
Die Systemuhrzeit mit einem NTP (network time protocol) Server über das Internet zu synchronisieren ist meist vorteilhaft. Benutzen Sie dazu einfach
apt-get install ntp ntpdate
und Ihre Systemuhr wird immer synchronisiert sein.
Sie können Postfix, Dovecot, MySQL, rkhunter und binutils mit einem einzigen Befehl installieren:
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve
Sie werden die folgenden Fragen gefragt werden:
New password for the MySQL “root” user: Repeat password for the MySQL “root” user: General type of mail configuration: System mail name:
Wir wollen, dass MySQL alle Interfaces überprüft, nicht nur localhost. Editieren Sie deshalb /etc/mysql/my.cnf und kommentieren Sie die Zeile bind-address = 127.0.0.1 aus:
vi /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 MySQL dann neu:
/etc/init.d/mysql restart
Überprüfen Sie nun, ob Networking erlaubt ist. Benutzen Sie dazu
netstat -tap | grep mysql
Die Ausgabe sollte etwa so aussehen:
root@server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 21298/mysqld
root@server1:~#
Um amavisd-new, SpamAssassin und ClamAV zu installieren führen Sie folgendes aus:
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
Das ISPConfig 3 Setup benutzt amavisd, welches die SpamAssassin Filter Library intern lädt, sodass Sie SpamAssassin beenden können um ein wenig RAM zu gewinnen:
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove
Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear und mcrypt können wie folgt installiert werden:
apt-get 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 libruby libapache2-mod-ruby
Sie werden folgendes gefragt werden:
Web server to reconfigure automatically: Configure database for phpmyadmin with dbconfig-common?
Benutzen Sie dann den folgenden Befehl um die Apache-Module suexec, rewrite, ssl, actions und include zu erlauben (plus dav, dav_fs, und auth_digest wenn Sie WebDAV benutzen möchten):
a2enmod suexec rewrite ssl actions include
a2enmod dav_fs dav auth_digest
Starten Sie dann Apache neu:
/etc/init.d/apache2 restart
Wollen Sie auf Ihrer mit ISPConfig erstellten Webseite Ruby Dateien mit der Endung .rb hochladen, müssen Sie die Zeile application/x-ruby rb in /etc/mime.types auskommentieren:
vi /etc/mime.types
[...]
#application/x-ruby rb [...]
(Dies ist nur für .rb Dateien nötig; Ruby Dateien mit der Endung .rbx werden ohne Vorkehrungen funktionieren.)
Starten Sie danach Apache neu:
/etc/init.d/apache2 restart
Xcache ist ein kostenloser und quelloffener PHP opcode Cacher zum Cachen und Optimieren von PHP Zwischencode. Es ist anderen opcode Cachern wie eAccelerator und APC ähnlich. Es wird empfohlen, einen von ihnen zu installieren, um Ihre PHP Seite zu beschleunigen.
Xcache wird wie folgt installiert:
apt-get install php5-xcache
Starten Sie nun Apache neu:
/etc/init.d/apache2 restart
Ab der Version 3.0.5 wird es in ISPConfig einen zusätzlichen PHP Modus geben, den Sie für die Benutzung mit Apache auswählen können: PHP-FPM. Haben Sie vor, diesen Modus zu benutzen, macht es Sinn, Ihr System schon einmal dafür zu konfigurieren, sodass es darauf vorbereitet ist, wenn Sie später auf Version 3.0.5 upgraden (die neuste ISPConfig Version zur Zeit dieses Schreibens ist 3.0.4.4).
Um PHP-FPM mit Apache benutzen zu können benötigen Sie das mod_fastcgi Apache Modul (verwechseln Sie dieses bitte nicht mit mod_fcgid - sie sind sich ähnlich, allerdings kann mod_fcgid nicht mit PHP-FPM benutzt werden). Installieren Sie PHP-FPM und mod_fastcgi folgendermaßen:
apt-get install libapache2-mod-fastcgi php5-fpm
Erlauben Sie das Modul und starten Apache neu:
a2enmod actions fastcgi alias
/etc/init.d/apache2 restart
Seit Version 3.0.4 erlaubt es Ihnen ISPConfig auch Mailman Mailiunglisten zu verwalten (erstellen/editieren/löschen). Wollen Sie von diesem Feature Gebrauch machen, installieren Sie Mailman folgendermaßen:
apt-get install mailman
Wählen Sie mindestens eine Sprache aus, z.B.:
Languages to support:
Bevor Mailman gestartet werden kann, muss zuerst eine erste Mailingliste namens mailman erstellt werden:
newlist mailman
root@server1:~# newlist mailman
Enter the email of the person running the list: Initial mailman password: To finish creating your mailing list, you must edit your /etc/aliases (or equivalent) file by adding the following lines, and possibly running the `newaliases' program:
## mailman mailing list
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Hit enter to notify mailman owner...
root@server1:~#
Öffnen Sie danach /etc/aliases ...
vi /etc/aliases
... und fügen die folgenden Zeilen hinzu:
[...]
## mailman mailing list mailman: "|/var/lib/mailman/mail/mailman post mailman" mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/var/lib/mailman/mail/mailman join mailman" mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" mailman-request: "|/var/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Benutzen Sie danach
newaliases
und starten Postfix neu:
/etc/init.d/postfix restart
Schließlich müssen Sie noch die Mailman Apache Konfiguration aktivieren:
ln -s /etc/mailman/apache.conf
/etc/apache2/conf.d/mailman.conf
Dadurch wird der Alias /cgi-bin/mailman/ für alle Apache vHosts definiert, was bedeutet, dass Sie die Mailman Admin Oberfläche einer Liste unter http:///cgi-bin/mailman/admin/ erreichen können während die Webseite für Benutzer von Mailinglisten unter http:///cgi-bin/mailman/listinfo/ zu erreichen ist.
Unter http:///pipermail können Sie die Mailinglistenarchive finden.
Starten Sie Apache danach neu:
/etc/init.d/apache2 restart
Starten Sie dann den Mailman Daemon:
/etc/init.d/mailman start
PureFTPd und quota können mit dem folgenden Befehl installiert werden:
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool
Editieren Sie die Datei /etc/default/pure-ftpd-common…
vi /etc/default/pure-ftpd-common
… und stellen Sie sicher, dass der start mode gleich standalone und VIRTUALCHROOT=true gesetzt sind:
[...]
STANDALONE_OR_INETD=standalone [...] VIRTUALCHROOT=true [...]
Konfigurieren Sie nun PureFTPd dazu, FTP und TLS Sitzungen zu erlauben. FTP ist ein sehr unsicheres Protokoll, da alle Passwörter und Dateien in reiner Textform übertragen werden. Durch die Benutzung von TLS wird die gesamte Kommunikation verschlüsselt, wodurch es FTP sehr viel sicherer macht.
Wollen Sie FTP und TLS Sitzungen erlauben, führen Sie folgenden Befehl aus:
echo 1 > /etc/pure-ftpd/conf/TLS
Um TLS benutzen zu können, müssen Sie ein SSL Zertifikat erstellen. Ich tue dies in /etc/ssl/private/, dieses Verzeichnis muss ich zuerst erstellen:
mkdir -p /etc/ssl/private/
Danach können Sie das SSL Zertifikat folgendermaßen erstellen:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []: Email Address []:
Ändern Sie die Zugriffsrechte auf das SSL Zertifikat:
chmod 600 /etc/ssl/private/pure-ftpd.pem
Starten Sie dann PureFTPd neu:
/etc/init.d/pure-ftpd-mysql restart
Editieren Sie die /etc/fstab Datei. Meine sieht wie folgt aus (Ich habe ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 zur Partition mit dem Mount Point / hinzugefügt):
vi /etc/fstab
# /etc/fstab: static file system information.
# # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # proc /proc proc nodev,noexec,nosuid 0 0 /dev/mapper/server1-root / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1 # /boot was on /dev/sda1 during installation UUID=4b58d345-1c55-4ac5-940e-7245938656a6 /boot ext2 defaults 0 2 /dev/mapper/server1-swap_1 none swap sw 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
Um quota zu erlauben, benutzen Sie diese Befehle:
mount -o remount /
quotacheck -avugm
quotaon -avug
BIND kann folgendermaßen installiert werden:
apt-get install bind9 dnsutils
Vlogger, webalizer und AWstats können wie folgt installiert werden:
apt-get install vlogger webalizer awstats geoip-database
Öffnen Sie danach /etc/cron.d/awstats…
vi /etc/cron.d/awstats
… und kommentieren Sie beide Cron Jobs in der Datei aus:
#MAILTO=root
#*/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
Jailkit wird nur gebraucht, wenn Sie SSH Benutzer chrooten möchten. Es kann wie folgt installiert werden (wichtig: Jailkit muss vor ISPConfig installiert werden - dies kann später nicht nachgeholt werden!):
apt-get install build-essential autoconf automake1.9
libtool flex bison debhelper binutils-gold
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
Nun können Sie das Jailkit .deb Paket folgendermaßen installieren:
cd ..
dpkg -i jailkit_2.14-1_*.deb
rm -rf jailkit-2.14*
Diese ist optional aber empfohlen, da der ISPConfig Monitor versucht, den fail2ban Log anzuzeigen:
apt-get install fail2ban
Um fail2ban PureFTPd und Dovecot überwachen zu lassen, 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 [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 danach die folgenden zwei Filterdateien:
vi /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: (.*@) [WARNING] Authentication failed for user.* ignoreregex =
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=(?PS*),.* ignoreregex =
Starten Sie fail2ban dann neu:
/etc/init.d/fail2ban restart
Um den SquirrelMail Webmail Client zu installieren, benutzen Sie:
apt-get install squirrelmail
Konfigurieren Sie SquirrelMail anschließend:
squirrelmail-configure
Sie müssen SquirrelMail sagen, dass Sie Dovecot-IMAP/-POP3 benutzen:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q Quit
Command >>
SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others. If you select your IMAP server, this option will
set some pre-defined settings for that server.
Please note that you will still need to go through and make sure
everything is correct. This does not change everything. There are
only a few settings that this will change.
Please select your IMAP server:
bincimap = Binc IMAP server
courier = Courier IMAP server
cyrus = Cyrus IMAP server
dovecot = Dovecot Secure IMAP server
exchange = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = University of Washington's IMAP server
gmail = IMAP access to Google mail (Gmail) accounts
quit = Do not change anything
Command >>
SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others. If you select your IMAP server, this option will
set some pre-defined settings for that server.
Please note that you will still need to go through and make sure
everything is correct. This does not change everything. There are
only a few settings that this will change.
Please select your IMAP server:
bincimap = Binc IMAP server
courier = Courier IMAP server
cyrus = Cyrus IMAP server
dovecot = Dovecot Secure IMAP server
exchange = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = University of Washington's IMAP server
gmail = IMAP access to Google mail (Gmail) accounts
quit = Do not change anything
Command >> dovecot
imap_server_type = dovecot
default_folder_prefix =
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false
Press any key to continue...
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q Quit
Command >>
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages
D. Set pre-defined settings for specific IMAP servers
C Turn color on
S Save data
Q Quit
Command >>
Nun werden wir SquirrelMail so konfigurieren, dass man es aus einer (mit ISPConfig erstellten) Webseite heraus benutzen kann indem wir die /squirrelmail oder /webmail Aliasse benutzen. Ist Ihre Webseite www.example.com, werden Sie in der Lage sein SquirrelMail durch www.example.com/squirrelmail oder www.example.com/webmail zu erreichen.
SquirrelMails Apache Konfiguration ist in der Datei /etc/squirrelmail/apache.conf, diese wird jedoch nicht von Apache geladen, da sie sich nicht im /etc/apache2/conf.d/ Verzeichnis befindet. Deshalb erstellen Sie einen Symlink namens squirrelmail.conf im /etc/apache2/conf.d/ Verzeichnis, der zu /etc/squirrelmail/apache.conf zeigt und starten danach Apache neu:
cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload
Öffnen Sie nun /etc/apache2/conf.d/squirrelmail.conf…
vi /etc/apache2/conf.d/squirrelmail.conf
… und fügen die folgenden Zeilen zum Container hinzu welche sicherstellen, dass mod_php zum Zugriff auf SquirrelMail genutzt wird, egal welchen PHP Modus sie in ISPConfig für Ihre Webseite ausgewählt haben:
[...]
Options FollowSymLinks AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag track_vars On php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname php_flag register_globals off DirectoryIndex index.php # access to configtest is limited by default to prevent information leak order deny,allow deny from all allow from 127.0.0.1 [...]
Erstellen Sie das Verzeichnis /var/lib/squirrelmail/tmp…
mkdir /var/lib/squirrelmail/tmp
… und lassen Sie den Benutzer www-data davon Besitz nehmen:
chown www-data /var/lib/squirrelmail/tmp
Laden Sie Apache danach neu:
/etc/init.d/apache2 reload
Das war es schon - /etc/apache2/conf.d/squirrelmail.conf definiert ein Alias namens /squirrelmail, das zu SquirrelMails Installationsverzeichnis zeigt /usr/share/squirrelmail.
Sie können SquirrelMail nun folgendermaßen von Ihrer Webseite aus erreichen:
http://192.168.0.100/squirrelmail
http://www.example.com/squirrelmail
Sie können außerdem vom ISPConfig Control Panel vHost darauf zugreifen (nachdem Sie im nächsten Kapitel ISPConfig installiert haben)(dies bedarf keiner Konfiguration in ISPConfig):
http://server1.example.com:8080/squirrelmail
Möchten Sie das Alias /webmail anstatt von /squirrelmail benutzen, öffnen Sie einfach /etc/apache2/conf.d/squirrelmail.conf…
vi /etc/apache2/conf.d/squirrelmail.conf
… und fügen die Zeile Alias /webmail /usr/share/squirrelmail hinzu:
Alias /squirrelmail /usr/share/squirrelmail
Alias /webmail /usr/share/squirrelmail [...]
Laden Sie dann Apache neu:
/etc/init.d/apache2 reload
Sie können nun auf den folgenden Wegen auf SquirrelMail zugreifen:
http://192.168.0.100/webmail
http://www.example.com/webmail
http://server1.example.com:8080/webmail (nachdem Sie im nächsten Kapitel ISPConfig installiert haben)
Würden Sie gerne einen vHost wie webmail.example.com anlegen über den Ihre Benutzer auf SquirrelMail zugreifen können, müssten Sie folgende vHost Konfiguration zu /etc/apache2/conf.d/squirrelmail.conf hinzufügen:
vi /etc/apache2/conf.d/squirrelmail.conf
[...]
DocumentRoot /usr/share/squirrelmail ServerName webmail.example.com
Ersetzen Sie 1.2.3.4 mit der korrekten IP-Adresse Ihres Servers. Natürlich muss es einen DNS Record für webmail.example.com geben, der zur IP-Adresse zeigt, die Sie in Ihrer vHost Konfiguration benutzen. Stellen Sie außerdem sicher, dass der vHost webmail.example.com nicht in ISPConfig existiert (andernfalls werden beide vHosts einander behindern!).
Starten Sie nun Apache neu…
/etc/init.d/apache2 reload
… und Sie können SquirrelMail unter http://webmail.example.com erreichen!
Um die aktuellste ISPConfig 3 Version zu installieren, führen Sie folgende Befehle aus:
cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/
Als nächstes benutzen Sie:
php -q install.php
Dies wird den ISPConfig 3 Installer starten. Dieser wird alle Dienste wie Postfix, SASL, Courier, etc. für Sie konfigurieren. Ein manuelles Setup, wie es für ISPConfig 2 gebraucht wurde ist nicht notwendig.
root@server1:/tmp/ispconfig3_install/install# php -q install.php
--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ / __ / _(_) /__
| | `--.| |_/ / | / / ___ _ __ | |_ _ __ _ _/ /
| | `--. __/ | | / _ | '_ | _| |/ _` | |_ |
_| |_/__/ / | | __/ (_) | | | | | | | (_| | ___
___/____/_| ____/___/|_| |_|_| |_|__, | ____/
__/ |
|___/
--------------------------------------------------------------------------------
>> Initial configuration
Operating System: Debian or compatible, unknown version.
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with .
Tap in "quit" (without the quotes) to stop the installer.
Select language (en,de) [en]:
Installation mode (standard,expert) [standard]:
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.example.com]:
MySQL server hostname [localhost]:
MySQL root username [root]:
MySQL root password []:
MySQL database to create [dbispconfig]:
MySQL charset [utf8]:
Generating a 2048 bit RSA private key
...........+++
.....................+++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []: Configuring Jailkit
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring BIND
Configuring Apache
Configuring Vlogger
Configuring Apps vhost
Configuring Bastille Firewall
Configuring Fail2ban
Installing ISPConfig
ISPConfig Port [8080]:
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]:
Generating RSA private key, 4096 bit long modulus
.......++
.........................................................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: State or Province Name (full name) [Some-State]: Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: An optional company name []: writing RSA key
Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Restarting services ...
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
mysql start/running, process 2543
* Stopping Postfix Mail Transport Agent postfix
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
...done.
* Starting Postfix Mail Transport Agent postfix
postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
/usr/sbin/postconf: warning: /etc/postfix/master.cf: unused parameter: smtpd_bind_address=127.0.0.1
...done.
Stopping amavisd: (not running).
The amavisd daemon is already running, PID: [1126]
Starting amavisd: (failed).
* Stopping ClamAV daemon clamd
...done.
* Starting ClamAV daemon clamd
...done.
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service dovecot restart
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop dovecot ; start dovecot. The restart(8) utility is also available.
dovecot stop/waiting
dovecot start/running, process 3668
* Restarting Mailman master qrunner mailmanctl
* Waiting...
...done.
...done
* Restarting web server apache2
... waiting . ...done.
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -E -H -Y 1 -O clf:/var/log/pure-ftpd/transfer.log -8 UTF-8 -b -D -A -u 1000 -B
Installation completed.
root@server1:/tmp/ispconfig3_install/install#
Der Installer konfiguriert automatisch alle unterliegenden Dienste, keine manuelle Konfiguration is notwendig.
Sie haben nun die Möglichkeit den Installer einen SSL vHost für die ISPConfig Oberfläche erstellen zu lassen, sodass Sie ISPConfig mit https:// anstatt von http:// erreichen. Um dies einzurichten, drücken Sie einfach ENTER wenn Sie diese Frage erscheint: Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]:.
Anschließend können Sie ISPConfig 3 unter http://server1.example.com:8080/ oder http://192.168.0.100:8080/ erreichen (je nachdem, was Sie im Schritt zuvor ausgewählt haben). Melden Sie sich mit dem Benutzernamen admin und dem Passwort admin an (Sie sollten das Standardpasswort nach der ersten Anmeldung ändern):
Das System ist nun bereit zur Benutzung.
Ist der Ubuntu Server den Sie gerade aufgesetzt haben ein OpenVZ Container (eine virtuelle Maschine), sollten Sie folgendes auf dem Host System ausführen (Ich nehme an, dass die ID Ihres OpenVZ Containers 101 ist - ersetzen Sie diese mit der korrekten VPSID Ihres Systems):
VPSID=101
for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE
NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID
NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
do
vzctl set $VPSID --capability ${CAP}:on --save
done