. Instalar Postfix, Dovecot, MySQL, OpenSSL, rkhunter y binutils
. Instalar Amavisd-new, SpamAssassin y Clamav
. Instalar Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear y Mcrypt
. Instalar Xcache
. Instalar PHP-FPM
. Versiones de PHP adicionales
. Instalar Mailman
. Instalar PureFTP y Quota
. Instalar BIND DNS
. Instalar Vlogger, Webalizer, AWStats
. Instalar Jailkit
. Instalar Fail2ban
. Instalar RoundCube
. Instalar ISPConfig

 

En la primera parte de esta guía vimos como instalar un Debian básico con tan solo el servidor SSH, sin ningún servicio y por supuesto sin entorno gráfico (no lo necesitaremos en un servidor). Configuramos los repositorios, actualizamos y dejamos el sistema preparado para instalar el resto de servicios necesarios.

Instalar Postfix, Dovecot, MySQL, OpenSSL, rkhunter y binutils

Podemos instalar estos paquetes de una sola vez con el siguiente comando.

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudo

Respondemos a las preguntas:

Tipo genérico de configuración de correo: Sitio de Internet
Nombre del sistema de correo: ejemplo.com

Nueva contraseña para el usuario «root» de MySQL: contraseñarootmysql
Repetir contraseña para el usuario «root» de MySQL: contraseñarootmysql

A continuación vamos a abrir los puertos TLS/SSL y submission en Postfix. Para ello editamos el fichero /etc/postfix/master.cf y descomentamos las secciones submission y smtps, tal y como se indica a continuación, (hay que dejar comentadas las líneas «-o milter_macro_daemon_name=ORIGINATING», ya que no se utilizan).

[...]
submission inet n - - - - smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...]

A continuación reiniciamos Postfix.

# service postfix restart

Vamos a querer que MySQL escuche en todos los interfaces de red, no solamente en localhost, para ello editamos el fichero /etc/mysql/my.cnf y comentamos la línea «bind-address = 127.0.0.1»

[...]
# 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
[...]

Reiniciamos MySQL.

# service mysql restart

Ahora vamos a comprobar que está habilitado. Para ello ejecutamos.

# netstat -tat | grep mysql

Si MySQL se ha configurado correctamente para escuchar en todos los interfaces, deberemos ver algo así.

tcp    0    0   *:mysql    *:*    LISTEN    27109/mysqld

Instalar Amavisd-new, SpamAssassin y Clamav

Instalamos estos tres paquetes y aprovechamos para instalar otros también necesarios. Ejecutamos el siguiente comando.

# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

La instalación que haremos después de ISPConfig 3, utiliza amavisd y este ya carga los filtros de spamassassin internamente, por lo que no es necesario que spamassassin esté siempre corriendo. Se puede detener spamassassin para liberar algo de memoria.

# service spamassassin stop
# insserv -rf spamassassin

Instalar Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear y Mcrypt

Para instalar estos paquetes y todas sus dependencias ejecutamos.

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 libapache2-mod-python php5-curl php5-intl php5-memcache php5-memcached php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached

Respondemos a las preguntas.

Servidor web que desea reconfigurar automáticamente: apache2
¿Desea configurar la base de datos para phpmyadmin con «dbconfig-common»?: No

A continuación vamos a habilitar los módulos de Apache: suexec, rewrite, ssl, actions e include. También  habilitamos dav, dav_fs y auth_digest para poder usar con WebDAV.

# a2enmod suexec rewrite ssl actions include
# a2enmod dav dav_fs auth_digest

No reiniciar Apache todavía.

A continuación editamos /etc/apache2/mods-available/suphp.conf. Comentamos la sección <FilesMatch «\.ph(p3?|tml)$»> y añadimos la línea “AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml“. De lo contrario todos los ficheros PHP se ejecutarían por suPHP. El fichero debe quedar así (se indican en azul los cambios).

<IfModule mod_suphp.c>
    #<FilesMatch "\.ph(p3?|tml)$"> 
    #    SetHandler application/x-httpd-suphp
    #</FilesMatch>

    AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
    suPHP_AddHandler application/x-httpd-suphp

    <Directory />
        suPHP_Engine on
    </Directory>

# By default, disable suPHP for debian packaged web applications as files
# are owned by root and cannot be executed by suPHP because of min_uid.
    <Directory /usr/share>
        suPHP_Engine off
    </Directory>

# # Use a specific php config file (a dir which contains a php.ini file)
#       suPHP_ConfigPath /etc/php5/cgi/suphp/
# # Tells mod_suphp NOT to handle requests with the type <mime-type>.
#       suPHP_RemoveHandler <mime-type>
</IfModule>

Ahora reiniciamos Apache.

# service apache2 restart

Instalar Xcache

Xcache es un cacher opcode PHP libre y de código abierto, se usa para almacenar en cache los scripts que el sistema compila y así evitar repetir el proceso en las siguientes peticiones. Con Xcache se puede aumentar considerablemente la velocidad de los sitios web. Para instalarlo ejecutamos.

# apt-get install php5-xcache

A continuación hay que reiniciar Apache.

# service apache2 restart

Instalar el módulo PHP-FPM

A partir de la versión de ISPConfig 3.0.5, hay un modo PHP adicional que se puede seleccionar para usar con Apache, se trata de PHP-FPM. Para usar PHP-FPM con Apache necesitamos el módulo mod_fastcgi (no confundir con mod_fcgid, que aunque son similares, este no se puede usar con PHP-FPM).

# apt-get install libapache2-mod-fastcgi php5-fpm

Ahora habilitamos el módulo y reiniciamos de nuevo Apache.

# a2enmod fastcgi alias
# service apache2 restart

Versiones de PHP adicionales (opcional)

A partir de la versión de ISPConfig 3.0.5, es posible tener múltiples versiones de PHP en un único servidor, seleccionables dentro de ISPConfig y que pueden correr a traves de FastCGI y PHP-FPM.

Para aprender a construir versiones adicionales de PHP (FastCGI y PHP-FPM), y como cofigurar ISPConfig, podemos leer este tutorial.

How to use multiple PHP versions (PHP-FPM & FastCGI) with ISPConfig 3

Instalar Mailman

Mailman es un gestor de listas de correo electrónico y noticias. Desde la versión de ISPConfig 3.0.4, es posible gestionar completamente listas de correo de Mailman. Para ello instalamos y configuramos Mailman de la siguiente forma.

# apt-get install mailman

Hay que seleccionar al menos un idioma.

Idiomas a soportar: es (Español)
Falta la lista del sitio: [Aceptar]

Antes de poder iniciar Mailman debemos crear una primera lista, llamada «mailman».

# newlist mailman

Y respondemos a las preguntas.

Indique la dirección de correo de la persona que gestionará la lista: email del admin de la lista
Clave inicial de mailman: contraseñamailman

Para terminar de crear su lista de distribución, tienes que editar el 
fichero /etc/aliases (o equivalente), añadiendo las siguientes líneas 
y ejecutando posiblemente el programa 'newaliases':
## lista de distribución mailman
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"

Presione el retorno de carro para notificar al propietario de la lista mailman… [Aceptar]

Ahora editamos el fichero /etc/aliases y añadimos las líneas que se indican a continuación.

[...]
## 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"

Ahora ejecutamos.

# newaliases

Y después reiniciamos Postfix.

# service postfix restart

Finalmente debemos habilitar Mailman en la configuración de Apache. Para ello creamos el enlace simbólico.

# ln -s /etc/mailman/apache.conf /etc/apache2/conf.d/mailman.conf

Con todo esto hemos definido el alias /cgi-bin/mailman para todos los vhosts de Apache, lo que significa que podemos acceder a la interfaz de configuración de las listas de Mailman desde la URL «http://<vhost>/cgi-bin/mailman/admin/<listname>». La página web para los usuarios de una lista de correo se puede se puede encontrar en «http://<vhost>/cgi-bin/mailman/listinfo/<listname>».

En la URL «http://<vhost>/pipermail» podremos encontrar los archivos de las listas de correo.

Para finalizar tenemos que reiniciar Apache y arrancar el demonio de Mailman.

# service apache2 restart
# service mailman start

Instalar PureFTP y Quota

Vamos a instalar este servidor FTP y Quota para gestionar el espacio en disco asignado a los usuarios.

# apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Editamos el fichero /etc/default/pure-ftpd-common y nos aseguramos de que el modo de inicio está configurado en standalone, también configuramos la variable VIRTUALCHROOT=true.

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Vamos a configurar PureFTP para permitir sesiones FTP seguras por TLS. El protocolo FTP es totalmente inseguro y muy poco recomendable, ya que tanto las contraseñas como los datos, son transferidos en texto claro. Utilizando TLS toda comunicación con el servidor puede ser encriptada, por consiguiente esto hará que FTP sea mucho más seguro.

Para permitir sesiones FTP y TLS ejecutamos lo siguiente.

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

Antes de poder utilizar TLS debemos crear un certificado SSL. Lo vamos a crear en el directorio /etc/ssl/private. Si el directorio no existe primero lo creamos y después procedemos a generar el certificado.

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

Respondemos a las preguntas (se indica un ejemplo, responder como queramos).

Country Name (2 letter code) [AU]: ES
State or Province Name (full name) [Some-State]: Madrid
Locality Name (eg. city) []: Madrid
Organization Name (eg. Company) [Internet Widgits Pty Ltd]: NombreEmpresa
Organizational Unit Name (eg. Section) []: Departamento TIC
Common Name (eg. server FQDN our YOUR name) []: server.ejemplo.com (*.ejemplo.com si queremos que el certificado sea válido para todos los servidores del dominio)
Email Address []: administator@ejemplo.com

Hemos creado un único fichero donde están incluidos tanto el certificado como la clave privada. Debemos proteger bien el fichero que acabamos de crear, por lo que le cambiamos los permisos.

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

Finalmente reiniciamos PureFTP.

# service pure-ftpd-mysql restart

Ahora vamos a editar el fichero /etc/fstab para habilitar las quotas en disco. Se indica en azul la parte que se añade a la partición con punto de montaje en /. Podría quedar algo así.

# /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).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation

UUID=82b873ab-0bff-4de5-9ce0-e3872e2de8ab / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1

[...]

Habilitamos Quota.

# mount -o remount /
# quotacheck -avugm
# quotaon -avug

Nota: El comando quotacheck puede tardar un poco en terminar, dependiendo de la cantidad de directorios y archivos que existan.

Instalación de BIND DNS Server

Lógicamente vamos a necesitar un servidor DNS. Tan solo tenemos que instalarlo, sin configurar nada manualmente, ya que esto se podrá hacer cómodamente tarde desde dentro de ISPConfig.

# apt-get install bind9 dnsutils

Instalar Vlogger, Webalizer y AWstats

Necesitamos habilitar las estadísticas en los sitios web de nuestro servidor, por tanto tenemos que instalar estos programas.

# apt-get install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl

A continuación editamos el fichero /etc/cron.d/awstats y comentamos las líneas siguientes.

#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

Instalación de Jailkit (opcional)

Aunque este paquete es algo opcional, es muy recomandable instalarlo si queremos hacer chroot a los usuarios SSH. Es decir «enjaularlos» en un directorio cuando acceden por SSH y que no puedan ver el resto del sistema.

IMPORTANTE: Jailkit se debe instalar siempre antes de ISPConfig, nunca después.

Tenemos que descargar los fuentes de Jailkit y compilarlos, por lo que en primer lugar vamos a instalar todo lo necesario para poder compilar el paquete.

# apt-get install build-essential autoconf automake libtool flex bison debhelper binutils-gold

Ahora descargamos los fuentes del programa y lo compilamos en un paquete .deb.

# cd /tmp
# wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
# tar -xvzf jailkit-2.19.tar.gz
# cd jailkit-2.19
# ./debian/rules binary

Si todo va bien, nos generará el paquete de instalación .deb en el directorio superior. Ahora lo instalamos y una vez concluida la instalación ya podemos borrar la carpeta de los fuentes.

# cd ..
# dpkg -i jailkit-2.19-1_*.deb
# rm -rf jailkit-2.19

Instalación de fail2ban

La utilidad fail2ban es algo imprescindible en cualquier servidor, con ella podremos tener controlados los accesos no autorizados a los distintos servicios, SSH, Dovecot, Postfix, Apache, etc. Pudiendo configurar una serie de reglas para bloquear las IPs desde las que se generen un número de accesos erróneos en un tiempo determinado. Fail2ban es algo necesario para ayudar a bloquear los intentos de búsqueda de contraseña por fuerza bruta.

# apt-get install fail2ban

Para configurar fail2ban debemos hacer una copia del fichero jail.conf en otro llamado jail.local y hacer todas las modificaciones necesarias en este último.

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

En este ejemplo vamos a configurar fail2ban para que monitorice los registros de PureFTP y Dovecot, pero podemos habilitarlo para cualquier otro servicio. El procedimiento es el mismo. Editamos /etc/fail2ban/jail.local y lo modificamos o añadimos lo necesario para que quede así.

[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

[sasl]
enabled = true
port = smtp
filter = sasl
logpath = /var/log/mail.log
maxretry = 3

Básicamente lo que hemos hecho es habilitar la monitorización de cada uno de esos servicios. La opción filter indica el fichero de filtro que se utilizará para buscar las coincidencias en el registro de cada programa, indicado por logpath. La variable action indica que hacer cuando se encuentren estas coincidencias, en el ejemplo de Dovecot, se añade una regla al Firewal de Linux para bloquear las IPs.

Con el comando «iptables -n -L -v –line-number» podemos ver las IPs bloqueadas por el Firewal.

NOTA: Los nombres de los ficheros de configuración de filtros pueden variar dependiendo de la versión de fail2ban o del sistema. Modificar para poner los correctos.

Comprobamos la configuración de los filtros para pure-FTP desde el fichero /etc/fail2ban/filter.d/pureftpd.conf. Modificamos lo necesario y si no existen los creamos.

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

Hacemos lo mismo para Dovecot, en este caso el fichero de filtros es /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 =

Para finalizar debemos reiniciar Fail2ban.

# service fail2ban restart

Para aprender más acerca de fail2ban y como configurarlo, podemos echar un vistazo a las páginas del manual «man fail2ban» o a la documentación que hay la web de Fail2ban.

Instalación de RoundCube

Vamos a instalar el cliente de correo web RoundCube. En Debian Jessie, RoundCube no aparece en los repositorios, por lo que tendremos que descargarlo desde la web. Si nuestra versión de Debian es otra, seguramente podamos instalarlo con apt-get.

Para instalar y configurar RoundCube haremos uso de este Tutorial de Howtoforge.

Hay que tener en cuenta que antes de seguir con la última parte, referente a la Instalación del plugin RounCube para ISPConfig, primero debemos instalar este.

Instalación de ISPConfig 3

Descargamos la última versión de ISPConfig 3 e instalamos.

# cd /tmp
# wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
# tar -xvzf ISPConfig-3-stable.tar.gz
# cd ispconfig3_install/install
# php -q install.php

Y respondemos a las preguntas que se muestran para configurar el programa.

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

>> Initial configuration 

Operating System: Debian 7.0 (Wheezy/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]: ENTER
Installation mode (standard,expert) [standard]: ENTER

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

MySQL server hostname [localhost]: ENTER

MySQL root username [root]: ENTER

MySQL root password []: ContraseñaRootSQL

MySQL database to create [dbispconfig]: ENTER

MySQL charset [utf8]: ENTER

Generating a 4096 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 (e.g. server FQDN or YOUR name) []: ENTER
Email Address []: ENTER
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]: ENTER

Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: 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]: 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 (e.g. server FQDN or YOUR name) []: ENTER
Email Address []: ENTER

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ENTER
An optional company name []: ENTER
writing RSA key
Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Restarting services ...
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld ..
Checking for tables which need an upgrade, are corrupt or were 
not closed cleanly..
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
Stopping amavisd: amavisd-new.
Starting amavisd: amavisd-new.
Stopping ClamAV daemon: clamd.
Starting ClamAV daemon: clamd .
Restarting IMAP/POP3 mail server: dovecot.
[Wed Jun 04 19:19:02 2014] [warn] NameVirtualHost *:443 has no VirtualHosts
[Wed Jun 04 19:19:05 2014] [warn] NameVirtualHost *:443 has no VirtualHosts
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 -D -A -Y 1 -O clf:/var/log/pure-ftpd/transfer.log -8 UTF-8 -u 1000 -b -H -E -B
Installation completed.

NOTA: Las respuestas a las preguntas para generar los certificados y claves primarias se han dejado por defecto. En cualquier caso se pueden cambiar por los que correspondan.

El instalador configura de forma automática todos los servicios fundamentales, por lo que no es necesario ninguna configuración manual.

El sistema está listo para usar. Ahora podemos acceder a ISPConfig escribiendo cualquiera de estas entradas.

http://192.168.0.30:8080
https://192.168.0.30:8080
http://server.ejemplo.com:8080
https://server.ejemplo.com:8080

Referencias.

Gran parte de esta guía se basa en este tutorial de Howtoforge.
http://www.howtoforge.com/perfect-server-debian-wheezy-apache2-bind-dovecot-ispconfig-3-p3