Pues si, todavía siguen intentando ataques con diccionario para usuarios y contraseñas...
Así al menos he recordado que me quedaba por hacer una entrada sobre firewalls y otras defensas que poder implementar a nuestro servidor de correo.
sudo apt-get install phpmyadmin apache2 apache2-utils
Aceptamos la creacción de la base de datos necesaria para phpmyadmin y damos la contraseña de superusuario (root) de MySQL que creamos en el primer apartado de la guia. La siguiente pantalla nos requerirá una nueva contraseña para el usuario phpmyadmin y tras la confirmación se nos preguntará que servidor web vamos a utilizar para proceder a la configuración automática, en nuestro caso apache2.sudo a2enconf phpmyadmin
sudo php5enmod mcrypt
sudo /etc/init.d/apache2 restart
sudo nano /etc/phpmyadmin/apache.conf
Alias /<loquesea> /usr/share/phpmyadmin
El siguiente paso será añadir un nivel de autenticación adicional con .htaccess . Para ello vamos a editar el fichero de configuración del sitio en Apache:
sudo nano /etc/phpmyadmin/apache.conf
Donde buscamos la sección:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
Y añadimos justo debajo la siguiente línea:
AllowOverride All
Cerramos y guardamos el fichero para despues reiniciar Apache.
sudo /etc/init.d/apache2 restart
Vamos a crear el fichero htaccess encargado de la configuración de acceso:
sudo nano /usr/share/phpmyadmin/.htaccess
Donde escribiremos lo siguiente:
AuthType Basic
AuthName "Acceso restringido"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Aquí dejo una guía en profundidad sobre htaccess para aquellos que quieran saber más sobre el tema.
Lo siguiente será crear un usuario con htpasswd:
sudo htpasswd -c /etc/phpmyadmin/.htpasswd <TU USUARIO>
Se nos requerirá una contraseña para el nuevo usuario y las credenciales se guardarán cifradas en .htpasswd dentro de la carpeta de phpMyAdmin. Para añadir usuarios adicionales emplearemos el mismo comando pero sin el atributo -c.
Ahora, si nos dirigimos con un navegador a phpMyAdmin (Acordarse de que le dimos un nuevo alias) se nos requerirá un usuario y contraseña para poder acceder a este.
Roundcube es un agente de correo web, que permitirá a nuestros usuarios acceder y gestionar su correo por medio de nuestro servidor web. En un principio pensé en llevar a cabo esta tarea por medio de SquirrelMail pero su diseño, mayor soporte y las ganas de probar algo nuevo me han llevado a elegir Roundcube para este fin. Para instalarlo en Ubuntu (Para Debian lo detallo más adelante) basta con:
sudo apt-get install roundcube roundcube-mysql roundcube-plugins
Nos preguntará si queremos configurar el acceso a la base de datos, elegimos que si y posteriormente que queremos hacerlo por MySQL. Nos preguntará por la contraseña de root de nuestra base de datos y luego por la que queramos elegir para el usuario roundcube que creará.
mkdir /opt/roundcube
cd /opt/roundcube
wget https://downloads.sourceforge.net/project/roundcubemail/roundcubemail/1.1.3/roundcubemail-1.1.3-complete.tar.gz
tar xfz roundcubemail-1.1.3-complete.tar.gz
mv roundcubemail-1.1.3/* .
mv roundcubemail-1.1.3/.htaccess .
rmdir roundcubemail-1.1.3
rm roundcubemail-1.1.3-complete.tar.gz
chown -R www-data:www-data /opt/roundcube
mysql -u root -pCREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'TU_CONTRASEÑA_AQUI';
flush privileges;
quit;
mysql --defaults-file=/etc/mysql/debian.cnf roundcubemail < /opt/roundcube/SQL/mysql.initial.sql
cd /opt/roundcube/config
cp -pf config.inc.php.sample config.inc.php
nano config.inc.php
$config['db_dsnw'] = 'mysql://roundcube:TU_CONTRASEÑA_AQUI@localhost/roundcubemail';
Buscamos el siguiente parámetro: smtp_server y dejamos la linea así:
$config['smtp_server'] = 'localhost';
Para configurar nuestras conexiones por medio de ssl añadimos lo siguiente:
$config['default_host'] = 'ssl://<NOMBRE_DE_DOMINIO_DE_TU_CRT>';
$config['default_port'] = 993;
$config['imap_auth_type'] = PLAIN;
$config['imap_conn_options'] = array(
'ssl' => array(
'verify_peer' => false,
'verfify_peer_name' => false,
);
nano /etc/apache2/conf-available/roundcube.conf
Alias /roundcube /opt/roundcube
Alias /webmail /opt/roundcube
<Directory /opt/roundcube>
Options +FollowSymLinks
# AddDefaultCharset UTF-8
AddType text/x-component .htc
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag display_errors Off
php_flag log_errors On
# php_value error_log logs/errors
php_value upload_max_filesize 10M
php_value post_max_size 12M
php_value memory_limit 64M
php_flag zlib.output_compression Off
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
php_flag zend.ze1_compatibility_mode Off
php_flag suhosin.session.encrypt Off
#php_value session.cookie_path /
php_flag session.auto_start Off
php_value session.gc_maxlifetime 21600
php_value session.gc_divisor 500
php_value session.gc_probability 1
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^favicon\.ico$ skins/larry/images/favicon.ico
# security rules:
# - deny access to files not containing a dot or starting with a dot
# in all locations except installer directory
RewriteRule ^(?!installer)(\.?[^\.]+)$ - [F]
# - deny access to some locations
RewriteRule ^/?(\.git|\.tx|SQL|bin|config|logs|temp|tests|program\/(include|lib|localization|steps)) - [F]
# - deny access to some documentation files
RewriteRule /?(README\.md|composer\.json-dist|composer\.json|package\.xml)$ - [F]
</IfModule>
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
</IfModule>
FileETag MTime Size
<IfModule mod_autoindex.c>
Options -Indexes
</ifModule>
AllowOverride None
Require all granted
</Directory>
<Directory /opt/roundcube/plugins/enigma/home>
Options -FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /opt/roundcube/config>
Options -FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /opt/roundcube/temp>
Options -FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /opt/roundcube/logs>
Options -FollowSymLinks
AllowOverride None
Require all denied
</Directory>
a2enconf roundcube
service apache2 reload