Saltar al contenido

¿Es peligroso usar el archivo /etc/hosts como bloqueador de sitios web de la siguiente manera?

Mateo, miembro de nuestro equipo de trabajo, nos ha hecho el favor de redactar este post porque conoce muy bien este tema.

Solución:

Respuesta corta

Lo es a salvo usar el /etc/hosts archivo como bloqueo de un sitio web “null” ¿dirección?

Yo diría que la respuesta debería ser: No.

Si por la única razón de que las solicitudes no se “anulan”. Todavía son solicitudes activas. Y como indica el OP, dado que las solicitudes son para hosts de Internet legítimos, este tipo de método abreviado para redirigir las solicitudes a localhost puede interferir con la prueba del código de red en un entorno de desarrollo.

Quizás un mejor método para bloquear el tráfico hacia y desde ciertos hosts de Internet es utilizar iptables que es la interfaz para el firewall del kernel de Linux. iptables es la tabla de reglas de red predeterminada para la mayoría de los sistemas GNU/Linux. Algunas distribuciones usan ufw como front-end para iptables.

Si quieres usar iptablesaquí hay un script simple que DROP todos los paquetes entrantes y salientes para una lista de direcciones IP o nombres de host con una dirección o nombre de host por línea contenida en un archivo de texto sin formato llamado ~/blocking.txt

## Block every IP address in ~/blocking.txt
## DROP incoming packets to avoid information leak about your hosts firewall
## (HT to Conor Mancone) REJECT outgoing packets to avoid browser wait
for i in $(cat ~/blocking.txt); do
    echo "Blocking all traffic to and from $i"    
    /sbin/iptables -I INPUT -s $i -j DROP
    /sbin/iptables -I OUTPUT -d $i -j REJECT
done

Muestra ~/blocking.txt

websiteiwanttoblock.com
anotherone.com
ip.add.of.net/mask

No coloque su localhost Direcciones IP en este archivo.

Respuesta más larga

Al reasignar hosts de Internet a localhost en el /etc/hosts El archivo es una técnica de atajo común para cuadra hosts de Internet no deseados, este método tiene serios inconvenientes de seguridad.

Solicitudes entrantes

Solicitudes entrantes que no se iniciaron deliberadamente a través de una solicitud de usuario específica. El ejemplo más común son los anuncios en las páginas web. Sigamos los paquetes entrantes…

Primero, me pongo en marcha wireshark. Entonces coloco la mayor empresa de publicidad en Internet en mi /etc/hosts archivo con esta línea:

127.0.0.1   google.com

Y luego deshabilite todos los bloqueadores de anuncios en mi navegador, vaya a youtube y reproducir cualquier video al azar.

Si filtro mis paquetes, incluyendo ampliamente el espacio de direcciones IP de Google:

ip.addr==172.217.0.0/16

Sigo recibiendo paquetes de Google.

¿Qué significa esto?

Significa que existe la posibilidad de que un servidor malicioso inserte malware que pueda atacar mi plataforma informática a través de paquetes que aún llegan y se envían a localhost. El uso de /etc/hosts en lugar de descartar o rechazar los paquetes a través de las reglas del firewall, es una medida de seguridad deficiente. No es asi cuadra paquetes entrantes de posibles hosts maliciosos, ni proporciona información efectiva para solucionar problemas.

Solicitudes salientes

Solicitudes salientes que se envían a localhost en lugar de ser rechazadas o eliminadas por las reglas del firewall, el kernel aún las procesa. Hay algunas acciones indeseables que ocurren cuando /etc/hosts se utiliza en lugar del cortafuegos:

  • Se produce un procesamiento adicional cuando el paquete saliente llega a localhost. Por ejemplo, si un servidor web se está ejecutando en el host, el servidor web puede procesar el paquete enviado a localhost.

  • Los comentarios de las solicitudes salientes pueden volverse confusos si el /etc/hosts se llena con ciertos dominios.

iptables puede manejar muchas reglas

Segun algunos:

ServerFault: ¿Cuántas reglas puede admitir iptables?

Un posible límite teórico en una máquina de 32 bits es de 38 millones de reglas. Sin embargo, como se señaló en la publicación mencionada, como el iptables la lista de reglas se expande, al igual que la memoria del núcleo necesaria.

[…] mientras buscaba una técnica simple de bloqueo de sitios web a nivel del sistema operativo, encontré la solución de usar el archivo de hosts de Linux […]

Para aclarar, /etc/hosts simplemente asigna nombres de host a direcciones IP. una entrada con 127.0.0.1 no bloquea su acceso al servidor, simplemente hace que su computadora resuelva localmente ese nombre en particular para 127.0.0.1. Usted y el servidor podrían seguir intercambiando paquetes sin restricciones.

Si uso a menudo 127.0.0.1 para propósitos de desarrollo web, ¿es esto peligroso? Parece que, al menos, podría estropear el proyecto de desarrollo web en el que estoy trabajando actualmente.

No, resolviendo 127.0.0.1 no te pone en peligro adicional. Eso es porque un sitio web puede tener su nombre resuelto a cualquier IP de todos modos, incluyendo 127.0.0.1 (a menos que el servidor DNS lo bloquee). Así que si evilpage.example quería resolver a 127.0.0.1podrían simplemente especificar un DNS respectivo A registro y no tendría que depender de su /etc/hosts. (Ver también: ¿Es seguro tener un registro DNS apuntando a 127.0.0.1?)

Tenga en cuenta que ejecutar algo en 127.0.0.1 puede hacerlo vulnerable a los ataques de reenlace de DNS.

A menos que su servidor web se esté ejecutando en el puerto 80 o 443 en su máquina local (127.0.0.1), entonces eso no debería afectar su proyecto web. Si es así, entonces podría ser una molestia. Si envió una solicitud a http://example.com/api/entonces terminaría enviando una solicitud a http://127.0.0.1/api/. Si tiene un recurso llamado /api/, entonces terminaría recibiendo la solicitud y, por lo tanto, interfiriendo con su aplicación. Pero el punto más importante que me gustaría enfatizar que @Arminus mencionó fue que el /etc/hosts/ El archivo es para mapear direcciones IP a nombres de host. Si desea bloquear un host en particular, le sugiero que instale un firewall como UFW o use el firewall predeterminado de Linux, iptables. Aquí hay algunos enlaces para ayudarlo a comenzar:

UFW: https://www.linux.com/learn/introduction-uncomplicated-firewall-ufw

iptables: https://www.howtogeek.com/177621/the-beginners-guide-to-iptables-the-linux-firewall/

Si te gustó nuestro trabajo, tienes la opción de dejar una reseña acerca de qué te ha impresionado de esta sección.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *