Iptables i filtrowanie ruchu od biednych i leniwych dysydentów

Znaczenie blokowania wizyt w zabronionych zasobach dotyczy każdego administratora, który może zostać oficjalnie oskarżony o nieprzestrzeganie prawa lub nakazów odpowiednich władz.

Iptables i filtrowanie ruchu od biednych i leniwych dysydentów

Po co wymyślać koło na nowo, skoro do naszych zadań istnieją wyspecjalizowane programy i dystrybucje, np.: Zeroshell, pfSense, ClearOS.

Kierownictwo miało jeszcze jedno pytanie: Czy zastosowany produkt posiada certyfikat bezpieczeństwa z naszego państwa?

Mieliśmy doświadczenie w pracy z następującymi dystrybucjami:

  • Zeroshell – twórcy podarowali nawet 2-letnią licencję, ale okazało się, że interesująca nas dystrybucja, nielogicznie, pełniła dla nas funkcję krytyczną;
  • pfSense - szacunek i honor, a jednocześnie nudne, przyzwyczajenie się do linii poleceń firewalla FreeBSD i niezbyt wygodne dla nas (myślę, że to kwestia przyzwyczajenia, ale okazało się, że w złą stronę);
  • ClearOS - na naszym sprzęcie okazał się bardzo powolny, nie mogliśmy przystąpić do poważnych testów, więc po co takie ciężkie interfejsy?
  • Ideco SELECTA. Produkt Ideco to osobna rozmowa, produkt ciekawy, ale z powodów politycznych nie dla nas, a ja też chcę ich „dogryźć” w sprawie licencji na tego samego Linuksa, Roundcube itp. Skąd wpadli na pomysł, że wycinając interfejs Python a odbierając prawa administratora, mogą sprzedawać gotowy produkt złożony z opracowanych i zmodyfikowanych modułów społeczności internetowej rozpowszechnianych na licencji GPL&etc.

Rozumiem, że teraz w moją stronę polecą negatywne okrzyki z żądaniami szczegółowego uzasadnienia moich subiektywnych odczuć, ale chcę powiedzieć, że ten węzeł sieciowy jest również modułem równoważenia ruchu dla 4 zewnętrznych kanałów do Internetu, a każdy kanał ma swoją własną charakterystykę . Kolejnym kamieniem węgielnym była potrzeba, aby jeden z kilku interfejsów sieciowych działał w różnych przestrzeniach adresowych, a ja gotowy przyznać, że sieci VLAN można stosować wszędzie tam, gdzie jest to konieczne i niepotrzebne nie gotowy. W użyciu są urządzenia takie jak TP-Link TL-R480T+ - generalnie nie zachowują się idealnie, z własnymi niuansami. Skonfigurowanie tej części w systemie Linux było możliwe dzięki oficjalnej stronie Ubuntu IP Balancing: połączenie kilku kanałów internetowych w jeden. Co więcej, każdy z kanałów może w dowolnym momencie „spaść” lub wzrosnąć. Jeśli interesuje Cię skrypt, który aktualnie działa (a jest to warte osobnej publikacji), pisz w komentarzach.

Rozważane rozwiązanie nie pretenduje do miana wyjątkowego, ale chciałbym zadać pytanie: „Dlaczego przedsiębiorstwo miałoby dostosowywać się do wątpliwych produktów innych firm o poważnych wymaganiach sprzętowych, skoro można rozważyć alternatywną opcję?”

Jeśli w Federacji Rosyjskiej istnieje lista Roskomnadzoru, na Ukrainie istnieje załącznik do Decyzji Rady Bezpieczeństwa Narodowego (np. tutaj), to lokalni liderzy też nie śpią. Na przykład otrzymaliśmy listę zabronionych witryn, które zdaniem kierownictwa pogarszają produktywność w miejscu pracy.

Komunikując się z kolegami z innych przedsiębiorstw, gdzie domyślnie wszystkie strony są zabronione i tylko na żądanie, za zgodą szefa, można uzyskać dostęp do określonej witryny, uśmiechając się z szacunkiem, myśląc i „paląc nad problemem”, doszliśmy do zrozumienia, że ​​życie jest nadal dobry i rozpoczęliśmy poszukiwania.

Mając okazję nie tylko analitycznie zobaczyć, co piszą w „księgach gospodyń domowych” na temat filtrowania ruchu, ale także zobaczyć, co dzieje się na kanałach różnych dostawców, zauważyliśmy następujące przepisy (wszelkie zrzuty ekranu są nieco przycięte, proszę zrozumieć, kiedy pytam):

Dostawca 1
— nie przeszkadza i narzuca własne serwery DNS i przejrzysty serwer proxy. No cóż?..ale mamy dostęp tam gdzie tego potrzebujemy (jeśli tego potrzebujemy :))

Dostawca 2
- uważa, że ​​jego czołowy dostawca powinien się nad tym zastanowić, pomoc techniczna czołowego dostawcy przyznała nawet, dlaczego nie mogę otworzyć potrzebnej mi strony, co nie jest zabronione. Myślę, że zdjęcie Cię zachwyci :)

Iptables i filtrowanie ruchu od biednych i leniwych dysydentów

Jak się okazało, tłumaczą nazwy zabronionych stron na adresy IP i blokują sam adres IP (nie przeszkadza im fakt, że na tym adresie IP może znajdować się 20 witryn).

Dostawca 3
— umożliwia ruch tam, ale nie pozwala na powrót na trasę.

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

Co zrobić z VPN (w odniesieniu do przeglądarki Opera) i wtyczkami do przeglądarek? Bawiąc się na początku z węzłem Mikrotik, otrzymaliśmy nawet zasobochłonny przepis na L7, z którego później musieliśmy porzucić (zakazanych nazw może być więcej, robi się smutno, gdy oprócz bezpośredniej odpowiedzialności za trasy, na 3 tuzinach wyrażeń obciążenie procesora PPC460GT osiąga 100%.

Iptables i filtrowanie ruchu od biednych i leniwych dysydentów.

Co stało się jasne:
DNS na 127.0.0.1 absolutnie nie jest panaceum, nowoczesne wersje przeglądarek wciąż pozwalają ominąć takie problemy. Niemożliwe jest ograniczenie wszystkich użytkowników do ograniczonych praw i nie możemy zapominać o ogromnej liczbie alternatywnych DNS. Internet nie jest statyczny i oprócz nowych adresów DNS, zabronione witryny kupują nowe adresy, zmieniają domeny najwyższego poziomu i mogą dodawać/usuwać znaki w swoich adresach. Ale nadal ma prawo żyć tak:

ip route add blackhole 1.2.3.4

Całkiem skuteczne byłoby uzyskanie listy adresów IP z listy zabronionych witryn, ale z powodów podanych powyżej przeszliśmy do rozważań na temat Iptables. W wersji CentOS Linux 7.5.1804 istniał już balanser na żywo.

Internet użytkownika powinien być szybki, a przeglądarka nie powinna czekać pół minuty z wnioskiem, że ta strona jest niedostępna. Po długich poszukiwaniach dotarliśmy do tego modelu:
Plik 1 -> /script/odmowa_hosta, lista nazw zabronionych:

test.test
blablabla.bubu
torrent
porno

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

192.168.111.0/24
241.242.0.0/16

Plik skryptu 3 -> ipt.shwykonując pracę z ipables:

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

Zastosowanie sudo wynika z tego, że mamy mały hack do zarządzania poprzez interfejs WEBowy, jednak jak pokazało doświadczenie w używaniu takiego modelu przez ponad rok, WEB nie jest już tak potrzebny. Po wdrożeniu pojawiła się chęć dodania listy stron do bazy itp. Liczba zablokowanych hostów to ponad 250 + kilkanaście przestrzeni adresowych. Naprawdę jest problem podczas wchodzenia na stronę przez połączenie https, podobnie jak administrator systemu, mam skargi na przeglądarki :), ale są to przypadki szczególne, większość wyzwalaczy braku dostępu do zasobu jest nadal po naszej stronie , skutecznie blokujemy także Opera VPN i wtyczki takie jak friGate i telemetria firmy Microsoft.

Iptables i filtrowanie ruchu od biednych i leniwych dysydentów

Źródło: www.habr.com

Dodaj komentarz