Respuesta corta
¿Es seguro utilizar el archivo /etc/hosts
como un sitio web que bloquea la dirección "nula"?
Argumentaría que la respuesta debería ser: No.
Si, por ninguna otra razón, las solicitudes no se "anulan". Todavía son peticiones activas. Y como indica el OP, ya 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 las pruebas de 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 del 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 utilizan ufw
como front-end para iptables
.
Si desea usar iptables
, aquí hay una secuencia de comandos 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 sus localhost
direcciones IP en este archivo.
Respuesta más larga
Si bien la reasignación de hosts de Internet a localhost
en el archivo /etc/hosts
es una técnica de atajo común para bloquear hosts de Internet no deseados, este método tiene algunos inconvenientes de seguridad graves.
solicitudes entrantes
Las solicitudes entrantes que no se iniciaron a propósito a través de una solicitud de usuario específica. El ejemplo más común es anuncios en páginas web. Sigamos los paquetes entrantes ...
Primero, inicio wireshark
. Luego coloco la compañía de anuncios de Internet más grande en mi archivo /etc/hosts
con esta línea:
127.0.0.1 google.com
Y luego deshabilita todos los bloqueadores de anuncios en mi navegador, navega a youtube
y reproduce cualquier video aleatorio.
Si filtro mis paquetes, en general, incluyendo el espacio de direcciones IP de Google:
ip.addr==172.217.0.0/16
Todavía estoy recibiendo paquetes de Google.
¿Qué significa esto?
Esto significa que existe la posibilidad de que un servidor malintencionado inserte software malintencionado 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 eliminar o rechazar los paquetes a través de las reglas del firewall, es una medida de seguridad deficiente. No bloquea los paquetes entrantes de posibles hosts maliciosos, ni proporciona comentarios efectivos para la resolución de problemas.
Solicitudes salientes
Las solicitudes salientes que se envían a localhost
en lugar de ser rechazadas o eliminadas por las reglas de firwall todavía están siendo procesadas por el kernel. Hay algunas acciones indeseables que ocurren cuando se usa /etc/hosts
en lugar del firewall:
-
Se está produciendo 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 llegar a ser confusos si el /etc/hosts
se rellena con ciertos dominios.
iptables puede manejar muchas reglas
Según algunos:
ServerFault: cuántas reglas puede admitir iptables
Un posible límite teórico en una máquina de 32 bits es 38 millones de reglas. Sin embargo, como se señaló en la publicación a la que se hace referencia, a medida que se expande la lista de reglas iptables
, también lo hace la memoria del kernel necesaria.