Ssh con autenticación de dos factores

De zerutek

Saltar a: navegación, buscar

08/09/2010

Ssh con autenticación de dos factores

Una forma sencilla de aumentar la seguridad en los accesos a sistemas remotos.

Software analizado

Antes de llegar a esta solución, se han analizado varias opciones. Se ha escogido otpw al ser muy fácil de implementar y no necesitar hardware adicional, porque las contraseñas se pueden "en papel".

opie

Disponible en los repositorios Debian. Tiene un cliente para móviles. Posiblemente también se puedan generar listados de passwords.

Free Auth

Un proyecto muy interesante y prometedor, que genera passwords en base a la fecha y hora, al estilo de los carísimos "tokens" físicos. Se requiere un dispositivo para generar la password, siendo imposible generar listados. Tiene cliente para móviles, y no hay disponibles paquetes Debian.

optw

Con unos cuantos años a sus espaldas, es un sistema muy sencillo de implementar. Apto para aumentar la seguridad sin recurrir a hardware, y el escogido en este caso.

Instalación

A diferencia de otros paquetes de este estilo, las passwords se almacenan en la carpeta .otpw del "home" del usuario.

Sistemas utilizados

  • Debian Lenny
  • Debian Squeeze
  • Ubunto jaunty

Paquetes para Debian

Para Debian hay que instalar los siguientes paquetes:

 libpam-otpw
 otpw-bin

Configuración 'pam' (Pluggable Authentication Modules)

En este caso sólo se ha modificado la configuración relacionada con 'ssh', porque sólo deseamos añadir seguridad en los accesos remotos.

  • /etc/pam.d/sshd

Añadiremos las siguientes líneas justo antes de Standard Un*x authentication:

auth	sufficient	pam_otpw.so
session	optional	pam_otpw.so

De esta manera conseguimos que primero nos pida la contraseña de un sólo uso, pero no desactivamos las contraseñas normales. Tras tres reintentos se pide la contraseña normal.

Configuración de 'ssh'

En Debian hay que activar el parámetro que permite a ssh interrelacionarse con los módulos pam:

  • /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
  • Reiniciar ssh para aplicar los cambios:
/etc/init.d/ssh restart

Generación de las passwords

Se tienen que generar por cada usuario, y se almacenan el la carpeta .otpw del /home/~user.

  • Generamos las passwords, en formato "legible"
otpw-gen -p1

Tras pedirnos la contraseña inmutable, la parte que no cambia en cada acceso, nos genera algo como esto:

000 tabs does hits dues kiln  056 helm bags chan card bags
001 pope laos hugo sped bogs  057 sure oval drag wept bone
002 baku bray grit save raid  058 luck wine navy pres join
003 easy pane past grab mait  059 soul meet pies amis hrun
004 roar tank grid reid dash  060 care echo keel hush liam
005 they comb cart toll kong  061 koch dick olga cnut trek
006 pale para kilt hand meet  062 whig fins pegs babe sham
007 calm iona ruth seed maid  063 face into fran doll shih
008 buff pits bags burn zeal  064 gate lens dogs gear niro
009 smug fork yale pony casa  065 note hips sort hard levy
010 vivo navy ores cope song  066 cork harp crew wipe tomb
011 fury hook ives cast puts  067 hike pans leys chop bets
012 kiev chef pulp coun goal  068 eels days gory noon pegs
013 khan wiry dahl seve list  069 chop feud lose fell pine
014 shop iaea root capt bean  070 tick polo troy much bull
015 thee minh figs wade perm  071 rees blur vern stop lard
016 suez loss shed bdda jars  072 zoos aria peak mock sums
017 soda guns dump cash ramp  073 gram unto jobs race dole
018 rowe utah draw lime army  074 twin cots sing cues opal
019 shai with once duck lire  075 bell jett anal twin cask
020 pull snow heed cain wits  076 todd hoof rang buzz week
021 refs cash risc sung look  077 pork tech toss pens cpus
022 have pick scan blew kurt  078 ache mill wept trim vary
023 cane dial huge lays glow  079 woes sued into jaws west
024 risk tins bays baba tame  080 auto vita audi bede wood
025 moth live coli grid bark  081 prat bare lend cues mens
026 ring stub knew tire vice  082 lion foot aura care iraq
027 soak sure ribs beds curl  083 yard coma also fuji pose
028 brew sewn flux have shot  084 jews plea teal size warp
029 guys seas toes duff away  085 smog plea cope gaul hare
030 gina matt hons obey bear  086 reid gems tool else away
031 wool knew toss coun dues  087 cube cash eyes reap sept
032 aide sean kilt beer fiat  088 lend army balm hill boon
033 cult spat oven reef work  089 them loss pose gear shoe
034 jazz hush urge barr smug  090 huge doug grab plot womb
035 coil fear taut chip keep  091 drag lino task past bids
036 haul kite bach thaw pier  092 drab jolt rave mins boat
037 cubs walk grab thus gods  093 bean tony cast luis cert
038 ussr hoop gust lace zeus  094 pest nest dies eyed sink
039 went arcs olds wall coke  095 midi trap luch lili plea
040 ftse mats fall work bcci  096 dora pres iona user tend
041 gray posi bonn hind ould  097 dana able grew twin shih
042 rest safe kiwi hood oils  098 heed fell blip bill mere
043 mans each lady acre swan  099 reap duet wire idea bold
044 slid zoom wasp dumb rods  100 term saws food nick sole
045 hole liza sick dear drag  101 glow plug bowe prix none
046 spit chip crow will weir  102 gigs axes boys slum walt
047 ruin suns cuba lori bang  103 neal noun goff lair mala
048 dish cash spat hank leys  104 hall thaw york serb fond
049 blot tons call will dump  105 oars juan dora pius duck
050 scsi wise jose owen item  106 lace gait chub hela wine
051 hush does hens bald pate  107 baku iago fore khan thou
052 asks thee zack paws gail  108 snag omen barr they mire
053 boys kiwi anal toby balm  109 adam ezra void seam balm
054 able amid seve lacy wine  110 bonn lays brow pick glum
055 flop ales feel pans rung  111 rota jams idle wait ella

     !!! REMEMBER: Enter the PREFIX PASSWORD first !!!

Utilización

Vamos a entrar en una máquina de nombre machine vía ssh con el usuario pi.

Creación de las passwords

Cuando estemos logeados en la máquina con el usuario, desde una terminal totalmente confiable, a ser posible la consola, generaremos las passwords para el usuario:

pi@machine$  otpw-gen -p1

Enter new prefix password:

Ahora introducimos la password inmutable, en nuestro ejemplo PASS.

Tras esto, nos dará una tabla similar a la de la sección anterior.

Autenticación

Tras la generación de las passwords, intentamos logearnos:

$ ssh pi@machine

Password 029:

Se nos pide la contraseña 29 de la tabla, a la que tenemos que preceder con la contraseña inmutable, quedándonos algo así:

PASSguysseastoesduffaway

Esta puede llevar o no los espacios de la tabla, por lo que también puede ser así:

PASS guys seas toes duff away

Sesiones concurrentes

Para evitar ataques automatizados, si abrimos (o alguien abre) sesiones concurrentes, estas nos pedirán varios números de la tabla:

$ ssh pi@machine

Password 101/093/066:

Nos pide la contraseña 101, seguida de la 93, seguida de la 66 y todo ello precedido de la contraseña inmutable, quedándonos algo así:

PASSglow plug bowe prix none bean tony cast luis cert cork harp crew wipe tomb

o sin los espacios:

PASSglowplugboweprixnonebeantonycastluiscertcorkharpcrewwipetomb

Esta situación se repetirá durante las 24 horas posteriores, a menos que borremos el fichero:

.otpw.lock

En caso de no querer utilizar este sistema

Si nos encontramos en una terminal confiable, y no queremos logearnos con este sistema, sólo tenemos que ignorar los mensages de petición pulsando intro:

$ ssh pi@machine

Password 022:

<intro>

Password:

Ahora podemos introducir la password que conincida con nuestro /etc/shadow

Deshabilitar el sistema

Para deshabilitar el sistema, eliminamos o movemos el fichero .otpw. Esto se puede realizar por el usuario, a menos que cambiemos los permisos del mismo, recordando dejar siempre al usuario permisos de lectura sobre el mismo para que el sistema pueda funcionar.

Si se tienen las claves públicas activadas

Si se desea probar este sistema, pero tenemos las claves públicas de ssh activadas, hay que utilizar:

ssh -o PreferredAuthentications=keyboard-interactive

Enlaces

http://www.cl.cam.ac.uk/~mgk25/otpw.html
http://motp.sourceforge.net/
http://marcin.studio4plus.com/en/otpgen/index.html
http://www.debian-administration.org/article/510/Implementing_cost_effective_dual_factor_authentication
http://freeauth.org