Damián Avila: PyConAr 2013

Note: Post only in spanish (but also interesting!)

Hace un par de semanas, terminando el mes de Octubre, se llevó a cabo en la ciudad de Rosario, la 5° Conferencia Anual de Python Argentina - PyConAr 2013.

En esta oportunidad, presenté dos charlas:

Read more… (1 min remaining to read)

Marcos Dione: SSL3 GET RECORD-wrong-version-number

Since I work in MegaCorp I found a new level of security policy; for me this is a low point: I not only can't ssh home; since I changed my DynDNS provider from dym.com to afraid.org, I can't even access my webserver because the proxy denies me access citing: Your request was denied because of its content categorization: "Dynamic DNS Host;Suspicious". So I can access lots of questionable contents using Google cache but not my own photos, fine.

At the beginning, the classical trick of making the ssh server to listen in the port 443 worked fine, but at some point Network Operations managed to close that hole. This change was not communicated, so it's not clear that it was completely on purpose. I once asked for the Network Usage Policy, if it exists, but the unofficial answer was on the lines of «I'm not sure you really want to ask».

So, I managed to pierce the firewall again with a further trick: wrapping ssh traffic in a SSL connection. This makes the traffic look like regular https traffic (remember, the s stands for SSL/TLS) but it encrypts the traffic twice.

Everything was smooth again, until the server crashed due to a lack of power. After I powered it on again, I found that I couldn't connect anymore. This morning I decided to take a couple of minutes to figure out why. The ssh client tells me this:

$ ssh -v -o 'ProxyCommand openssl s_client -connect %h:%p -quiet 2>/dev/null' -p 443 foo.afraid.org
OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19 Oct 2007
debug1: Reading configuration data /home/user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Executing proxy command: exec openssl s_client -connect foo.afraid.org:443 -quiet 2>/dev/null
debug1: permanently_drop_suid: 1004
debug1: identity file /home/user/.ssh/identity type -1
debug1: identity file /home/user/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-1024
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-1024
debug1: identity file /home/user/.ssh/id_dsa type -1
ssh_exchange_identification: Connection closed by remote host

Not much info, really. Form the server side I have this:

SSL_accept: 1408F10B: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket

Nice, a cryptic error message, at least for me. Strange enough, openssl by itself manages to connect alright:

$ openssl s_client -connect foo.afraid.org:443 -ssl3
CONNECTED(00000003)
[...]
SSH-2.0-OpenSSH_6.2p2 Debian-6

That's the ssh server saying hi. After some DDG'ing[1] I find this post in serverfault. The first answer itself is not very helpful, but the second one is actually the OP saying how he solved it. It's telling stunnel to accept any version of SSL client while telling SSL to ignore SSLv2. I don't understand how it fixes it, but it works, yay!


[1] DuckDuckGo is getting better by the day.


sysadmin piercing

Hernán Grecco: Running Python code in a LaTeX document

I am currently working on a LaTeX document in which the content is still in a very fluid phase and  the figures change often. I usually have a Python script that prepares the figures and saves them as PDFs. To iterate faster, I wanted to insert Python code directly into LaTeX, executing the code when the document is compiled.

Googling around I found that I was not the first one to want this. There is this LaTeX package with this github repo. The package provides a new environment (python) within which you can write arbitrary Python code. The code is executed when the document is compiled and the output is inserted into the document.

I try it and it worked like a charm. It was even printing the traceback in red when there was an error in the script. You can do things like this:

\documentclass[a4paper]{book}

\usepackage[pdftex]{graphicx}
\usepackage{python}

\begin{document}

A simple example:

\begin{python}
print(2+3)
\end{python}

\vspace{1cm}
Generating and displaying a figure:

\begin{python}
import numpy as np
import matplotlib.pyplot as plt

# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)

# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.savefig('fig1.pdf', format='pdf')
print(r"""
\begin{figure}[htbp]
\centering
\includegraphics[width=12cm]{fig1.pdf}
\caption{Here goes the caption}
\label{fig:comparison}
\end{figure}
""")

\end{python}

\end{document}

and the output is:



But as the document grew, the LaTeX compilation time increased dramatically. The problem: Python scripts are executed on each compilation even if they have not changed.

I have forked the repo and hacked the code. In the new version, python scripts are only executed if needed. Using a helper python script (runpy.py) to avoid encoding differences between terminals, UTF-8 is fully supported. Additionally, you can select the python binary to use and choose to save auxiliary files in a subfolder to avoid poluting the main folder. These options are explained in the README. Check the code is in this github repo.

I am not really a LaTeX programmer and therefore I am sure that there a lot of things to be improved. Feel free to send patches, suggestions and comments.

Gabriel Patiño: SSH avanzado - Multiples Hosts a la vez y conexión automática a través de un pivot host

Llegó el momento de administrar varios servidores, y a veces las tareas se vuelven un poco repetitivas, especialmente cuando los servers que estás administrando son replicas para obtener alta disponibilidad: las configuraciones, ubicación de archivos, paquetes instalados, etc, son iguales en todos los servers. Entonces para que ejecutar actualizaciones y cambios de configuraciones secuencialmente si se puede hacer todo junto?

Para esto recurrí a una herramienta indispensable para los sysadmins que manejan varios servers: ClusterSSH, o "el pulpo", como lo llama el gran sysadmin Germán, a quién vi manejando unos 30 servers a la vez.

ClusterSSH se conecta a varios servers a la vez, abriendo una ventana de xterm por cada server, y una ventana extra donde ingresas comandos y estos se replican a todos los servers conectados (o podés elegir a cuales desde uno de los menúes). Si querés ejecutar algo solo en un server, seleccionas la ventana adecuada y listo. Super simple.

En mi caso, el problema para usarlo era que me conecto a todos mis servers desde un server que uso como pivot, de esta forma tengo mi 'estación de trabajo' principal en la nube y puedo acceder desde cualquier lado. Como el ClusterSSH necesita X (usa xterm), levantarlo en mi server pivot no es una opción muy satisfactoria ya que acá en el fin del mundo la velocidad de conexión no es tan buena como para levantar aplicaciones X remotas.

Acá entra en juego la versatilidad de ssh, si puedo hacer que desde mi notebook se conecte a un server pasando automáticamente por el pivot, seguramente puedo usar ClusterSSH local en mi notebook sin tener que abrir el acceso a todos mis servers.

La configuración es muy simple, todo va en el ~/.ssh/config:

Host pivot
    Hostname pivot.example.com

Host server1
    ProxyCommand ssh -q pivot -nc -q0 server1

Host server2
    ProxyCommand ssh -q pivot -nc -q0 server2


Para que esto funcione, tenemos que tener acceso a pivot.example.com, y desde este server poder acceder por ssh a los servers server1 y server2 (tiene que poder resolver los host names como los ponemos aca). Si usamos usuarios diferentes en los servers, se indican con la opción User.

Para probar, desde tu máquina local haces: 'ssh server1' o 'ssh server2', ambos deberían conectarse directamente a los servers pasando por la máquina pivot.

Ahora que todo funciona, instalás 'el pulpo' y entrás a los dos (o n) servers a la vez:

$ sudo apt-get install clusterssh
...
$ cssh server1 server2

Y empieza la diversión... y si, la gente de sistemas somos vagos por definición.

Imagen sacada de la web, créditos a quién corresponda.

Gustavo Campanelli: 30 días de EVE gratis para mi

No es secreto que estoy jugando Eve Online, de hecho creo que es bastante evidente. Steam informa que en estos últimos meses he jugado cerca de 1251 horas, lo que significa que realmente me gusta este juego. Hoy estaba revisando la página web y miré dentro del apartado del Buddy Program, un programa por el cual una persona puede invitar a otra (directamente o mediante un enlace) y si la segunda

Diego Sarmentero: Sabado de Hacking este 9 de Noviembre!

A los interesados en asistir al Sabados de Hacking de este 9 de Noviembre, por favor anotarse aca:

https://docs.google.com/forms/d/1b-Bitbnl93HQSv-4VYGBe1EzbtKON6vTduhO_DuDLS4/viewform

La idea de Sabados de Hacking es juntarnos entre los interesados una vez al mes para hackear cosas random (al mejor estilo de un PyCamp modesto).
La importancia de que los interesados en asistir se anoten es para que podamos determinar en que lugar se va a hacer dependiendo de la cantidad de asistentes.

Este sabado vamos a contar con cosas como:

Emotiv

LeapMotion

Oculus

Kinect

Para aquellos que esten interesados en jugar y probar algo con esas cosas. Nos vemos!

Diego Sarmentero: Si organizara un recital...

Desilucionado por las bandas que vi que tocan en el Lollapalooza Argentina, decidi hacer la lista de bandas que pondria en un recital de ese tipo si yo lo organizara :P
Alguna de las bandas tocan musica muy tranqui, pero le ponen TODA LA ONDA a los recitales!

  • Placebo
  • Of Monsters And Men
  • Rilo Kiley
  • Mumford And Sons
  • The Lumineers 
  • Edward Sharpe And The Magnetic Zeros
  • Ben Howard
  • Daughter
  • Flogging Molly
  • La Vela Puerca
  • No Te Va Gustar
  • Smitten
  • Band Of Horses
  • Bon Iver
  • Cold Play
  • Kate Nash
  • 30 Seconds To Mars
  • Depeche Mode
  • Llifehouse
  • Snow Patrol
  • The Greets

 QUE BUEN ENCUENTRO DE RECITALES SERIA ESE!!! :D

Alberto Paparelli: Amazon Permission denied (publickey)

El otro día tenía que hacer un deploy de una aplicación en el servidor de un cliente en amazon. Al intentar acceder por ssh, recibía como respuesta "Permission denied (publickey)".

No podía acceder de ninguna otra manera. Tuve que hacer algunos pasos y pude solucionarlo.

Mi problema era que alguien cambio los permisos del home, incluyendo el directorio ~/.ssh/.

Les paso como lo solucione.

  • Parar la instancia.
  • Ir a Volumes, encontrar el disco de la instancia con problemas y poner "dettach".
  • Si no tenes otra instancia, crear una micro instancia y poner attach volume.
Amazon Permission denied (publickey)
  • El disco ya esta montado en la nueva instancia, así que podes debugear hasta encontrar el problema.
  • Dettach de la nueva instancia.
  • Attach a la instancia vieja. En este caso, el punto de montaje debe ser /dev/sda1 (como estaba antes).
  • Iniciar nuevamente la instancia

Martín Gaitán: Nuevo análisis #NoAlFraudeEnCordoba

La repecursión que causó el análisis de datos para filtrar mesas estadísticamente sospechosas me sorprendió totalmente.

Se registraron más de 200 reportes de irregularidades a través del formulario y otros tantos en los comentarios de los articulo previos a que pusiera ese sistema de aviso.

Además, no sólo salió en los medios (para algunos con mala leche soy "kirchnerista pero democrático") , sino que Liliana Olivero se comunicó conmigo para agradecerme y preguntarme si podíamos obtener más información. Hoy me reuní con integrantes del Frente de Izquierda para hacer nuevos reportes.

Algunos números nuevos

Encontré, por ejemplo, que son 201 las mesas no computadas ¿qué significa eso? ¿se tienen en cuenta en el escrutinio definitivo? ¿se abrirán esas urnas?

También hay mesas que tienen hasta 80 votos computados más que la cantidad real de votos en la urna .

Además de los errores en el escrutinio, se teme que las mesas con muchos votos nulos sean las que no consideraron boletas de las PASO, debido a que muchos presidentes de mesa no se enteraron que la Justicia Electoral decidió que serían válidas. Hay al menos 136 mesas con una proporción muy alta de votos nulos y muy baja para el FIT. ¿No se deberían revisar?

A quién afectan los "errores"

Por último, alguien me preguntó si el error recurrente de mesas con "0" votos no afectaría parejo para todas las listas.

Traté de hacer una proyección [1]: sin considerar las 201 mesas no computadas, el FIT sacó 0 voto en 148 mesas y la UCR sólo en 11. Si multiplicamos esa cantidad de mesas por el promedio por mesa de cada partido, significarían un total de 607 votos para la UCR y 2774 para el FIT.

Es decir, aún si se tratase de un error, la UCR es el partido menos afectado y el FIT uno de los que más afectados resulta (junto con Vecinalismo Independiente y Encuentro Vecinal, es decir, los tres partidos con menos fiscales). ¿Casualidad?

Attention!

Si encontrás telegramas mal cargados o sospechosos, llená este formulario (o dejá un comentario al pie del artículo)

Cargando...
[1] Por favor, revisen el cálculo y corrijanme si estoy errando.