Archivo de la etiqueta: software libre

Conectarse a un servidor ssh inaccesible atravesando otro servidor ssh intermedio

Estoy en casa cuando repentinamente recuerdo que dejé una tarea pendiente en la oficina para la cuál necesito acceder a mi equipo. Es viernes por la tarde y la inminente llegada del fin de semana representa un problema: en la oficina ya todos se fueron y nadie en su sano juicio regresaría para terminar el trabajo. Por suerte, estoy consciente de que la computadora está encendida y el servidor ssh está corriendo. Pero claro, cómo acceder remotamente cuando la máquina no es accesible desde Internet. La buena noticia es que hay un servidor en la red al que sí puedo conectarme por ssh desde casa y desde allí ingresar al equipo.

Este tipo de escenarios, que a mi me gusta llamar SSH Multi-Huésped, es algo común entre los administradores de sistemas y existen muchos métodos para resolver la conexión: desde un rudimentario, inseguro e ineficiente direccionamiento de puertos hasta una conexión ssh en escalas, algo así:

usuario@casa$ ssh usuarioservidor@servidor
Password for usuarioservidor@servidor:
Last login: Fri Dec  2 17:01:43 2016 from 'ip_casa'

usuarioservidor@servidor$ ssh usuariooficina@oficina
Password for usuariooficina@oficina:
Last login: Fri Dec  2 17:02:15 2016 from 'ip_servidor'

usuariooficina@oficina $

Está claro que no es la manera que una administrador de sistemas usaría. La alternativa es habilitar el direccionamiento del agente a través de los equipos y pasarle la opción -t para forzar la asignación de una pseudo-tty para contar con una shell interactiva.
 

usuario@casa $ ssh -A -t usuarioservidor@servidor ssh -A usuariooficina@oficina
Password for usuarioservidor@servidor:
Password for usuariooficina@oficina:
Last login: Fri Dec  2 17:05:39 2016 from 'ip_casa'

usuariooficina@oficina $

Bonito ¿no? No, es horrible. Basta imaginar que el camino entre el equipo de mi casa y el de la oficina tuviera tres o cuatro máquinas intermedias. Ni hablar si lo que buscamos es copiar un archivo desde un extremo al otro con scp. Sin duda, estos métodos carecen de toda elegancia. Lo que yo necesito es realizar esta operación de una manera simple, transparente y eficiente.

Para esto contamos con dos herramientas: por una lado, tenemos netcat (Netcat – Wikipedia, la enciclopedia libre), que debe estar instalado en las máquinas intermedias; por otro, la opción ProxyCommand habilitada en nuestro cliente ssh. Para configuralo, hay que añadir algunas líneas al final del archivo de configuración /etc/ssh/ssh_config en el equipo desde el cual iniciamos la conexión.
 

usuario@casa $ sudo nano /etc/ssh/ssh_config

/etc/ssh/ssh_config

[…]
Host oficina
User usuariooficina
HostName oficina
Port 22
ProxyCommand ssh -q usuarioservidor@servidor nc %h %p

Para explicar un poco el contenido agregado al archivo:
Host es un nombre arbitrario que nos servirá para identificar fácilmente el huésped al que buscamos conectarnos
User, Hostname y Port representan las variables que netcat usará para conectar los húespedes
ProxyCommand: aquí se ejecuta el comando requerido para iniciar la conexión. La opción -q (quiet mode) suprime los mensajes de advertencia y diagnóstico; nc ejecuta netcat propiamente dicho y los valores %h y %p se obtienen de User-HostName y Port respectivamente

 

usuario@casa $ ssh oficina
Password for usuarioservidor@servidor:
Password for usuariooficina@oficina:
Last login: Fri Dec  2 17:10:05 2016 from 'ip_casa'

usuariooficina@oficina $

El procedimiento es simple y transparente. Como es natural, la cadena de equipos intermedios puede poseer más de un huésped y por supuesto, es posible configurar un sin número de conexiones diferentes. Además, con este método es posible la copia de manera sencilla de archivos desde y hacia el equipo remoto con scp, el uso del protocolo sftp, la conexión a través del gestor de archivos y como si esto fuera poco, podemos dirigir aplicaciones gráficas a través de X-forwarding. Aquí algunos ejemplos:

usuario@casa $ scp oficina:/ruta/archivo_remoto /ruta/archivo_local
Copia del archivo_remoto desde el equipo en la oficina hacia la máquina en casa.

 

usuario@casa $ ssh -X oficina pcmanfm
Ejecutando el gestor de archivos pcmanfm del equipo en la oficina en la máquina en casa a través de X-forwarding.

 

De esta manera me ocupo de terminar el trabajo pendiente y me dispongo a disfrutar de una tarde de viernes como es debido.
 

Crónicas de un arranque dual o de cómo FreeBSD convive pacíficamente junto a Manjaro en mi disco duro

Todos los que hemos recorrido los caminos del software libre hemos desarrollado un fuerte interés por FreeBSD en más de una ocasión. En mi experiencia, he tenido oportunidad de echarle mano en el ámbito laboral, pero para uso personal siempre me sentí más cómodo con las distribuciones GNU/Linux.

Sin embargo, me doy cuenta que esta tendencia está cambiando. Por un lado, systemd ya no es una opción para mí y ciertamente veo más complicado cada día andar por el mundillo “linuxero” evitando el contacto con el daemonio del sistema, a pesar de las múltiples y excelentes opciones que hay en la vía (tema que da lugar quizá a otra entrada).

Por otra parte, la mayoría de nosotros cuenta con abundante espacio en disco duro y a menudo andamos buscando alternativas para llenar esas particiones con sistemas que llamen nuestra curiosidad por conocer y analizar, prácticamente de laboratorio por decirlo de alguna manera. Por mi parte, no me considero un distrohopper y tampoco soy de virtualizar mis instalaciones, pero soy de los que gusta tener una o varias particiones del disco listas para recibir un nuevo huésped con quien divertirme o aprender un rato.

Actualmente mi máquina de escritorio juega con Manjaro OpenRC y KDE Plasma como entorno de escritorio (versión 5.8.1 al momento de escribir la entrada) y mi intención es que siga siendo el sistema operativo principal por un tiempo más. El planteo entonces es poder instalar FreeBSD en una de las particiones disponibles y correr un arranque dual utilizando el actual Grub de Manjaro para escoger entre sistemas operativos.

Lo que sigue no es un tutorial de cómo instalar FreeBSD, el proceso en sí es bastante intuitivo y comprensible, además está amplia y perfectamente descrito en la Documentación oficial del Proyecto. Lo que sigue es más bien la crónica de mi experiencia instalando FreeBSD junto a mi actual distribución GNU/Linux.

Preparando la instalación

Es algo obvio, pero por si alguien se pregunta, lo primero fue preparar un dispositivo de arranque con la imagen de FreeBSD que descargué desde aquí y que luego pasé a un pendrive así:

$ sudo dd if=/ruta_de_descarga/FreeBSD-11.0-RELEASE-xxx-memstick.img of=/dev/sdc
1433746+0 registros leídos
1433746+0 registros escritos
734077952 bytes (734 MB, 700 MiB) copied, 268,342 s, 2,7 MB/s

Algo verdaderamente notorio es la multiplicidad de opciones que ofrece FreeBSD en cuanto a arquitecturas, imágenes listas para importar a máquinas virtuales y tarjetas SD para dispositivos embebidos.

Ahora bien, antes de iniciar desde el pendrive, hay que echar un ojo a las particiones en el disco (/dev/sda) para tenerlas bien identificadas.

$ lsblk /dev/sda -o NAME,SIZE,MOUNTPOINT
NAME       SIZE       MOUNTPOINT
sda        465,8G
├─sda4     1,9G       [SWAP]
├─sda2     19,1G
├─sda3     425,8G     /home
└─sda1     19,1G      /

Como puede verse, tengo un disco con una disposición bastante estándar, es decir, una tabla MBR con 4 particiones primarias: el directorio raíz (/) un directorio de usuario por separado (/home) una partición de intercambio (swap) y una partición libre (/dev/sda2). No cabe duda que FreeBSD irá a parar a /dev/sda2 y obviamente no quiero tocar los preciados datos en /home ni mucho menos dañar la actual instalación de Manjaro (/), así que voy tomando nota.

Para facilitar todavía más las cosas, lo que personalmente prefiero es eliminar la partición /dev/sda2 para que quede como espacio sin asignar o sin utilizar. De esta manera, la tarea de configurar esa partición la haré desde el instalador de FreeBSD.

Ahora sí está todo listo para iniciar desde el dispositivo USB. Una vez que arranca dará a escoger entre iniciar el instalador , ejecutar una consola de comandos o una sesión en vivo del sistema . Más por capricho que por experiencia, me inclino a ejecutar la shell  para preparar la partición manualmente y posteriormente ejecutar el instalador.

When finished type 'exit' to return the installer.

#

Creando y configurando las particiones

Para gestionar las particiones en FreeBSD contamos con una gran herramienta: gpart. Algo a tener en cuenta al momento de trabajar con el disco es la notación que usa FreeBSD para nombrar los dispositivos: donde en GNU/Linux teníamos /dev/sda, aquí se llama ada0; la partición /dev/sda1 ahora es ada0s1 y así con el resto.

# gpart show -p ada0
ada0        MBR            (468.8G)
ada0s1      linux-data     (19.1G)
- free -                   (20G)
ada0s3      linux-data     (428.8G)
ada0s4      linux-swap     (1.9G)

El primer paso a partir de aquí es crear la partición ada0s2 utilizando el espacio libre que dejó la ya eliminada /dev/sda2.

# gpart add -t freebsd -i 2 ada0
ada0s2 added
Antes de continuar, una pequeña reseña del comando:
gpart add: agrega una nueva partición a la tabla ya existente
-t freebsd: el tipo de partición (freebsd en este caso)
-i 2 ada0: indicarle a gpart que la partición se creará con el índice número 2 en el dispositivo ada0. Si no especificamos un tamaño, lo asignará automáticamente

Al mirar nuevamente la tabla, la cosa va tomando forma.

# gpart show -p ada0
ada0        MBR            (468.8G)
ada0s1      linux-data     (19.1G)
ada0s1      freebsd        (20G)
ada0s3      linux-data     (428.8G)
ada0s4      linux-swap     (1.9G)

A continuación, debe crearse el sistema de archivos en la partición (freebsd-ufs) con el siguiente comando:

# newfs ada0s2
/dev/ada0s2: 20000.0MB (40960000 sectors) block size 32768, fragment size 4096
using 32 cylinder groups of 626.09MB, 20035 blks, 80256 inodes.
super-block backups (for fsck_ffs -b #) at:
...
Un detalle a tener en cuenta es que BSD discrimina entre particiones primarias y lógicas llamando a estas segundas slices. Por ejemplo, la partición primaria /dev/ada0s2 (del tipo BSD) tendrá el slice /dev/ada0s2a (freebsd-ufs o simplemente ufs).

Teniendo ya lista la partición, regreso al instalador escribiendo # exit y realizo los primeros pasos de configuración del sistema: distribución del teclado, hostname, componentes opcionales) hasta llegar al editor de particiones.

A partir de este punto me encuentro ante dos alternativas: seleccionar Manual y configurar los puntos de montaje desde allí o continuar ensuciándome las manos desde la Shell. Como me gusta complicarme la vida a fuerza de comandos, lo que hago es irme de nuevo a la consola.

Primero voy a generar el archivo /tmp/bsdinstall_etc/fstab.

# echo "/dev/ada0s2a / ufs rw 1 1" > /tmp/bsdinstall_etc/fstab

Luego, montar el nuevo sistema de archivos y salir.

# mount -t ufs /dev/ada0s2a /mnt

# exit

El instalador comenzará la copia de archivos, pedirá configurar la red, el usuario root, la zona horaria, el reloj y demás. Bastará aquí con seguir los pasos. Al terminar, salgo y reinicio.

Agregando FreeBSD al Grub de GNU/Linux

Como es natural, al reiniciar el Grub no mostrará FreeBSD entre las opciones de arranque. Normalmente, en Manjaro bastaría con ejecutar $ sudo update-grub, pero en este caso lo que debe hacerse es crear la entrada de forma manual y regenerar el Grub.

$ sudo nano /etc/grub.d/40_custom

/etc/grub.d/40_custom

!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "FreeBSD" {
set root=(hd0,2)
chainloader +1
}
Añadimos la entrada manual indicando que el directorio raíz se encuentra en /dev/sda2 (hd0,2).
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
Generando un fichero de configuración de grub...
...
Encontrado unknown Linux distribution en /dev/sda2
...
hecho

¡Y listo! Reinicio y veo a FreeBSD flamante entre las opciones del Grub, lista para convivir pacíficamente junto a Manjaro en mi disco. Restará instalar y configurar un entorno gráfico y las aplicaciones que uso a diario, pero esa es toda una historia aparte.

Activar el repositorio kde-unstable y tener lo último de KDE en Archlinux

Como usuario de Archlinux estoy acostumbrado a estar siempre a la última en cuanto a actualizaciones, especialmente porque soy de los que habilitan los repositorios inestables en la configuración de pacman. Sin embargo, en muchas ocasiones los diferentes proyectos que proveen aplicaciones, programas, entornos de escritorio, espacios de trabajo, van un tanto más adelante que los mantenedores de los repositorios oficiales de las distribuciones GNU/Linux que usamos a diario (incluso con los repositorios inestables) y mientras el proyecto está en fase más avanzada, notamos que no estamos tan a la última como deseamos.

Uno de los casos es el del proyecto KDE. Mientras la gente de KDE trabajaba en el lanzamiento de la versión 5.6.95 de su entorno de escritorio Plasma y al mismo tiempo la versión 5.7 de este proyecto entraba en fase Beta, yo me encontraba con la versión 5.6.5 en mi instalación de Archlinux.

$ plasmashell --version
plasmashell 5.6.5

Aquí comencé a preguntarme cómo podría disponer de las últimas actualizaciones, es decir, de la versión 5.6.95 próxima a publicarse, la cual incluye muchas de las novedades que vienen con la siguiente (Plasma 5.7). Pues bien, en Archlinux disponemos del repositorio kde-unstable y para habilitarlo debemos editar el archivo /etc/pacman.conf.

$ sudo nano /etc/pacman.conf

/etc/pacman.conf


REPOSITORIES

[kde-unstable]
Include = /etc/pacman.d/mirrorlist
 
[testing]

Básicamente hemos agregado [kde-unstable] a nuestro listado de repositorios personalizados. Es importante colocarlo encima de los demás para que tenga prioridad sobre estos.

Ahora bastará con actualizar el sistema y volver a ejecutar el comando plasmashell --version.

$ sudo pacman -Syyu
...

$ plasmashell --version
plasmashell 5.6.95

 

Bien, hasta acá este pequeño artículo. Debo aclarar que al momento de preparar la entrada, la versión 5.6.95 aún no se lanzaba oficialmente. Hoy ya está disponible en repositorios oficiales de Archlinux. Sin embargo, igual sirve para futuras actualizaciones en fase previa a su lanzamiento.

Cuidá tu privacidad en la Red

Últimamente se habla mucho sobre privacidad y seguridad en las redes. De hecho, cada sitio o blog de los que visito a diario ha tocado el tema más de una vez en el último mes, ni hablar del último año, dejando evidencia de la importancia que ha alcanzado este asunto y la necesidad que tenemos los que defendemos la libertad de que la gente tome conciencia del tema. Por mi parte, quisiera aportar otro granito de arena para que sigamos construyendo.

Cuidá tus datos personales

El aspecto más importante en cuanto a la privacidad es lo que hacemos con nuestros datos, nuestra información personal. Nada más claro, y sin embargo, vemos a diario cómo las personas cuelgan en redes sociales los datos de dónde viven, su número telefónico, dónde estudian o trabajan y en qué horarios, qué lugares frecuentan, quienes son los demás integrantes de su familia, etcétera. Lo que me parece peor es que suben fotografías de sus hijos con la información de ellos también ahí a disposición de cualquiera, todo claro está, con nombre y apellido reales. No creo que haga falta decir más al respecto.

Por mi parte, en Internet nadie me conoce por mi verdadero nombre y nadie ha visto una fotografía que pueda asociar con mi cara. Es más, si alguien escribiera mi nombre y apellido reales en cualquier buscador, tampoco llegaría a nada, mi información personal no está en Internet. ¿Alguien más ha hecho la prueba con su nombre? Muchos se sorprenden al ver los resultados.

Cuida lo que hacen otros con tus datos personales

Hace unos días leí por acá una historia muy interesante al respecto y que deja este concepto muy claro. He sabido de algunos compañeros en las redes sobre problemas que tuvieron al respecto. La cuestión es simple: vos cuidás celosamente tu información, pero si alguien de tu entorno no lo hace probablemente terminarás afectado.

Pedíle a tu familia y amigos que respeten tu decisión de cuidar tu información personal explicándoles por qué crees que te están haciendo un daño al publicar tus datos, fotos, actividades en las redes. Por supuesto, no los podés obligar, pero si te aprecian, van a respetarte.

Cifrá tu información

Este es un tema que me apasiona. En la web hay mucha información por lo que no me voy a detener en los aspectos técnicos ni voy a profundizar sobre los mismos en este momento. Basta con que remarque la importancia de utilizar métodos de cifrado o encriptado de datos en tus comunicaciones y en tus archivos. Tarde o temprano nos podemos topar con una filtración de nuestra información en la web y que los datos “viajen” encriptados será decisivo para resguardar nuestra privacidad.

Navegá anónimo con Tor y sus consejos

Hay quienes defienden y quienes atacan a la red de navegación anónima Tor. En mi caso, lo uso siempre que puedo. Tor es un proyecto muy interesante para quienes nos preocupa la privacidad. Es cierto que se ha ganado la fama de que es la red ideal para terroristas, narcos y gente cuya actividad quiere mantener totalmente oculta de los ojos de la ley. Sin embargo, la red no se creó con la intención de ayudar a esa gente. Hay muchos sitios en Internet que rastrean tu actividad y tu ubicación basados en tu dirección ip. La mejor manera de evitar que alguien conozca es información es cubrirla con las “capas” que ofrece Tor.

Por otra parte, la web de Tor nos da una lista de consejos que podemos seguir para reforzar nuestro anonimato en la red. Algunos de ellos son: navegá utilizando el protocolo “https”, esto te asegura que los datos en tu navegación son encriptados; no usés torrent mediante Tor, esto quitaría tu anonimato y afecta el de los demás usuarios de Tor; abrí los documentos descargados fuera de línea (off-line) debido a que algunos documentos contienen recursos que pueden ser descargados fuera de la red Tor, exponiendo tu ip.

Cuidado con las redes WiFi públicas

Las redes WiFi públicas representan un gran peligro para la seguridad y la privacidad. Hay muchas cuestiones técnicas detrás de esto. Lo que queda más a la vista es que siendo una red pública es más fácil para cualquiera husmear(sniff) lo que pasa a través de esa red. Por mi parte, sólo me conecto a la red WiFi de mi casa y de amigos en quienes confío.

Pensá dos veces antes de hacer click

Por mucho que aseguremos nuestra navegación, tarde o temprano llegaremos a algún sitio donde peligre nuestra seguridad y privacidad. Por esto, tengo un bloqueador de anuncios en todos mis navegadores y muchos otros complementos de seguridad. Además, me cuido de los complementos que usan los sitios que visito y de trato de no utilizar webapps en mi navegador, tales como reproductores de música de emisoras de radio, almacenamiento en nube, etcétera a menos que confíe plenamente en ellos.

Aún así, nunca hago click en la poca publicidad que mi bloqueador no logra quitar, ni tampoco hago click en cuanto link aparezca en la página donde me encuentre. Muchos de esos banners, imágenes con links, etcétera contienen enlaces a sitios evidentemente maliciosos o bien sitios maliciosos encubiertos como sitios de confianza. Si vas a ingresar al sitio de tu banca online o vas a realizar compras por Internet, llegá hasta ahí desde la barra de dirección del navegador, nunca lo hagás mediante clicks en otros sitios.

Usá Software libre

Entre todos los beneficios que aporta el Software Libre, está el de ser software que habitualmente es auditado y que puede ser auditado en cualquier momento. Esto nos asegura saber qué hace un programa y cómo lo hace, permitiendo detectar funcionalidades maliciosas o sospechosas, puertas traseras, funciones que registran nuestros datos y los envían a algún sitio o servidor. Si nos arriesgamos a usar un programa que no es Software Libre, quedamos expuestos a la voluntad de los dueños del programa sobre lo que hagan con nuestros datos.

Quien tiene el código, tiene el poder sobre el software y la información que procesa y contiene dicho software. Si el programa es privativo, el poder lo tiene el dueño, si el programa es libre, el poder lo tienen el usuario y la comunidad.

Cambio de paradigmas

En muchas conversaciones sobre privacidad se oyen frases como: “¿para qué voy a preocuparme por alguna persona o máquina está espiando mi actividad en la red, mis conversaciones por correo electrónico o mis mensajes, en definitiva no tengo nada que ocultar? ¿Quién va a querer robarme a mí que tengo tan poco? ¿Qué provecho puede obtener con los datos de un “don nadie” como yo, una empresa tan gigante como…?

Mi reacción ante estas excusas es simplemente responder respetuosamente: en tu hogar tampoco tenés nada que ocultar y, sin embargo, mantenés las puertas cerradas y tapás las ventanas con cortinas. Si descubrieras a tu vecino mirando a través de un agujero en la pared lo taparías y denunciarías a tu vecino con la policía. Tampoco dejás a extraños ingresar para que vean lo que hacés a diario y estudiar tus hábitos, qué comés, a qué hora dormís. Si un desconocido te pidiera ver tus correos o tus mensajes se lo negarías de inmediato, es más, se lo negás normalmente a personas que son de tu confianza y nadie se escandaliza al respecto. ¿Por qué tiene que ser diferente con tu actividad en las redes? (esto salió de una conversación real que tuve con un amigo hace unos días)

Por otra parte, la mayoría de nosotros pasamos de largo cuando nos piden completar una encuesta en la calle. Sabemos que es para juntar datos para alguna campaña publicitaria que termina beneficiando económica o políticamente (o ambas) a alguien ya lo bastante beneficiado actualmente. En Internet, parece que a nadie le importa. Es más, algunos están felices de que rastreen su actividad para obtener mejores sugerencias de búsqueda, etcétera mientras la rueda del dinero sigue girando para alguien más.

La verdad es que hasta que no cambiemos el paradigma, la cosa no va a cambiar mucho. Necesitamos empezar por modificar nuestras ideas y actitudes para poder cambiar nuestro modo de actuar. Esto implica también vencer la costumbre. Por mi parte, me costó mucho trabajo dejar de usar ciertos servicios y ciertos programas. Pero al final, fue una experiencia liberadora.

Para finalizar, mientras redactaba el post me encontrado luchando con mi propio estilo: tratar de ser breve en un tema que da mucho para hablar al mismo tiempo que no quería entrar en temas técnicos ni dar demasiados ejemplos es difícil y lo he comprobado. Queda mucho por hacer. Queda lejos de ser la última palabra en cuanto al tema, estoy seguro que se puede hacer más, o bien hacerlo de otra manera. De momento, es la forma que yo conozco y que puedo implementar dentro de mis posibilidades. Me quedo satisfecho al menos por el hecho de poder comunicarles mi opinión personal y transmitirles mi experiencia.

Espero sus comentarios ¡Saludos a todos!