Rápida reflexión sobre seguridad y IoT

Hola Mundo:

En los últimos 2 ó 3 años hemos visto como han ido creciendo el desarrollo de las tecnologías que se conectan directamente a internet y aportan datos de todo tipo. Ya es cada vez más común que los electrodomésticos se conecten a Internet y muchas personas estén experimentando con dispositivos y componentes cada vez más baratos que apoyan en la lectura de variable y automatización de procesos.

Es entretenido ver a adultos jugando como niños al construir sus proyectos con Arduino o Raspberry Pi o algún otro hardware y construyendo piezas de software exclusivos para el sistema.

El principal problema está en que no se trabaja con un equipo con roles definidos, donde cada uno se encargue de las distintas variables de un sistema: red, administración, seguridad, procesos, etc.
Es momento de tomar conciencia y hacerse responsable de todo lo que conectamos a internet.

Esto nace del conocido ataque DDoS al servicio Dyn del pasado viernes, donde se descubrió que el ataque venía del Botnet Mirai. Este botnet se aprovecha de los dispositivos sencillos conectados a internet o que forman parte de algún sistema IoT.

Existen decenas de herramientas gratuitas y de código abierto que apoyan en el monitoreo de recursos y detección de intrusos que permitirían apoyar en la seguridad de los entornos.

Aparte de las herramientas externas para el monitoreo de nuestra solución, también se deben revisar constantemente las actualizaciones del firmware de nuestro dispositivo o del sistema operativo que esté utilizando. Es altamente recomendable unirse a las listas de distribución del dispositivo para estar  enterado de las actualizaciones del componente.

El llamado es a trabajar en equipo y a estudiar más allá del desarrollo del proyecto en si, siendo responsable de las «cosas» que conectamos a internet.

Mas información:
http://dyn.com/blog/dyn-statement-on-10212016-ddos-attack/
https://en.wikipedia.org/wiki/2016_Dyn_cyberattack
http://www.zdnet.com/article/the-dyn-report-what-we-know-so-far-about-the-worlds-biggest-ddos-attack/

Un abrazo a todos y sigamos desarrollando!

Servidor VPN con Raspberry Pi

En septiembre del año pasado hice la compra de un Raspberry Pi en una conocida página de gadgets

chinos. Fue una teleserie de varios meses, ya que en marzo terminé mi pelea con DHL por el problema con el envío. Es una historia que no viene al caso contar, pero lo importante es que es algo que solo a  mi me puede ocurrir 🙂

Para el que no sepa, el Raspberry Pi es una placa que cabe en la palma de la mano que es un computador. Sus características son:

  • Memoria RAM: 512 MB
  • CPU: ARM de 700 MHz
  • Almacenamiento: No tiene, pero trae una ranura para una tarjeta SD
  • 2 puertos USB
  • Salida HDMI
  • Jack de audio de 3.5 mm
  • Salida de video RCA
  • Puerto de expansión
  • Interfaz de red.
El tamaño es realmente conveniente. Para que logres hacerte una idea de como es mira la imagen:

Fuente: bbc.co.uk
Como ves, el tamaño y las características hacen que las cosas que puedes llegar a hacer con un Rpi tiendan al infinito.
Cuando la compré pensé en levantar el blog, pero necesitaría de tiempo para administrarla y los recursos no iban soportar para tener el sitio en buenas condiciones y Movistar usa el puerto 80 para administrar los enrutadores de los clientes de forma remota.

Después de ponerla como un servidor ftp y de archivos y darme cuenta que Onedrive y Google Drive lo hacen mejor e intentar hacer un smart tv (o un media center) y usar las características de AirPlay de mis dispositivos Apple y que todo fracasara, decidí que una mejor idea sería tener un servidor VPN privado y que usara el enrutador de mi casa como gateway y así navegar por internet de una forma más segura cuando no esté en mi casa y navegar por sitios bloqueados cuando estoy en el instituto haciendo clases. 

Para hacer la configuración usé una release antigua de Raspbian y los motivos son:

  1. Me gustan las distribuciones basadas en Debian. Encuentro que son las mejores distribuciones y no hay nada mejor que APT para la administración de paquetes.
  2. Las nuevas releases de Raspbian no vienen  con el módulo de iptables dentro del núcleo, cosa que tendrías que hacer un cross-compiling, porque no creo que quieras compilar el núcleo en esa cosa.
Teniendo el sistema instalado (no es un punto que discutiremos ahora) realiza la instalación de lo necesario:
sudo apt-get install pptp

Luego habilita un modulo

sudo modprobe ppp-compress-18

Configura el servidor de VPN. Entramos al fichero /etc/pptpd.conf y configuramos los parámetros:

  • localip es la dirección ip local del servidor de VPN. La forma es: localip 192.168.1.189
  • remoteip es el juego de direcciones disponible. La forma es: remoteip 192.168.1.200-210
Ahora es tiempo de que configures algunos parámetros secundarios. Tienes que entrar al fichero /etc/ppp/pptpd-options

ms-dns DIRECCION.DE.TU.GATEWAY.LOCAL
noipx
mtu 1490
mru 1490


Es necesario contar con nombres de usuario y contraseña para que puedan autenticarse con tu sistema. Tienes que entrar a /etc/ppp/chap-secrets y agregar usuarios de la siguiente forma:

usuario[TAB]*[TAB]password[TAB]*
Agregas todos los que necesites. Guardas y cierras. Reinicia el servicio: 
sudo service pptpd restart 

Si es necesario puedes habilitar tu servidor VPN para que permita el acceso a toda la red. La idea es interactuar con la red, así que en el fichero /etc/systctl.conf  buscas la línea net.ipv4.ip_forward=0 y cambiarla por net.ipv4.ip_forward=1 Guardas, cierras y actualizas el sistema con:

sudo sysctl -p

El penúltimo paso es configurar las reglas del firewall y que éstas se apliquen cada vez que el sistema se levante. Agrega las siguientes líneas al archivo /etc/rc.local justo antes de la linea exit 0

sudo iptables -t nat -A POSTROUTING -s 192.168.1.200/24 -o eth0 -j SNAT --to LA IP DEL RASPBERRY

Para finalizar, en el router abre el puerto UDP 1723 e intenta ingresar de forma externa. Lo bueno es que todos los clientes VPN incluidos en todos los sistemas operativos servirán para tu servidor.

Como extra, le puedes comprar un case y quedará así:

Ah! Lo otro extra es que puedes usar un servicio como No-Ip o alguno otro y será de lujo.
Chau!