fbpx

Cómo configurar ISPCONFIG

ispconfig

ISPConfig viene a ser un panel de control para manejar Hosting desde máquinas Linux con licencia de software libre en este caso BSD.

Este es uno de los paneles de control que nos permite facilitar el trabajo de editar bases de datos, crear cuentas de usuario, aplicar reglas y cuotas a clientes.. en definitiva un montón de herramientas para facilitarnos la vida con nuestros amados servidores web.

Requisitos: Instalación de Debian limpio y actualizado en versión Wheezy.

0.- ASEGURARNOS DE QUE NUESTRO DEBIAN ESTÉ LIMPIO Y ACTUALIZADO

login: root (escribe tu password
apt-get update
apt-get dist-upgrade

Si no estaba actualizado es conveniente reiniciar el servidor. Y así comenzaremos seguros y actualizados.

Nuestro ejemplo de máquina será el siguiente:

  • Nombre de la máquina: servidor
  • Dominio DNS: .ejemplo.com
  • Red local:  192.168.0.0  – Router: 192.168.0.1

1.- CONFIGURAMOS LA RED Y LOS NOMBRES DE MÁQUINA

nano /etc/network/interfaces
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

Reiniciamos el componente de red para reconfigurar:

/etc/init.d/networking restart

Y editamos el nombre de nuestra máquina en relación a la red, es decir, el host.

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   servidor.ejemplo.com     servidor
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Recordar eliminar 127.0.1.1 —

Añadimos el nombre también al archivo de nombre de máquina de Debian:

echo servidor.ejemplo.com > /etc/hostname

Y comprobamos que los nombres coincidan: ## importante que coincidan ##

hostname
hostname -f

Es posible que necesites reiniciar para comprobarlo correctamente.

2.- AÑADIMOS Y ACTUALIZAMOS LOS REPOSITORIOS NO LIBRES Y DE CONTRIBUCIÓN

Los necesitamos para algunas de las librerías que no son libres del todo.

nano /etc/apt/sources.list

deb http://ftp.de.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.de.debian.org/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

# wheezy-updates, previously known as 'volatile'
deb http://ftp.de.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ wheezy-updates main contrib non-free

apt-get update && apt-get upgrade

3.- CAMBIAMOS LA SHELL POR DEFECTO

dpkg-reconfigure dash

En la pregunta de que si queremos utilizar dash como shell principal contestamos que NO.

* Es importante porque ISPCONFIG lo requiere, si no, no funcionará.

4.- SINCRONIZAR EL RELOJ DE SISTEMA

Es muy bueno que los relojes del sistema estén sincronizados porque así al sincronizar trabajos datados todo funcionará como debe.

apt-get install ntp ntpdate

5.- INSTALEMOS LOS SERVICIOS POSTFIX, DOVECOT, MYSQL, RKHUNTER Y BINUTILS

  1. Postfix será nuestro servidor de correo saliente.
  2. Dovecot será nuestro servidor de correo entrante.
  3. MySql será el servidor de bases de datos.
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve

Después de la descarga nos pedirá una serie de configuraciones:

Nueva contraseña de root para MySQL: Elige la tuya.

La configuración de Postfix te pregunta qué tipo de configuración de correo: Contestad por defecto «Sitio de internet«.

Nombre de sistema de correo: «servidor.ejemplo.com«

Configuremos ahora los puertos y sistemas de seguridad de Postfix.

nano /etc/postfix/master.cf

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

Revisamos estas líneas y quitamos la # para dejarlas como está arriba para activar los servicios de salida con registro de log y activando la seguridad TLS y SSL.

Reiniciamos el servicio Postfix:

/etc/init.d/postfix restart

De MySQL configuramos y permitimos entrar desde cualquier red, «comentando» añadiendo una # antes de la línea bind-address

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

Y reiniciamos el servicio:

/etc/init.d/mysql restart

6.- INSTALEMOS LOS SERVICIOS DE SEGURIDAD (AMAVIS, SPAMASSASIN, CLAMAV)

  • Amavis es el motor que permite controlar, revisar y permitir o no que los correos salgan y se revisen los virus, spam y demás.
  • Spamassasin es una gran base de datos de spam para evitar enviar spam a sus correos salientes.
  • ClamAV es el antivirus libre por excelencia; contiene una gran base de datos.

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

7.- AHORA INSTALAREMOS LOS SERVICIOS (APACHE2, PHP, PHPMYADMIN, FCGI y más)

  • APACHE2 es el servidor web que vamos a utilizar para nuestro ISP.
  • PHP es el lenguaje web más utilizado e instalaremos su última version más estable.
  • PhpMyadmin será el entorno de usuario para organizar y gestionar las bases de datos.

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

Después de la descarga nos pregunta qué servidor web queremos para phpmyadmin… y elegimos apache2.

Tambien nos pregunta si queremos configurar la base de datos dbconfig-common con phpmyadmin y decimos que… NO.

Ahora nos toca añadir los módulos rewrite, ssl, actions e include.

a2enmod suexec rewrite ssl actions include

Configuremos el archivo suphp.conf para permitir instalar varias versiones de PHP. Necesitamos dejemos el archivo como sigue:

/etc/apache2/mods-available/suphp.conf

<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>

Y reiniciamos el servidor web:

/etc/init.d/apache2 restart

8.- INSTALEMOS PHP-FPM y XCACHE PARA MEJORAR LAS VELOCIDADES DE INTERPRETACIÓN

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

Los habilitamos:

a2enmod actions fastcgi alias

Y reiniciamos:

/etc/init.d/apache2 restart

Para añadir otras versiones de PHP podemos revisar este manual.

9.- INSTALAR SERVICIO FTP (PUREFTP) Y CREAR CERTIFICADOS

Instalar pureftp

apt-get install pure-ftpd-common pure-ftpd-mysql

Modificamos la configuración para asegurarnos que está en modo servidor único y cambiamos a true el virtual CHROOT.

nano/etc/default/pure-ftpd-common
[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Configuremos el FTP para poder utilizar los servicios de seguridad web TLS y SSL.

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

Creamos el directorio para agregar los certificados de seguridad y creamos los certificados de seguridad con openssl y cifrado RSA con al menos 2048 bits.

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

Country Name (2 letter code) [AU]: <–Escribe el Código de tu País (ejemplo., «ES»). State or Province Name (full name) [Some-State]: <– Escribe la provincia. Locality Name (eg, city) []: <– Ahora tú ciudad. Organization Name (eg, company) [Internet Widgits Pty Ltd]: <– El nombre de la organización/empresa (ejemplo COLIBRIS Openpartners). Organizational Unit Name (eg, section) []: <– El departamento de la empresa. Common Name (eg, YOUR name) []: <– Escribe el FQDN si del dominio (ejemplo «servidor.ejemplo.com»). Email Address []: <– Tu correo como responsable del servidor.

Ya tenemos certificado y ahora le damos los permisos correctos y reiniciamos el servicio FTP.

chmod 600 /etc/ssl/private/pure-ftpd.pem
/etc/init.d/pure-ftpd-mysql restart

10.- INSTALAR CUOTAS PARA USUARIOS

Instalamos quota que utilizaremos para que los usuarios no se salgan de las cuotas que les otorguemos: (ejemplo, usuario 1 – 500MB).

apt-get install quota quotatool

Configuramos el sistema de ficheros y añadimos (errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0       1)  como configuración de nuestro disco:

nano /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).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>

UUID=4tdc379-fc61-4b23-80b8-ad20cb15e043 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1

# /boot was on /dev/sda1 during installation UUID=46d1bd79-d761-4b23-80b8-ad20cb18e049 /boot ext2 defaults 0 2 /dev/mapper/server1-swap_1 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Y activamos:

mount -o remount /
quotacheck -avugm
quotaon -avug

11.- INSTALAR SERVIDOR DNS BIND

BIND es el servidor DNS más utilizado del mundo, fue creado a principios de los ochenta y se dedica a transformar los nombres de los dominios web en los números de IP que son realmente los ordenadores y a lo largo del tiempo ha ido incorporando algunos servicios más.

apt-get install bind9 dnsutils

12.- INSTALAR FAIL2BAN

Fail2ban nos permite monitorizar y bloquear a usuarios que pretendan atacar nuestro sistema mediante fuerza bruta.

apt-get install fail2ban

Y creamos la configuración para nuestro servidor FTP y el servidor de correo de entrada DOVECOT.

/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

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

Y creamos unos filtros:

nano /etc/fail2ban/filter.d/pureftpd.conf

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

nano /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 =

Y reiniciamos:

/etc/init.d/fail2ban restart

13.- INSTALAR SERVIDOR WEBMAIL

Utilizaremos squirrelmail como webmail básico.

apt-get install squirrelmail

Configuramos Squirrel para que utilice nuestro servidor entrante DOVECOT.

squirrelmail-configure

Y a las preguntas que nos hace el configurador responderemos:

  • D –> Predefinir las configuraciones específicas de los servidores de IMAP.
  • En la siguiente marcamos que nuestro servidor es dovecot.
  • Nos pide pulsad cualquier tecla.
  • Pulsamos S para salvar.
  • Pulsamos Q para salir.

Ahora para configurar SquirrelMail para que cada uno de los dominios que tenga correo, por ejemplo (servidor.ejemplo.com/webmail), puedan usar el servidor web configuramos lo siguiente:

Primero creamos un enlace simbólico para tener todas las configuraciones de apache juntas:

cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload

Y ya editamos la configuración:

/etc/apache2/conf.d/squirrelmail.conf

Alias /squirrelmail /usr/share/squirrelmail Alias /webmail /usr/share/squirrelmail Alias /mail     /usr/share/squirrelmail <Directory /usr/share/squirrelmail> Options FollowSymLinks <IfModule mod_php5.c> 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 </IfModule> <IfModule mod_dir.c> DirectoryIndex index.php </IfModule>

# access to configtest is limited by default to prevent information leak <Files configtest.php> order deny,allow deny from all allow from 127.0.0.1 </Files> </Directory> […]

Creamos el directorio temporal y le damos permisos al usuario www-data:

mkdir /var/lib/squirrelmail/tmp 
chown www-data /var/lib/squirrelmail/tmp

Y reiniciamos el servidor web:

/etc/init.d/apache2 reload

14.- INSTALAMOS ISPCONFIG

Cambiamos a un directorio temporal:

cd /tmp

Descargamos el ISPCONFIG de su página oficial:

wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz

Descomprimimos:

tar xfz ISPConfig-3-stable.tar.gz

Instalamos:

cd ispconfig3_install/install/ 
php -q install.php

Seguimos el instalador con las preguntas y respondemos:

  • Elegimos lenguaje, desafortunadamente no hay español:  en
  • Modo de instalación: standard (es suficiente la configuración a realizar)
  • Pregunta cuál es el FQDN: Como ya marcamos: servidor.ejemplo.com
  • El servidor MYSQL: localhost
  • Usuario root de MYSQL: root
  • La contraseña que marcaste para el root de MYSQL
  • Creamos la base de datos para ISPCONFIG: dbispconfig
  • Sistema de texto: UTF8
  • Crear un certificado RSA para la seguridad del ISPCONFIG
    • ES
    • Provincia
    • Ciudad
    • Tu compañía
    • Departamento
    • servidor.ejemplo.com
    • Tu correo
    • Puerto a utilizar ISPCONFIG: Por defecto 8080
  • Crear el certificado SSL para la seguridad del acceso web a ISPCONFIG
    • ES
    • Provincia
    • Ciudad
    • Tu compañía
    • Departamento
    • servidor.ejemplo.com
    • Tu correo
    • Mejora el entorno de la contraseña de certificado. Marca una contraseña.
  • Se reinicia solo y ya está instalado

Podemos probarlo y, sobre todo, lo primero en hacer es cambiar la contraseña de administración.

En un navegador:

https://servidor.ejemplo.com:8080
usuario: admin
pass: admin

Y vamos a Tools – Password and Language y cambiamos a gusto.

Shares
WhatsApp chat

Si continuas utilizando este sitio, aceptas el uso de las cookies. Más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar