Linux cumple 25 🎈🎉

Feliz cumpleaños Linux

El día de hoy, hace 25 años, Linus Torvalds anunció el desarrollo de su kernel con uno de los más famosos posts en la historia de la computación, en comp.os.minix de Usenet:

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) [...] it probably never will support anything other than AT-harddisks, as that's all I have :-(. 

Y boom. El sistema operativo que no iba a ser "grande ni profesional" se convirtió en el proyecto colaborativo más grande de la humanidad, y tan profesional que muchas de las más grandes compañías tecnológicas trabajan activamente para éste.

Linux Companies

Y es que es tan importante porque todos usamos Linux todos los días, aunque tal vez no lo uses en tu computadora personal: las páginas web, los smartphones Android, las SmartTVs (y otras Smart-cosas), varios automóviles, los PlayStation, las graficadoras de Texas Instruments, y muchos otros aparatos electrónicos de uso cotidiano funcionan gracias al kernel de Linux.

Así que este día les propongo:

Formas de celebrar el cumpleaños de Linux

  1. Hacer que tus amigos te compren una cerveza: Porque ya tienes un sistema operativo free (as in free speech) y ahora necesitas algo free (as in free beer).
  2. Colaborar en un proyecto de software libre: Para entrar al "tren del mame" del FOSS.
  3. Recompilar el Kernel: Porque eres valiente, paciente, y te gusta optimizar tu software al máximo. No olvides tus calcetines de la suerte.
  4. Instalar Linux: si no lo haz hecho antes, tiene que probarlo. Les dejo esta imagen que me gusta mucho:

Why use Linux

¡Feliz cumpleaños Linux!, vamos por 25 años más.


¡Feliz día de Debian #23!

Logo de Debian

Hoy 16 de agosto, como cada año, se celebra el día de Debian, porque hace exactamente 23 años se fundó este proyecto.

Debian "El sistema operativo universal" es uno de mis sistemas operativos (o distribuciones de GNU/Linux, como perefieras llamarle) favoritos. Lo uso en en este servidor web y lo usé durante mucho tiempo en mi PC, hasta que me cambié a Arch Linux hace poco más de un año. De hecho, mi primier distro fue Ubuntu, que es derivado de Debian.

Este día se celebra normalmente instalando Debian (¡duh!) o con eventos en varias ciudades del mundo (lástima que el que tengo más cercano es en la Ciudad de México, por lo que no es factible que asista a alguno). Pero también puedes celebrarlo viendo Toy Story, ya que las versiones de Debian llevan nombres de los personajes de ésta película, o informándote con la línea del tiempo oficial y con esta infografía:

Infografía de Debian

Y si tienes habilidades artísticas, deberías hacer un wallpaper para la próxima versión "Debian Stretch".

Muchas cosas importantes han salido de este proyecto, como el sistema de paquetes deb y muchas otras distribuciones de GNU/Linux. Quién sabe que le espera en los próximos años...


¡Este sitio web ya es seguro! (o cómo obtener HTTPS para tu sitio web)

HTTPS

HTTPS ha sido estándar desde el 2000, pero al día de hoy muchos sitios web siguen sin utilizarlo principalmente por tres razones:

  • Costo: Las empresas que emiten los certificados cobran por éstos al rededor de $250 USD anuales.
  • Carga en el servidor: Con HTTPS, la información transferida tiene que ser encriptada y desencriptada para poder ser leída, lo cual puee resultar en más trabajo para el servidor (aunque, seamos sinceros, es 2016... computar ya no es un problema).
  • Renovaciones: Renovar el certificado puede llegar a tomar mucho tiempo, debido a las verificaciones que se deben llevar a cabo.

Pero ya no más. Desde abril de 2016, Let's Encrypt ha estado ofreciendo certificados que son gratis, automatizados y abiertos.

El proceso es extremadamente sencillo, no me tomó más de 10 minutos generar el certificado y configurar la renovación automática. En el sitio web de Certbot, la herramienta que crearon con este propósito, puedes encontrar tutoriales para el sistema operativo y el webserver que estés utilizando.

Así que ya no hay excusa. Es 2016 y necesitamos proteger nuestra privacidad.


Seguridad esencial para servidores Linux

Seguridad

Me da mucho miedo el tema de la seguridad. Todo está roto y no importa que tanto te esfuerces, que tanto encriptes tus datos, siempre vas a cometer un descuido (especialmente si eres tan distraído como yo) y algún vivo se va a aprovechar de él.

Por eso no me atrevo a escribir una sola línea de código que tenga que manejar datos sensibles, y cada vez son menos los valientes: hoy en día, muchos sitios no te piden que crees una cuenta, sino que hagas login con tu cuenta de Facebook, Twitter o Gmail, porque ¿para qué guardar tus datos si Facebook ya lo hace y mejor de lo que yo podría llegar hacerlo?

Pero aunque mis necesidades de seguridad no son tan grandes, aún así mantengo un servidor (donde está alojado este blog), y es necesario implementarle, cuando menos, la seguridad más básica.

Por eso fue un alivio encontrar en HackerNews el siguiente artículo:

My First 10 Minutes On a Server - Primer for Securing Ubuntu,

que muestra como en 10 minutos puedes pasar de un servidor recién formateado, a un servidor seguro. Supongo que aquí también aplica el principio de Pareto: con el 20% del esfuerzo, puedes lograr el 80% de seguridad.

Los pasos ahí mostrados son para un servidor de Ubuntu, pero para cualquier otra distro es casi lo mismo.

Claro que esto no va a protejer, para nada, las aplicaciones hosteadas en este servidor, como dice el artículo, "ese es otro animal completamente", pero por lo menos nadie va a hacer login ni va a ejecutar programas si no se lo permites.


Compartir conexión inalámbrica via ethernet en GNU/Linux

Nota: Esta entrada fue publicada el 19 feb de 2015 @ 01:23 en un blog que tenía anteriormente en Wordpress, y republicada aquí para el record.


Estaba ayudando a un amigo a instalar Debian en su laptop y resultó que su adaptador de Wi-Fi no tiene drivers libres y, por lo tanto, para instalar Debian Jessie netinst (la única ISO que teníamos a la mano), necesitábamos conectarnos por ethernet. Lamentablemente, nos encontrábamos en uno de los salones de CETYS sin conexión de ethernet (les juro que CETYS tiene conexiones de ethernet en los lugares más inútiles, pero nunca donde los necesitas).

Me puse a buscar cómo compartir mi conexión inalámbrica por medio de ethernet. Askubuntu salió al rescate, pero parece que el "Linux para seres humanos" tiene esta función anormalmente accesible y en Debian tenemos que correr algunos comandos para lograrlo. Lo dejo escrito aquí, porque nunca se sabe cuándo puede ser útil.

Nota: Todos los comandos aquí mostrados deben ejecutarse como administrador.

Primero, en la computadora que va a compartir su red inalámbrica, se deben correr los siguientes comandos:

ifdown eth0
ifconfig eth0 192.168.10.1 netmask 255.255.255.0
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -F FORWARD
iptables -A FORWARD -j ACCEPT
iptables -nvL

Después, si queremos que la computadora servidor funcione como DNS y DHCP, se debe instalar dnsmasq:

apt-get install dnsmasq

y editar el archivo /etc/dnsmasq.conf agregando las siguientes dos líneas:

interface=eth0
dhcp-range=192.168.10.10,192.168.10.19,4h

Por último, reiniciamos dnsmasq:

/etc/init.d/dnsmasq restart

Con esto ya debería funcionar lo que queremos. Sin embargo, si no queremos que el servidor funcione como DNS, podemos simplemente ejecutar los siguientes comandos en el cliente:

ifdown eth0
ifconfig eth0 192.168.10.10 netmask 255.255.255.0 gateway 192.168.10.1
echo "nameserver 8.8.8.8" > /etc/resolv.conf

Cuando queramos deshacernos de esta funcionalidad, simplemente borramos las líneas que se agregaron (si es que se agregaron) a /etc/dnsmasq.conf y reiniciamos el sistema.


Instalar impresora en GNU/Linux

Nota: Esta entrada fue publicada el 21 dic de 2014 @ 02:57 en un blog que tenía anteriormente en Wordpress, y republicada aquí para el record.


Las impresoras generalmente vienen con software para Windows y OS X, pero se olvidan de nuestro pingüino favorito. El lado bueno, es que la mayoría de las distribuciones de GNU/Linux vienen preparadas para descargar automáticamente el software necesario para casi cualquier impresora (cualquier dispositivo, de hecho).

Tux, nuestro pingüino favorito

Formateé mi PC hace poco y me pasó lo mismo de siempre: por alguna razón siempre batallo para que funcione mi HP Lasserjet P1005, googleando encuentro la solución (que son dos simples comandos), pero ya me cansé de hacer eso si puedo simplemente postearla aquí para cuando la necesite. Supongo que esto funciona para cualquier impresora HP.

sudo apt-get install hplip
sudo hp-setup -i

"Instalar" programas en GNU/Linux

Nota: Esta entrada fue publicada el 19 dic de 2014 @ 16:46 en un blog que tenía anteriormente en Wordpress, y republicada aquí para el record.


Cuando uso GNU/Linux (Debian, en mi caso, que ya llevo casi un año con él) y quiero instalar algún programa, lo busco primeramente en los repositorios oficiales y lo instalo con un simple apt-get install, pero no siempre se puede hacer esto —ya sea porque ese programa no está en los repositorios, o porque es una versión antigua— y entonces es necesario descargarlos de otra fuente.

Muchas veces se descarga un ejecutable. Lo malo de esto es que no se "instala" y por lo tanto no aparece en el lanzador de aplicaciones de Gnome. A continuación voy a describir los pasos para hacer que el programa esté disponible para todos los usuarios desde el lanzador y, opcionalmente, disponible desde un comando en la consola. Estos pasos funcionan para todos los escritorios compatibles con freedesktop.org, entre ellos Gnome, Unity y KDE.

Primero se tiene que mover el programa al directorio /opt/

sudo mv programa /opt/

Luego, si queremos tener la posibilidad de correr el programa desde la consola, tenemos que crear un enlace simbólico en /usr/bin (en este caso el programa se ejecutaría con programa, porque el enlace que creamos se llama "programa")

sudo ln -s /opt/programa/ejecutable /usr/bin/programa

Finalmente, tenemos que crear un lanzador del programa, para que nuestro entorno de escritorio sepa qué hacer y donde buscarlo en caso de que lo queramos correr. Este lanzador es un archivo con extensión .desktop dentro de /usr/share/applications/. En este ejemplo, el archivo quedaría así:

[Desktop Entry]
Name=Programa
Exec=/opt/programa/ejecutable
StartupNotify=true
Terminal=false
Type=Application
Icon=/opt/programa/icono.png

Esta entrada fue inspirada por la de Picando Código, pero quise ampliar aún más su publicación. Siempre se me olvidan este tipo de cosas.