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/