Aquesta última setmana he tingut alguns problemes de rendiment amb un servidor MySQL, de fet, hi havia en concret una taula que tenia fins a 53 milions de registres, malgrat el seu espai tampoc era tan gran al voltant de 4Gb l’accés de lectura i escriptura a la taula era molt lent, sobretot per funcions de filtrat una mica complexes.
Doncs bé, coses que he aprés que potser ús poden anar bé són:
Cal habilitar les ‘slow_query_logs’ i tenir indexats tots els camps que apareixen després dels WHERE’s, això millora considerablement el rendiment.
Cal incrementar el innodb_log_file_size fins a un 25% del valor del innodb_buffer_pool_size; això redueix considerablement el temps d’escriptura.
Usar JFS, com a sistema de fitxers del directori ‘data’ del MySQL. És substancialment més ràpid que el ext3. Exemples de rendiment.
Posar els logs en un disc dedicat, diferent del disc que té les dades.
Usar el paràmetre ‘noatime’ en la partició que conté les de dades del MySQL.
Deshabilitar la partició de SWAP, usar un ‘innodb buffer spool’ ben gran, sempre pensant amb la RAM disponible.
Montar els directori temporal de MySQL sobre una partició RAM.
Reduir el key_buffer size a 1-2Mb si no s’usen taules MyISAM.
Usar el kernel 2.6 amb SMP amb processador multi-cos, és especialment important per aplicaions multithread com el MySQL.
Usar RAID0 (stripped disks) i usar un servidor de replicació per les còpies de seguretat. Millora els temps d’I/O del disc, com és lògic.
Després d’estar molts anys sent un defensor aferrim de Gentoo, els meus companys/amics es fan creus que finalment m’hagi passat a Fedora. He dir que no renego pas de Gentoo, al contrari li reconeixo moltíssimes virtuts i considero que per developers i per gent que vulgui coneixer el sistema a fons i controlar-lo ell, no pas la distribució és el millor que hi ha.
Però per temes professionals m’he posat a treballar amb moblin, una distribució de Linux bàsicament subvencionada per intel. Doncs bé, la qüestió és que malgrat la v1 de moblin es basava en Ubuntu que ja tinc força per la mà, la v2 es basa en FC i d’això ja no en tenia ni idea. La qual cosa feia que no estigués familiaritzat amb l’entorn de desenvolupament i se’m feia molt feixuc avançar.
Per tant, vaig decidir aprofitar una posada de “pota” al disc dur del portàtil, per comprar-ne un de nou (ara en tinc un de 500Gb al Dell m1330) i instal·lar-hi una FC10. Per resumir-ho en una nota del 1 al 10, li posaria al voltant d’un 6. Escencialment el sistema funciona força bé i tot esta molt preparat perquè ràpidament es pugui instal·lar, mantenir i usar. Com podria ser amb Ubuntu, clar. Però té alguns tocs de professionalitat que el diferencien com el SELinux, o alguna altre eina que sorpren veure ben integrada que esta amb el sistema.
Tornant al moblin, pels que no sapigueu a què s’orienta el sistema a continuació en podeu veure un video de presentació:
Si voleu endinsar-vos més en les funcionalitats que ofereix i el seu estat de desenvolupament podeu fer-ho a:
Moblin v1: web de la versió 1.0 del sistema, on hi ha moltíssima informació molt professional ja que aquesta versió ja esta funcionant en alguns dispositius del mercat.
Moblin v2: versió encara en alpha, concretament en alpha2. Però que funciona molt bé i que malgrat esta verda promet moltíssim. Escencialment on jo estic involucrat és en aquesta versió.
Per cert, si algú es vol posar en el tema és important que no oblideu que la versió 2 trenca compatibilitat en moltíssimes coses amb la versió 1.
Arribats aquest punt de l’article només comentar-vos que jo ús ha de semblar extrany si a partir d’ara començo a publicar articles que parlin de FC i/o de moblin.
Havia tingut l’oportunintat de veure funcionar aquest tipus de concentradors d’VPN en diverses ocasions però mai n’havia configurat cap. De fet, el model en concret del que us parlo el vaig descobrir a través de Tecnología Pymes. El que més em va sorprendre és la quantitat d’VPNs que gestionava i el seu preu, són 25 VPNs concurrents per uns 350€ de PVD. Després vaig estar mirant-me a fons el manual i les seves especificacions tècniques i crec que és una de les solucions més competitives per montar VPNs a usuaris remots (roadwarriors) de forma senzilla. En aquest cas, senzilla vol dir que no s’hagi d’anar usuari per usuari a configurar-los l’VPN. Sinó que ells mateixos simplement accedint a una pàgina web i amb un simple usuari/password més el suport d’un plug-in Java/ActiveX passin a ser un client de l’VPN.
Al accedir via web després de l’autenticació el dispositiu facilita un portal d’enllaços als usuaris on poden amb un simple clic accedir a aplicacions a través del navegador, per exemple, usant VNC, RDP, Telnet, SSH, IE i d’altres protocols l’usuari pot iniciar per exemple una sessió amb una aplicació que estigui en un servidor local: Word, Excel, ERP, CRM, Web, etc. O sigui, que és ideal per quan tenim usuaris amb coneixements molt bàsics perquè els podem donar accés directe a les típiques coses que usaran i per l’usuari és molt senzill d’entendre. Obviament si no volem accedir via web a la xarxa remota ho podem fer des del sistema, o sigui, que per exmemple si obrim una consola podem llençar un ping sense problemes als servidors remots. No deixa de ser una VPN de les de sempre, però usant com a client el navegador.
Pel que fa al firmware que usa després de connectar-hi via RS232 he pogut veure que és un Linux, al qual pel mateix CLI serie podem tenir-hi accés i tocar el que ens convingui. Per cert, enlloc he trobat la configuració del port serie per connectar-hi però fent proves la que m’ha funcionat ha estat: 9600 8N1 no control de fluxe per hardware ni tampoc per software.
Al iniciar el router aquest portava un firmware força antic que no suportava Windows Vista i que només podia treballar amb clients IE via ActiveX. Però després d’actualitzar el firmware a la versió 2.3.03 no només ja es suporta el Windows Vista sinó que també funciona amb clients Linux amb Firefox usant un applet de Java. Això si hem de tenir permisos d’administrador perquè sinó no pot crear les rutes i d’altres similars al sistema.
Els usuaris de l’VPN poden estar guardats en diversos llocs:
Local user database
Microsoft Active Directory
LDAP directory
NT domains
RADIUS (PAP, CHAP, MSCHAP, MSCHAPv2)
A més disposa d’un sistema de grups i de polítiques de permisos que malgrat no ser res de l’altre món ens permet crear certs tipus de perfils restringint els accessos de forma simple i fàcil de gestionar als grups o usuaris.
Quan montem aquesta solució podem treballar de diverses formes. Diposa de dues sortides ethernet i podem treballar amb només una sortida:
o usant dues interficies de xarxa:
a partir d’aquí podem adaptar el sistema d’VPN al que més ens interessi dins de l’empresa.
Abans d’acabar només un apunt sobre el tema de la configuració. Cal dir que no és complicat de configurar, però en primera instància és una mica engorrós tenir tantes opcions i tan poc intuitives. Una bona recomanació és que no deixeu de llegir-vos atentament l’ajuda en línia (apareix a la part dreta) que es mostra en la WebUI de configuració.
Un altre cop doncs NetGear ens ha presentat un producte molt decent i recomanable, he de dir que és una marca que al igual que Linksys m’acostuma a deixar un bon gust de boca.
El dia 26 un dels servidors que administro va ser víctima d’un atac DNS, de fet, a hores d’ara encara continuem sent víctimes de l’atac malgrat ara mateix ja hem pres mesures de contenció per tal de que el mateix no ens afecti. La qüestió és que aquest atac va sobrecarregar l’activitat del nostre servidor de DNS fins a tal punt que les peticions DNS trigaven molta estona a resoldres ja que s’acumulava la feina i aquestes cada cop trigaven més a resoldres. Això de forma col·lateral va provocar problemes en altres serveis, arribant fins hi tot a col·lapsar-los i a fer caure un dels servidors.
L’atac en qüestió esta perfectament descrit pel SANS:
Per resumir una mica el que es nota és que rebem moltíssimes peticions de resolució del domini ‘.’, cosa que dona molta feina al nostre servidor DNS i que acaba generant un gran tràfic de resposta per una petita petició que pot llençar perfectament un zombie sense patir cap sobrecarrega al seu ampla de banda, encanvi el destinatari del atac DOS pot veures afectat per moltíssims paquets no solicitats de diversos origens, convertint el simple atac DOS en un complicat atac DDOS difícil de parar pel destí final de l’atac.
Si simplement sóm usats per llençar aquest atac, com era el cas que explico gràcies a eines com el fail2ban no és complicat d’aturar, ja que podem dir-li que vigili el nostre fitxer de logs i llençar regles de filtrat que aturin les peticions al DNS que es repeteixen massa pel mateix origen. Per un detall més complert de com implementar això ús remeto a l’article: DNS Root Query Amplification.
NOTA sobre PowerDNS: El software que usem per gestionar els DNS és el PowerDNS el qual disposa d’una interficie web per controlar les estadístiques del servei, en cas de patir un atac d’aquest tipus a través d’aquesta pàgina web serà molt senzill que identifiqueu quines IPs estan llençant l’atac i a més a més comprovar que l’atac és el del tipus que he descrit.
Gràcies a l’Aitor descubreixo el GreenSQL, una aplicació en forma de dimoni que fa funcions de reverse proxy entre les aplicacions que usen MySQL i el servidor de MySQL. Després de revisar la pàgina web, una presentació i veure una demostració del seu panell de control he de dir que l’eina té molt bona pinta. El seu mètode de funcionament ens pot portar a alguns mals de caps ja que fins que les whitelist no tenen suficient informació de com funcionen les nostres aplicacions alguns falsos positius en els seus anàlisis ens poden fer tornar una mica bojos. Malgrat això en alguns entorns crec que l’eina pot ser molt útil. El que no he sabut trobar per enlloc és un benchmark de quin és el rendiment d’aquest proxy ja que per entorns de molta càrrega crec que podria convertir-se en un coll d’ampolla. Finalment una altre informació que no he sabut trobar és on guarda la seva base de dades d’informació??? ja que el volum d’aquesta pot ser molt gran i seria curiós saber si ho fa també sobre MySQL o sobre fitxers de text, tipus sqlite o BerkeleyDB, per exemple.
Doncs com sempre, però la gràcia del tema esta en que després si feu un file per saber quin tipus de fitxer és veureu que s’interpreta la info del MBR i ens informa de les característiques de les particions del disc, realment curiós i útil:
Amb el pfqueue podreu gestionar les cues del Postfix v1 i v2, a més de l’exim. Jo en realitat només l’he provat per la v2 de postfix. L’eina malgrat no ser molt ràpida és realment còmode i potent. En poques paraules facilita molt la feina de gestió de les cues. No és senzill jugar amb els IDs dels correus que tenim amb les múltiples cues de postfix. Posar-los en hold, reencuar-los, fer-los flush, eliminar-los, etc. Gràcies a aquesta interficie els veurem amb una llista poden fins hi tot fer clic sobre de cadascún per veure en detall la informació de contexte dels mateixos i el contingut. Després a través de les tecles d’accés ràpid a les accions podrem fer el mateix que si usessim la comanda postsuper i algunes coses més.
Aquesta eina l’he trobat disponible a Gentoo i a Ubuntu 8.04.1 però no a Ubuntu 6.06. Per altre banda, és realment senzill compilar-la i instal·lar-la en una 6.06 així doncs si realment teniu un postfix en aquesta distro ús recomano molt l’eina.
Fins ara l’únic policy daemon que usava per postfix és el policyd v1 que esta fet amb C i per temes de rendiment em donava grans funcionalitats, rapidesa i escalavilitat sobretot pel seu backend en MySQL. Però avui m’he vist obligat a instalar el ACL Policy Daemon que esta programat amb Twisted+Python i que a través de la seva capacitat de configurar les regles d’accés al Postfix vai ACLs m’he pogut montar una funcionlitat un pel rebuscada que em calia per un client.
El problema és que aquest client necessita:
Rebre correu pels seus dominis
Permetre relay previa autenticació dels seus roadwarriors
Doncs bé això planteja un problema degut a una funcionalitat contradictoria. Si configurem el Postfix perquè rebi correu local, podem protegir aquest correu contre UBE tan com volguem i més però si l’origen especificat en la transacció SMTP indica que el remitent és una compte de correu del mateix domini que el destí (sovint la mateixa compte de correu), aquest correu s’acceptarà com a legítim i no es demanarà autenticació perquè l’MTA on s’està enviant el correu és el destí del mateix. Gràcies a això el correu serà acceptat al MTA i només quedarà a expenses del anti-spam i regles UBE anturar-lo, el qual malgrat via SPF i d’altres similars intentarà aturar aquest correu això no sempre serà possible i menys si els intents d’injecció són de l’ordre de desenes de milers al dia. Ens trobavem que alunes desenes passaben els filtres igualment.
Així doncs, gràcies a aquest policy daemon he pogut programar un regla que diu algo així:
si IP d’enviant no és local
si origen del correu és un domini local
si destí del correu és un destí local
si l’usuari no s’ha autenticat
NO es pot enviar aquest correu!
Els clients que estan fora de l’empresa (roadwarriors) sempre que envien un correu ho fan via ASMTP així doncs, si volen enviar un correu a alguna compte del mateix domini que la seva ho faran de forma autenticada. Per altre banda, si un client de correu intern a l’emrpesa intenta enviar un correu ho farà amb una IP local de l’empresa i aquest filtre no el bloquejarà.
Com podeu veure el problema és una mica enrabassat. Per altre banda, si voleu fer un cop d’ull al fitxer de configuració policy.conf (un dels fitxers de configuració del aplicyd) que he creat és de l’estil d’aquest:
Malgrat jo he usat el apolicyd per temes molt concrets s’ha de dir que el seu codi font és molt entenedor i simple de modificar, a més de suportar moltíssimes funcionalitats de serie que permeten ajustar les nostres regles de filtrat moltíssim. Realment m’ha sorprès de forma molt positiva no m’esperava que estigués tan ben pensat.
Aquesta tarda he patit un expedient X’s, de fet, tots estem acostumats a ser víctimes d’aquests fenòmens quan treballem amb ordinadors i si és amb Win encara més. La qüestió ha estat amb una placa IB830H. Aquesta placa porta embeded una Intel PRO/100 VE una targeta més que típica i tòpica en sistemes professionals. A més podria afegir que és una de les targetes que més m’agradan. Per si fos poc el seu suport en sistemes de Microsoft estan soportadíssimes, com no podia ser d’altre forma.
Doncs la qüestió és que després d’instal·lar els drivers que havia descarregat des de la web d’intel la targeta es detectava perfectament i si esnifava el canal fins hi tot veia a passar paquets però en cap cas la targeta rebia cap paquet.
Després de fer mil proves i canviar els drivers un munt de vegades, la cosa no ha canviat gens i quan ja estava apunt de llençar la toballola he provat una cosa tan estúpida i simple com:
Entrar a la BIOS
Desactivar la targeta de xarxa
Arrancar el Windows
Després apaguem
Tornem a entrar a la BIOS
Activar la targeta de xarxa
Tornem a entrar al Windows
… i ja va tot sense tocar res!!!
Increible, eh!? doncs això és el bonic que té el Windows. He de dir que com sempre passa durant tot aquest procés incert he arrencat amb una CD de Gentoo i la targeta de xarxa sense fer totes aquestes tonteries funcionava perfectament. O sigui, que rebia i enviava paquets sense problemes. Realment això és una altre prova de com el Windows és contraproduent en molts i molts sentits!
De tots són conegudes les aplicacions que usen FUSE per obtenir sistemes de fitxers del més inversemblants a través e l’espai d’usuari amb un kernel Linux. Doncs bé, en aquest cas el que hem calia era aconseguir que una partició ext3 en un dels seus directoris fos case-insensitive. O sigui, que no fes ús d’una de les funcions més coneguda del món Linux/Unix, la distinció en majúscules i minúscules en els noms d’arxius i directoris.
Doncs bé, la solució ha estat ciopfs aquesta aplicació que funciona igual que tantes altres aplicacions FUSE, ens permet re-montar un directori en un nou punt però sense sensibilitat en les maj-min. Per cert, com que esta en la seva versió 0.2 no m’ha estat precisament trivial compilar-lo amb una Debian Etch. He hagut de compilar a mà el FUSE i instalal·lar els paquets de ‘dev’ dels requeriments indicats a la documentació del aplicatiu. Espero que mica en mica això millori.