Is it a fake website?

30 enero 2008

30 de Junio 2008: Fecha para el cambio a GNU/Linux o MAC

Microsoft va a forzar la entrada en el mercado de vista a pesar de su rotundo fracaso. Para ello, tiene planeado parar todas las ventas de XP a partir del 30 de Junio de 2008. A partir de esa fecha, no se podrá comprar una copia de XP. Tenemos 5 opciones:
  1. Migrar a un sistema GNU/Linux
  2. Migrar a un sistema Mac.
  3. Migrar a Vista
  4. Seguir con la copia pirata de XP.
  5. Firmar para salvar a XP.
Cómo aquel anuncio, "tú eliges, tú decides". :D

23 enero 2008

El gran hermano de la Seguridad

Imaginad; 5 personas durante 5 días. Sin teléfono móvil, sin ordenador, sin distracciónes. Unicamente hablando sobre Seguridad Web. Todos firmaran acuerdos de confidencialidad y no revelación, de tal manera que puedan hablar libremente sobre sus problemas directos en relación a sus sitios web, redes, aplicaciones.., sin tener que preocuparse de que se hagan públicos.

Unas clases de Seguridad a la carta para gente con nivel, pero que quieren alcanzar un paso más. Y que mejor que hacerlas con el maestro. ¿Requisitos?
  • Sin móvil, sin ordenador, sin distracciones de ningún tipo.
  • Experiencia en seguridad web.
  • Sociabilidad y divertido. Tendrás que salir por la noche a tomar unas copas mientras hablas en un ambiente relajado sobre todo tipo de temas.
  • Firmar un acuerdo de confidencialidad.
¿Interesado?

Bienvenido al Proyecto Austin. Ah!, otro requisito, 6.500$.
¿Por qué estas iniciativas se hacen sólo en EE.UU?

Estoy abierto a que cualquiera me lo financie. :D

20 enero 2008

¿Qué le preguntarías a un Administrador de Sistemas de Google?

El grupo de Ingeniería de Google.com es el principal responsable de mantener toda la infraestructura de Google.com, de todos sus sistemas, y de enfrentarse a problemas que únicamente una compañía que posee el motor de búsquedas más grande del mundo podría afrontar.

El número es interminable, motor de búsquedas más utilizado mundialmente, sistemas de publicidad, sistema de ficheros a gran escala GFS, sistemas de noticias, sistemas de correo y así podríamos seguir durante horas.


Pues bien, en breve voy a tener la oportunidad de entrevistar a un administrador de sistemas de este grupo de Google, un sysadmin de Google, pero he pensado que sería demasiado egoísta por mi parte si soy el único que tiene la oportunidad de hacerle preguntas relacionadas con aspectos de su trabajo. Por eso, dejo este post abierto para que cualquiera de vosotros, deje la pregunta que le gustaría hacer o conocer a cerca de la vida de un administrador de sistemas en Google.

19 enero 2008

sed - Mes de las herramientas unix; semana 2

Introducción
Sed parece ser una de esas herramientas que provoca miedo en la gente. Muchos ni que decir tiene que ya lo conoceis, ¿pero es útil para vosotros?, ¿la conoceis realmente?
En este mes de las herramientas unix pretendo concentrar gran información práctica. Para saber más sobre las herramientas con las que practicaremos podreis consultar sus man pages.

tabla de contenidos.
¿Qué es sed?
Invocación y uso básico
¿Funciones y Síntaxis
¿Qué es una dirección?
¿Qué son funciones?
¿Qué puedo hacer con sed?
Muestra todo excepto la primera línea
Imprime las líneas sin comentarios de squid.conf
De un archivo con múltitud de líneas en blanco, déjalo todo a doble espacio.
Inserta una línea en blanco por cada línea que coincida con regex.
Convierte los saltos de línea de DOS (CR/LF) al formato unix.
Substituye foo con bar en cada línea
Imprimer la sección de archivo entre dos expresiones regulares. (inlcusive)



¿Qué es sed?

Sed viene de "Stream Editor", esto es, "editor de flujos". Básicamente nos permite realizar múltiples manipulaciones a los flujos de texto.

Invocación y uso básico

#sed [-rn] [-e 'sedscript'] [file1 file2 ...]

-r para utilizar regex extendido, -n para que no muestre nada por la salida por defecto, -e creo que no hará falta explicarlo. Consultar las páginas de manual para más información.

Sed es básicamente un lenguaje de procesamiento de textos. Aunque contiene una gramática muy limitada, sed es muy potente. La instrucción que seguro nos sonará de perl s/foo/bar viene de sed. Algunos ejemplos.

Reemplazamiento simple de texto.
#echo "Hola a todos" | sed -e 's/todos/logadmin/'
Hola a logadmin

Característica similar a grep.
#sed -ne '/Ubuntu/p' /etc/motd
The programs included with the Ubuntu system are free software;
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by


Funciones y Síntaxis.

La síntaxis de sed es muy simple. Una expresión general sera así:
address[,address]function

Las expresiones están separadas por nuevas líneas o punto y coma.


¿Qué es una dirección?

Una dirección es una manera de indicar un lugar en tu flujo de datos. Una dirección poría ser:
  • Un número de línea (ej. 1). La primera línea es '1'
  • Una expresión que coincide con una expresión regualar, como /foo/
  • El carácter $ que coincide con la última línea del fichero.
  • Nada, lo que significará 'cada línea del archivo'

¿Qué son funciones?

Las funciones en sed son siempre con una letra. Las más usuales:
  • p (print -imprime-)
  • s (substitute -sustitye-)
  • d (delete -borra-)
  • x (intercambia el patrón y manten el buffer)
  • h y H (copia y añade al buffer mantenido)
  • ! (aplica la próxima función contra las líneas que no coincidan)

¿Qué puedo hacer con sed?

Muestra la primera línea de entrada (igual que head -n 1)
#sed -ne 1p archivo

Muestra todo excepto la primera línea

#sed -ne '1!p' archivo

Imprime las líneas sin comentarios de squid.conf

#sed -ne '/^[^# ]/{p;q;}' squid.conf

De un archivo con múltitud de líneas en blanco, déjalo todo a doble espacio.

#sed '/^$/d;G' antes.txt > despues.txt

Inserta una línea en blanco por cada línea que coincida con regex.

#sed '/regex/{x;p;x;}' antes.txt > despues.txt

Convierte los saltos de línea de DOS (CR/LF) al formato unix.

#sed 's/^M$//' <> despues.txt # para poner en bash ^M pulsa Ctrl-V y Ctrl-M

Substituye foo con bar en cada línea

#sed 's/foo/bar/' <> outfile # reemplaza sólo la primera instancia de una línea
#sed 's/foo/bar/4' <> outfile # reemplaza las 4 primeras instancias de una línea
#sed 's/foo/bar/g' <> outfile # reemplaza todas las instancias de una línea.

Imprimer la sección de archivo entre dos expresiones regulares. (inlcusive)

#sed -n '/regex1/,/regex1/p' <> archivo_nuevo.txt

15 enero 2008

Elige cualquier web vulnerable y... netdisaster

Netdisaster, es una web para atacar otros sitios, pero úsala con precuación. Tal y como dicen en su FAQ, su uso es tu responsabilidad. Tambien nos dan la opción para evitar que alguien la utilice en nuestra contra.




¿Vulnerables a XSS, javascript..?, algo más sencillo.
La página objetivo se carga en un frame. La animación, es un archivo .swf cargado dentro de un tag div con el índice z=100. Básicamente crean dos capas, el sitio "vulnerable" como fondo y el div contiene la animación como una capa transparente en primer plano.

14 enero 2008

Los 11 proyectos Open Source más seguros

Coverity, una compañía que crea herramientas de análisis automático del código fuente, ha anunciado recientemente los 11 proyectos Open Source certificados como libres de defectos de seguridad.

Coverity ha trabajado en colaboración con la Universidad de Stanford, bajo un contrato del departamento de Seguridad Nacional.

Los proyectos certificados están escritos en C, C++, y Java. La lista de los 11 proyectos seleccionados es:
  1. Amanda
  2. NTP
  3. OpenPam
  4. OpenVPN
  5. Overdose
  6. Perl
  7. PHP
  8. Postfix
  9. Python
  10. Samba
  11. TCL
Este tipo de certificación se ha creado para que las compañía puedan seleccionar aplicaciones "Open Source" con gran confianza.

09 enero 2008

awk - Mes de las herramientas unix; semana 1

Introducción
En este mes de las herramientas unix pretendo concentrar gran información práctica. Para saber más sobre las herramientas con las que practicaremos podreis consultar sus man pages.

Tabla de contenidos

  • Qué es awk?
  • Uso básico de awk
  • Registros y campos
  • Selección de campo
  • Patrones y funciones
  • Patrones mágicos; Begin, End
  • Ejemplo de expresiones de patrones
  • Variables
  • Arrays
  • Concatencación de cadenas
  • Ejemplo: Sumando el total del valor de un campo de un fichero de log
  • Ejemplo: ¿Cuantos archivos de cada tipo tiene abiertos mi usuario?
  • Ejemplo: Muestra archivos que no esten vacios
  • Ejemplo: Muestra las entradas del log comprendidas entre el 10 y el 20 de diciembre (incl):



  • ¿Qué es awk?
    awk es una de las más útiles herramientas de filtrado que encontraras. Awk es un completo lenguaje de script, pero nos centraremos exclusivamente en su uso en la shell.

    Uso básico de awk


    awk [-F] [awk_script]




    Registros y campos

    Awk tiene dos conceptos de datos que vienen de la entrada de un archivo: registros y campos.
    Un registro es generalmente una línea entera. El separador de registro por defecto es una nueva línea (RS). Pero se puede cambiar.

    Un campo es generalmente una palabra entre espacios en blanco (tabulador o espacio). El separador de campo por defecto es un espacio (FS). También se puede cambiar en cualquier momento.



    Selección de campo

    A los campos se accede usando el "operador" $. Son válidos:

    $1,$2,$3: (primer, segundo y tercer campos)
    $NF: (el último campo, es una variable que contiene el número total de campos)
    x=1; $(x+3): (equivale al cuarto campo, pero esto ya es liarla :P )

    Ejemplo.
    Muestra con la que trabajaremos

    #tail -1 access.log
    1199488503.117 239 127.0.0.1 TCP_REFRESH_UNMODIFIED/304 310 GET http://www.logadmin.net/ - NONE/- -



    Ejemplo

    #awk '{print $7}' access.log
    http://www.logadmin.net/

    Podemos combinar.
    #awk '{print $7 " " $9}' access.log
    http://www.logadmin.net/ DIRECT/72.14.207.121
    Y formatear


    #awk '{print $7 "\t" $9}' access.log
    http://www.logadmin.net/ DIRECT/72.14.207.121


    Si ejecutamos el mismo comando con un fichero diferente, pongamos /etc/passwd
    no mostrara nada por 2 razones, ¿adivinais por que?
    Arreglemoslo entonces.

    #awk -F: '{print $1 " " $6}' /etc/passwd
    logadmin /home/logadmin

    Patrones y funciones
    Las expresiones de awk vienen en dos formas; un patrón o una función. Nos centraremos en los patrones que es lo que más se usa.

    Un patrón será algo como: [ expresión de la condición ] { [ expresión de la acción ] }
    En pseudocódigo sería: if ( expresión de la condición ) { expresión de la acción }
    Si no existiera ninguna acción, por defecto haría un 'print'. Si no hubiera condición, por defecto ejecutaría la acción para todos los campos.


    Patrones mágicos: BEGIN Y END

    BEGIN se usa para ejecutar cosas antes de que se parsee la primera expresión, y END obviamente hace las cosas después de que se haya ejecutado el último registro.


    Ejemplo de expresiones de patrones


    $1 ~ /foo/ { print $2 }
    Imprime el segundo campo de todos los registros de aquellos donde el primer campo coincida con /foo/

    $2 > 128
    Imprime todos los registros donde el segundo campo se más grande que 128


    Variables

    Las variables tienen la misma sintáxis que en C, pero no tienes que declararlas.

    $3 == "test" { x++ }; END { print x }
    Registros totales donde $3 == "test"

    { $1 = ""; print }
    Borrar el primer campo de cada registro, imprime el nuevo campo.

    { $3 = "Hola"; print }


    Arrays

    Los arrays son mágicos. Simplemente empieza usando una variable como un array, y se convertirá en array.
    #awk '{ a[$1]++ } END { for (i in a) { print i, a[i] } }'


    Concatenación de cadenas

    Juntar cadenas es muy simple.

    x = "log"; x = x"admin"; # x == "logadmin"


    Ejemplo: Sumando el total del valor de un campo de un fichero de log.

    Del fichero de log que habíamos elegido al principio, hacemos;

    #awk 'BEGIN{total=0;} {total += $5;} END{print "el total es ", total}' access.log
    el total es 28677417

    Donde $5 es el quinto campo (bytes tranferidos) y obtenemos el total del tamaño transferido en ese log.


    Ejemplo: ¿Cuantos archivos de cada tipo tiene abiertos mi usuario?

    #lsof -u logadmin | sed 1d| awk '{a[$1]++} END { for (i in a) { print i, a[i] } }' | sort -nk2
    gnome-pty 4
    ssh-agent 4
    awk 9
    compiz 9
    firefox 9
    run-mozil 9
    mapping-d 15
    sed 21
    sort 21
    lsof 31
    ..


    Ejemplo: Muestra archivos que no esten vacios.


    # ls -l | awk '$5 > 0'


    Ejemplo: Muestra las entradas del log comprendidas entre el 10 y el 20 de diciembre (incl).


    # cat *.log | awk '$1 == "Dec" && ($2 >= 10 && $2 <= 20)'


    NOTA: Perdonad la presentación, se que quedaría infinitamente mejor con estilos definidos y todo ese tipo de formateos, pero me centro en el contenido, no en la apariencia ;)

    04 enero 2008

    Mes de las herramientas unix

    Para empezar fuerte, voy a crear una serie de artículos cubriendo información práctica de algunas de las herramientas a menudo olvidadas pero de un gran valor para un administrador de sistemas.

    El objetivo de estos artículos será mostrar ejemplos realmente prácticos de esas herramientas, con las que algunos duran 5 segundos leyendo las man pages.

    Herramientas unix que exploraremos:

    Admito sugerencias para explorar otras herramientas.


    Idea basada del blog de Jordan. Un sysadmin de Google.

    03 enero 2008

    Carta abierta a un administrador de sistemas

    La entrada 20 maneras de eliminar el estres parecía escrita por y para administradores de sistemas, gracias Armonth, tomaré nota. De cualquier manera y como añadido a las estrategias clave de un administrador de sistemas, quería empezar el año dando ánimos y respirando hondo para afrontar todo lo que nos deparará este año. Válido para cualquier trabajo relacionado con los sistemas e informática en general, qué tan devaluado está últimamente.

    Administrador de sistemas, es un trabajo desagradecido, pero no desesperes;

    Habrá días en que te encuentres muy cansado, tan cansado que te preguntarás por qué no has
    elegido otro medio de vivir. Días en que parecerá que sólo has hecho un 1% del trabajo que queda por hacer, trabajo que no conseguiras terminar nunca y que por otra parte, nadie se da cuenta de ello, ni siquiera imaginan una ínfima parte de lo que hay detrás de todos esos sistemas que usan a diario. En esos días te sentiras hundido, maltratado y sin apenas fuerzas para enfrentarte a usuarios cínicos, jefes cabreados, personas que conocen el precio de todo pero el valor de nada. Pero no te dejes, no te des por vencido NUNCA. Subestimando algo que vale una fortuna puede ser un riesgo laboral para un administrador de sistemas, pero no tienes que caer en esta particular trampa tú mismo. Simplemente, mantén presente que alguien que puede manejar el día a día de la administración de sistemas (en sus múltiples variedades) vale su peso en oro.

    Me viene a la mente un animal como signo de lo que sería el trabajo de un administrador de sistemas, ¿se os ocurre cual podría ser?