Esercitazione 04

Sommario
Esercitazione 04
■  One-time password
■  S/Key
Andrea Nuzzolese
ALMA MATER STUDIORUM – UNIVERSITA’ DI BOLOGNA
Un po’ di background
■  Nei sistemi di autenticazione il canale attraverso il quale
la password viene inserita/spedita può non essere sicuro
■  Un utente malizioso può “sniffare” la password e
riutilizzarla per accessi successivi
■  La crittografia simmetrica o asimmetrica può essere
usata per risolvere il problema
© Nuzzolese 2011-2014
Sicurezza
■  Descrizione esercitazione
■  Alcuni sistemi S/Key-aware per Linux
© Nuzzolese 2011-2014
Sicurezza
2
Un po’ di background: One-time password
■  Lo schema generale è il seguente:
● 
● 
● 
● 
U dichiara l’intenzione di accedere a host H
H seleziona un challenge e lo spedisce a U
U calcola il “response” al challenge e lo spedisce indietro ad H
H verifica il response e permette l’accesso a U
■  Solo U possiede informazioni che gli permettono di
calcolare il response
■  Intercettare il challenge o il response non fornisce
nessuna informazione all’attaccante
© Nuzzolese 2011-2014
Sicurezza
S/Key: intro
■  S/Key è un sistema one-time-password inizialmente
sviluppato in ambiente Unix
■  S/Key è un marchio della Telcordia Technologies, nuovo
nome della Bell Communication Research (Bellcore)
S/Key: inizializzazione
■  Il sistema memorizza per ogni utente una passphrase e
un seed (numero casuale).
■  Si usa una funzione hash one-way f(x)
■  Esistono implementazioni per Linux (via PAM), FreeBSD,
OpenBSD or Windows
■  Il sistema calcola x1=f(<passphrase,seed>); x2=f(x1); …;
xn=f(xn-1)
■  Il modulo S/Key viene usato per abilitare questo tipo di
autenticazione su servizi FTP, NNTP, SSH, etc.
■  Il sistema memorizza f^n(<passphrase,seed>)
© Nuzzolese 2011-2014
Sicurezza
© Nuzzolese 2011-2014
S/Key: verifica
■  All’i-esima autenticazione (i > 0)
●  Il sistema presenta la challenge <seed, i>
●  Il client calcola il response R come segue
▴  R = f^(n – i)(<passphrase,seed>)
●  Il sistema verifica il response
▴  Se f(R) fa match con il valore memorizzato, allora l’autenticazione ha
avuto successo ed R rimpiazza il valore attualmente memorizzato
▴  Altrimenti, l’autenticazione non ha avuto successo
© Nuzzolese 2011-2014
Sicurezza
Sicurezza
Esercitazione – Descrizione generale
■  Lo studente installa sulla propria macchina un servizio
con autenticazione S/Key
■  Riceve una coppia <username,passphrase>
■  Configura il server per permettere l’accesso all’utente
<username> via S/Key utilizzando la <passphrase>
■  Supera la fase di autenticazione S/Key e accede al
servizio
© Nuzzolese 2011-2014
Sicurezza
Esercitazione – Requisiti del servizio
■  Server ssh
■  Supporto per autenticazione S/Key
■  Presenza di log (serviranno per il report finale)
© Nuzzolese 2011-2014
Sicurezza
Come configurare il Laboratorio Virtuale
■  Aggiornare gli indici APT
●  sudo apt-get update
●  sudo update-apt-xapian-index
■  Il pacchetto da installare è babaoglu-security-lab4;
■  Una volta installato il pacchetto occorre:
●  Decomprimere l’archivio Esercitazione3 disponibile nella
directory !/usr/share/unibo/babaoglu-security-lab4 nella
vostra home;
●  Spostarsi nella cartella Esercitazione4 appena
decompressa
●  Lanciare l’installer (IMPORTANTE)
▴  $> ./install.sh
© Nuzzolese 2011-2014
Sicurezza
Esercitazione – Requisiti del client
■  Client testuale, e.g.,
●  Comando ssh per server ssh
© Nuzzolese 2011-2014
Sicurezza
Esercitazione – Requisiti per username e
password
■  http://localhost/esercitazione04/index.php
■  Compilare la form
●  Username e password del dominio studio.unibo.it
●  Nome, cognome, matricola (10 cifre) e captcha
■  In risposta si riceve all’indirizzo specificato una mail di
conferma con
●  I dati inseriti
●  Uno username e una passphrase generati casualmente
●  [Laboratorio Sicurezza 2013/2014: Esercitazione
04]: Mail di conferma per Cognome Nome Matricola
■  Mail inviata in copia anche al tutor
© Nuzzolese 2011-2014
Sicurezza
Esercitazione – Cosa inserire nel report
Esercitazione – Esempio in linux
■  Una copia della mail ricevuta (solo il body)
■  Log (file /var/log/auth.log) del server che dimostrano la
riuscita autenticazione
●  Relativi allo username ottenuto nella mail di conferma
●  Comprensivi della challenge fornita dal server (se presente nei
log)
■  Configurazione del servizio SSH
● OPIE
▴ PAM
■  Uno screenshot relativo all’autenticazione challengeresponse via terminale
■  Il response
© Nuzzolese 2011-2014
Sicurezza
Esercitazione – Esempio in linux – OPIE
(1/2)
■  One-Time-Password in Everything
■  Schema di autenticazione derivato da S/Key
■  Per renderlo disponibile in PAM (debian) si usano diversi
pacchetti:
●  opie-server: mette a disposizione le utility per la gestione lato
server delle OTP
▴  opiepasswd
▴  opieinfo
●  opie-client: utility per la generazione di OTP da usare per
l’autenticazione
▴  opiekey
●  libpam-opie: pacchetto per l’utilizzo di OPIE via PAM
© Nuzzolese 2011-2014
Sicurezza
© Nuzzolese 2011-2014
Sicurezza
Esercitazione – Esempio in linux – OPIE
(2/2)
■  Lato server
●  opiepasswd inizializza l’autenticazione OTP per un utente
▴  Passphrase
▴  Username
▴  Sequence number (default 499)
●  opieinfo fornisce informazioni sul prossimo login OPIE
▴  Sequence number
▴  Seed
■  Lato client
●  opiekey calcola il response associato ad una challenge
▴  Passphrase
▴  Sequence number
▴  seed
© Nuzzolese 2011-2014
Sicurezza
Esercitazione – Esempio in linux – PAM
(1/5)
Esercitazione – Esempio in linux – PAM
(2/5)
■  Pluggable Authentication Modules for Linux
■  Framework per rendere le applicazioni indipendenti dai
meccanismi di autenticazione
■  Politiche di autenticazione per i vari servizi settate via file di
configurazione PAM
Kerberos
Applicazione
PAM-aware
PAM API
■  Autenticazione eseguita da moduli caricati dinamicamente
Opie
■  L’API PAM si divide in 4 differenti facilities
●  Account Management: disponibilità di un account
●  Authentication: l’effettiva procedura di autenticazione e la gestione dei
permessi
File di
config.
●  Session Management, apertura e chiusura di una sessione
Unix auth.
●  Password Management, procedure per cambiare password
© Nuzzolese 2011-2014
Sicurezza
Esercitazione – Esempio in linux – PAM
(3/5)
© Nuzzolese 2011-2014
Sicurezza
Esercitazione – Esempio in linux – PAM
(4/5)
■  Directory di configurazione
●  /etc/pam.d/
●  Ogni file contiene le regole di configurazione di un servizio
■  Regole di configurazione
●  Per ogni servizio ci possono essere più regole
●  Ogni regola indica
▴  il modulo PAM da utilizzare per una data facility
▴  Politica di gestione del modulo
●  L’ordine delle regole è importante:
■  Direttive per la configurazione per uno stesso servizio e
caricamento dei moduli:
#%PAM-1.0
auth sufficient pam_myauthmod.so
auth required pam_unix.so
account required pam_unix.so
password required pam_unix.so
session required pam_unix.so
▴  Per ogni facility i relativi moduli sono eseguiti in ordine
© Nuzzolese 2011-2014
Sicurezza
© Nuzzolese 2011-2014
Sicurezza
Esercitazione – Esempio in linux – PAM
(5/5)
Esercitazione – Esempio in linux –
Configurazione SSH
■  Nel file /etc/pam.d/sshd
●  Commentare le eventuali regole per la facility auth
●  Aggiungere una regola del tipo:
▴  auth required pam_opie.so
■  Alcuni servizi PAM-aware
● 
● 
● 
● 
▴  Il modulo specificato permette l’autenticazione OPIE
sshd, server ssh
proftpd, server ftp
wu-ftpd, server ftp
…
●  Commentare
▴  @include common-auth (Standard Un*x authentication)
■  Nel file di configurazione di sshd (/etc/ssh/sshd_config)
●  Settare
▴  ChallengeResponseAuthentication yes
▴  PasswordAuthentication no
▴  UsePAM yes
© Nuzzolese 2011-2014
Sicurezza
© Nuzzolese 2011-2014
Riferimenti
■  http://www.ietf.org/rfc/rfc1760.txt, The S/KEY One-Time Password System
(RFC)
■  Paper: The S/Key On-Time-Password System, Haller, N., Proceedings of the
ISOC Symposium on Network and Distributed System Security, February 1994,
San Diego, CA
■  http://www.orange-carb.org/SkeyCalc/, S/Key calculator for MAC OS
■  http://www.kernel.org/pub/linux/libs/pam/, useful for documentation material on
Linux-PAM
© Nuzzolese 2011-2014
Sicurezza
Sicurezza