Servidor web · 12 min read · Sep 30, 2025
Instalando un clúster web, de correo electrónico y base de datos MySQL en Debian 6.0 con ISPConfig 3 - Página 2
Los siguientes pasos deben ejecutarse en el servidor 1 y el servidor 2.
Para instalar amavisd-new, SpamAssassin y ClamAV, ejecutamos:
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-perlLa configuración de ISPConfig 3 utiliza amavisd, que carga la biblioteca de filtros de SpamAssassin internamente, por lo que podemos detener SpamAssassin para liberar algo de RAM:
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove
Luego, Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear y mcrypt se pueden instalar de la siguiente manera:
apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-curl 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 php5-xcache libapache2-mod-perl2 sudo zip wgetVerás la siguiente pregunta:
Servidor web para reconfigurar automáticamente: <– apache2
¿Configurar la base de datos para phpmyadmin con dbconfig-common? <– No
Luego ejecuta el siguiente comando para habilitar los módulos de Apache suexec, rewrite, ssl, actions e include:
a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digestPureFTPd y quota se pueden instalar con el siguiente comando:
apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatoolEdita el archivo /etc/default/pure-ftpd-common…
vi /etc/default/pure-ftpd-common… y asegúrate de que el modo de inicio esté configurado en standalone y establece VIRTUALCHROOT=true:
[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]Edita el archivo /etc/inetd.conf para evitar que inetd intente iniciar ftp:
vi /etc/inetd.confSi hay una línea que comienza con ftp stream tcp, coméntala (si no hay tal archivo, está bien, y no tienes que modificar /etc/inetd.conf):
[...]
#:STANDARD: Estos son servicios estándar.
#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
[...]Si tuviste que modificar /etc/inetd.conf, reinicia inetd ahora:
/etc/init.d/openbsd-inetd restartAhora configuramos PureFTPd para permitir sesiones FTP y TLS. FTP es un protocolo muy inseguro porque todas las contraseñas y todos los datos se transfieren en texto claro. Al usar TLS, toda la comunicación puede ser cifrada, haciendo que FTP sea mucho más seguro.
Si deseas permitir sesiones FTP y TLS, ejecuta:
echo 1 > /etc/pure-ftpd/conf/TLSPara usar TLS, debemos crear un certificado SSL. Lo creo en /etc/ssl/private/, por lo tanto, primero creo ese directorio:
mkdir -p /etc/ssl/private/Después, podemos generar el certificado SSL de la siguiente manera:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pemNombre del país (código de 2 letras) [AU]: <– Ingresa el nombre de tu país (por ejemplo, “DE”).
Nombre del estado o provincia (nombre completo) [Some-State]: <– Ingresa el nombre de tu estado o provincia.
Nombre de la localidad (por ejemplo, ciudad) []: <– Ingresa tu ciudad.
Nombre de la organización (por ejemplo, empresa) [Internet Widgits Pty Ltd]: <– Ingresa el nombre de tu organización (por ejemplo, el nombre de tu empresa).
Nombre de la unidad organizativa (por ejemplo, sección) []: <– Ingresa el nombre de tu unidad organizativa (por ejemplo, “Departamento de TI”).
Nombre común (por ejemplo, TU nombre) []: <– Ingresa el nombre de dominio completamente calificado del sistema (por ejemplo, “server1.example.com”).
Dirección de correo electrónico []: <– Ingresa tu dirección de correo electrónico.
Cambia los permisos del certificado SSL:
chmod 600 /etc/ssl/private/pure-ftpd.pemLuego reinicia PureFTPd:
/etc/init.d/pure-ftpd-mysql restartEdita /etc/fstab. El mío se ve así (agregué, usrjquota=aquota.user, grpjquota=aquota.group, jqfmt=vfsv0 a la partición con el punto de montaje /):
vi /etc/fstab# /etc/fstab: información estática del sistema de archivos.
#
# Usa 'blkid' para imprimir el identificador único universal para un
devicio; esto puede usarse con UUID= como una forma más robusta de nombrar dispositivos
que funciona incluso si se agregan y eliminan discos. Ver fstab(5).
#
#
proc /proc proc defaults 0 0
# / estaba en /dev/sda1 durante la instalación
UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 / ext3 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
# swap estaba en /dev/sda5 durante la instalación
UUID=e24b3e9e-095c-4b49-af27-6363a4b7d094 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 Para habilitar quota, ejecuta estos comandos:
mount -o remount /quotacheck -avugm
quotaon -avug
Instala el servidor DNS BIND:
apt-get -y install bind9 dnsutilsInstala vlogger, webalizer y awstats:
apt-get -y install vlogger webalizer awstats geoip-databaseAbre /etc/cron.d/awstats después…
vi /etc/cron.d/awstats… y comenta ambos trabajos cron en ese archivo:
#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh
# Generar informes estáticos:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh Instala Jailkit: Jailkit solo es necesario si deseas chroot usuarios SSH. Se puede instalar de la siguiente manera (importante: Jailkit debe instalarse antes de ISPConfig - ¡no se puede instalar después!):
apt-get -y install build-essential autoconf automake1.9 libtool flex bisoncd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./configure
make
make install
cd ..
rm -rf jailkit-2.14*
Instala fail2ban: Esto es opcional pero recomendado, porque el monitor de ISPConfig intenta mostrar el registro:
apt-get install fail2banPara hacer que fail2ban monitoree PureFTPd y Dovecot, crea el archivo /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
Luego crea los siguientes dos archivos de filtro:
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=(?P\S*),.*
ignoreregex = Reinicia fail2ban después:
/etc/init.d/fail2ban restartPara instalar el cliente webmail SquirrelMail, ejecuta:
apt-get install squirrelmailLuego crea el siguiente enlace simbólico…
ln -s /usr/share/squirrelmail/ /var/www/webmail… y configura SquirrelMail:
squirrelmail-configureDebemos decirle a SquirrelMail que estamos usando Dovecot-IMAP/-POP3:
Configuración de SquirrelMail : Leer: config.php (1.4.0)
Menú Principal –
- Preferencias de Organización
- Configuraciones del Servidor
- Valores Predeterminados de la Carpeta
- Opciones Generales
- Temas
- Libros de Direcciones
- Mensaje del Día (MOTD)
- Plugins
- Base de Datos
- Idiomas
D. Establecer configuraciones predefinidas para servidores IMAP específicos
C Activar color
S Guardar datos
Q Salir
Comando >> <– D
Configuración de SquirrelMail : Leer: config.php
Mientras hemos estado construyendo SquirrelMail, hemos descubierto algunas
preferencias que funcionan mejor con algunos servidores que no
funcionan tan bien con otros. Si seleccionas tu servidor IMAP, esta
opción establecerá algunas configuraciones predefinidas
para ese servidor.
Ten en cuenta que aún necesitarás revisar y asegurarte
de que todo esté correcto. Esto no cambia todo. Hay
solo unas pocas configuraciones que esto cambiará.
Por favor selecciona tu servidor IMAP:
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 = No cambiar nada
Comando >> <– dovecot
Configuración de SquirrelMail : Leer: config.php
Mientras hemos estado construyendo SquirrelMail, hemos descubierto algunas
preferencias que funcionan mejor con algunos servidores que no
funcionan tan bien con otros. Si seleccionas tu servidor IMAP, esta
opción establecerá algunas configuraciones predefinidas
para ese servidor.
Ten en cuenta que aún necesitarás revisar y asegurarte
de que todo esté correcto. Esto no cambia todo. Hay
solo unas pocas configuraciones que esto cambiará.
Por favor selecciona tu servidor IMAP:
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 = No cambiar nada
Comando >> 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
Presiona enter para continuar… <– presiona ENTER
Configuración de SquirrelMail : Leer: config.php (1.4.0)
Menú Principal –
- Preferencias de Organización
- Configuraciones del Servidor
- Valores Predeterminados de la Carpeta
- Opciones Generales
- Temas
- Libros de Direcciones
- Mensaje del Día (MOTD)
- Plugins
- Base de Datos
- Idiomas
D. Establecer configuraciones predefinidas para servidores IMAP específicos
C Activar color
S Guardar datos
Q Salir
Comando >> <– S
Configuración de SquirrelMail : Leer: config.php (1.4.0)
Menú Principal –
- Preferencias de Organización
- Configuraciones del Servidor
- Valores Predeterminados de la Carpeta
- Opciones Generales
- Temas
- Libros de Direcciones
- Mensaje del Día (MOTD)
- Plugins
- Base de Datos
- Idiomas
D. Establecer configuraciones predefinidas para servidores IMAP específicos
C Activar color
S Guardar datos
Q Salir
Comando >> <– Q
A continuación, habilitamos un Alias global /webmail para Squirrelmail:
cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload
Ahora abre /etc/apache2/conf.d/squirrelmail.conf…
vi /etc/apache2/conf.d/squirrelmail.conf… y agrega las siguientes líneas al contenedor
[...]
Alias /webmail /usr/share/squirrelmail
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
# el acceso a configtest está limitado por defecto para prevenir filtraciones de información
order deny,allow
deny from all
allow from 127.0.0.1
[...]Crea el directorio /var/lib/squirrelmail/tmp…
mkdir /var/lib/squirrelmail/tmp… y haz que sea propiedad del usuario www-data:
chown www-data /var/lib/squirrelmail/tmpRecarga Apache nuevamente:
/etc/init.d/apache2 reloadEso es todo - /etc/apache2/conf.d/squirrelmail.conf define un alias llamado /squirrelmail que apunta al directorio de instalación de SquirrelMail /usr/share/squirrelmail.
Ahora puedes acceder a SquirrelMail desde tu sitio web de la siguiente manera:
http://www.example.com/squirrelmailTambién puedes acceder a él desde el panel de control de ISPConfig vhost de la siguiente manera (esto no necesita ninguna configuración en ISPConfig):
http://server1.example.com:8080/squirrelmailA continuación, instalamos Unison. Unison se utiliza para sincronizar los directorios /var/www y /var/vmail entre maestro y esclavo
apt-get install unisonAhora instalamos un archivo de configuración de unison en el primer servidor.
En el servidor 1:
Crea un nuevo archivo /root/.unison/default.prf en server1…
mkdir /root/.unison
vi /root/.unison/default.prf
… y agrega el siguiente contenido:
# Raíces de la sincronización
root = /var
root = ssh://192.168.0.106//var/
# Rutas a sincronizar
path = www
path = vmail
# Algunas expresiones regulares que especifican nombres y rutas a ignorar
#ignore = Path stats ## ignora /var/www/stats
#ignore = Path stats/* ## ignora /var/www/stats/*
#ignore = Path */stats ## ignora /var/www/somedir/stats, pero no /var/www/a/b/c/stats
#ignore = Name *stats ## ignora todos los archivos/directorios que terminan con "stats"
#ignore = Name stats* ## ignora todos los archivos/directorios que comienzan con "stats"
#ignore = Name *.tmp ## ignora todos los archivos con la extensión .tmp
# Cuando se establece en verdadero, esta bandera hace que la interfaz de usuario omita
# preguntar confirmaciones sobre cambios no conflictivos. (Más
# precisamente, cuando la interfaz de usuario ha terminado de establecer la
# dirección de propagación para una entrada y está a punto de pasar a la
# siguiente, omitirá todas las entradas no conflictivas y pasará
# directamente al siguiente conflicto.)
auto=true
# Cuando esto se establece en verdadero, la interfaz de usuario no hará preguntas en absoluto. Los cambios no conflictivos se propagarán;
# los conflictos se omitirán.
batch=true
# !Cuando esto se establece en verdadero, Unison solicitará una confirmación extra
# si parece que se ha eliminado toda la réplica, antes de propagar el cambio. Si la bandera de lote también está
# establecida, la sincronización se abortará. Cuando se utiliza la preferencia de ruta
# se solicitará la misma confirmación para las rutas de nivel superior. (En este momento, esta bandera solo afecta a
# la interfaz de usuario de texto.) Ver también la preferencia de punto de montaje.
confirmbigdel=true
# Cuando esta preferencia se establece en verdadero, Unison utilizará la
# hora de modificación y la longitud de un archivo como un `número de inode pseudo`
# al escanear réplicas en busca de actualizaciones, en lugar de leer
# el contenido completo de cada archivo. En Windows, esto puede causar
# que Unison pase por alto la propagación de una actualización si la hora de modificación
# y la longitud del archivo no cambian con la actualización.
# Sin embargo, Unison nunca sobrescribirá tal actualización con un
# cambio de la otra réplica, ya que siempre realiza una verificación segura
# de actualizaciones justo antes de propagar un cambio. Por lo tanto, es
# razonable usar este interruptor en Windows la mayor parte del tiempo
# y ocasionalmente ejecutar Unison una vez con fastcheck establecido en falso,
# si te preocupa que Unison pueda haber pasado por alto una actualización.
# El valor predeterminado de la preferencia es auto, lo que hace que
# Unison use verificación rápida en réplicas de Unix (donde es seguro)
# y verificación lenta en réplicas de Windows. Para compatibilidad
# hacia atrás, sí, no y predeterminado se pueden usar en lugar de
# verdadero, falso y automático. Ver la sección "Verificación Rápida" para más
# información.
fastcheck=true
# Cuando esta bandera se establece en verdadero, los atributos de grupo de los
# archivos se sincronizan. Si los nombres de grupo o los identificadores de grupo se sincronizan
# depende de la preferencia numerids.
group=true
# Cuando esta bandera se establece en verdadero, los atributos de propietario de los
# archivos se sincronizan. Si los nombres de propietario o los identificadores de propietario se sincronizan
# depende de la preferencia extttnumerids.
owner=true
# Incluir la preferencia -prefer root hace que Unison siempre
# resuelva conflictos a favor de root, en lugar de pedir
# orientación al usuario. (La sintaxis de root es la misma que para
# la preferencia root, más los valores especiales newer y older.)
# Esta preferencia se anula por la preferencia preferpartial.
# Esta preferencia debe usarse solo si estás seguro de saber
# lo que estás haciendo!
prefer=newer
# Cuando esta preferencia se establece en verdadero, la interfaz de usuario de texto
# no imprimirá nada en absoluto, excepto en caso de errores.
# Establecer silent en verdadero establece automáticamente la preferencia de lote
# en verdadero.
silent=true
# Cuando esta bandera se establece en verdadero, los tiempos de modificación de archivos (pero no
# los tiempos de modificación de directorios) se propagan.
times=trueQueremos automatizar la sincronización, por eso creamos un trabajo cron para ello en server1.example.tld:
crontab -e*/5 * * * * /usr/bin/unison &> /dev/nullRecibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.