oriolrius.cat

Des del 2000 compartiendo sobre…

Tag: auth

Wikid – Servidor d’autenticació

Reading time: 3 – 5 minutes

Abans de començar deixar clar que es tracta d’un producte amb llicència dual amb algunes diferències entre la llicència de pagament i la gratuïta. Això si ambdues modalitats de producte són de codi obert, tot i que la de pagament porta algún component que jo diria que no té el codi font lliberat, com per exemple el servidor Radius programat en Java.

Wikid és un servidor de two-factor authentication (factor doble d’autenticació). Això vol dir que combina dos sistemes d’autenticació. En aquest cas l’autenticació asimètrica basada en clau pública i a més d’una paraula de pas d’un sol ús (OTP). D’aquesta forma s’aconsegueix un nivell de seguretat equivalent al dels tokens basats en hardware, però amb tota la flexibilitat i els beneficis del software. Gràcies a aquest component de software el sistema OTP pot funcionar en tot tipus de clients: Blackberries, telèfons, Palms, PocketPCs, Windows, Linux i Mac.

Si esteu poc familiaritzats amb aquests sistemes d’autenticació podeu donar un cop d’ull al següent gràfic que jo trobo molt explicatiu.

user-validaton.png

Un gràfic encara més detallat però també més genèric seria aquest. Com es pot veure amb ambdós gràfics l’autenticació es pot considerar que el nivell de seguretat aconseguit és de molt alt nivell i a més molt simple d’usar per l’usuari final. Si fem un resum des del punt de vista de l’usuari del sistema. Quan aquest, per exemple, vol connectar-se a una web segura, VPN, FTP, WebDAV, correu, etc. el primer que ha de fer és obrir el client software del Wikid i demanar la clau OTP. Després connecta de forma completament convencional al servei que volia accedir i aquest com sempre li demana l’autenticació i llavors el client introdueix la seva clau temporal (OTP). Això esta molt bé perquè quan algú ens demana la clau per accedir a algún lloc li podem dir amb tota certesa: no sé la meva clau. Si encara li volem donar la clau la podem generar i li podem facilitar amb la certesa que no la podrà tornar a usar. Sovint el client software que ens donarà la clau OTP ens demana un codi PIN per accedir-hi. Aquesta és la única clau que haurem de recordar.

El sistema bàsicament es composa de tres parts el servidor Wikid, el client Wikid i el servei de xarxa (network service o wikid network client). Aquest últim és el servei que volem que usi com sistema d’autenticació Wikid. Per exemple, PAM, SSH, FTP, OpenVPN, servidor IMAP, una web programada en PHP, Ruby, etc. Així doncs, configurem adequadament el servei perquè quan toqui autenticar-se vagi a buscar l’autenticació al servidor Wikid i el nostre servei de xarxa automàticament ja suporta autenticació via certificats i claus temporals. O sigui, que el sistema d’autenticació ja es considera d’alta seguretat.

Si encomptes d’usar una clau temporal volem usar un sistema biomètric, una SmartCard, un token hardware, etc. també ho podem fer. D’aquesta forma podem fer que el client s’autentiqui de forma completament automàtica sense demanar-nos cap clau. Malgrat això s’acostuma a protegir l’accés al sistema biomètric, SmartCard, etc. amb un codi PIN per tal d’assegurar que l’accés físic al dispositiu és legítim.

La pròpia web del producte té diversos videos d’ajuda i força howtos. Però si volem informació més detallada la meva recomanació és que passeu per HowtoForge i poseu “wikid” al seu buscador i sortiran una bona colla de manuals de com configurar Wikid com a servidor d’autenticació. Per exemple, OpenVPN, SSH, FreeNX, WebDAV, etc.

python: Abyss Webserver start and stop host from CLI

Reading time: 1 – 2 minutes

Petit script en python per iniciar/parar el Abyss Webserver des de la línia de comandes. Només hem de posar la URL d’on es troba la web de la consola de l’Abyss i l’ususari i el password per entrar-hi. Com que esta fet ràpid i corrents, no es suporta el pas de paràmetres per indicar si s’ha d’engegar i/o parar el servei en cada moment. Així que si algú s’anima a afegir-hi les 4 línies de codi que hi falten que me les digui, que jo encara no domino prou el python com per fer-ho en 1s i avui ja estic cansat.

import urllib2

theurl = 'http://127.0.0.1:9999' username = 'theuser' password = 'thepass'
passman = urllib2.HTTPPasswordMgrWithDefaultRealm() passman.add_password(None, theurl, username, password) authhandler = urllib2.HTTPBasicAuthHandler(passman) opener = urllib2.build_opener(authhandler)
data_start = "%2Fhosts%2Fhost%400%2Fstart=Start" data_stop = "%2Fhosts%2Fhost%400%2Fstop=Stop"
data = data_start
request = urllib2.Request(theurl,data) response = opener.open(request)
print response.readlines()