Jun 19

podcast 1×09: sistema de autentcació unificat (single-sign-on)

Reading time: < 1 minute Perseguint el paradigme de la SSO dins de l'empesa avui intentaré explicar el següent esquema:

mapa d'autenticació single-sign-on

Disclaimer: si alguna cosa és incoherent o no funciona hem sap greu, he fet el que he pogut.

Jun 13

tcpflow: mirant streams tcp en un moment

Reading time: 1 – 2 minutes

Fins ara per poder seguir un protocol dins del enllaç TCP, o sigui els missatges de la capa 5, sempre acabava capturant-lo amb el wireshark o en el seu defecte amb el tcpdump generava un fitxer .cap que després obria al wireshark i a través d’una funció tan simple com el Follow TCP stream em montava la sessió de capa d’aplciació que podia seguir de forma ben còmode. El gran descobriment que vaig fer l’altre dia és el tcpflow una eina la mar de simple i lleugera que com no podia ser d’altre forma usa les llibreries libpcap, le mateixes que el tcpdump i el wireshark per mostrar-nos de forma completament visual i simple a través de la consola o contra un fitxer el contingut de la sessió TCP. Espero que li tregueu tan profit com jo a l’eina.

Jun 12

podcast 1×08: CAS, Central Authentication Server

Reading time: 3 – 4 minutes

L’objectiu d’aquest podcast és donar una visió conceptual del funcionament de CAS 2.0, un servidor d’autenticacions SSO (Single Sign On). Bàsicament esta orientat a usuaris d’aplicacions amb interficie Web. A movilpoint l’estem usant tal com vaig comentar al podcast 1×07.

La diferència entre 1.0 i 2.0 és que la versió 1.0 només podia autenticar usuaris contra aplicacions web i aquests serveis no podien autenticar-se a la seva vegada contra altres serveis (serveis backend).

Amb l’esquema que hi ha a continuació i la previa lectura de les entitats d’un sistema CAS podreu seguir el podcast:


CAS - Central Authentication Server (schema)

A continuació descric les entitats que intervenen en un sistema CAS.

  • Service Ticket (ST): és una cadena de text que usa el client com a credencial per obtenir accés a un servei. Aquest tiquet s’obté del servidor CAS. La forma d’obtenir-lo és a través d’una cookie que es guarda al navegador.
  • Ticket Granting Cookie (TGC): cookie que s’envia al CAS quan un browser ja ha estat autenticat previament per aquest CAS, llavors aquest reconeix la cookie i li dona al browser un Service Ticket (ST) sense haver de passar el procés d’autenticació manual. Caduca en unes 8h aproximadament.
  • NetID: identifica a un ususari, el que coneixem habitualment com username.
  • ServiceID: identificador d’un servei, normalment en format URL.
  • Proxy Ticket (PT): és una altre cadena de text que usa un servei com a credencial per obtenir accés a un servei de backend. O sigui, que el primer servei per tal de desenvolupar la seva activitat li fa falta accedir a un altre servei (servei de backend), per tal d’obtenir accés a aquest darrer servei el primer usarà un proxy ticket. Aquest tiquets s’obtenen al CAS quan el servei que vol l’accés presenta un PGT (Proxy-Granting Ticket) i un identificador de servei que es refereix al servei de backend.
  • Proxy-Granting Ticket (PGT o PGTID): es tracta d’una altre cadena de text que com hem vist al punt anterior l’usa el servei per aconseguir un Proxy Ticket (PT) que li doni accés a un backend service l’accés a aquest servei serà amb les mateixes credencials que l’usuari original, o sigui, el que s’ha autenticat al primer servei.
  • Proxy-Granting Ticket IOU (PGTIOU): com no podia ser d’altre manera és una cadena de text que es passa com a resposta del serviceValidate i del proxyValidate usada per correlacionar un Service Ticket o una validació de Proxy Ticket amb un Proxy-Granting Ticket (PGT) particular.

Ara només queda escoltar el podcast:

Els enllaços relacionats amb el podcast:

NOTA: donar les gràcies al Marc Torres per la seva feina, gràcies nano.

Jun 11

Postfix tips

Reading time: 6 – 9 minutes

Aquest inici de setmana l’he passat moltes i moltes hores llegint documentació del Postfix per tal de solucionar un problema a un client que tenia una cua de correu inmensa i que no hi havia manera de servir perquè el servidor no donava coll. Doncs bé, degut a això m’he hagut de llegir molts documents i volia referenciar-los per no perdre’ls de vista ja que molts d’ells són interessentíssims. Realment cada dia que passa estic més convensut que Postfix és la millor opció com a MTA, diria que he passat moltes hores i molts anys provant sendmail, exim i qmail. Però l’experiència sempre m’ha dit que Postfix era el que em solucionava les problemàtiques més inversemblants i així ha estat aquest cop també.

  • Postfix Bottleneck Analysis: aquest document és una introducció a l’eina qshape la qual ens permet veure quin és l’estat de les diferents cues que té postfix, no només om a totals sinó també destriat en dominis i amb una distribució temporal del temps que fa que el correu és a la cua. Realment molt i molt útil per saber on tenim realment acumulat el correu i quines mesures hem de prendre.
  • postsuper – Postfix superintendent: aquesta comanda ens permet fer tasques de manteniment a les cues de postfix. Malgrat la comanda postqueue també permet fer tasques d’aquest tipus aquestes tasques són molt més limitades i orientades a usuaris que no pas a administradors del sistema. Perquè entengueu la potència del postsuper algunes de les seves funcions són: borrar missatges d’una cua concreta a través del seu ID, posar missatges en estat hold així aquests missatges no s’intenten enviar i els tenim retinguts fins que ens interessi, es poden re-encuar missatges que ja han estat encuats així podem tornar a aplicar-los filtres que s’havien aplicat malament, etc.
  • Postfix built-in content inspection: bàsicament es tracta d’un conjunt d’ordres del fitxer main.cf que permeten filtrar els correus en funció d’expressions regulars aplicades a la capçalera del correu (header_checks), cos del correu (body_checks), adjunts mime (mime_header_checks) o caçalers dels correus adjunts als correus (nested_header_checks).
  • Postfix After-Queue Content Filter: aquest document explica com filtrar els correus de formés molt més avançades, per exemple, s’explica la base que tenen de funcionar aplicacions com l’amavisd-new quan s’integren amb postfix. Al que refereixo és a tenir un postfix escoltant el port 25, quan entra un correu aquest s’envia a un port de localhost, allà es processa el correu i es generen d’altres correus amb informes d’spam si fa falta i després es re-injecta a un altre port localhost en aquest cas publicat pel postfix i finalment aquest correu es serveix. Doncs això que sembla senzill de montar té les seves pecualiritats que cal tenir en compte i en aquest document s’expliquen molt i molt bé, a més ens referencia a eines que comento a continuació per crear els nostres propis SMTP proxies on podem aplicar els filtres que ens interessin. Un exemple d’aplicació, a part dels típics filtres anti-spam, seria montar serveis de comandes via SMTP o sigui, que enviant un correu amb un format concret aquest fes una serie d’accions i el resultat tornés al seu origen via email. En la meva època del packet radio usabem això per fer smtp2ftp, per exemple.
  • smtpprox – simple efficient SMTP proxy in perl: amb aquesta eina és trivial montar les nostres aplicacions a mida per fer filtres de correu tal com comentava en el punt anterior, a més des de la pròpia pàgina es referència a moltíssims patches per tal de fer funcions espcífiques amb aquesta eina. Alguns exemples: podem fer el mateix que fa amavisd-new però amb un codi molt més simple, podem fer de proxy d’autenticació per un SMTP que no té autenticació montada, tenir una llista de blacklist en MySQL, etc.Bàsicament l’SMTP proxy només fa de servidor SMTP per un costat i client SMTP per l’altre, al mig nosaltres podem processar el correu segons la seva informacó: capaçalera, adjuns, contingut del correu, etc.

Volia comentar de forma explícita una de les solucions ineressants que es presenta al primer document, el que parla sobre qshape. La idea és que a través d’aquesta utilitat podem trobar un domini sobrel el que s’hi encuen molts correus i per tant la cua de sortida de correus es veu perjudicada perquè aquest destí monopolitza gran part de la cua. Doncs bé, es tracta de construir una cua de sortida de correu només per aquest destí i fer que els correus que vagin cap allà es processin a part.

Per montar això cal:

  • Modificar el fitxer master.cf i afegir un “smtp” transport per la destinació en concret. Això es faria així:
  • /etc/postfix/master.cf:
        # service type  private unpriv  chroot  wakeup  maxproc command
        fragile   unix     -       -       n       -      20    smtp
  • Fixeu-vos que fixem el número de processos a un màxim de 20, això vol dir que com a molt hi podran haver 20 instàncies simultanees del procés “smtp” per servir correus d’aquesta cua de sortida.
  • Al main.cf configurem els límits de la cua que s’usarà pel transport “fragile” que hem configurat.
  • /etc/postfix/main.cf:
    transport_maps = hash:/etc/postfix/transport
        fragile_destination_concurrency_failed_cohort_limit = 100
        fragile_destination_concurrency_limit = 20
    
  • Ara toca crear el fitxer de transport on indicarem que els correus per aquest domini es serveixen per una cua particular, al costat del nom de la cua si es vol es pot indicar un host i un port cap a on es farà relay:
  • /etc/postfix/transport:
        example.com  fragile:
    
  • Recordeu que després de crear el fixer transport cal fer un postmap transport.
  • Per veure quin és l’estat de la nova cua, només cal fer qshape fragile.

Espero que si no coneixieu postfix aquest petit post hagi servit per veure fins a quin punt és simple i dinàmic de configurar, no pretenia fer cap introducció només una pura referència de documentació que crec que a partir d’ara intentaré tenir aprop.

May 06

iubui surt a la llum

Reading time: 2 – 4 minutes

logo iubui by enixit

Doncs només fa unes hores que ha sortit a la llum iubui l’empresa del meu gran amic Oriol. En la que a més també hi tinc alguna coseta a veure encara que sigui molt petita. Ja que he montat el servidor web. De fet, el gran mèrit obviament és de l’Oriol i és a qui li disitjo tota la sort del món. Per això també hi vull contribuir amb aquest petit gra d’arena. És a dir, intentant portar-li alguna que altre visita des d’aquest blog.

Potser ja comença a ser hora que expliqui alguna cosa del projecte, no? doncs bé, jo ho explicaria com un sistema de donar-li la volta a eBay, és a dir, encomptes d’anar a oferir coses perquè d’altres facin una puja per comprar-les. Aquí es tracta de fer un matching entre la gent que vol oferir coses i la gent que vol demanar coses. Però no pas com uns simples classificats sinó algo més elavorat i aprofitant la semàntica de la informació perquè la pròpia web ajudi a posar en contacte els compradors i venedors.

Segurament es pot explicar millor, per això des d’aquí convido a l’Oriol Mercadé a participar en el meu següent podcast on estaria bé que ens expliques algo més sobre iubui, a veure si realment el projecte té la vida que tots esperem.

UPDATE: demano el vot al Newsroom de MobuzzTV per l’article que parla de iubui.

UPDATE 2: bona descripció del Ferran, un dels programadors de iubui:

iubui.com. No busques, Pídelo! Se trata de ver la compra-venta de productos y servicios desde un nuevo paradigma que sólo es posible gracias a Internet. Iubui es una plataforma donde, por primera vez, el protagonista no es el vendedor ni lo vendido. El protagonista es el comprador, sus necesidades y sus condiciones: con el proyecto iubui el comprador ya no necesita hacerse un experto en lo que va a comprar, no necesita conocer donde se vende lo que quiere, ni necesita gastar tiempo y energías para realizar una compra. Con la plataforma iubui son los proveedores los que aconsejan al comprador, los que ofrecen sus producto y gastan energías en lo que les aporta beneficio. Y iubui.com ya es una realidad, hoy empezamos a operar. Si queréis y tenéis tiempo os invito a que pidáis todo aquello que necesitéis y tengáis paciencia porque estoy seguro que os harán ofertas muy interesantes.

Mar 15

Reducció ADSL a 1Mbps

Reading time: 2 – 2 minutes

Després de molts anys pagant uns 170€ d’ADSL per tenir menys de 2Mbps i després de que em canviessin els 512Kbps de pujada per 300kbps fa uns mesos, he decidit reduir la meva ADSL de 2Mbps a 1Mbps. O sigui, que ara ja només tinc 300kbps de pujada. Això suposo que ja ho estareu notant amb la web. Em sap molt de greu per vosaltres però ara només pago 44€ al mes i la diferència és ampliament substancial.

adsl.jpg

Pel que fa al blog, fa dies que estic pensant en canviar-ho tot a oriolrius.cat on fa temps que hi tinc un WordPress en proves amb un lifestream. Realment estic completament peix amb el WP però estic més que cansat del blog:cms i no descarto començar un blog de zero mentre em decideixo a migrar tot el que tinc aquí cap al nou motor de WP. Així doncs, en els propers mesos notareu força canvis en el tema.

Ara que surt e tema del blog, comentar una curiositat ahir l’Alfredo em va passar una web on et diuen el nivell que han de tenir els lectors del teu blog, en funció de certes paraules claus de les que parles. Doncs aquí teniu el nivell que representa que heu de tenir per llegir el meu blog:

blog-reading-level.jpg

Per cert, la web en qüestió és The Blog Readability Test. What level of education is required to understand your blog?.

Feb 26

mikrotik: failover gateway

Reading time: 4 – 6 minutes

Avui he refrescat una mica la meva memòria, feia algún que altre mes que no jugava amb els mikrotik. Doncs bé, per un client havia de montar un failover gateway i com que ja sabeu que sóc un fan declarat dels mikrotik per fer això he usat un RB150. Per si això ús sona a xinès segur que amb una petita explicació ho trobareu molt útil. Doncs bé, cada cop més empreses tenen dos sortides a internet i el que volen és que quan alguna de les dues sortides caigui l’altre sortida assumeixi tot el tràfic sense haver de tocar res.

Obviament per fer això el que hem de tenir és un element que s’encarregui de redirigir tot el tràfic cap a un router o cap a l’altre segons si la sortida a internet esta fallant o no. La solució que plantejo és molt simple i pot perfeccionar-se moltíssim. Per exemple, l’únic que explicaré és a usar un dels dos routers i quan aquest falla enviar el tràfic cap a l’altre però no és gaire difícil crear unes policy routes per balancejar tràfic entre els dos routers mentre aquests estiguin operatius. Però per no liar la cosa em quedaré amb l’exemple bàsic. A partir d’aquí, la base estarà més que feta perquè feu coses més xules.

routerboard-inabox-02.png

escenari

El RB150 tindrà a l’ethernet 1 la xarxa LAN. A la ethernet 4 la WAN1 i a la ethernet 5 la WAN2. Amdues interficies tenen el router ADSL en monopuesto. O sigui, que tinc la IP pública a l’interficie del router.

funcionament

Per defecte, sortirem per la WAN1 i quan aquesta falli sortirem per la WAN2.

configuració

Assumeixo que les configuracions bàsiques ja estan fetes, o sigui, assignació d’IPs a interficies i l’enmascarament d’IP internes cap a internet. Això suposo que no té cap dificultat si algú necessita ajuda que avisi.

Creem dos scripts a llençar quan s’hagi de llençar la connexió via WAN1 i l’altre via WAN2:

Script per la WAN1:

:log info wan_1
/ip route set [/ip route find dst-address="0.0.0.0/0"] gateway=IP_GW_WAN1

Script per la WAN2:

:log info wan_2
/ip route set [/ip route find dst-address="0.0.0.0/0"] gateway=IP_GW_WAN2

Si ens interessa en cada un dels scripts hi podem afegir el que calgui. Per si no esteu habituats a treballar amb scripts al mikrotik els heu de colocar a /system scripts. Allà afegiu dues entrades i llestos. Com sempre això serà molt més còmode fer-ho des del winbox que no pas des de la cli.

Ara només cal que creem una entrada a l’eina netwatch, això es fa a /tool netwatch. A l’entrada li direm que faci pings cada un interval de temps que decidirem i que tingui un timeout fixe i si els pings no tornen llavors s’executarà l’script indicat. Bàsicament le entrades de netwatch tenen dos estats el up i el down i podem associar un script a llençar en cas de que hi hagi una oscil·lació cap a un dels dos estats. Això es fa així:

add host=208.67.222.222 timeout=10s interval=1m up-script=wan1 down-script=wan2 \
comment="Failover Gateway Script" disabled=no

El que fem és mirar si arribem a un dels servidors d’OpenDNS cada 1minut i ens esperem com a molt 10s perquè el ping torni. Després fixeu-vos com associem cada un dels scripts que em programat abans als estats d’aquesta prova.

Com podeu veure això és ben senzill, la gràcia esta en que jugueu amb els ECMP i els policy routing i feu del RB150 tot un balencejador de càrrega amb suport de fallides de línia. També és molt senzill que balancegeu el tràfic d’entrada d’internet cap a una ADSL o cap a l’altre, per fer això ús recomano que jugueu amb el DDNS que podeu actualitzar a través dels scripts comentats, només cal que li llenceu la petició d’actualitzar la IP associada al DDNS i els usuaris remots entraran per una o altre línia.

Jun 03

Python: Reiniciem el router si no hi ha internet

Reading time: 1 – 2 minutes

Malgrat fa uns dies vaig canviar el meu vell Zyxel per un Cisco 837 a casa, la línia ADSL es continua penjant per motius desconneguts. Ja que quan les dades no circulen ni amunt ni aball les interficies ATM estan aixecades i tot sembla funcionar correctament. Així doncs, no m’ha tocat altre remei que fer-me un petit script amb Python a través del qual cada 5min comprovo si tornen els pings contra un dels servidors de OpenDNS. Si això no és així llavors es connecta contra el router Cisco i el reinicia. Ja que he fet proves baixant i pujant la interficie ATM i no hi ha manera. No se m’ha acudit cap millor idea que llençar un reload.

L’script guarda un fitxer de log a /var/log/online.log i usa el modul pexpect de Python. La resta de coses que usa són moduls que van instal·lats per defecte.

Si a algú li pot fer falta l’script el podeu descarregar: router.py.

Feb 04

La importància del ham per evitar l’spam

Reading time: 2 – 2 minutes

spamassassin.jpg

Sovint quan es monta un spamassassin per evitar que entri spam la gent es queixa perquè aquest deixa passar molts mails com a correus bons, però realment són spam. Doncs bé, llavors a la gent se li explica que s’ha d’ensenyar a l’spamassassin a que aprengui d’aquests errors ensenyant-li el que ha deixat passar i no havia d’haver deixat. O sigui, que aprengui els seus errors d’spam. Doncs bé aquestes últimes dues setmanes se’m colaben uns 10 o 15 missatges al dia com a correu bo i eren spam, encanvi tenia la base de dades de correus d’spam ben plena i no acabava d’entendre perquè passava això.

Doncs bé, als usuaris sempre se’ls explica que l’spamassassin no només ha d’aprendre què és spam (correu brossa) sinó també el ham (correu legítim) així millora l’ensenyament de l’anti-spam. Així doncs, resulta que la meva base de dades de ham era massa vella i no l’havia educada de feia massa temps, així doncs fa uns 3 dies li vaig fer aprendre uns 1000 correus legítims i com una seda. Els últims 3 dies potser només s’ha colat 1 o 2 correus, i me’n filtra quasi 200 diaris com a spam. Genial,eh!?

Moraleja no oblideu la importància del ham, a l’hora d’educar l’anti-spam. No només s’apren de l’spam. Jo crec que aquest exemple que he viscut li servirà com a bon exemple a seguir a molta gent, o això espero.

Jan 08

OpenDNS – els millors DNS que podeu usar per navegar

Reading time: 2 – 2 minutes

opendns.gif

Sovint quan et pregunten quins DNS li poso a la màquina acostumo a contestar 194.179.1.100 com a primari i 194.179.1.101 al secundari, això ho vaig aprendre a l’època del primer infovia el del 055. Des de llavors se m’han quedat grabats aquest parell de DNS públics. Doncs bé, si a més d’això a cada empresa que vaig, a la xarxa de la meva feina o la meva intranet a tot arreu hi tinc un servidor DNS intern llavors mai tinc la necessitat de configurar-me servidors DNS externs. Així doncs, mai havia tingut la necessitat de plantejar-me quins eren millor o pitjors i què m’oferien uns o altres. Doncs bé, aquest cap de setmana tot llegint el blog de l’Alex King, concretament l’article sobre l’OpenDNS he descobert aquest servei tan interessant.

Algunes de les avatatges de l’OpenDNS són:

  • Temps de resolució molt ràpid. Servidors per tot el món.
  • Correcció d’errors tipogràfics comuns (p.e. convertir .xom -> .com)
  • Avisa si s’intenta entrar en una pàgina de phishing. Per tant, és ideal per protegir d’aquests atacs.
  • Es pot forçar l’update d’un domini, forçant el refresc.
  • A més és gratuït. Viuen de la publicitat que posen a la web i a les pàgines de bloqueig de phishing.