it-swarm.com.de

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

Ich bin ein Linux-Neuling und habe auf der Suche nach einer einfachen Website-Blocking-Technik auf Betriebssystemebene die Lösung gefunden, die Linux-Hosts-Datei wie folgt zu verwenden:

127.0.0.1 websiteiwanttoblock.com
127.0.0.1 anotherone.com
...

Das ist schön und einfach - perfekt für meine Zwecke, aber hier ist meine Frage: Wenn ich 127.0.0.1 Oft für Webentwicklungszwecke verwende, ist das gefährlich?

Es scheint, dass es zumindest das Webentwicklungsprojekt, an dem ich gerade arbeite, durcheinander bringen könnte? Wenn Chrome/Firefox beispielsweise eine Anfrage an websiteiwanttoblock.com/api/blah Stellt, würde dies dann eine Anfrage 127.0.0.1/api/blah Stellen und möglicherweise die API meines Projekts durcheinander bringen?

Wenn dies in dieser Hinsicht gefährlich ist, gibt es eine sicherere "Null" -IP-Adresse, an die ich blockierte Websites umleiten könnte? Ich weiß, dass es wahrscheinlich keine gute Praxis ist, die Hosts-Datei so zu verwenden, aber ich mag die Einfachheit, eine Textdatei zu bearbeiten, anstatt ein Paket oder was auch immer herunterzuladen.

Bearbeiten: Oh, und ich benutze oft Port 3000 für Entwickler, aber nehmen wir an, dass ich manchmal 80 oder eine andere verfügbare Portnummer verwende.

24
user134696

Kurze Antwort

Ist es sicher das /etc/hosts Datei als Website blockiert "Null" -Adresse?

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

Wenn aus keinem anderen Grund als den Anforderungen nicht tatsächlich "null". Sie sind noch aktive Anfragen. Und wie das OP angibt, kann diese Art der Verknüpfung zum Umleiten von Anforderungen an localhost das Testen von Netzwerkcode in einer Entwicklungsumgebung beeinträchtigen, da die Anforderungen legitime Internet-Hosts betreffen.

Eine bessere Methode zum Blockieren des Datenverkehrs zu und von bestimmten Internet-Hosts ist möglicherweise die Verwendung von iptables, der Schnittstelle zur Firewall des Linux-Kernels. iptables ist die Standard-Netzwerkregel-Tabelle für die meisten GNU/Linux-Systeme. Einige Distributionen verwenden ufw als Frontend für iptables.

Wenn Sie iptables verwenden möchten, finden Sie hier ein einfaches Skript, das DROP alle eingehenden und ausgehenden Pakete für eine Liste von IP-Adressen oder Hostnamen mit einer Adresse oder einem Hostnamen pro Zeile in einer Nur-Text-Datei enthält namens ~/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

Stichprobe ~/blocking.txt

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

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

Längere Antwort

Beim Neuzuweisen von Internet-Hosts zu localhost im /etc/hosts file ist eine gebräuchliche Abkürzungstechnik für block unerwünschte Internet-Hosts. Diese Methode weist einige schwerwiegende Sicherheitsnachteile auf.

Eingehende Anfragen

Eingehende Anfragen, die nicht absichtlich über eine bestimmte Benutzeranfrage initiiert wurden. Das häufigste Beispiel sind Anzeigen auf Webseiten. Folgen wir den eingehenden Paketen ...

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 spielen Sie 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 ein bösartiger Server möglicherweise Malware einfügt, die möglicherweise meine Computerplattform über Pakete angreift, 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 werden weder blockiert eingehende Pakete von möglichen böswilligen Hosts angezeigt, noch wird ein effektives Feedback für Fehlerbehebungszwecke bereitgestellt.

Ausgehende Anfragen

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

  • Zusätzliche Verarbeitung findet statt, wenn das ausgehende Paket localhost erreicht. Wenn beispielsweise ein Webserver auf dem Host ausgeführt wird, kann das an localhost gesendete Paket vom Webserver verarbeitet werden.

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

iptables kann mit vielen Regeln umgehen

Nach einigen:

ServerFault: Wie viele Regeln können iptables unterstützen

Eine mögliche theoretische Grenze für eine 32-Bit-Maschine sind 38 Millionen Regeln. Wie in dem Beitrag erwähnt, auf den verwiesen wird, wird mit der Erweiterung der Regelliste iptables auch der erforderliche Kernelspeicher erweitert.

24
RubberStamp

[...] Auf der Suche nach einer einfachen Website-Blocking-Technik auf Betriebssystemebene stieß ich auf die Lösung, die Linux-Hosts-Datei [...] zu verwenden.

Zur Verdeutlichung ordnet /etc/hosts Nur Hostnamen IP-Adressen zu. Ein Eintrag mit 127.0.0.1 Blockiert nicht Ihren Zugriff auf den Server, sondern lässt Ihren Computer diesen bestimmten Namen nur lokal in 127.0.0.1 Auflösen. Sie und der Server können weiterhin ohne Einschränkungen Pakete austauschen.

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

Nein, die Auflösung in 127.0.0.1 Bringt Sie nicht in zusätzliche Gefahr. Dies liegt daran, dass der Name einer Website ohnehin in eine beliebige IP-Adresse aufgelöst werden kann, einschließlich 127.0.0.1 (Es sei denn, der DNS-Server blockiert dies). Wenn evilpage.example In 127.0.0.1 Auflösen wollte, konnten sie einfach einen entsprechenden DNS A -Eintrag angeben und mussten sich nicht auf Ihren /etc/hosts Verlassen. (Siehe auch: Ist es sicher, einen DNS-Eintrag zu haben, der auf 127.0.0.1 zeigt? )

Beachten Sie, dass Sie durch Ausführen von 127.0.0.1 Anfällig für DNS-Rebinding-Angriffe werden können.

11
Arminius

Sofern Ihr Webserver nicht auf Port 80 oder 443 Ihres lokalen Computers ausgeführt wird (127.0.0.1), Sollte dies keine Auswirkungen auf Ihr Webprojekt haben. Wenn es aber so ist, dann könnte es ein Ärger sein. Wenn Sie eine Anfrage an http://example.com/api/ Senden, wird am Ende eine Anfrage an http://127.0.0.1/api/ Gesendet. Wenn Sie eine Ressource namens /api/ Haben, wird diese die Anfrage empfangen und somit Ihre App stören. Der größte Punkt, den ich hervorheben möchte, dass @Arminus erwähnt hat, war jedoch, dass die Datei /etc/hosts/ Zum Zuordnen von IP-Adressen zu Hostnamen dient. Wenn Sie einen bestimmten Host blockieren möchten, würde ich empfehlen, 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/

3
ssharma

Wenn Sie eine IP-Adresse verwenden möchten, die nirgendwo hingehen soll , können Sie die offiziellen Dokumentations-IP-Adressen verwenden:

  • 192.0.2.0/24
  • 198.51.100.0/24
  • 203.0.113.0/24

Es ist immer noch möglich, dass sie irgendwohin gehen, aber sie sollten nicht routbaren Adressräumen hinzugefügt werden. Wie andere angemerkt haben, leitet potenziell Ihren Datenverkehr nur an diese IP-Adressen weiter - in den anderen Antworten werden bessere Lösungen erwähnt, aber diese haben zumindest gewonnen Gehen Sie nicht zu Ihrem lokalen Computer.

2
Wayne Werner

Der gesamte Adressbereich von 127.0.0.0/8 ist localhost, sodass Sie ausgehenden Datenverkehr für eine Adresse in diesem Bereich blockieren können, z. B. 127.1.1.1.

Verwenden Sie dann die Hosts-Datei, um unerwünschten Datenverkehr an diese Adresse umzuleiten, damit unerwünschte Tracking-Anforderungen Ihren auf localhost ausgeführten Webserver nicht beeinträchtigen.

0
Calmarius