Iptables und den Datenverkehr von armseligen und träge denkenden Andersdenkenden filtern.

Die Relevanz der Blockierung des Zugriffs auf verbotene Ressourcen betrifft jeden Administrator, dem möglicherweise offiziell das Nichteinhalten von Gesetzen oder Anordnungen der zuständigen Behörden vorgeworfen werden kann.

Iptables und den Datenverkehr von armseligen und träge denkenden Andersdenkenden filtern.

Warum das Rad neu erfinden, wenn es spezialisierte Programme und Distributionen für unser Anliegen gibt, wie zum Beispiel: Zeroshell, pfSense, ClearOS.

Eine weitere Frage kam von der Geschäftsführung: Hat das verwendete Produkt ein Sicherheitszertifikat unseres Staates?

Wir haben Erfahrungen mit den genannten Distributionen gesammelt:

  • Zeroshell – die Entwickler haben uns sogar eine Lizenz für 2 Jahre geschenkt, doch stellte sich heraus, dass die interessierende Distribution für uns eine kritische Funktion nicht logisch erfüllte;
  • pfSense – Respekt und Anerkennung, aber gleichzeitig auch langweilig, die Eingewöhnung an die Kommandozeile der FreeBSD-Firewall und nicht ausreichend benutzerfreundlich für uns (ich denke, es ist eine Gewohnheitssache, aber es stellte sich als nicht der 'richtige Weg' heraus);
  • ClearOS – auf unserer Hardware stellte sich als sehr langsam heraus, wir konnten nicht zum ernsthaften Testen gelangen, also warum so schwere Benutzeroberflächen?
  • Ideco SELECTA. Über das Produkt "Aideko" könnte man viel sprechen, es ist ein interessantes Produkt, aber aufgrund politischer Überlegungen ist es nicht für uns. Außerdem möchte ich sie bezüglich der Lizenz für dasselbe Linux, Roundcube usw. zur Rede stellen. Woher nehmen sie an, dass sie einen fertiggestellten Produkt aus entwickelten und modifizierten Modulen der Internet-Community, die unter GPL und ähnlichem verbreitet werden, verkaufen können, nur weil sie die Benutzeroberfläche angepasst und die Superuser-Rechte entzogen haben? Python Ich verstehe, dass jetzt viele negative Reaktionen auf mich zukommen werden, mit Forderungen, meine subjektiven Empfindungen detailliert zu begründen, aber ich möchte sagen, dass dieser Netzwerkknoten auch ein Lastenausgleich für 4 externe Kanäle ins Internet ist, wobei jeder Kanal seine eigenen Besonderheiten hat. Ein weiterer Grund war die Notwendigkeit, dass einer der mehreren Netzwerkinterfaces in unterschiedlichen Addressräumen arbeiten kann, und ich

bin bereit anzuerkennen, dass ich VLANs überall, wo es nötig und nicht nötig ist, nicht bereit bin . Im Einsatz sind Geräte wie der TP-Link TL-R480T+, die sich nicht perfekt verhalten, aber ihre eigenen Nuancen haben. Es gelang, diesen Teil unter Linux dank der offiziellen Ubuntu-Website vernünftig einzurichten.. Die verwendeten Geräte, wie der TP-Link TL-R480T+, verhalten sich nicht perfekt und bringen einige Eigenheiten mit sich. Es gelang, diesen Teil unter Linux sinnvoll zu konfigurieren, dank der offiziellen Website von Ubuntu. IP-Lastenausgleich: Wir vereinen mehrere Internetkanäle zu einem einzigen. Zudem kann jeder dieser Kanäle jederzeit „ausfallen“ oder wieder aktiv werden. Wenn Sie am aktuellen Skript interessiert sind (was einen eigenen Beitrag wert ist) – schreiben Sie in die Kommentare.

Die vorgeschlagene Lösung beansprucht nicht die Einzigartigkeit, aber ich möchte die Frage aufwerfen: „Warum sollte man sich im Unternehmen an fragwürdige Drittprodukte mit hohen Hardwareanforderungen anpassen, wenn man eine alternative Lösung in Betracht ziehen kann?“

Wenn es in Russland eine Liste von Roskomnadsor gibt, gibt es in der Ukraine eine Anhörung zur Entscheidung des Nationalen Sicherheitsrates (z. B. hier ist), dann schlafen die Verantwortlichen vor Ort auch nicht. Beispielsweise wurde uns eine Liste verbotener Websites übergeben, die nach Meinung der Führungskraft die Produktivität am Arbeitsplatz beeinträchtigen.

Im Gespräch mit Kollegen in anderen Unternehmen, in denen standardmäßig alle Websites verboten sind und nur mit Genehmigung des Vorgesetzten Zugang zu bestimmten Seiten gewährt werden kann, kam man respektvoll lächelnd, nachdenklich und „über das Problem nachgrübelnd“ zu dem Verständnis, dass das Leben doch schön ist, und wir begannen unsere Suche.

Wir haben nicht nur die Möglichkeit, analytisch zu betrachten, was in den „Hausfrauenbüchern“ über die Traffic-Filterung geschrieben wird, sondern auch zu sehen, was auf den Kanälen verschiedener Anbieter passiert. Dabei haben wir folgende Rezepte festgestellt (alle Screenshots sind etwas zugeschnitten, bitte um Verständnis):

Anbieter 1
— macht sich keine Gedanken und zwingt eigene DNS-Server sowie einen transparenten Proxy-Server auf. Naja?.. dafür haben wir Zugang dorthin, wo es nötig ist (wenn wir das brauchen :))

Anbieter 2
— glaubt, dass sein übergeordneter Anbieter darüber nachdenken sollte. Der Support des übergeordneten Anbieters hat sogar zugegeben, warum ich die von mir benötigte, nicht gesperrte Website nicht öffnen kann. Ich denke, das Bild wird Ihnen ein Lächeln ins Gesicht zaubern 🙂

Iptables und den Datenverkehr von armseligen und träge denkenden Andersdenkenden filtern.

Wie sich herausstellte, übertragen sie die Namen der gesperrten Websites in IP-Adressen und blockieren genau diese IPs (es kümmert sie nicht, dass auf dieser IP-Adresse auch 20 Websites gehostet sein können).

Anbieter 3
— lässt den Traffic dorthin durch, aber nicht zurück auf der Route.

Anbieter 4
— verbietet jegliche Manipulationen mit Paketen in angegebener Richtung.

Was ist mit VPN (insbesondere im Opera-Browser) und Browser-Plugins zu tun? Zu Beginn, als wir mit Knoten von Mikrotik experimentiert haben, hatten wir sogar ein ressourcenintensives Rezept für L7, von dem wir später Abstand nehmen mussten (es könnten noch mehr verbotene Namen vorhanden sein, und es ist bedauerlich, wenn die CPU-Auslastung des PPC460GT bei 100 % ansteigt, zusätzlich zu den eigenen Verpflichtungen bezüglich der Routen in Dutzenden von Ausdrücken).

Iptables und den Datenverkehr von armseligen und träge denkenden Andersdenkenden filtern..

Was klar wurde:
DNS auf 127.0.0.1 ist absolut keine Alleskönnerlösung. Moderne Versionen von Browsern ermöglichen es, solche Probleme zu umgehen. Man kann nicht allen Nutzern eingeschränkte Rechte auferlegen, und man sollte die Vielzahl an alternativen DNS-Servern nicht vergessen. Das Internet ist dynamisch, und zusätzlich zu neuen DNS-Adressen kaufen verbotene Seiten neue Adressen, ändern ihre Top-Level-Domains oder fügen Zeichen in ihren Adressen hinzu oder entfernen sie. Dennoch sollte etwas wie Folgendes existieren:

ip route add blackhole 1.2.3.4

Es wäre durchaus hilfreich gewesen, eine Liste von IP-Adressen aus der Liste der verbotenen Seiten zu erhalten, aber aufgrund der oben genannten Überlegungen haben wir uns auf Iptables konzentriert. Es gab bereits einen aktiven Lastenausgleich auf CentOS Linux Release 7.5.1804.

Der Internetzugang der Benutzer sollte schnell sein, und der Browser sollte nicht eine halbe Minute warten müssen, um festzustellen, dass diese Seite nicht verfügbar ist. Nach langen Recherchen sind wir zu folgendem Modell gekommen:
Datei 1 -> /script/denied_host, Liste der verbotenen Namen:

test.test
blablabla.bubu
torrent
porno

Datei 2 -> /script/denied_range, Liste der verbotenen Adressräume und Adressen:

192.168.111.0/24
241.242.0.0/16

Skript-Datei 3 -> ipt.sh, die mit iptables arbeitet:

# считываем полезную информацию из перечней файлов
HOSTS=`cat /script/denied_host | grep -v '^#'`
RANGE=`cat /script/denied_range | grep -v '^#'`
echo "Stopping firewall and allowing everyone..."
# сбрасываем все настройки iptables, разрешая то что не запрещено
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
#решаем обновить информацию о маршрутах (особенность нашей архитектуры)
sudo sh rout.sh
# циклически обрабатывая каждую строку файла применяем правило блокировки строки
for i in $HOSTS; do
sudo iptables -I FORWARD -m string --string $i --algo bm --from 1 --to 600 -p tcp -j REJECT --reject-with tcp-reset;
sudo iptables -I FORWARD -m string --string $i --algo bm --from 1 --to 600 -p udp -j DROP;
done
# циклически обрабатывая каждую строку файла применяем правило блокировки адреса
for i in $RANGE; do
sudo iptables -I FORWARD -p UDP -d $i -j DROP;
sudo iptables -I FORWARD -p TCP  -d $i -j REJECT --reject-with tcp-reset;
done

Die Verwendung von sudo ist notwendig, da wir einen kleinen Hack für die Verwaltung über das WEB-Interface haben. Doch wie die Erfahrung der letzten Jahr zeigt, ist das WEB nicht wirklich erforderlich. Nach der Implementierung gab es den Wunsch, eine Liste der Websites in einer Datenbank zu speichern usw. Die Anzahl der gesperrten Hosts liegt bei über 250 + ein Dutzend Adressräume. Es gibt tatsächlich ein Problem beim Zugriff auf die Website über eine HTTPS-Verbindung, und als Systemadministrator habe ich auch einige Beschwerden über die Browser :), aber das sind Einzelfälle. Die meisten Zugriffsprobleme liegen letztendlich auf unserer Seite, wir blockieren auch erfolgreich Opera VPN, Plugins wie friGate und die Telemetrie von Microsoft.

Iptables und den Datenverkehr von armseligen und träge denkenden Andersdenkenden filtern.

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster