ISPConfig con roundcube, Dkim, bind, fail2ban, dns secundario gratis con BuddyNS sobre Ubuntu 14.04


Este tutorial cubrirá la instalación de IspConfig con los servicios apache2, mysql, bind9, postfix, dovecot, courier, dkim, roundcube y la creación de zonas DNS secundarias en servidores gratuitos como buddyns.

Partimos de que tenemos instalado ubuntu 14.04, network interfaces y ssh.

 

1. Configurar Hostname y Hosts

Usaremos como hostname ns1.example.com con la IP pública 11.11.11.11, abrimos un terminal y modificamos el archivo hostname con el nombre de nuestro servidor, se recomienda que sea un FQDN, en nuestro ejemplo usaremos ns1.example.com

sudo nano /etc/hostname

Y cambiamos el contenido del fichero por nuestro nombre, el fichero debería verse así:

ns1.example.com

Ahora editamos el archivo hosts para direccionar localmente nuestra IP pública hacia nuestro hostname.

sudo nano /etc/hosts

El archivo debería tener este aspecto en sus primeras líneas.

127.0.0.1       localhost
11.11.11.11     ns1.example.com ns1

sudo hostname -F /etc/hostname
sudo service hostname restart

2. Reconfiguramos dash.

ispconfig no aceptará /bin/sh:

# dpkg-reconfigure dash

3. Deshabilitamos y eliminamos apparmor

# service apparmor stop

# service apparmor teardown

# update-rc.d -f apparmor remove

# apt-get -y remove apparmor apparmor-utils

4. Configuramos la hora del sistema

apt-get install ntp ntpdate

dpkg-reconfigure tzdata

5. Eliminamos sendmail

service sendmail stop; update-rc.d -f sendmail remove

6. Instalamos ssl, postfix, dovecot y mysql

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

Nos pedirá la nueva contraseña root de mysql y que la repitamos

También pedirá crear un certificado autofirmado para SSL, le decimos que sí y usamos el hostname ns1.example.com como commonName:

También tendremos que decirle a postfix el tipo de configuración de correo: Sitio de Internet. Y el nombre de sistema de correo que será ns1.example.com

7. Instalamos paquetes necesarios para ispconfig

sudo apt-get install -y apache2 apache2-utils libapache2-mod-suphp libapache2-mod-python libapache2-mod-fcgid apache2-suexec libapache2-mod-php5 php5 php5-fpm php5-gd php5-mysql php5-curl php5-intl php5-memcache php5-memcached php5-ming php5-ps php5-xcache php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-imap php5-cgi php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby memcached phpmyadmin postfix postfix-mysql postfix-doc mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve mailman amavisd-new spamassassin clamav clamav-daemon zoo unzip zip arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl libnet-dns-perl bind9 dnsutils vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl pure-ftpd-common pure-ftpd-mysql snmp clamav-docs apache2-doc quota quotatool git

Nos pedirá la configuración mínima para mailman, los lenguajes a soportar y el servidor web, con las flechas nos movemos a la opción y con la tecla espacio seleccionamos. En este caso elegimos “es” y “apache”

Ahora pedirá configurar phpmyadmin, le diremos que cree la base de datos con dbconfig-common, a continuación nos pedirá la contraseña, para que no haya líos ponemos la misma que para el usuario root, nos pedirá también la contraseña de root.

8. Configuramos postfix y mailman

# 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

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

sudo newlist mailman

El comando anterior nos pedirá una dirección de correo y una clave para mailman. Además arrojará una lista de distribución que debemos copiar y pegar en el siguiente archivo:

nano /etc/aliases

# See man 5 aliases for format
postmaster: root
clamav: root
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"

sudo newaliases

sudo service mailman start

sudo service postfix restart

9. Paramos spamassassin.

Ispconfig lo utilizará cuando sea necesario:

sudo service spamassassin stop

sudo update-rc.d -f spamassassin remove

10. Activamos módulos necesarios de apache y php5

php5enmod mcrypt

sudo a2enmod rewrite ssl actions include cgi dav_fs suexec dav auth_digest fastcgi alias deflate headers expires

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

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

...

sudo ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.conf

sudo nano /etc/mime.types

#application/x-ruby         rb

service apache2 restart

11. Configuramos pure-ftpd

nano /etc/default/pure-ftpd-common

STANDALONE_OR_INETD=standalone
VIRTUALCHROOT=true

sudo nano /etc/pure-ftpd/conf/TLS — escribimos 1

mkdir -p /etc/ssl/private/

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

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

sudo rm /etc/cron.d/awstats

12. JailKit

apt-get install -y build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold

cd /tmp

wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz

tar xvfz jailkit-2.17.tar.gz

cd jailkit-2.17

./debian/rules binary

cd ..

dpkg -i jailkit_2.17-1_*.deb

rm -rf jailkit-2.17*

13. Instalación y configuración de Fail2ban

apt-get install -y fail2ban

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

nano /etc/fail2ban/jail.local

[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

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

[fail2ban]
enabled = true
filter = fail2ban
action = iptables-allports[name=fail2ban]
sendmail-whois[name=fail2ban]
logpath = /var/log/fail2ban.log
findtime = 604800
bantime = 604800

13.1. Creamos los filtros de fail2ban

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 =

echo “ignoreregex =” >> /etc/fail2ban/filter.d/postfix-sasl.conf

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

[Definition]

failregex = fail2ban.actions: WARNING \[(.*)\] Ban <HOST>

reregex = fail2ban.actions: WARNING \[fail2ban\] Ban <HOST>

service fail2ban restart

14. Instalamos IspConfig 3.4

cd /tmp

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

tar xfz ISPConfig-3-stable.tar.gz

cd ispconfig3_install/install/

php -q install.php

sudo php -q update.php

15. Instalamos y configuramos DKIM

cd /tmp

git clone https://git.schaal-24.de/ispconfig/dkim.git

cd dkim

php -q install.php — Seleccionamos Y para todo

16. Instalamos y configuramos RoundCube

http://roundcube.net/download/

Lo descomprimimos en /var/www/html/roundcube/

mysql -u root -p

CREATE DATABASE roundcube;
GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost IDENTIFIED BY ‘password’;

FLUSH PRIVILEGES;

en el navegador:

http://IP.XX.XX.XX/roundcube/installer

16.1. Añadimos plugin para cambiar la contraseña desde roundcube:

nano /var/www/html/roundcube/config/config.inc.php

Ctrl + w para buscar plugins y cambiamos la línea a:

$config[‘plugins’] = array(‘password’);

cd /var/www/html/roundcube/plugins/password

cp config.inc.php.dist config.inc.php

nano config.inc.php

$config[‘password_driver’] = ‘sql’;

default installation:

$rcmail_config[‘password_db_dsn’] = ‘mysql://ispconfig:PASSWORD@localhost/dbispconfig’;)

Se puede encontrar la clave de instalación en

/usr/local/ispconfig/interface/lib/config.inc.php

# Default: dbispconfig

USE dbispconfig;

DELIMITER //

CREATE FUNCTION update_passwd (pwd varchar(100), usr varchar(100)) RETURNS INT

BEGIN

UPDATE dbispconfig.mail_user SET password=pwd WHERE login=usr LIMIT 1;

RETURN ROW_COUNT();

END//

DELIMITER ;

Nos aseguramos de que el usuario ispcofing tenga permisos para ejecutar la función.

Logs: /var/www/html/roundcube/logs/errors

16.2. Cambiamos el editor por defecto para que sea HTML:

nano /var/www/html/roundcube/config/defaults.inc.php

ctrl + w editor

$config[‘htmleditor’] = 1;

16.3. Hacer que roundcube sea accesible desde cualquier dominio configurado como correo.mi-dominio.tld y webmail.mi-dominio.tld

nano /etc/apache2/sites-available/010-roundcube.conf

<VirtualHost *:80>

ServerAdmin admin@mi-dominio.tld

DocumentRoot /var/www/html/roundcube

ServerName correo

ServerAlias correo.* webmail.*

UseCanonicalName Off

<Directory /var/www/html/roundcube/>

AllowOverride none

allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/roundcube-error.log

LogLevel warn

CustomLog ${APACHE_LOG_DIR}/roundcube-access.log combined

</VirtualHost>

a2ensite 020-roundcube.conf

service apache2 restart

17. Configurar template DNS.

Vamos a IspConfig – DNS – Plantillas – Default, activamos DKIM y copiamos los siguiente en el cuadro:

[ZONE]

origin={DOMAIN}.

ns={NS1}.

mbox={EMAIL}.

refresh=7200

retry=540

expire=604800

minimum=86400

ttl=3600

[DNS_RECORDS]

A|{DOMAIN}.|{IP}|0|3600

A|www|{IP}|0|3600

A|correo|{IP}|0|3600

A|webmail|{IP}|0|3600

A|ftp|{IP}|0|3600

A|mail|{IP}|0|3600

A|smtp|{IP}|0|3600

A|imap|{IP}|0|3600

A|pop|{IP}|0|3600

NS|{DOMAIN}.|{NS1}.|0|3600

NS|{DOMAIN}.|{NS2}.|0|3600

NS|{DOMAIN}.|d.ns.buddyns.com.|0|3600

NS|{DOMAIN}.|e.ns.buddyns.com.|0|3600

MX|{DOMAIN}.|mail.{DOMAIN}.|10|3600

TXT|_domainkey|o=~|0|3600

TXT|{DOMAIN}.|v=spf1 a mx ip4:{IP} ~all|0|3600

18.Configurar DNS y BuddyNS.

Vamos a crear nuestra zona ns1.example.com, en el panel de control de IspConfig, vamos a DNS – Agregar Zona DNS.

Dominio                                                        example.com

Dirección IP                                                   11.11.11.11

NS 1                                                           ns1.example.com

NS 2                                                           c.buddy.ns.com

Correo                                                         info@example.com

Pulsamos sobre Crear registro DNS

Agregamos estas IPs de buddyns para permitir la transferencia.

Permitir transferencias de zona a

estas IPs (lista separada por comas)  88.198.106.11,213.183.56.98,107.191.99.111

Vamos a https://www.buddyns.com/buddyboard/account/

Añadimos la zona a buddy:

Primary Server

11.11.11.11

Domains

example.com

y picamos el botón Add Zones.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *