ISPConfig con roundcube, Dkim, bind, fail2ban, dns secundario gratis con BuddyNS sobre Ubuntu 14.04
1. Configurar Hostname y Hosts
3. Deshabilitamos y eliminamos apparmor
4. Configuramos la hora del sistema
6. Instalamos ssl, postfix, dovecot y mysql
7. Instalamos paquetes necesarios para ispconfig
8. Configuramos postfix y mailman
10. Activamos módulos necesarios de apache y php5
13. Instalación y configuración de Fail2ban
13.1. Creamos los filtros de fail2ban
15. Instalamos y configuramos DKIM
16. Instalamos y configuramos RoundCube
16.1. Añadimos plugin para cambiar la contraseña desde roundcube:
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.