GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist es unsicher, die Datei /etc/hosts auf folgende Weise als Website-Blocker zu verwenden?

Kurze Antwort

Ist es sicher um den /etc/hosts zu verwenden Datei als Website, die "Null"-Adresse blockiert?

Ich würde argumentieren, dass die Antwort lauten sollte:Nein.

Wenn aus keinem anderen Grund als die Anforderungen tatsächlich nicht "genullt" werden. Sie sind immer noch aktive Anfragen. Und wie das OP angibt, da die Anfragen für legitime Internet-Hosts sind, diese Art von Abkürzungsmethode zum Umleiten von Anfragen an localhost kann das Testen von Netzwerkcode in einer Entwicklungsumgebung stören.

Eine vielleicht bessere Methode zum Blockieren des Datenverkehrs zu und von bestimmten Internet-Hosts ist die Verwendung von iptables Dies ist die Schnittstelle zur Firewall des Linux-Kernels. iptables ist die Standard-Netzwerkregeltabelle für die meisten GNU/Linux-Systeme. Einige Distributionen verwenden ufw als Frontend für iptables .

Wenn Sie iptables verwenden möchten , hier ist ein einfaches Skript, das DROP wird alle eingehenden und ausgehenden Pakete für eine Liste von IP-Adressen oder Hostnamen mit einer Adresse oder einem Hostnamen pro Zeile, die in einer einfachen Textdatei namens ~/blocking.txt enthalten sind

## 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

Beispiel ~/blocking.txt

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

Platzieren Sie nicht Ihren localhost IP-Adressen in dieser Datei.

Längere Antwort

Beim Neuzuweisen von Internet-Hosts zu localhost im /etc/hosts Datei ist eine gängige Abkürzungstechnik zum Blockieren unerwünschte Internet-Hosts, hat diese Methode einige ernsthafte Sicherheitsnachteile.

Eingehende Anfragen

Eingehende Anfragen, die nicht gezielt über eine konkrete Nutzeranfrage initiiert wurden. Das häufigste Beispiel sind Anzeigen auf Webseiten. Verfolgen wir die eingehenden Pakete...

Zuerst starte ich wireshark . Dann platziere ich die größte Internet-Werbefirma in meinem /etc/hosts Datei mit dieser Zeile:

127.0.0.1   google.com

Deaktivieren Sie dann alle Werbeblocker in meinem Browser, navigieren Sie zu youtube und spiele ein beliebiges Video ab.

Wenn ich meine Pakete filtere, einschließlich des IP-Adressraums von Google:

ip.addr==172.217.0.0/16

Ich erhalte immer noch Pakete von Google.

Was bedeutet das?

Dies bedeutet, dass die Möglichkeit besteht, dass ein böswilliger Server Malware einfügt, die meine Computerplattform über Pakete angreifen kann, die noch ankommen und an localhost gesendet werden. Die Verwendung von /etc/hosts Anstatt die Pakete über die Firewall-Regeln zu verwerfen oder abzulehnen, ist dies eine schlechte Sicherheitsmaßnahme. Es blockiert nicht eingehende Pakete von möglicherweise böswilligen Hosts, noch bietet es effektives Feedback für die Fehlerbehebung.

Ausgehende Anfragen

Ausgehende Anfragen, die an localhost gesendet werden Anstatt von den Firewall-Regeln zurückgewiesen oder gelöscht zu werden, werden sie weiterhin vom Kernel verarbeitet. Es gibt einige unerwünschte Aktionen, die auftreten, wenn /etc/hosts anstelle der Firewall verwendet wird:

  • Zusätzliche Verarbeitung findet statt, wenn das ausgehende Paket auf localhost trifft. Wenn beispielsweise ein Webserver auf dem Host läuft, kann das an localhost gesendete Paket vom Webserver verarbeitet werden.

  • Das Feedback ausgehender Anfragen kann verwirrend werden, wenn die /etc/hosts ist mit bestimmten Domänen gefüllt.

iptables kann mit vielen Regeln umgehen

Laut einigen:

ServerFault:Wie viele Regeln kann iptables unterstützen

Eine mögliche theoretische Grenze auf einem 32-Bit-Rechner sind 38 Millionen Regeln. Allerdings, wie in dem referenzierten Beitrag erwähnt, als iptables Die Regelliste erweitert sich, ebenso der benötigte Kernel-Speicher.


[...] bei der Suche nach einer einfachen Technik zum Blockieren von Websites auf Betriebssystemebene bin ich auf die Lösung gestoßen, die Linux-Hosts-Datei [...]

zu verwenden

Zur Verdeutlichung /etc/hosts ordnet nur Hostnamen IP-Adressen zu. Ein Eintrag mit 127.0.0.1 blockiert nicht Ihren Zugriff auf den Server, sondern bewirkt lediglich, dass Ihr Computer diesen bestimmten Namen lokal in 127.0.0.1 auflöst . Sie und der Server könnten weiterhin ohne Einschränkungen Pakete austauschen.

Wenn ich oft 127.0.0.1 verwende Ist das für die Webentwicklung gefährlich? Es scheint, dass es zumindest das Webentwicklungsprojekt, an dem ich gerade arbeite, durcheinander bringen könnte?

Nein, Auflösung auf 127.0.0.1 bringt Sie nicht in zusätzliche Gefahr. Das liegt daran, dass der Name einer Website sowieso in jede IP aufgelöst werden kann, einschließlich 127.0.0.1 (es sei denn, der DNS-Server blockiert das). Wenn also evilpage.example wollte zu 127.0.0.1 auflösen , könnten sie einfach einen entsprechenden DNS A angeben Aufzeichnung und müssten sich nicht auf Ihre /etc/hosts verlassen . (Siehe auch:Ist es sicher, einen DNS-Eintrag zu haben, der auf 127.0.0.1 zeigt?)

Beachten Sie, dass etwas auf 127.0.0.1 ausgeführt wird kann Sie anfällig für DNS-Rebinding-Angriffe machen.


Es sei denn, Ihr Webserver läuft auf Port 80 oder 443 auf Ihrem lokalen Rechner (127.0.0.1 ), dann sollte das Ihr Webprojekt nicht beeinträchtigen. Wenn doch, dann könnte es ein Ärgernis sein. Wenn Sie eine Anfrage an http://example.com/api/ gesendet haben , dann würde es am Ende eine Anfrage an http://127.0.0.1/api/ senden . Wenn Sie eine Ressource namens /api/ haben , dann würde es am Ende die Anfrage erhalten und somit Ihre App stören. Aber der größte Punkt, den ich betonen möchte, den @Arminus erwähnt hat, war, dass der /etc/hosts/ Datei dient zum Zuordnen von IP-Adressen zu Hostnamen. Wenn Sie einen bestimmten Host blockieren möchten, würde ich vorschlagen, eine Firewall wie UFW zu installieren oder die Standard-Linux-Firewall, iptables, zu verwenden. Hier sind einige Links, die Ihnen den Einstieg erleichtern:

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

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


Linux
  1. Eine Einführung in die Linux-Datei /etc/fstab

  2. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  3. Eine benutzerspezifische Hosts-Datei erstellen, um /etc/hosts zu ergänzen?

  4. Verstehen des Verzeichnisses /etc/sysconfig

  5. /etc/hosts-Datei unter Linux verstehen

Verstehen der /etc/passwd-Datei

Verstehen der /etc/shadow-Datei

Der richtige Weg zum Bearbeiten von /etc/passwd- und /etc/group-Dateien unter Linux

Verstehen der /etc/fstab-Datei unter Linux

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

So richten Sie /etc/issues ein, um die IP-Adresse für eth0 anzuzeigen