P11. Servidor de correu segur

De Lordwektabyte Wiki
< ASIX/M08/UF3
La revisió el 14:32, 16 abr 2020 per Guillem (discussió | contribucions) (→‎Requeriments previs)
(dif) ← Versió més antiga | Versió actual (dif) | Versió més nova → (dif)
Salta a la navegació Salta a la cerca

Enunciat

Seguint les instruccions de l'activitat 1, heu de crear un servidor de correu amb SSL.

Requeriments previs

Començarem amb dues màquines virtuals CentOS 7 minimal netes. Una servirà com a DNS i l'altra serà la que donarà el servei de correu. Podríem instal·lar els 2 serveis a la mateixa màquina per estalviar recursos; però en cas de conflicte o problemes serà més fàcil poder gestionar-ho si per a cada servei fem servir una màquina diferent.

Per al servidor DNS podrem utilitzar la nostra documentació per a crear un servidor DNS separat o bé instal·lar-lo a la mateixa màquina que servirà de correu electrònic.

També haurem de deshabilitar sendmail com a MTA per a evitar conflictes amb postfix si és que aquest està instal·lat (en versions noves de CentOS ja no ve preinstal·lat).

systemctl disable sendmail
systemctl stop sendmail

Procediment

Per a tenir un servidor de correu electrònic necessitarem tenir 2 servidors: el primer serà un SMTP per a enviar correus. El segon, serà un servidor POP/IMAP que serà el servidor que rebi els correus. L'SMTP el muntarem amb Postfix i el POP/IMAP amb Dovecot.

Postfix (SMTP)

Instal·lació

Començarem instal·lant el paquet necessari amb yum en cas que no estigui instal·lat.

yum install postfix -y

Configuració

L'arxiu de configuració principal de Postfix és /etc/postfix/main.cf. L'haurem d'editar de la següent manera per a quadrar els paràmetres del nostre servidor amb els de la configuració:

  • Línia 75: la descomentarem i escriurem el nom de domini corresponent al servidor de correu.
myhostname = mail.boeck.cat


  • Línia 83: descomentarem i escriurem només el domini de la nostra xarxa.
mydomain = boeck.cat


  • Línia 99: descomentem.
myorigin = $mydomain


  • Línia 113: descomentem.
inet_interfaces = all


  • Línia 116: comentem
#inet_interfaces = localhost


  • L´inia 164: comentem
#mydestination = $myhostname, localhost.$mydomain, localhost


  • Línia 165: descomentem
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain


  • Línia 264: descomentem i editem de manera que s'hi reflexin les xarxes del servidor; en aquest cas corresponen a la xarxa vboxnet0, la loopback del servidor i la NAT de VirtualBox, respectivament.
mynetworks = 192.168.56.0/24, 127.0.0.0/8, 10.0.2.0/24


  • Línia 419: descomentem.
home_mailbox = Maildir/


  • Línia 572: descomentem i editem.
smtpd_banner = $myhostname ESMTP


  • Línia 681-688: afegim.
message_size_limit=10485760
mailbox_size_limit=1073741824
smtpd_sasl_type= dovecot
smtpd_sasl_path= private/auth
smtpd_sasl_auth_enable= yes
smtpd_sasl_security_options= noanonymous
smtpd_sasl_local_domain= $myhostname
smtpd_recipient_restictions=permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject


També haurem de modificar l'arxiu /etc/postfix/header_checks i afegir al principi aquestes directives per rebutjar correus que no tinguin adreça de correu al remitent.

/^From:.*<#.*@.*>/ REJECT
/^Return-Path:.*<#.*@.*>/ REJECT


A l'arxiu /etc/postfix/body_checks afegirem una directiva de rebuig si en el cos del correu electrònic s'hi troba el text example.com.

/^(|[^>].*)example.com/ REJECT

Posada en marxa

Com tots els serveis, els habilitarem a l'engegada i els posarem en marxa amb enable i start; o bé restart si aja estava funcionant i volem aplciar els canvis de la configuració.

systemctl enable postfix
systemctl start postfix

Dovecot (POP/IMAP)

Dovecot és el servei que permet recuperar els correus electrònics per a llegir-los, ja sigui utilitzant el protocol POP o IMAP.

Instal·lació

L'instal·larem amb yum.

yum install dovecot -y

Configuració

Haurem de modificar 3 arxius:

  • 1. /etc/dovecot/conf.d/10-auth.conf
Línia 10: descomentar i editar.
disable_plaintext_auth = no 
Línia 100: editar.
auth_mechanisms = plain login


  • 2. /etc/dovecot/conf.d/10-mail.conf
Línia 30: descomentar i editar.
mail_location =maildir:~/Maildir


  • 3. /etc/dovecot/conf.d/10-master.conf
Línia 95-100: descomentar i editar.
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
 mode = 0666
 user postfix
 group postfix
}

Posada en marxa

Com qualsevol servei.

systemctl enable dovecot
systemctl start dovecot

Configuració de Postfix i Dovecot amb SSL

Crear certificat SSL

Primer de tot haurem de crear un certificat SSL amb la seva clau privada:

[root@mail ~]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/certs/server.key -out /etc/pki/tls/certs/server.crt
Generating a 2048 bit RSA private key
.....+++
................+++
writing new private key to '/etc/pki/tls/certs/server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:ES
State or Province Name (full name) []:Catalunya
Locality Name (eg, city) [Default City]:Tona
Organization Name (eg, company) [Default Company Ltd]:Boeck    
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:mail.boeck.cat
Email Address []:guillem@boeck.cat

Configuració

Editarem /etc/postfix/main.cf i afegirem al final:

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt
smtpd_tls_key_file = /etc/pki/tls/certs/server.key
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache

De manera que definim que Postfix faci servir TLS i li passem el certificat i la clau privada que utilitzarà per a xifrar les comunicacions. Aquests certificats són autosignats i generats a l'apartat anterior; per tant, no seran confiables per un tercer.


A l'arxiu /etc/postfix/master.cf:

  • Línia 26-28: descomentar.
smtps     inet  n       -       n       -       -       smtpd
#  -o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes


A l'arxiu /etc/dovecot/conf.d/10-ssl.conf:

  • Línia 8: editar.
ssl = yes
  • Línia 14-15: descomentar i editar
ssl_cert = </etc/pki/tls/certs/server.crt
ssl_key = </etc/pki/tls/certs/server.key

RoundCube

Requeriments

El programari de Roundcube necessita un servidor web i un de bases de dades. En el nostre cas instal·larem Apache i MariaDB per a suplir la dependència.

yum install httpd mariadb-server -y

els posarem en marxa i habilitarem l'arrencada on boot amb

systemctl enable httpd
systemctl enable mariadb
systemctl start httpd
systemctl start mariadb

haurem d'obrir el port 80 del firewall per a poder accedir a roundcube des de qualsevol màquina de la xarxa; com ara el nostre Fedora amfitrió:

firewall-cmd --add-service=http --permanent
firewall-cmd --reload

Configuració MySQL

Primer de tot executarem l'script mysql_secure_installation per a definir una contrasenya de root i esborrar taules d'exemple i usuaris anònims.

Després crearem un usuari per a roundcube i una base de dades on tingui tots els permisos. En aquest cas:

  • Usuari: roundcube
  • Contrasenya: password
  • Nom BBDD: roundcube


mysql -uroot -p
create database roundcube character set utf8 collate utf8_bin;
grant all privileges on roundcube.* to roundcube@localhost identified by 'password';

Instal·lació

Instal·larem roundcube des del repositori epel:

yum install epel-release -y
yum install roundcubemail -y

S'instal·la sobre /usr/share/roundcubemail. El següent pas és importar una base de dades inicial:

cd /usr/share/roundcubemail/SQL/
mysql -uroundcube -p -b roundcube < mysql.initial.sql

Configuració

Primer de tot haurem de modificar la configuració de l'Apache perquè ens permeti accedir des de qualsevol màquina remota al directori on es troba la interfície gràfica de Roundcube. Editarem /etc/httpd/conf.d/roundcubemail.conf.

  • Línies 13 i 30: editar.
Require all granted


I farem restart d'Apache per tal d'aplicar els canvis

systemctl restart httpd


També crec necessari obrir els ports corresponents al servei SMTP i IMAP sobre SSL per tal de poder fer servir aquests servidors de correu des de la xarxa:

firewall-cmd --add-service=smtps --permanent
firewall-cmd --add-service=imaps --permanent
firewall-cmd --reload


Llavors podrem accedir a http://mail.boeck.cat/roundcubemail/installer (havent configurat prèviament el Fedora perquè utilitzi el DNS que hem muntat anteriorment) i començar a posar a punt el Roundcube via web

Verificació de requisits


Si ens fixem, veurem que ens falta l'extensió PHP per a utilitzar MySQL (o MariaDB). L'haurem d'instal·lar i reiniciar Apache:

yum install php-mysql -y
systemctl restart httpd

Un cop fet això, veurem un OK en l'apartat corresponent:

Farem clic a NEXT per avançar a la pantalla de configuració


Els apartats importants a configurar són els següents:

Definirem un nom personalitzat pel nostre correu, que es mostrarà als clients


Definim host, usuari, password i nom de la base de dades que volem que utilitzi

Configuració de la Base de Dades


Haurem de canviar el port d'IMAP per a utilitzar el de IMAP+SSL → 993

Configuració del servidor IMAP


També editarem el port SMTP per a usar SMTP+SSL → 465

Configuració del servidor SMTP


Finalment, a baix de tot, farem clic a Create Config i descarregarem l'arxiu de configuració que després haurem de pujar al servidor, a la ruta /etc/roundcubemail/config.inc.php

M08UF3PT117.png


Per acabar, clicarem Continue i avançarem a la pantalla de test on podrem veure si Roundcube té permisos correctes en diversos apartats:

M08UF3PT118.png


Prova de funcionament

Crearem un parell d'usuaris Linux:

useradd guillem
passwd guillem

useradd julian
passwd julian

Des de la mateixa interfície de prova del RoundCube podem provar el servei SMTP (enviament de correu):

M08UF3PT1119.png


Per a comprovar que hagi arribat, puc utilitzar un client de correu de terminal com ara mutt. D'aquesta manera, puc veure des del servidor DNS que el correu s'hagi enviat:

su julian
mutt -f ~/Maildir

Veiem que hi ha un correu de prova de Roundcube enviat per guillem@boeck.cat

M08UF3PT1120.png


Des de la interfície de Roundcube em puc autenticar com a julian i veure la safata d'entrada on, en efecte, hi ha el correu que he enviat de prova.

M08UF3PT1121.png


Faig doble clic i l'obro per llegir.

M08UF3PT1122.png


Si per exemple, Julian llegeix el missatge i el vol respondre; ho pot fer:

M08UF3PT1125.png


I Guillem pot accedir al servidor i llegir-ne la resposta:

M08UF3PT1123.png


M08UF3PT1124.png