Iptables i filtrowanie ruchu od biednych i leniwych inaczej myślących

Znaczenie blokowania dostępu do zastrzeżonych zasobów dotyczy każdego administratora, któremu mogą oficjalnie postawić zarzut niewykonania prawa lub polecenia odpowiednich organów.

Iptables i filtrowanie ruchu od biednych i leniwych inaczej myślących

Po co wynajdować koło na nowo, skoro istnieją specjalistyczne programy i dystrybucje do naszych zadań, na przykład: Zeroshell, pfSense, ClearOS.

Pojawiło się kolejne pytanie od przełożonych: Czy używany produkt ma certyfikat bezpieczeństwa naszego państwa?

Mieliśmy doświadczenie w pracy z wymienionymi dystrybucjami:

  • Zeroshell - programiści nawet podarowali na 2 lata licencję, ale okazało się, że interesująca nas dystrybucja nie spełniała krytycznej dla nas funkcji w logiczny sposób;
  • pfSense - szacunek i uznanie, jednocześnie nudno, przyzwyczajenie do wiersza poleceń zapory FreeBSD i nie wystarczająco komfortowe dla nas (może to kwestia przyzwyczajenia, ale to nie okazało się 'tą drogą');
  • ClearOS - na naszym sprzęcie działało bardzo wolno, nie zdążyliśmy przejść do poważnych testów, więc po co takie ciężkie interfejsy?
  • Ideco SELECTA. Produkt 'Ideco' to osobny temat, interesujący produkt, ale z powodów politycznych nie dla nas, a jeszcze chcielibyśmy 'ugryźć' ich w kwestii licencji na ten sam Linux, Roundcube itd. Skąd mają pomysł, że 'przekształcając' interfejs w Python i odbierając prawa superużytkownika mogą sprzedawać gotowy produkt złożony z opracowanych i dostosowanych modułów społeczności internetowej rozprowadzanych na zasadach GPL&itd.

Rozumiem, że teraz spadną na mnie negatywne komentarze z wymaganiem szczegółowego uzasadnienia moich subiektywnych odczuć, ale chcę powiedzieć, że ten węzeł sieci jest także balansującym ruchem na 4 zewnętrzne kanały do internetu, a każdy kanał ma swoje szczególne cechy. Również kluczowym zagadnieniem stała się konieczność pracy jednego z kilku interfejsów sieciowych w różnych przestrzeniach adresowych, i ja jestem gotów przyznać, że stosowanie VLAN-ów wszędzie, gdzie to konieczne i niekonieczne, nie jestem gotów.W użytkowaniu są urządzenia typu TP-Link TL-R480T+ - nie zachowują się idealnie, w ogóle mają swoje niuanse. Tę część udało się rozsadnie skonfigurować dzięki oficjalnej stronie Ubuntu. IP-Balansowanie: łączymy kilka kanałów internetowych w jeden.. Każdy z tych kanałów może „upaść” w każdej chwili, jak i wzrosnąć. Jeśli interesuje Cię skrypt, który działa w tej chwili (a to zasługuje na osobną publikację) – pisz w komentarzach.

Rozważane rozwiązanie nie aspiruje do wyjątkowości, ale chcę zadać pytanie: „Po co w przedsiębiorstwie dostosowywać się do zewnętrznych wątpliwych produktów z poważnymi wymaganiami sprzętowymi, skoro można rozważyć alternatywną opcję?”.

Jeśli w Rosji jest lista Roskomnadzoru, to na Ukrainie – dokument do Decyzji Rady Bezpieczeństwa Narodowego (np. oto), to na miejscu kierownicy również nie próżnują. Na przykład, otrzymaliśmy listę zablokowanych stron, które według kierownictwa pogarszają efektywność pracy na miejscu.

Rozmawiając z kolegami z innych przedsiębiorstw, w których domyślnie zablokowane są wszystkie strony i tylko na prośbę z zezwoleniem kierownika można uzyskać dostęp do konkretnej strony, z szacunkiem uśmiechając się, zastanawiając się i „palić nad problemem”, przyszło zrozumienie, że życie ma swoje plusy i zaczęliśmy nasze poszukiwania.

Mając możliwość nie tylko analitycznie zobaczyć, co piszą w „książkach gospodyń domowych” na temat filtrowania ruchu, ale także zobaczyć, co się dzieje na kanałach różnych dostawców, zauważyliśmy następujące recepty (wszystkie zrzuty ekranu są nieco przycięte, proszę o zrozumienie):

Dostawca 1
— nie przejmuje się i narzuca własne serwery DNS oraz przezroczysty serwer proxy. No cóż… przynajmniej mamy dostęp tam, gdzie trzeba (jeśli tego potrzebujemy :))

Dostawca 2
— uważa, że jego górny dostawca powinien się tym zająć, wsparcie techniczne górnego dostawcy nawet przyznało, dlaczego nie mogę otworzyć potrzebnej mi, legalnej strony. Myślę, że ten obrazek rozbawi was 🙂

Iptables i filtrowanie ruchu od biednych i leniwych inaczej myślących

Jak się okazało, zamieniają nazwy zablokowanych stron na adresy IP i blokują właśnie IP (nie martwi ich to, że na tym IP może być 20 stron).

Dostawca 3
— przepuszcza ruch w tę stronę, ale nie pozwala wracać tą trasą.

Dostawca 4
— zabrania wszelkich manipulacji z pakietami w określonym kierunku.

Co robić z VPN (szacunek dla przeglądarki Opera) i rozszerzeniami przeglądarek? Bawiąc się na początku z routerem Mikrotik, nawet opracowaliśmy zasobożerny przepis na L7, z którego w późniejszym czasie musieliśmy zrezygnować (może być więcej zabronionych nazw, smutno się robi, gdy oprócz swoich bezpośrednich obowiązków związanych z trasowaniem, na 30 wyrażeń obciążenie procesora PPC460GT osiąga 100%).

Iptables i filtrowanie ruchu od biednych i leniwych inaczej myślących.

Co stało się jasne:
DNS na 127.0.0.1 absolutnie nie jest panaceum, nowoczesne wersje przeglądarek rzeczywiście pozwalają omijać takie problemy. Nie można ograniczyć wszystkich użytkowników okrojonymi uprawnieniami i nie można zapominać o ogromnej liczbie alternatywnych DNS. Internet nie jest statyczny, a oprócz nowych adresów DNS, zabronione strony wykupują nowe adresy, zmieniają domeny najwyższego poziomu, mogą dodać/usunąć znak w swoim adresie. Ale coś w stylu:

ip route add blackhole 1.2.3.4

W pełni skuteczne byłoby uzyskanie listy adresów IP z listy zabronionych stron, ale z powodów wskazanych powyżej przeszliśmy do rozważań o Iptables. Już istniał działający load balancer na CentOS Linux release 7.5.1804.

Internet użytkownika powinien być szybki, a przeglądarka nie powinna czekać pół minuty, dochodząc do wniosku, że dana strona jest niedostępna. Po długich poszukiwaniach doszliśmy do takiego modelu:
Plik 1 -> /script/denied_host, lista zabronionych nazw:

test.test
blablabla.bubu
torrent
porno

Plik 2 -> /script/denied_range, lista zabronionych przestrzeni adresowych i adresów:

192.168.111.0/24
241.242.0.0/16

Plik-skrypt 3 -> ipt.sh, wykonujący operacje z iptables:

# считываем полезную информацию из перечней файлов
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

Użycie sudo jest uzasadnione tym, że mamy mały hack do zarządzania przez interfejs WEB, ale jak pokazuje doświadczenie używania tego modelu przez ponad rok, to WEB nie jest aż tak potrzebny. Po wdrożeniu pojawiła się chęć wprowadzenia listy stron do bazy danych itd. Liczba zablokowanych hostów to ponad 250 + dziesiątki przestrzeni adresowych. Rzeczywiście występuje problem przy przechodzeniu na stronę przez połączenie https, jako administrator systemu mam zastrzeżenia do przeglądarek :), ale to szczególne przypadki, większość niepowodzeń w dostępie do zasobu nadal leży po naszej stronie, skutecznie blokujemy również Opera VPN, rozszerzenia typu friGate oraz telemetry od Microsoftu.

Iptables i filtrowanie ruchu od biednych i leniwych inaczej myślących

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster