Inhaltsverzeichnis

Howto ISPConfig3

incl. Apache2 + Php5 + myDNS + Postfix + Roundcube + SpamAssassin + ClamAV + Webalizer + PureFTPd + Https

Author: F4RR3LL|Sven
E-Mail: sven.richter@nixhelp.de
Stand: 29.11.2009


Diese Installation wurde auf Debian LENNY getestet

Installation Webserver


Auf gehts, wir installieren den Indianer mit ein paar Modulen:

aptitude install openbsd-inetd apache2 apache2.2-common apache2-doc apache2-mpm-prefork \
apache2-utils libexpat1 ssl-cert apache2-suexec libapache2-mod-php5 php5 \
php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi \
php5-mcrypt mcrypt libapache2-mod-fcgid  php-pear php-auth  php5-imagick \
imagemagick libapache2-mod-suphp mysql-server mysql-client libmysqlclient15-dev


Du wirst nach dem root pass für mysql gefragt.
Setzt dein gewünschtes root passwort und bestätige es dann noch einmal.

Folgende Frage taucht auf:

Webserver, die automatisch konfiguriert werden sollen: <– apache2

Nach der Installation folgende Module aktivieren:

a2enmod suexec rewrite ssl actions include


Phpmyadmin anpassen:

 rm -rf /etc/phpmyadmin/htpasswd.setup


Folgenden Teil in der /etc/phpmyadmin/apache.conf auskommentieren:

nano /etc/phpmyadmin/apache.conf
#       # Authorize for setup
#       <Files setup.php>
#           # For Apache 1.3 and 2.0
#           <IfModule mod_auth.c>
#               AuthType Basic
#               AuthName "phpMyAdmin Setup"
#               AuthUserFile /etc/phpmyadmin/htpasswd.setup
#           </IfModule>
#           # For Apache 2.2
#           <IfModule mod_authn_file.c>
#               AuthType Basic
#               AuthName "phpMyAdmin Setup"
#               AuthUserFile /etc/phpmyadmin/htpasswd.setup
#           </IfModule>
#           Require valid-user
#       </Files>


Das mit dem ruby ist nen kleiner Fix den ich auf der Howtoforge Seite gesehen hab, den nehmen wir gleich mit ;)

nano /etc/mime.types


folgenden Teil auskommentieren

#application/x-ruby                             rb


Soo nun ists zeit für nen Apache neustart:

/etc/init.d/apache2 restart


Symlink für phpmyadmin

ln -s /usr/share/phpmyadmin /var/www/phpmyadmin


Installation FTP Server


Wer Proxmox/Openvz benutzt findet hier noch die zu setzenden Capabilities die im Host zu setzen sind. Sonst startet der FTP ned.→ Pureftpd CAPABILITYs

aptitude install pure-ftpd-common pure-ftpd-mysql


Nun zwei kleine Anpassungen

nano /etc/default/pure-ftpd-common


Hier den Startmodus ändern und chroot auf true ändern

STANDALONE_OR_INETD=standalone

VIRTUALCHROOT=true


Um Auth TLS zu aktivieren mache folgendes:

cd /etc/pure-ftpd/conf
echo 1 > 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
chmod 600 /etc/ssl/private/*.pem

Es bietet sich noch an die Passive Portrange des FTP auch gleich mit anzugeben.
Wenn man IPTABLES nutzt kann das ganz hilfreich sein.
In meinem Beispiel nehmen wir die Ports 4000 - 4020. Kann man allerdings beliebig abändern.

cd /etc/pure-ftpd/conf
echo 4000 4020 > PassivePortRange

Nun öffne die Datei:

nano /etc/inetd.conf

hier folgende Zeile auskommentieren:

#ftp    stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper

nun initd und den ftp neu starten

/etc/init.d/openbsd-inetd restart
/etc/init.d/pure-ftpd-mysql start


Installation Quota

aptitude install quota quotatool

Hier nun die /etc/fstab anpassen:

nano /etc/fstab

einfach bei der betreffenden Passage usrquota,grpquota mit anfügen.
zB so

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    errors=remount-ro,usrquota,grpquota 0       1
/dev/sda2       /tmp            ext3    defaults,noexec        0       2
/dev/sda3       none            swap    sw              0       0


Installation DNS Server


Zuerstmal die Abhängigkeiten

aptitude install g++ libc6 gcc gawk make texinfo libmysqlclient15-dev
cd /usr/src/
wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.27.tar.gz
tar xvfz mydns-1.2.8.27.tar.gz
cd mydns-1.2.8
./configure
make
make install

Nun noch ein Script erstellen mit dem man mydns starten und stoppen kann
Hier bitte aufpassen das ihr am Ende keine zusätzlichen Leerzeichen einfügt.
Dann funktioniert es nämlich nicht.

cat > /etc/init.d/mydns << "EOF"
#!/bin/sh
#
# mydns Start the MyDNS server
#
# Author: Philipp Kern <phil@philkern.de>.
# Based upon skeleton 1.9.4 by Miquel van Smoorenburg
# <miquels@cistron.nl> and Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/mydns
NAME=mydns
DESC="DNS server"
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
start-stop-daemon --start --quiet --exec $DAEMON -- -b
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
start-stop-daemon --stop --oknodo --quiet --exec $DAEMON
echo "."
;;
reload|force-reload)
echo -n "Reloading $DESC configuration..."
start-stop-daemon --stop --signal HUP --quiet --exec $DAEMON
echo "done."
;;
restart)
echo -n "Restarting $DESC: $NAME"
start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --exec $DAEMON -- -b
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0
EOF

Nun noch das Script ausführbar machen und die *Autostart Links* erstellen und natürlich auch starten von myDNS:

chmod +x /etc/init.d/mydns
update-rc.d mydns defaults

Install fail2ban Jailkit vLogger Webalizer

Hier mal ne leichte Passage zum Erholen →

aptitude install fail2ban vlogger webalizer build-essential autoconf automake1.9 libtool flex bison
cd /usr/src/
wget http://olivier.sessink.nl/jailkit/jailkit-2.8.tar.gz
tar xvfz jailkit-2.8.tar.gz
cd jailkit-2.8
./configure
make
make install


Installation Mailserver


aptitude install postfix postfix-mysql libsasl2-2 sasl2-bin libsasl2-modules-sql libsasl2-modules procmail \
courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop \
courier-pop-ssl courier-ssl courier-maildrop gamin libgamin0 libglib2.0-0 amavisd-new \
spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch \
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 getmail4


Fragen bei der Installation: (alles andere mit OK bestätigen)

Verzeichnisse für WWW-Administration anlegen? NEIN
Allgemeine Art der Konfiguration: Internet-Site
System-E-Mail-Name: deine.domain.tld

Nun müssen noch die Certs für Courier geändert werden,
da dieses bei der Install Certifikate für Localhost erstellt und wir wollen ja welche für die eigene Domain haben.

cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

öffne folgende Datei:

nano /etc/courier/imapd.cnf

hier die Zeile CN=localhost in CN=deine.domain.tld ändern

nun die folgende Datei öffnen:

nano /etc/courier/pop3d.cnf

hier ebenfalls die Zeile CN=localhost in CN=deine.domain.tld ändern

Anschließend werden neue Certifikate erstellt:

mkimapdcert
mkpop3dcert

Die Dienste müssen nun noch neu gestartet werden und das wars denn schon →

/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart

Installation Squirrelmail oder Roundcube Webmail


SQUIRRELMAIL


aptitude install squirrelmail
ln -s /usr/share/squirrelmail/ /var/www/webmail

Anschließend muss man noch den Squirrel einrichten:

squirrelmail-configure

D drücken
courier reinschreiben
bestätigen mit anyeinem key ;)
speichern mit S
und schließen mit Q

ROUNDCUBE

!!! Vorsicht Roundcube ist bissl tricky ;) !!!

cd /usr/src/
wget wget http://downloads.sourceforge.net/roundcubemail/roundcubemail-0.3-stable.tar.gz?use_mirror=freefr
tar xvzf roundcubemail-0.3-stable.tar.gz -C /var/www/
mv /var/www/roundcubemail-0.3-stable/ /var/www/webmail/
chmod 777 /var/www/webmail/temp/
chmod 777 /var/www/webmail/logs/


Bevor du Roundcube nutzen kannst solltest du eine Datenbank und einen Benutzer für Roundcube erstellen.
Logge dich mit deinen mysql root Daten ein auf http://domain.server.tld/phpmyadmin/
und erstelle dir eine Datenbank und einen User mit Pass für Roundcube.
Nun im Browser die Seite http://domain.server.tld/webmail/installer/ aufrufen und den Anweisungen folgen.
Im Prinzip ist die Installation selbsterklärend.

Die Configs die bei der Installation erstellt werden müssen bei Schritt 2 nach

nano /var/www/webmail/config/main.inc.php

und

nano /var/www/webmail/config/db.inc.php

kopiert werden.

nach der Installation müssen die Installationsdateien entfernt werden:

rm -rf /var/www/webmail/installer/

Installation ISPConfig 3

Schau am besten vor der Installation nach das Du auch die neuste Version benutzt http://www.ispconfig.org/
Derzeit ist Version 3.0.1.6 aktuell und dient als Grundlage für die Installation:

cd /usr/src/
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xvfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/
php -q install.php
php -q install.php

--------------------------------------------------------------------------------
 _____ ___________   _____              __ _       
|_   _/  ___| ___ \ /  __ \            / _(_)      
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _ 
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| |
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, |
                                              __/ |
                                             |___/ 
--------------------------------------------------------------------------------

>> Initial configuration

Operating System: Debian Lenny/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 <ENTER>.
Tap in ”quit” (without the quotes) to stop the installer.

Select language (en,de) [en]: **de** 

Installation mode (standard,expert) [standard]: **ENTER**

Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [server1.example.com]: **ENTER**

MySQL server hostname [localhost]: **ENTER**

MySQL root username [root]: **ENTER**

MySQL root password []: **deinsupergeheimesrootpasswortfürmysql**

MySQL database to create [dbispconfig]: **ENTER**

MySQL charset [utf8]: **ENTER**

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]: **ENTER**
State or Province Name (full name) [Some-State]: **ENTER**
Locality Name (eg, city) []: **ENTER**
Organization Name (eg, company) [Internet Widgits Pty Ltd]: **ENTER**
Organizational Unit Name (eg, section) []: **ENTER**
Common Name (eg, YOUR name) []: **ENTER**
Email Address []: **ENTER**
Configuring Jailkit
Configuring SASL
Configuring PAM
Configuring Courier
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring MyDNS
Configuring Apache
Configuring Firewall
Installing ISPConfig
ISPConfig Port [8080]: **ENTER**

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.
Starting amavisd: amavisd-new.
Stopping ClamAV daemon: clamd.
Starting ClamAV daemon: clamd .
Stopping Courier authentication services: authdaemond.
Starting Courier authentication services: authdaemond.
Stopping Courier IMAP server: imapd.
Starting Courier IMAP server: imapd.
Stopping Courier IMAP-SSL server: imapd-ssl.
Starting Courier IMAP-SSL server: imapd-ssl.
Stopping Courier POP3 server: pop3d.
Starting Courier POP3 server: pop3d.
Stopping Courier POP3-SSL server: pop3d-ssl.
Starting Courier POP3-SSL server: pop3d-ssl.
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 -E -A -u 1000 -O clf:/var/log/pure-ftpd/transfer.log -b -B
Installation completed.


Du kannst Dich jetzt in deinen Webserver einloggen unter http://domain.server.tld:8080
Login: User: admin Pass: admin
Nach dem ersten Einloggen bietet sich an erstmal das Admin pass zu ändern und die Sprache auf Deutsch zu stellen.
Klicke auf Tools und dann auf Password and Language
Trage dein neues Passwort ein und wechsel die Sprache auf Deutsch

HTTPS für das Admin Interface / Webmail / Phpmyadmin


Für diese Passage bedanke ich mich bei Alexander Fox der diese Anleitung als gesondertes Howto auf howtoforge.de veröffentlicht hat. Da ich der Meinung bin das dies wichtiger Bestandteil der Hauptinstallation ist habe ich es hier direkt integriert.

mkdir /etc/apache2/ssl
cd /etc/apache2/ssl

Zertifikate erstellen:

openssl genrsa -des3 -out ispserver.key 4096

openssl req -new -key ispserver.key -out ispserver.csr

openssl x509 -req -days 3650 -in ispserver.csr -signkey ispserver.key -out ispserver.crt

openssl rsa -in ispserver.key -out ispserver.key.insecure

mv ispserver.key ispserver.key.secure

mv ispserver.key.insecure ispserver.key

Das Apache ssl Modul aktivieren falls es noch inaktiv ist:

a2enmod ssl

Den vhost von ISPCONFIG anpassen

nano /etc/apache2/sites-available/ispconfig.vhost

füge die folgenden Zeilen innerhalb von “<VirtualHost ….></VirtualHost>” hinzu

SSLEngine On

SSLCertificateFile /etc/apache2/ssl/ispserver.crt

SSLCertificateKeyFile /etc/apache2/ssl/ispserver.key

SSLProtocol All -SSLv2
SSLCipherSuite ALL:!EXP:!NULL:!ADH:!LOW
SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown

Webmail und Phpmyadmin ebenfalls auf https switchen:

nano /etc/apache2/sites-enabled/000-default

fügt hier folgendes hinzu wieder wie oben zwischen “<VirtualHost ….></VirtualHost>”

<IfModule mod_rewrite.c>

<IfModule mod_ssl.c>

<Location /phpmyadmin>

RewriteEngine on

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}:8080/phpmyadmin [R]

</Location>

</IfModule>

</IfModule>

<IfModule mod_rewrite.c>

<IfModule mod_ssl.c>

<Location /webmail>

RewriteEngine on

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}:8080/webmail [R]

</Location>

</IfModule>

</IfModule>

Neustarten des Apache

/etc/init.d/apache2 restart


Du kannst Dich jetzt in deinen Webserver einloggen unter https://domain.server.tld:8080


Das wars, viel Spaß mit ISPConfig 3

Gruß Sven


Hilfen und Extras

BUGFIX


Es kann bei Debian Lenny zu diesem Fehler kommen:

php -q install.php


--------------------------------------------------------------------------------
 _____ ___________   _____              __ _       
|_   _/  ___| ___ \ /  __ \            / _(_)      
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _ 
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| |
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, |
                                              __/ |
                                             |___/ 
--------------------------------------------------------------------------------


>> Initial configuration  


Notice: Undefined variable: distver in /usr/src/ispconfig3_install/install/lib/install.lib.php on line 135

Notice: Undefined variable: distid in /usr/src/ispconfig3_install/install/lib/install.lib.php on line 135

Notice: Undefined variable: distbaseid in /usr/src/ispconfig3_install/install/lib/install.lib.php on line 135


Fixen könnt ihr das in der Datei: ispconfig3_install/install/lib/install.lib.php in der unten genannten Zeile einfach 5.0 gegen 5.0.2 tauschen und dann starten.

  if(trim(file_get_contents('/etc/debian_version')) == '5.0' || trim(file_get_contents('/etc/debian_version')) == 'lenny/sid') {
                        $distname = 'Debian';
                        $distver = 'Lenny/Sid';
                        $distid = 'debian40';
                        $distbaseid = 'debian';
                        swriteln("Operating System: Debian Lenny/Sid or compatible\n");
                }

OpenVZ / Proxmox und PureFTPD

PureFTPD greift auf gewisse Schnittstellen zurück die der Virtuellen Maschine nicht vom Standard aus gegeben sind.
Hierzu muss im Host die Config der VM bearbeitet bzw. ergänzt werden.
Die Configs liegen unter /etc/vz/conf !

CAPABILITY=”CHOWN:on DAC_READ_SEARCH:on SETGID:on SETUID:on NET_BIND_SERVICE:on NET_ADMIN:on SYS_CHROOT:on SYS_NICE:on “

Zurück zum Index