ISPConfig3 unter Debian 6 (Squeeze) installieren
Dieses Tutorial zeigt, wie man ISPConfig3 auf einem Debian 6 (Squeeze) Server aufsetzt.
ISPConfig 3 ist ein Webhosting-Bedienungspanel, das Dir erlaubt, folgende Services über einen Webbrowser zu steuern:
- Apache Webserver
- Postfix Mailserver
- MySQL
- MyDNS Nameserver
- PureFTPd
- SpamAssassin
- ClamAV
- und viele mehr…
Grundsystem
Die Installation des Grundsystems lassen wir hier mal außen vor, das sollte allgemein bekannt sein.
Als erstes installieren wir eine Minimalversion von Debian 6 ohne weitere Pakete.
Dann folgende Pakete installieren:
apt-get install ssh openssh-server nano
Netzwerk
Netzwerk Einstellungen bearbeiten: nano /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.178.84
netmask 255.255.255.0
network 192.168.178.0
broadcast 192.168.178.255
gateway 192.168.178.1
Im Anschluß das Netzwerk neu starten: /etc/init.d/networking restart
Hostname
Das Hostfile bedarf ebenfalls einer Änderung: nano /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.178.84 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
Nun den Hostnamen setzen:
/etc/init.d/hostname.sh start
hostname
hostname -f
Die letzten beiden Befehle sollten jetzt jeweils “server1.example.com” anzeigen.
Updates
So, jetzt aktuallisieren wir noch einmal schnell unser System:
apt-get update && apt-get upgrade
Ändern der Default-Shell
/bin/sh ist ein symbolischer link zu /bin/dash, wir benötigen /bin/bash, nicht /bin/dash.
Um dies zu bewerkstelligen geben wir folgendes ein: dpkg-reconfigure dash
Die Frage Use dash as the default system shell (/bin/sh)?
beantworten wir mit Nein!
Synchronisieren der Systemzeit
Eine immer aktuelle Uhrzeit zu haben, ist nie eine schlechte Idee, deshalb synchronisieren wir diese über NTP (network time protocol) Server über das Internet.
apt-get install ntp ntpdate
Installation der Dienste
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4 rkhunter binutils sudo
Folgende Fragen werden uns nun gestellt:
General type of mail configuration: Internet Site
System mail name: server1.example.com
New password for the MySQL "root" user: yourrootsqlpassword
Repeat password for the MySQL "root" user: yourrootsqlpassword
Create directories for web-based administration? No
SSL certificate required Ok
Es soll den “Kunden” frei gestellt werden von wo aus Sie auf Ihre Datenbanken zugreifen können also müssen wir die Beschränkung auf localhost deaktivieren: 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
[...]
Anschließend starten wir den MySQL neu: /etc/init.d/mysql restart
Kontrollieren ob das Netzwerk aktiv ist: netstat -tap | grep mysql
Die Ausgabe sollte ungefähr so ausschauen:
server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 6612/mysqld
Während der Installation wurden automatisch SSL Zertifikate für IMAP-SSL und POP-SSL generiert, jedoch mit dem Hostnamen “localhost”. Diese müssen wir nun ändern:
cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem
nano /etc/courier/imapd.cnf
[...]
CN=server1.example.com
[...]
nano /etc/courier/pop3d.cnf
[...]
CN=server1.example.com
[...]
mkimapdcert
mkpop3dcert
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart
Amavisd-new, Spamassassin und Clamav
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
ISPConfig 3 setup benutzt amavisd welches die SpamAssassin filter library intern nutzt, so können wir ruhig SpamAssassin stopen um ein bisschen mehr RAM übrig zu haben:
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove
Apache2, PHP5, phpmyadmin, better fastCGI, suexec, Pear und mcrypt
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
Folgende Fragen werden uns wieder gestellt:
Web server to reconfigure automatically: apache2
Configure database for phpmyadmin with dbconfig-common? No
Nun müssen ein paar Apache2 Module aktiviert werden:
a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest
/etc/init.d/apache2 restart
PureFTPd und Quota
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool
echo 1 > /etc/pure-ftpd/conf/TLS
mkdir -p /etc/ssl/private/
openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Und wieder kommen ein paar Fragen:
Country Name (2 letter code) [AU]: Geben Sie hier Ihr Land ein (z.B., "DE").
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 []:
Setzen der passenden Berechtigungen: chmod 600 /etc/ssl/private/pure-ftpd.pem
In der Datei /etc/default/pure-ftpd-common ändern wir noch den Startmodus nano /etc/default/pure-ftpd-common
[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]
Nun kann der FTP Service gestartet werden: /etc/init.d/pure-ftpd-mysql start
Jetzt bearbeiten wir noch die /etc/fstab. Meine sieht in etwa so aus:
(Ich habe folgendes hinzugefügt ,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 zu der Partition mit dem mount point / )
nano /etc/fstab
proc /proc proc defaults 0 0
UUID=d9ec3dbc-a720-40e3-81eb-d92f63ff16c8 / ext3 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
UUID=ee3b0313-b655-4418-84c6-09bde419255c none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user, noauto 0 0
Jetzt aktivieren wir quota: mount -o remount /
danach quotacheck -avugm
Nicht wundern, das dauert jetzt erstmal eine Weile.
Anschließend führen wir noch folgendes aus: quotaon -avug
BIND DNS Server
apt-get install bind9 dnsutils
Vlogger, Webalizer und AWstats
apt-get install vlogger webalizer awstats
In der Datei /etc/cron.d/awstats müssen die beiden Cronjobs mit einer # auskommentiert werden.
nano /etc/cron.d/awstats
Jailkit
Jailkit muß nur installiert werden wenn die SSH-Benutzer in einer chroot einsperren können willst. Wichtig! Jailkit muß vor ISPConfig installiert werden, danach geht dies nicht mehr!
apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper
cd /tmp
wget http://fossies.org/linux/privat/jailkit-2.16.tar.gz
tar xvfz jailkit-2.16.tar.gz
cd jailkit-2.16
./debian/rules binary
cd ..
dpkg -i jailkit_2.16-1_*.deb
rm -rf jailkit-2.16*
fail2ban
apt-get install fail2ban
Zum Überwachen der FTP und SASL Dienste erstellen wir folgende Datei: nano /etc/fail2ban/jail.local
[pureftpd]
enabled = true
port = ftp
filter = pureftpd
logpath = /var/log/syslog
maxretry = 3
[sasl]
enabled = true
port = smtp
filter = sasl
logpath = /var/log/mail.log
maxretry = 5
[courierpop3]
enabled = true
port = pop3
filter = courierpop3
logpath = /var/log/mail.log
maxretry = 5
[courierpop3s]
enabled = true
port = pop3s
filter = courierpop3s
logpath = /var/log/mail.log
maxretry = 5
[courierimap]
enabled = true
port = imap2
filter = courierimap
logpath = /var/log/mail.log
maxretry = 5
[courierimaps]
enabled = true
port = imaps
filter = courierimaps
logpath = /var/log/mail.log
maxretry = 5
[ssh]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
Und legen noch die fünf Filter-Dateien an:
echo "[Definition]
failregex = .*pure-ftpd: (.*@) [WARNING] Authentication failed for user.*
ignoreregex =" > /etc/fail2ban/filter.d/pureftpd.conf
echo "[Definition]
failregex = pop3d: LOGIN FAILED.*ip=[.*:]
ignoreregex =" > /etc/fail2ban/filter.d/courierpop3.conf
echo "[Definition]
failregex = pop3d-ssl: LOGIN FAILED.*ip=[.*:]
ignoreregex =" > /etc/fail2ban/filter.d/courierpop3s.conf
echo "[Definition]
failregex = imapd: LOGIN FAILED.*ip=[.*:]
ignoreregex =" > /etc/fail2ban/filter.d/courierimap.conf
echo "[Definition]
failregex = imapd-ssl: LOGIN FAILED.*ip=[.*:]
ignoreregex =" > /etc/fail2ban/filter.d/courierimaps.conf
Jetzt restarten wir fail2ban um die neuen Konfigurationen zu übernehmen.
/etc/init.d/fail2ban restart
ISPConfig3 installieren
Jetzt kann es endlich losgehen. Das Grundsystem und die Dienste sind soweit installiert, jetzt besorgen wir uns den ISPConfig3 Installer und legen los…
cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/
Starten des Installers: php -q install.php
Folgende Fragen werden dir bei der Installation gestellt:
Initial configuration
Operating System: Debian 6.0 (Squeeze/Sid) or compatible
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]: de
Installation mode (standard,expert) [standard]:
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [testispconfig.cneurope.de]:
MySQL server hostname [localhost]:
MySQL root username [root]:
MySQL root password []: supergeheimespasswort
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]:DE
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) []:testispconfig.cneurope.de
Email Address []:[email protected]
Configuring Jailkit
Configuring SASL
Configuring PAM
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring BIND
Configuring Apache
Configuring vlogger
Configuring Apps vhost
Configuring Firewall
Installing ISPConfig
ISPConfig Port [8080]:
Configuring DBServer
Installing Crontab
no crontab for root
no crontab for getmail
Restarting services …
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
Stopping amavisd: amavisd-new.
head: cannot open `/etc/mailname' for reading: No such file or directory
Starting amavisd: amavisd-new.
Stopping ClamAV daemon: clamd.
Starting ClamAV daemon: clamd.
Restarting IMAP/POP3 mail server: dovecot.
Restarting web server: apache2 … waiting ..
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -b -E -p 4000:4020 -u 1000 -A -O clf:/var/log/pure-ftpd/transfer.log -Y 1 -H -B
Installation completed.
server1:/tmp/ispconfig3_install/install#
Nachdem das alles durch gelaufen ist, kannst du dich bereits mit deinem Webbrowser im System anmelden unter http://server1.example.com:8080 oder http://192.168.178.84:8080
Der Benutzername und das Passwort sind jeweils admin.