Cuando hayamos terminado de instalar y configurar Ubuntu de manera segura, como en el post anterior, nos preocuparemos por defendernos de ataques a nuestro equipo a través de nuestra red.
Minimizando la información que compartimos de nuestro hardware; previniendo el sniffeo de paquetes; y configurando un buen firewall; entre otras cosas...
Para ser más específicos, en ésta parte fortaleceremos la instalación: 'spoofearemos' nuestra MAC address para engañar atacantes pasivos; deshabilitaremos servicios de red que no utilizaremos como CUPS y Avahi; crearemos reglas específicas en el firewall para bloquear la filtración de datos a través de ciertos puertos, y trataremos de evitar que nos hackeen 'sniffeando' nuestras contraseñas y cookies con una VPN.
Si no vieron el post anterior, deberían hacerlo; y si igual no entienden nada, a futuro quizá haga un post más basíco pero ahora lo "primordial" me parece ésto. (Serán 4 partes).
Paso 1: 'Spoofear' nuestra MAC address
No evitará que alguien muy motivado sepa que sistema estamos usando, pero si lo dejará confundido y prevendrá que también descubra información de nuestro hardware.
Por ejemplo: Supongamos que el atacante en nuestra red cree que estamos utilizando una MacBook, lo más probable es que utilice técnicas espcíficas para el sistema macOS; los cuales no funcionarán porque en realidad no estamos utilizando un dispositivo Apple.
Por ejemplo: Supongamos que el atacante en nuestra red cree que estamos utilizando una MacBook, lo más probable es que utilice técnicas espcíficas para el sistema macOS; los cuales no funcionarán porque en realidad no estamos utilizando un dispositivo Apple.
Ésta medida (entre las otras) puede confundir fácilmente a un kaker promedio o al menos dificultarle la tarea.
Podemos hacerlo desde las opciones de nuestro adaptador de red, en la pestaña de identidad, pongamos la MAC addres que nos parezca en el área donde señala clonada.
Podemos hacerlo desde las opciones de nuestro adaptador de red, en la pestaña de identidad, pongamos la MAC addres que nos parezca en el área donde señala clonada.
Paso 2: Defendernos de las escuchas a nuestros servicios
Un proceso (o servicio) de fondo-en segundo plano-o en 'background' en un estado de 'escucha' significa que otros servicios y aplicaciones pueden 'interactuar' con él a través del dispositivo en red.
Éstos servicios en escucha siempre están esperando datos que activen alguna respuesta dinámica.
Imaginemos un servicio cualquiera con una dirección local de 0.0.0.0 en estado de escucha: fácilmente sería accesible para cualquiera en nuestra red local y quizá para alguien más a través de internet.
Una instalación fresca de Ubuntu tendrá pocos servicios instalados y aún menos corriendo en segundo plano -no hay que asustarse por "puertos en escucha" por defecto. Por eso debemos tener cuidado con las aplicaciones que instalemos después, ya que pueden abrir puertos sin ponernos al tanto de éso.
Para estar al tanto de qué procesos están corriendo y en qué estado utilizaremos netstat, una herramienta que nos muestra las conexiones de nuestra red, puertos abiertos, y servicios en ejecución.
Si seguimos el post anterior, no tendremos instalado el paquete de aplicaciones net-tools (el cual incluye netstat) por lo que lo instalaremos manualmente desde la terminal con el comando:
sudo apt-get install net-tools
Y ahora podemos utilizar el comando sudo netstat -ntpul para ver los servicios con un estado de escucha(LISTEN):
Systemd-resolve es utilizado por el sistema para resolver los nombres de dominio y lo más probable es que no necesitemos modificarlo ni eliminarlo.
Deshabilitar o eliminar CUPS
'cupsd' es el demonio planificador de CUPS, un servicio usado por las aplicaciones para interactuar con impresoras.Hay muchos scripts para Nmap diseñados para extraer información del servicio, por lo que si no vamos a utilizar impresoras (o al menos no de manera frecuente) lo más conveniente sería deshabilitarlo o eliminarlo.
En cambio si nunca vamos a utilizar una impresora, podemos eliminarlo completamente utilizando sudo apt-get autoremove cups-daemon:
Deshabilitar o eliminar Avahi
El demonio de Avahi implementa la arquitectura Zeroconf de Apple (también conocida como Rendezvous o Bonjour). Registra las direcciones de IP locales y servicios estáticos usando los mDNS/DNS-SD.
En 2011 se le descubrió una vulnerabilidad de denegación de servicio, que si bien es vieja y poco severa da idea de como un atacante pudiera manipular un servicio en ejecución aprovechando un vulnerable protocolo de red.
Si no planeamos utilizar dispositivos o productos de Apple, el demonio de Avahi puede ser deshabilitado con
Si no planeamos utilizar dispositivos o productos de Apple, el demonio de Avahi puede ser deshabilitado con
sudo systemctl disable avahi-daemon
O podemos eliminarlo completamente con sudo apt-get purge avahi-daemon
Paso 3: Defender nuestros puertos
Un hacker promedio podría filtrar datos a través de un puerto 1337 o conseguir una terminal a través del puerto 4444 (listado en Wikipedia como puerto predeterminado de MetaSploit, literalmente). Un firewall que solo permita una transmisión saliente en puertos específicos detendrá a la mayoría.
Para administrar éstas reglas utilizaremos UFW.
1) Denegar todas las conexiones entrantes y salientes
Usamos el comando sudo ufw enable para habilitar UFW
Rechazamos todas las conexiones entrantes con sudo ufw default deny incoming
Rechazamos todas las conexiones de envío con sudo ufw default deny forward
Y ahora rechazmos todas las conexiones salientes con sudo ufw default deny outgoing
A ésta altura no deberíamos tener acceso a internet a través de Firefox u otras aplicaciones.
2) Identificar nuestra interfaz de red
Para permitir las conexiones salientes, primero debemos saber cuál es nuestra interfaz con el comando ifconfig -a
En el ejemplo Ubuntu se está ejecutando en una máquina virtual, por lo que el nombre de la interfaz es enp0s8. En circunstancias normales lo más probable es que nuestra interfaz se llame eth0, wlan0, wlp3s0, o similares.
3) Crear excepciones al Firewall y configurar un gestor de DNS seguro.
Permitimos el tráfico DNS, HTTP y HTTPS en nuestra interfaz usando los siguientes comandos:
sudo ufw allow out on <interface> to 1.1.1.1 proto udp port 53 comment 'allow DNS on <interface>'
sudo ufw allow out on <interface> to any proto tcp port 80 comment 'allow HTTP on <interface>'
sudo ufw allow out on <interface> to any proto tcp port 443 comment 'allow HTTPS on <interface>'
sudo ufw allow out on <interface> to any proto tcp port 80 comment 'allow HTTP on <interface>'
sudo ufw allow out on <interface> to any proto tcp port 443 comment 'allow HTTPS on <interface>'
(Obviamente debemos reemplazar <interface> con el nombre de nuestra interfaz)
La dirección 1.1.1.1 en la línea de comando de DNS corresponde a la del DNS de CloudFlare. Muchos ignoran que aún visitando un sitio con una conexión segura (candadito verde en la barra de direcciones del navegador) nuestro ISP aún puede ver cada uno de los nombres de dominio que visitamos a través de una solicitud DNS.Usar el DNS de CloudFlare evitará que se entrometan demasiado en nuestro tráfico.
4) Actualizar la configuración de DNS en el administrador de red
Editamos el campo de DNS en nuestra conexión cambiándolo a 1.1.1.1 y reiniciamos la interfaz para que haga efecto.
Podemos ver nuestras reglas con el comando sudo ufw status numbered
Ahora nuestro sistema podrá realizar solicitudes HTTP/HTTPS en los puertos 80 y 443 de nuestra interfaz.
5) Monitorear nuestro Firewall
Si debiéramos 'debugear' alguna conexión entrante o saliente por cualquier tipo de inconveniente, podríamos usar el comando tail con el argumento -f para seguir el log de UFW en tiempo real. El comando a utilizar sería
tail -f /var/log/ufw.log
Paso 4: Defendernos contra el 'sniffeo' de paquetes y el secuestro de cookies
Los ataques basados en una manipulación de paquetes dentro de una red 'hostil' puede ser evitada utilizando una red privada virtual (VPN) que nos permitiría:
Evitar que hackers en nuestra red manipularan-espiaran nuestra actividad.
Evitar que proveedores de internet (ISP) espiaran nuestra actividad y potencialmente vendieran nuestros datos a terceros.
Evitar la censura contra ciertos sitios o servicios por parte de diferentes ISP o firewalls de su red.
La mayoría de los servicios 'premium' de VPN cuestan unos 5 dólares mensuales, personalmente recomiendo ProtonVPN.
Proximo post: Hardening y 'aislamiento' (SandBoxing) de aplicaciones