Archivi tag: rsa

Fingerprint SSH su macchine *nix

Mi sono sempre chiesto come venisse generato il fingerprint SSH sulle macchine *nix, grazie al quale è possibile identificare in modo univoco il server al quale ci si sta connettendo (in barba ad eventuali attacchi MITM).

sshIn soldoni, la prima volta che ci si connette al server, sul nostro client (nel file known_hosts) viene salvata una entry contenente FQDN, IP, tipologia di chiave (ad esempio ssh-rsa) e chiave pubblica codificata in base64.

Successivamente, ad ogni nuova connessione, verrà comparato il fingerprint restituito dal server remoto con quello calcolato sulla chiave pubblica salvata nel file known_host. Se i due fingerprint corrispondono significa che il server a cui ci si sta collegando è quello lecito.

Ma come viene calcolato questo fingerprint? Semplice, ottenendo il digest MD5 dalla chiave pubblica del server remoto salvata nel file known_hosts (e quindi codificata in base64).

Ecco il comando:

[root@client ~]# echo 'AAAAB3NzaC1yc2EAAAABIwAAAQEA0wpEu8edkvPEXqMw7nzOG/fEGE5sZCbwYnECEzlMuYi6DPSWuPJfq4U/N2Gp8RZjXQCs9TrZM91t8GIxxLuae1cZ6kelx+h1tlbh1Rj/n+qzYtjVF4XH4qHfV7Ch7nOBplKKxsNRPb7VtxYzoqgiQEi9xqN0Fgj2GcgxYAHq79qk1lvXGNVJGkDtHpt2x2/BmRLkceyId+xMflq2D4QIvEp8m4leAbYZ04ZU6/Dt44xkA1HQcpZ9ivs8OGoGclPD4QJn80+hy7E0p+O7sAQ3DeAGkoZi8ufOmYG9r4DtvnQJplTffVQwmU9y8dBH9/zit1kawkZscG6yzW2BdrhrGH==' \
    | base64 -d | md5sum

il cui output sarà:

414bb2dbd1ba63e6b16117a2abc20bb2

ovvero il fingerprint del server remoto senza i : ogni 2 digit (41:4b:b2:db:d1:ba:63:e6:b1:61:17:a2:ab:c2:0b:b2)

Alla prossima.

Configurare DKIM come milter su Postfix e CentOS 6

Il DKIM (DomainKeys Indentified Mail) è un sistema per riconoscere univocamente le email provenienti dai domini che lo implementano, eliminando così il problema del mail spoofing e mitigando il problema del phishing/spamming. Esso si basa su un sistema di crittografia asimmetrica (RSA, chiave pubblica e privata), ed aggiunge all’header delle email (nel campo DKIM-Signature) alcuni tag necessari per l’identificazione delle stesse (ed eventualmente per la decifratura del corpo del messaggio).

dkim-process1

In soldoni, il destinatario dell’email ricava la chiave pubblica associata al dominio mittente da un record DNS di tipo TXT e la usa per decriptare il messaggio appena ricevuto (che era stato cifrato dal mittente utilizzando la chiave privata di quel dominio).

I dettagli sul funzionamento di tale sistema (con il segnificato dei vari tag aggiunti all’header) potete trovarli qui.

In questo post descriverò la procedura per integrare DKIM con Postfix su piattaforma CentOS 6.2 ed utilizzarlo come milter (con funzionalità di anti mail spoofing, anti phishing ed anti spam).

Per prima cosa installiamo il pacchetto opendkim:

[root@antispam ~]# yum install opendkim

ed impostiamo l’avvio automatico di tale servizio per i diversi runlevels:

[root@antispam ~]# chkconfig --levels 2345 opendkim on

Ora generiamo il keypair per il nostro dominio:

[root@antispam ~]# mkdir -p etc/opendkim/keys/vostrodominio.com/
[root@antispam ~]# /usr/sbin/opendkim-genkey -D /etc/opendkim/keys/vostrodominio.com/ -d vostrodominio.com -s default

e salviamo chiave pubblica e privata all’interno della giusta directory, previa definizione dell’owner:

[root@antispam ~]# chown -R opendkim:opendkim /etc/opendkim/keys/vostrodominio.com
[root@antispam ~]# mv /etc/opendkim/keys/vostrodominio.com/default.private /etc/opendkim/keys/vostrodominio.com/default

Editiamo il file /etc/opendkim.conf e settiamo per prima cosa il giusto pathname delle chiavi:

KeyFile /etc/opendkim/keys/vostrodominio.com/default

e successivamente definiamo la modalità di funzionamento di opendkim:

Mode v

ovvero, essendo installato su un server che funge da anti spam, il demone in questione dovrà solo verificare che le email provenienti dai domini che supportano DKIM siano autentiche (la v sta appunto per verify).

A questo punto editiamo il file /etc/postfix/main.cf ed aggiungiamo le seguenti direttive:

smtpd_milters           = inet:127.0.0.1:8891
non_smtpd_milters       = $smtpd_milters
milter_default_action   = accept

avviamo opendkim:

[root@antispam ~]# service opendkim start

e ricarichiamo la configurazione di postfix:

[root@antispam ~]# service postfix reload

Per verificare che tutto stia funzionando correttamente è sufficiente osservare l’output del comando:

[root@antispam ~]# tail -f /var/log/maillog | grep dkim

e fare delle prove di invio da domini che supportano DKIM (ad esempio gmail) e da domini che non lo supportano. Se in entrambi i casi la mail viene correttamente recapitata a destinazione allora abbiamo la certezza che il nostro nuovo sistema sta funzionando come dovrebbe.

Alla prossima.