Etiquetas

domingo, 28 de abril de 2013

Rock & FOSS - Cómo los "Deadheads" compartían música y crearon Comunidad en los años '60

El 26 de abril se conmemoró el Día Internacional de la Propiedad Intelectual, conmemoración promovida por la OMPI, Organización Mundial de la Propiedad Intectual. Según dicha organización, dependiente de Naciones Unidas, los sistemas de patentes y copyright garantizan la innovación. Otros analistas sostienen, en cambio que tienden a "criminalizar" los hábitos que internet viabilizó.
Pero hay un caso ya de casi 50 años de edad que puede enseñarnos cómo los músicos permitieron que sus creaciones fueran libremente copiadas y compartidas siempre y cuando sus fanáticos no lucraran con ello. Y además lograron hacer buenos negocios. Es la historia de Greatful Dead y de la contracultura de San Francisco, que previeron las licencias Creative Commons o la GPL.





Creo que uno no debería temer equivocarse al afirmar (al menos así lo creo) que una de las mayores influencias sociales en el surgimiento del software libre (o de código abierto) -FOSS- proviene de la contracultura de los años '60, del "flower power" y la vida comunitaria que el hippismo ensayó por entonces.
Indudablemente varios elementos de lo que fue aquel movimiento marcaron a fuego al código abierto. De hecho, muchos de los primeros hacker, de los '60 y los '70 eran fervientes creyentes de lo "alternativo" y lo "contracultural".
Posiblemente el área de San Francisco en California, no haya sido solamente terreno fértil solo para la música y el movimiento hippie. Lo fue también, sin duda, para la tecnología informática.
Un punto en el que se entrecruzan el Rock y el FOSS es Greatful Dead, el grupo emblemático liderado por Jerry García que se formó en Palo Alto.
Fueron músicos Creative Commons "avant la lettre" ¿Por qué? Sencillo, ellos permitían a sus fans -autodenominados "deadheads"- grabar sus conciertos, en aquella época en cintas, y distribuirlas libremente.
Inclusive, los Greatfull Dead ofrecían conexiones directas a la consola de sonido, con lo cual muchas de las grabaciones de sus shows fueron obtenidas con buena calidad de audio.
Greatful Dead no tuvo demasiados temas en los top 40. Pero el secreto de su éxito no estaba en maximizar las ventas de discos. Por el contrario, su truco era crear una comunidad de seguidores, que se reconocieran a sí mismos como grupo, fueron los deadheads.
Además de sus discos, que se comercializaban por el circuito comercial tradicional los Dead ofrecían memorabilia, merchandising, objetos de arte, remeras. Sin haber llegado demasiado alto en los chart llegaron a facturar 50 millones de dólares al año. Y crearon una banda emblemática, tocaron con Dylan, volaron alto.
Musicalmente, otro de sus secretos fue llevar la zapada -jam- al extremo de que cada interpretación en vivo siempre fuera diferente.
Los deadheads no eran sólo consumidores eran parte activa del movimiento que la banda generaba.
No es casual que John Perry Barlow, fundador de la Electronic Frontier Foundation haya sido letrista de The Greatful Dead.

Continuar »

Max Crook, coautor del tema "Fugitiva", un músico hacker

Max Crook fue coautor, junto a Del Shannon del famosísimo y popular éxito "Fugitiva" ("Runaway") el tema de 1961.
Pero Crook fue además inventor y, podría decirse, músico hacker. Porque él creo el Musitron, que era un sintetizador analógico que era, en rigor, un derivado del Clavioline.

(Columna de Tecnología en el programa "Dinero por Nada", en Radio América AM 1190 Khz.



El resultado obtenido fue fabuloso y la interpretación de Crook se destaca en el solo que Crook ejecuta en el Musitron.

En la electrónica de la época para lograr efectos de resonancia o vibrato tenía que recurrirse a dispositivos mecánicos, como cajas de resonancia acústicas. Para agregar efectos de vibrato Crook hizo una caja de resonancia con resortes de puertas de jardín. Además de utilizar componentes de electrónica de la época como válvulas de vacío para la electrónica de su Musitron.
Esa característica artesanal, hacen de Crook un auténtico hacker, capaz de descubrir nuevas funciones para materiales existentes.
Crook no pudo patentar su Musitron, porque muchos de los "módulos" que él integró ya se encontraban patentados con anterioridad.
Continuar »

lunes, 15 de abril de 2013

Linus vs. Tesla: Geekwire elige el mayor geek de todos los tiempos

El sitio www.geekwire.com organizó el concurso "Locura Geek" para elegir el mayor Geek de todos los tiempos.
Eran 32 geeks de toda la historia, de un costado una lista de notables del campo de la tecnología, del otro, célebres matemáticos, físicos como Albert Einstein, Guillermo Marconi, Galileo, Isaac Newton.
Y el ganador es...




El sitio www.geekwire.com organizó un concurso llamado "Locura Geek" para elegir al mayor geek de todos los tiempos.
"Geeks", en sus múltiples acepciones son personas apasionadas por la tecnología o la ciencia y con conocimientos profundos en alguno de esos campos.
Los visitantes http://www.geekwire.com/2013/geek-madness-chance-pick-greatest-geek-time/ debían elegir quién era para ellos el geek más grande de la historia.
En las primeras rondas quedaron atrás personajes importantísimos como Einstein, Thomas Edison, Marie Curie, y del otro costado Bill Gates, Steve Jobs, Mark Zuckerberger.
Llegada la instancia final de la votación, luego de varias semanas, el ganador fue el físico e ingeniero de origen croata Nikola Tesla, que venció a Linus Torvalds.

Continuar »

lunes, 8 de abril de 2013

Se realizó el primer RaspberryJAM en Buenos Aires

El sábado pasado se realizó el primer encuentro de la Comunidad de Usuarios de Raspberry Pi de la Argentina del cual pude participar, con mucha alegría. Estos encuentros informales se los conoce en todas partes como RaspberryJAM y sirven entre otras cosas para compartir experiencias, ideas y conocimiento entre la comunidad. De esta forma conversamos ayer sobre la Raspberry Pi y el primer JAM en Buenos Aires en el programa "Dinero por nada", por radio América AM 1190 Khz.



El sábado en el barrio del Abasto tuvo lugar el primer RaspberryJAM de Buenos Aires, encuentro de la comunidad de usuarios de Raspberry Pi de la Argentina ( http://www.raspberrypi.com.ar/). Los lugares disponibles para el encuentro se agotaron tan solo 48 hs después de que fuera anunciado, lo que es una muestra del interés que despierta esta pequeña computadora de uso general con hardware y software de código abierto.

Sin dudas hay muchos dispositivos que podrían convertirse en revolucionarios, pero sin temor a exagerar demasiado el Raspberry Pi tiene un potencial gigantesco. Este dispositivo desarrollado en el Reino Unido inicialmente por equipos de investigación de la Universidad de Cambridge cuesta actualmente alrededor de 30 dólares estadounidenses. Fue concebido poniendo el foco en la educación, pensando en que el núcleo de sus usuarios sean chicos de escuelas primarias y secundarias.
Haciendo un rápido flashback a mis días en la ENET 28 (El "Cuba"), cómo nos hubiera gustado tener algo parecido a una Raspberry Pi.


Además, el dispositivo fue diseñado con la filosofía de los antiguos "hackers": para que puedas abrirla, conectarla con el mundo, expandirla. Y hasta incluso tolerable a las fallas humanas, si la quemás no es tan cara como una PC. Por eso tiene un potencial educativo extraordinario, que ningún otro hardware y software propietario ofrece.
Raspberry Pi viene a ponerle más diversión a la educación.
Las Raspberry Pi es tan pequeña como una tarjeta de débito, pero por el hecho de estar potenciada por un sistema como GNU/Linux le permite apoyarse sobre los sólidos hombros de un gigante, tomando prestada la frase de Isaac Newton ("Si he visto más lejos ha sido subiéndome a los hombros de un gigante") y que tanto le gusta citar a Linus Torvalds.
A los que peinamos más canas (o incluso a los que hasta las vamos perdiendo) Raspberry Pi nos retrotrae un poco a la década del '80 cuando las computadoras eran de un hardware más elemental y era más sencillo experimentar conectándolas con el exterior. El mismo Torvalds señalaba que en aquella época para los usuarios en general era mucho más sencillo comprender el hardware y por consiguiente programar a bajo nivel.
Posiblemente Raspberry Pi sea al hardware lo que GNU/Linux viene siendo desde hace más de 20 años para los sistemas operativos. Ahora sí -exagerando un poquito para divertirnos- ¿Será la RasPi la Elegida que viene a reestablecer el equilibrio de la Fuerza? Quizá, porque es una pequeña sobre los hombros de los antiguos Jedi-hackers: los Stallman, los Torvalds, los Joys, los Wozniaks, y sigan las firmas. Lo habrá conseguido si tan solo logra despertar la pasión de niños y jóvenes por convertirse en productores y artesanos digitales en vez de que seamos meros consumidores y data entries de planillas Excel (Marca Registrada este último, cordiales saludos).

Continuar »

Servidor ftp seguro con una instancia independiente de ssh

Como SysAdmins, en muchas ocasiones precisamos ofrecer servicio de acceso sftp (secure ftp) en un host conectado a internet. En un principio, el problema que se plante es que como sftp utiliza ssh, si ya estamos usando ssh para administración remota y otros servicios administrativos utilizar la misma instancia para acceso sftp a usuarios externos podría plantear una brecha de seguridad. Por eso, utilizar otra instancia de sshd, independiente de la "principal" (administrativa) puede suponer un agregado de seguridad extra, porque vamos a "limitar" los permisos que daremos a los usuarios que accedan vía sftp.

sftp, conocido como "ftp seguro" utiliza el protocolo ssh ("secure shell") para encriptar todo el tráfico de red envuelto en este tipo de comunicación o transferencias de archivos. De esta forma, mejora el protocolo ftp clásico, en el cual credenciales de acceso como archivos se envían sin cifrado, lo que los hace visibles para ojos de malvivientes.

Lo que nos proponemos con este acercamiento es crear una instancia adicional de sshd, es decir, correr otro deminio (servidor) ssh que será el encargado de prestar el servicio para sftp, en otro puerto diferente al estándar (puerto 22). Partiendo de ese punto limitaremos los usuarios solo a usuarios definidos para usar sftp como también limitaremos las opciones del shell del usuario.

Manos a la obra

1) Crear configuracion para nuevo demonio:

Aquí copiaremos el archivo original de configuración del servidor sshd para que nos sirva de punto de partida.

cd /etc/ssh
cp -p sshd_config sshd_config-sftp


2) Modificaciones en sshd_config-sftp (Alterar puerto, bindings, etc):
OBS. Importante: es clave definir el PID file para este nuevo demonio o instancia.
Este nuevo servicio sshd escuchará conexiones en el puerto 2222, definido en el archivo sshd-config-sftp.

# BOF Modificaciones para segundo demonio
# Port modificado
Port 2222
# Agregado PID para este demonio
PidFile /var/run/sshd-sftp.pid

3)Seguridad: no permitir acceso root y limitar usuarios: Permitiremos acceso a esta instancia de sshd solo a los usuarios listados en AllowUsers o a los pertenecientes al grupo AllowGroups

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
AllowUsers ptolomeo alberto # Usuarios permitidos para acceso sftp
AllowGroups sftp # Grupo permitido

4) Crear symlink para diferenciar el demonio del principal:

# cd /usr/sbin
# ln -s /usr/sbin/sshd /usr/sbin/sshd-sftp
# ls -l sshd-sftp
lrwxrwxrwx 1 root root 14 mar 28 11:10 sshd-sftp -> /usr/sbin/sshd

5) Si se usa PAM, como es default en Debian:

# cd /etc/pam.d/
# ln -s sshd sshd-sftp

6) Modificar el script SysV para inicio y parada:

# cd /etc/init.d/
# cp -p ssh ssh-sftp

7) Alterar script de inicio ssh-sftp para definir las config de la nueva instancia (ver abajo en Anexo I el script completo).

8) Creacion de usuario y grupo para acceso restringido:

# useradd -m -c "usuario acceso sftp limitado" -s /bin/bash ptolomeo
# passwd ptolomeo
Introduzca la nueva contraseña de UNIX:
Vuelva a escribir la nueva contraseña de UNIX:
passwd: contraseña actualizada correctamente

# addgroup sftp
Añadiendo el grupo `sftp' (GID 1005) ...
Hecho.

# usermod -aG sftp ptolomeo
# groups ptolomeo
ptolomeo : ptolomeo sftp

9) OPCIONAL: ambiente chroot para el acceso sftp

Si bien, se recomiendan, los pasos descriptos en esta sección (9) son opcionales. Describen cómo configurar un ambiente chroot para que los usuarios sftp se encuentren limitados únicamente a su directorio de usuario ($HOME). De esa forma no podrán acceder a lectura de otros archivos del sistema operativo, por ejemplo.

# chown root:sftp /home/ptolomeo/
# chmod 755 /home/ptolomeo/

9.1) Alterar estas líneas de /etc/ssh/sshd_config-sftp

# Comentado para acceso chroot (ver abajo)
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

9.2) Agregar al final de /etc/ssh/sshd_config-sftp:

###################################################
## OPT. (RECOMENDADO): ###
## Para acessos sftp ambiente chroot ###
## Requiere OpenSSH>= 4.8 ###
## Este bloque debe estar al final del archivo ###
## sshd_config-sftp ###
###################################################
Match User ptolomeo
ChrootDirectory /home/ptolomeo
#ForceCommand internal-ftp
# Restringir todavia mas las posibilidades (+ paranoia)
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no

Esta última configuración establece que cuando el usuario coincida com ptolomeo, que fue el que se definió para acceso sftp el mismo quede en una jaula chroot en su directorio home. También la misma directiva condicional se puede aplicar al grupo sftp, lo que sería mejor en caso de que tengamos que dar acceso sftp a múltiples usuarios , lo que suele ser lo habitual.


Anexo I

Script llamado ssh-sftp tipo SysV de inicio para la instancia, que fue modificado a partir del original /etc/init.d/ssh, que queda inalterado.

#! /bin/sh

### BEGIN INIT INFO
# Provides: sshd-sftp
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: OpenBSD Secure Shell server
### END INIT INFO

set -e

# /etc/init.d/ssh-sftp: start and stop the OpenBSD "secure shell(tm)" daemon

test -x /usr/sbin/sshd-sftp || exit 0
( /usr/sbin/sshd-sftp -\? 2>&1 | grep -q OpenSSH ) 2>/dev/null || exit 0

umask 022

if test -f /etc/default/ssh; then
. /etc/default/ssh
fi

. /lib/lsb/init-functions

if [ -n "$2" ]; then
SSHD_OPTS="$SSHD_OPTS $2"
fi

# Are we running from init?
run_by_init() {
([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]
}

check_for_no_start() {
# forget it if we're trying to start, and /etc/ssh/sshd_not_to_be_run exists
if [ -e /etc/ssh/sshd_not_to_be_run ]; then
if [ "$1" = log_end_msg ]; then
log_end_msg 0
fi
if ! run_by_init; then
log_action_msg "OpenBSD Secure Shell server not in use (/etc/ssh/sshd_not_to_be_run)"
fi
exit 0
fi
}

check_dev_null() {
if [ ! -c /dev/null ]; then
if [ "$1" = log_end_msg ]; then
log_end_msg 1 || true
fi
if ! run_by_init; then
log_action_msg "/dev/null is not a character device!"
fi
exit 1
fi
}


check_privsep_dir() {
# Create the PrivSep empty dir if necessary
if [ ! -d /var/run/sshd-sftp ]; then
mkdir /var/run/sshd-sftp
chmod 0755 /var/run/sshd-sftp
fi
}

check_config() {
if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then
/usr/sbin/sshd-sftp $SSHD_OPTS -t || exit 1
fi
}

export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"

case "$1" in
start)
check_privsep_dir
check_for_no_start
check_dev_null
log_daemon_msg "Starting OpenBSD Secure Shell server" "sshd"
if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd-sftp.pid --exec /usr/sbin/sshd-sftp -- -f /etc/ssh/sshd_config-sftp $SSHD_OPTS; then
log_end_msg 0
else
log_end_msg 1
fi
;;
stop)
log_daemon_msg "Stopping OpenBSD Secure Shell server" "sshd"
if start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/sshd-sftp.pid; then
log_end_msg 0
else
log_end_msg 1
fi
;;

reload|force-reload)
check_for_no_start
check_config
log_daemon_msg "Reloading OpenBSD Secure Shell server's configuration" "sshd"
if start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile /var/run/sshd-sftp.pid --exec /usr/sbin/sshd-sftp; then
log_end_msg 0
else
log_end_msg 1
fi
;;

restart)
check_privsep_dir
check_config
log_daemon_msg "Restarting OpenBSD Secure Shell server" "sshd"
start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /var/run/sshd-sftp.pid
check_for_no_start log_end_msg
check_dev_null log_end_msg
if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd-sftp.pid --exec /usr/sbin/sshd-sftp -- -f /etc/ssh/sshd_config-sftp $SSHD_OPTS; then
log_end_msg 0
else
log_end_msg 1
fi
;;
try-restart)
check_privsep_dir
check_config
log_daemon_msg "Restarting OpenBSD Secure Shell server" "sshd"
set +e
start-stop-daemon --stop --quiet --retry 30 --pidfile /var/run/sshd-sftp.pid
RET="$?"
set -e
case $RET in
0)
# old daemon stopped
check_for_no_start log_end_msg
check_dev_null log_end_msg
if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd-sftp.pid --exec /usr/sbin/sshd-sftp -- -f /etc/ssh/sshd_config-sftp $SSHD_OPTS; then
log_end_msg 0
else
log_end_msg 1
fi
;;
1)
# daemon not running
log_progress_msg "(not running)"
log_end_msg 0
;;
*)
# failed to stop
log_progress_msg "(failed to stop)"
log_end_msg 1
;;
esac
;;

status)
status_of_proc -p /var/run/sshd-sftp.pid /usr/sbin/sshd-sftp sshd && exit 0 || exit $?
;;

*)
log_action_msg "Usage: /etc/init.d/ssh-sftp {start|stop|reload|force-reload|restart|try-restart|status}"
exit 1
esac

exit 0
Continuar »