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 iptables
aquí 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.1
podrí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.