Difference between revisions of "Ssh con autenticación de dos factores"
(una froga) |
(No difference)
|
Revision as of 06:35, 7 November 2017
08/09/2010
Contents
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