Table of Contents
Introducción
En este articulo me gustaría dar unas pinceladas sobre mejoras y acciones para realizar un bastionado ligero del entorno digital de nuestro hogar. Un método de mejora muy utilizado es identificar patrones de problemas, para poder tratarlos en puntos comunes.
Cuando hablamos de la seguridad digital de una casa, podemos pensar en varios:
- – Las conexiones salientes, que descargan datos de máquinas externas.
- El cableado de red, y en mayor instancia, las redes inalámbricas, que son interactuables desde fuera del entorno físico de la casa.
En los siguientes puntos describiré brevemente algunas alternativas en las que el software nos puede ayudar en estos puntos. Algunas de ellas quizá no son las típicas medidas de seguridad y control que sin duda ya tendremos implementadas.
DNS
Uno de los puntos de entrada de posibles elementos malintencionados en el entorno digital de nuestro hogar es navegar a páginas con enlaces peligrosos o directamente peligrosas. Aunque muchos navegadores y antivirus actuales realizan funciones de bloqueo de esto, suele ser en contexto por dispositivo ¿podríamos tener esta funcionalidad unificada y desactivable de manera sencilla?
Una opción que podemos plantear es Pihole.
Pihole es un sistema DNS self-hosted que permite bloquear, mediante listas, la conexión a dominios conocidos por albergar amenazas.
Aunque no entraré en los pormenores de la instalación, sí que comentaré, que además de poder instalarlo en un PC de bajo consumo, como una raspberry pi, también se puede tener como imagen docker.
El funcionamiento de Pihole es sencillo, una vez instalado, podemos entrar en la ip de la máquina/docker y tendremos un dashboard con resultados por dispositivo cliente, direcciones más bloqueadas, % de bloqueo de llamadas sobre el total de llamadas, por poner algunos ejemplos.
Para que todos los aparatos de la casa utilicen Pihole, bastaría con indicar a nuestro router que utilice su dirección ip como servidor DNS.
VPN
Al igual que sucede con los sistemas de infraestructura profesional, podemos beneficiarnos de tener bajo el manto de nuestra seguridad de red local, dispositivos que estén físicamente alejados. Un ejemplo de esto serían nuestros dispositivos móviles cuando nos encontramos fuera.
Una opción para tener esto es instalar una VPN en nuestra casa y conectarnos a ella desde fuera.
En este caso mi recomendación es instalar en la misma máquina donde hemos instalado Pihole, otro servicio llamado PiVPN. El proceso de instalación puede así reconocer que existe una instalación de PiHole y configurarla para que el filtro DNS funcione también con los dispositivos que se conecten mediante la VPN.
En cuanto al tipo de VPN, se permite instalar:
- OpenVPN: Es una VPN antigua, pero robusta. Es difícil de mantener por los desarrolladores debido a que el código es inmenso.
- Wireguard: Es una VPN moderna que intenta sustituir a OpenVPN. También está optimizada para gastar menos batería en dispositivos móviles.
Particularmente, he tenido OpenVPN en casa durante años sin problemas, hasta hace poco que he cambiado la instalación para poner Wireguard (que es la que recomiendo debido a que es más rápido crear una configuración para clientes, app móvil nativa, y gasta poca batería).
La creación de un cliente nuevo con wireguard, es relativamente sencilla, pudiendo escanear un código QR con la aplicación móvil oficial para que importe los datos automáticamente:
Redes inalámbricas
Como primer comentario, una de las cosas que se nos puede olvidar sobre las redes inalámbricas es que normalmente los puntos de acceso inalámbricos permiten configurar la potencia de las antenas. Si podemos conectar a nuestra Wifi desde la calle, cualquiera puede realizar ataques sobre ella. En este caso deberíamos bajar la potencia del punto de acceso.
Otra idea, algunos productos permiten realizar tareas de monitorización y detección de dispositivos extraños en la red, pero si no queremos depender de ellos, resulta bastante sencillo programar un proceso que realice escaneos periódicos.
Esto sería un boceto (¡no preparado para producción!) en kotlin para ejecutar nmap en el servidor local (suponiendo una máquina linux con nmap instalado) y extraer un listado de dispositivos:
fun deviceDetection() {
val process = ProcessBuilder("nmap", "-sn", "192.168.1.0/24").start()
process.inputStream.reader(Charsets.UTF_8).use {
val devices = it.readText()
.lines()
.filter { it.contains("192.") }
.stream()
.map { parseDevice(it) }.collect(Collectors.toList())
// Your code goes here
}
process.waitFor(10, TimeUnit.SECONDS)
}
fun parseDevice(line: String): Device {
val baseValue = line.replace("Nmap scan report for ", "")
.replace("(","")
.replace(")","")
.split(" ")
return Device(
baseValue[0],
baseValue[1]
)
}
data class Device(val name: String, val ip: String)
Un posible uso posterior de estos dispositivos, sería guardar los resultados en una BD y notificar de alguna manera (email, mensaje de telegram) si se detecta un dispositivo nuevo.
Otra posible evolución, más compleja, sería notificar con una pregunta, de manera que el programa avisará al sistema de red local (un router por software por ejemplo) si el usuario quisiera bloquear el nuevo dispositivo detectado.
Conclusión
Estas son algunas ideas para aumentar la seguridad y disminuir la superficie de ataque sobre la infraestructura de nuestro hogar. Una vez implementadas, la mejora es notable.
No obstante, existen algunas medidas más, si queremos entrar en terreno «paranoico», que tocaré en posteriores artículos 🙂
Author
-
Professional with more than 13 years of experience in software development focused on the back-end area using Java and Kotlin.
Ver todas las entradas