Mi sono imbattuto in un software molto simpatico per l’accesso a un qualsiasi servizio che usi PAM tramite una “one time password“.
Ciò vuol dire che, se ad esempio volessi associare otpw a SSH, ogni volta che proverò a connettermi ad una shell remota sulla macchina dov’è installato otpw mio verrà presentato insieme al prompt di login un numero.
Quindi dovrò cercare il numero su di una tabella (precedentemente stampata) e digitare la password associata.
Ovviamente per generare la tabella dovrò lanciare il programma prima e creare una “master password” che verrà utilizzata anche nel processo di login, facendola precedere alla password “usa e getta”.
I vantaggi di questo sistema sono principalmente legati ai pericoli di sniffing delle password, dato che un eventuale attaccante, anche se intercettasse le password avrebbe solo uno dei due fattori di autenticazione, stesso ragionamento nel caso trovasse il nostro “foglietto” con le password: senza la master password non potrebbe farci nulla (e noi nel frattempo lo potremmo rigenerare senza sforzo).
Date le caratteristiche di sicurezza intrinseche di SSH (autenticazione cifrata) questo software è abbastanza inutile, se non siete paranoici come me, o se non vi va di sporcarvi un po’ le mani…anche se è sempre possibile associarlo a qualsiasi software che fornisca un’autenticazione basata su PAM, quindi in teoria anche al normale prompt dei comandi di Linux.
Ubuntu (versione server 8.10) fornisce i seguenti pacchetti (cercati tramite apt-cache search)
libotpw-dev - OTPW library development files and documentation
libpam-otpw - Use OTPW for PAM authentication
otpw-bin - OTPW programs for generating OTPW lists
Per fare il tutto abbiamo bisogno anche di una macchina (magari virtuale) su cui compilare modificare e ricompilare i pacchetti, dato che le versioni fornite dai repository di Ubuntu sono un po’ buggate.
Una macchina diversa ovviamente per non “sporcare” la macchina su cui lavoriamo, ma se a voi piace così…
Ecco le istruzioni per procedere. Per fare il tutto ho usato una macchina virtuale con su Ubuntu Server 8.04 i386 aggiornata (apt-get update && apt-get upgrade) ma dovrebbe andare bene una Ubuntu qualsiasi.
- Vengono scaricati alcuni files (i sorgenti di otpw, come potete immaginare) e creata una directory otpw-1.3
- Se non sapete usare vim (e non avete voglia di impararlo) potete usare un editor qualsiasi…
- Andate a modificare la riga
$(MAKE) CFLAGS="-fPIC -0 -ggdb -W -Wall" otpw-gen pam_otpw.so
in
$(MAKE) CFLAGS="-fPIC -0 -ggdb -W -Wall -fno-stack-protector" otpw-gen pam_otpw.so
- Salvate e chiudete il file
- Questi pacchetti sono indispensabili per la creazione degli archivi .deb
- Ora, se non siete usciti dalla cartella otpw-1.3/ basterà dare:
- E aspettare quei pochi secondi in cui l’archivio viene creato. A questo punto, nella directory superiore saranno presenti i seguenti files:
- libotpw-dev_1.3-2_i386.deb
- libpam-otpw_1.3-2_i386.deb
- otpw-bin_1.3-2_i386.deb
- Assicuriamoci che siano i soli files .deb nella cartella e installiamoli con un:
- Editiamo ora alcuni files:
- Commentiamo le linee:
- E aggiungiamo all’inizio del file:
- Che si occuperanno di gestire l’autenticazione di ssh con le one-time-password, sia dal punto di vista dell’autenticazione vera e propria che per la presentazione dei numeri da inserire al prompt.
Salviamo e chiudiamo il file. - E modifichiamo la riga:
- da no a yes
- Facciamo ripartire ssh con
- E finalmente generiamo il nostro bel file delle one-time-password con:
- Verrà richiesta una master password che dovrà essere inserita ogni volta insieme alla password corrispondente al numero indicato al prompt, quindi scegliamone una sicura.
- Finita la procedura ci ritroveremo con il nostro bel pass.txt all’interno della home che potremo stampare e tenere nel portafogli/taschino/cassetto. Il file dovrebbe assomigliare ad una cosa del genere:
- Andando ora in ssh sulla macchina in questione noteremo un login simile a questo:
- Inseriamo prima la master password e poi la password numero 61 senza gli spazi e avremo fatto il nostro bel login
- Se si prova troppe volte a fare login via ssh in breve tempo, scatta l’autodifesa di otpw e vengono richieste tre password anzichè una, per evitare attacchi basati su questa tecnica. E’ interessante vedere che se una password non viene inserita o viene sbagliata, viene comunque richiesta alla sessione successiva
- Se la nostra lista di password venisse compromessa basterebbe ridare sulla macchina il comando
sudo apt-get install dpkg-dev
sudo apt-get source libpam-otpw
cd otpw-1.3/
sudo vim debian/rules
sudo apt-get install devscripts build-essential fakeroot
sudo apt-get install libpam0g-dev
sudo apt-get build-dep otpw
sudo debuild -us -uc
sudo dpkg -i *.deb
sudo vim /etc/pam.d/sshd
auth required pam_env.so
auth required pam_env.so envfile=/etc/default/locale
@include common-auth
auth required pam_otpw.so
session required pam_otpw.so
sudo vim /etc/ssh/sshd_config
ChallengeResponseAuthentication
sudo /etc/init.d/ssh restart
cd ~/ && otpw-gen > pass.txt
OTPW list generated 2009-06-02 02:55 on virtubuntu
000 wLFp yIHF 056 GQdV URNs 112 jc%Q p8xz 168 ICa4 iBej 224 GcK: cHUp
001 Yx8C AtjN 057 aX:N wxFf 113 W=3m Gj9e 169 gDDX oMjn 225 Qsgs Y:gc
002 Gpb+ iPrd 058 ALkd F9am 114 6wd+ :8aK 170 X+rP r7/d 226 Yau9 BVV/
003 nhRO 5Rgd 059 Lre% smd/ 115 V7/T G4pA 171 R7/5 EmoX 227 L=gK fCj7
004 jc/n ehGv 060 GFUs sRLt 116 Jnnp FsI= 172 8Jy+ xq3s 228 QKCh rvA8
005 HC/G =SX8 061 LMEC RCo: 117 +zbC Ukoi 173 do8b HIPH 229 sVPJ =UO+
006 Sg5/ 95O9 062 vx2T K%mi 118 U8V+ o6UM 174 qmwu 7rjg 230 epJD DJ3P
007 ELFp NMyM 063 8Zoo 8K%o 119 doVf FE3c 175 X7s+ BigA 231 mFBu TJir
008 PWg7 vmKj 064 G3Nb 8yf8 120 H7Mt kLFx 176 JpXL 2Z=J 232 gbLd No53
009 bYwY z5F7 065 oDa= O=jV 121 mMjy DWL5 177 q+9S gN:M 233 5aqJ d%Bw
010 TXgN etJT 066 iJes He6w 122 =EA6 :WTK 178 9a+L CMFI 234 SJtk hwLv
011 pf4P io9E 067 yDF4 hNiX 123 39wX 3bsP 179 =Yo6 vhAQ 235 ZQqI nTuV
012 6/ae naJ% 068 VUY6 :7nd 124 Ls/N YZw+ 180 /Gw/ :3UV 236 WwPB Ze3m
013 irWa B826 069 9yBz M:yP 125 upqt 6x3Q 181 Pq%G t%Uf 237 3FLH bjTK
014 R68: b6tx 070 dZnO KhD: 126 aPEh Ii8p 182 sLkt cwMz 238 buDU vvSV
015 an4N yNfr 071 MP8p CuCx 127 CA=A STcj 183 F:hx Oih2 239 :qIV 7MiD
016 b+Ij 59jc 072 Ch7k IItZ 128 JwwS Uz=G 184 JzXE ucaP 240 Lx38 gbuQ
017 /B+h ena5 073 rJY= vXer 129 F3Dj xeMy 185 mbsH GVnQ 241 XdfK nXvD
018 ObN= 7utt 074 DZCB F=eU 130 d6h= fuyK 186 S%Q3 A49Z 242 4N=n NBgd
019 R%os YZZG 075 4e5Z Xvxv 131 gkde mrhn 187 IQ7o 6ve9 243 WK:L edS5
020 TO4w iwEa 076 XYoO RsvR 132 jx2g gYdu 188 7fQ9 NeVB 244 9r4J Uup=
021 to6g 7SVI 077 my5g AxcF 133 SXVz SVkB 189 VXMR Qpow 245 CvFd 6zFk
022 Bgko ndVX 078 L/YG qOfa 134 :FER nLay 190 fvSC +Ckf 246 H2/T O6Jw
023 pzCx aDPz 079 =9gH 6AFE 135 E7/3 WFH6 191 J6Pr 7Bog 247 B:BI k9u9
024 o5Vm evU4 080 yAOL We%g 136 oAQP 5VpY 192 g7US fEAP 248 aMXQ RN/p
025 9TQu Vf7b 081 5PNE dmU= 137 WA+r oZDF 193 UEkq TrgR 249 +Rus OhiM
026 qt/+ jJFb 082 z+Dp :dW/ 138 Q5kU gnne 194 /jZD 5GtN 250 iCep urrg
027 LInn A=wi 083 EnDE SPKD 139 oeoK KoNZ 195 2jws K4Qa 251 /:5o ax:+
028 Nco7 eGn5 084 Tfwd FQG3 140 :+T: RMa3 196 9+td JhCg 252 YNxV HN4p
029 UuDS vqaA 085 55SR ZTOM 141 Xh/m cWAP 197 c7CY pTrb 253 mfqH avRT
030 gNk2 %Wzb 086 7FnL Kfh: 142 99oE SUc9 198 ofbT :z2g 254 yzX: WwhG
031 EL7o zWta 087 6W8V rE3A 143 YTJ9 kdJP 199 nS/5 D:Tz 255 MT7W 5jVI
032 +iVK cvvV 088 BT4+ 3PxX 144 matD 2Vqq 200 YZku Ke5s 256 574R +xPr
033 f5XA t5qX 089 PoUT EUcK 145 sKKC n+Lv 201 5gSG dLsY 257 OD5f Mmtr
034 GpRG DoEu 090 dKGY yWhe 146 VYAc EOUZ 202 VB7w S5xD 258 SGR: Cf%:
035 fJ=C Is/R 091 APVB 6VFz 147 Z6xM kBWO 203 ciCW UPTn 259 aVuf :LU7
036 Z//o ced9 092 2F:s :8kB 148 trXZ fvcv 204 LwGj /Y5Q 260 Ao47 yXMY
037 evgi Bxe: 093 bNm+ prv= 149 vq7% UN5r 205 wOvM UwmS 261 Vn6N 4s:q
038 fnmo VyA9 094 Df%r x97g 150 :5Sw +eEo 206 pUX4 eWCp 262 szkL t+ZB
039 Or6s oTsd 095 tYMW b7O7 151 fBqk a=DO 207 5Frz ke=L 263 2puf Hao7
040 3qa= EHtR 096 on7E 8oF: 152 DWda rdpF 208 MjV/ hXW3 264 HO%K FD6W
041 8=aH YZGp 097 QJz3 voAP 153 a8Ym wErB 209 7rYj uNF: 265 7f+s :r9i
042 bO5h Exgv 098 PkjH BIBN 154 3Bo9 T:8b 210 QEDp oV=W 266 kXRA D7qq
043 mBip eidY 099 +sYt 7zke 155 aJ4% kRzQ 211 k%EB F8gU 267 9QbB 58uv
044 X:q= 6rvU 100 NKba %qa2 156 UMJY tQsR 212 hdV4 CWZu 268 v3tc eU8Q
045 IXG5 SK3A 101 dW3X Zd+J 157 MzHN y4fI 213 g=%E xMPm 269 dFg2 jTGv
046 V/LR mYTL 102 LOIv Kr9u 158 :T2J LUyq 214 /:Tt 6EkR 270 TBb+ tOYq
047 kqUV bnk3 103 sfs7 6iLk 159 n7ha Thmy 215 Dh:S CJw2 271 BkUU eWF+
048 vePE A4aY 104 x5n: SP=y 160 2n8X eBjO 216 diI6 9rPs 272 j=RG MCG7
049 :KdX DVEZ 105 cXTg G3%t 161 6/VO 6Fw2 217 %IX8 omE+ 273 /GVS fFto
050 PiLD =MZF 106 cVQe %Acs 162 XB4h SxEB 218 z=ha Gx6s 274 shYV viR5
051 AxM+ ddjk 107 N9nT :/5+ 163 zWdN Jq4n 219 7zrE HB9U 275 /Orn ge5b
052 Q69p xFRN 108 hCP7 9o/W 164 aYMm kUVg 220 jzye Ziox 276 bf9r =x52
053 u+aA LAwN 109 j=P= eYjs 165 ZT4s cj5/ 221 ttif orsF 277 Lp2= efxg
054 n=u/ JUIs 110 gac+ vIxn 166
L2 oGRp 222 r+Kf CjBP 278 wmM2 T/dw
055 JNKw ts3B 111 XYF8 ZIxh 167 jiK7 mVhC 223 T+9Q yY:n 279 NfLC VMdx
!!! REMEMBER: Enter the PREFIX PASSWORD first !!!
dirichlet@linuxbox:~$ ssh virtubuntu
Password 061:
otpw-gen > file.txtPer invalidare le vecchie password e averne di nuove
- Per disattivare il servizio occorre invece dapprima disinstallare i pacchetti e poi riportare il files /etc/ssh/sshd_config e /etc/pam.d/sshd al loro status originale (un buon motivo per farne dei backup prima di modificarli)
- Ovviamente potete modificare il pacchetto come descritto nella guida e quindi copiare i files .deb su un’altra macchina per installarli li in maniera “pulita”….
- Ecco alcuni link utili:
- http://www.cl.cam.ac.uk/~mgk25/otpw.html (la home page del progetto)
https://bugs.launchpad.net/ubuntu/+source/otpw/+bug/247190 (la descrizione del bug e la soluzione su launchpad)
http://www.debian-administration.org/articles/20 (piccola guida sulla creazione dei pacchetti .deb)
Post simili
Tags: deb, Hardening, otpw, PAM, Password, Software, SSH, Ubuntu
