Poniższe schematy przedstawiają dwa najpopularniejsze układy sieci w organizacjach (szkołach, firmach, itp.). Wyłączając specyficzne konfiguracje

Podobne dokumenty
Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Router programowy z firewallem oparty o iptables

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat zapory sieciowej (firewall) oraz oprogramowania iptables.

Instalacja i konfiguracja pakietu iptables

Najprostsza odpowiedź, jaka przychodzi mi do głowy to, z powodu bezpieczeństwa.

Zadania do wykonania Firewall skrypt iptables

Tomasz Greszata - Koszalin

Zarządzanie bezpieczeństwem w sieciach

Pakiet Iptables. Filtrowanie pakietów i filtrowanie stanowe

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Opracowany na podstawie

iptables -F -t nat iptables -X -t nat iptables -F -t filter iptables -X -t filter echo "1" > /proc/sys/net/ipv4/ip_forward

iptables/netfilter co to takiego?

Zapory sieciowe i techniki filtrowania danych

Sieci Komputerowe Translacja adresów sieciowych

Wykład 3 Filtracja i modyfikacja pakietów za pomocą iptables.

Sieci komputerowe. Tadeusz Kobus, Maciej Kokociński Instytut Informatyki, Politechnika Poznańska

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat zapory sieciowej.

Serwer proxy Squid. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Sieci komputerowe. Zajęcia 4 Bezpieczeństwo w sieciach komputerowych

7. Konfiguracja zapory (firewall)

Pakiet Iptables. Filtrowanie pakietów i filtrowanie stanowe

Bezpieczeństwo w M875

Wdrażanie i zarządzanie serwerami zabezpieczającymi Koncepcja ochrony sieci komputerowej

DHCP + udostępnienie Internetu

Iptables informacje ogólne

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Co to jest iptables?

Linux -- u mnie działa!

Konfiguracja zapory Firewall w systemie Debian.

Wprowadzenie 5 Rozdział 1. Lokalna sieć komputerowa 7

Sieci komputerowe. Tadeusz Kobus, Maciej Kokociński Instytut Informatyki, Politechnika Poznańska

Sieci komputerowe. Tadeusz Kobus, Maciej Kokociński Instytut Informatyki, Politechnika Poznańska

Firewall bez adresu IP

Tomasz Greszata - Koszalin

Warsztaty z Sieci komputerowych Lista 9

4. Podstawowa konfiguracja

Tworzenie maszyny wirtualnej

Zadanie1: Odszukaj w Wolnej Encyklopedii Wikipedii informacje na temat NAT (ang. Network Address Translation).

CONFidence 13/05/2006. Jarosław Sajko, PCSS

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

ABA-X3 PXES v Podręczna instrukcja administratora. FUNKCJE SIECIOWE Licencja FDL (bez prawa wprowadzania zmian)

13. Konfiguracja proxy http, smtp, pop3, ftp, ssl

Laboratorium Ericsson HIS NAE SR-16

Projektowanie bezpieczeństwa sieci i serwerów

Windows W celu dostępu do i konfiguracji firewall idź do Panelu sterowania -> System i zabezpieczenia -> Zapora systemu Windows.

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat usługi DHCP.

Zadanie z lokalnych sieci komputerowych. 1. Cel zajęć

Przypisywanie adresów IP do MAC-adresów

Przesyłania danych przez protokół TCP/IP

KONFIGURACJA SIECIOWA SYSTEMU WINDOWS

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

Aneks do instrukcji obsługi routera Asmax Br-804v II

NAT/NAPT/Multi-NAT. Przekierowywanie portów

ZiMSK NAT, PAT, ACL 1

Ćwiczenie 5a Sieć komputerowa z wykorzystaniem rutera.

Instrukcja konfiguracji funkcji skanowania

Przekierowanie portów w routerze - podstawy

Zdalna obsługa transcievera. H A M R A D I O D E L U X E R e m o t e S e r v e r C o n f i g u r a t i o n

Ćwiczenie 5b Sieć komputerowa z wykorzystaniem rutera.

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Problemy techniczne SQL Server

ARP Address Resolution Protocol (RFC 826)

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Instrukcja dla instalatora systemu SMDP Enterprise/Professional

11. Autoryzacja użytkowników

Systemy operacyjne i sieci komputerowe Szymon Wilk Adresowanie w sieciach Klasy adresów IP a) klasa A

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat usługi DHCP.

ZADANIE.07 Różne (tryb tekstowy i graficzny) 2h

1.1 Podłączenie Montaż Biurko Montaż naścienny... 4

Protokół HTTP (2) I) Wprowadzenie. II) Użyte narzędzia: III) Kolejność działań

Ćwiczenie 7 Sieć bezprzewodowa z wykorzystaniem rutera.

Linux. iptables, nmap, DMZ

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Zdalne logowanie do serwerów

Warsztaty z Sieci komputerowych Lista 8

Konfiguracja połączenia G.SHDSL punkt-punkt w trybie routing w oparciu o routery P-791R.

9. Internet. Konfiguracja połączenia z Internetem

ZADANIE.07 Różne (tryb tekstowy i graficzny) 2h

Qmail radość listonosza. Autorzy: Bartosz Krupowski, Marcin Landoch IVFDS

Opis ogólny ustawień NAT na podstawie Vigora serii 2700

- udostępnić anonimowym użytkownikowi Internetu pliki przez serwer FTP,

Iptables. Krzysztof Rykaczewski. 15/11/06 1

Strona1. Suse LINUX. Konfiguracja sieci

Sieci komputerowe : zbuduj swoją własną sieć - to naprawdę proste! / Witold Wrotek. wyd. 2. Gliwice, cop Spis treści

Instrukcja konfigurowania poczty Exchange dla klienta pocztowego użytkowanego poza siecią uczelnianą SGH.

T: Konfiguracja interfejsu sieciowego. Odwzorowanie nazwy na adres.

OBSŁUGA I KONFIGURACJA SIECI W WINDOWS

Usługi sieciowe systemu Linux

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Znak sprawy: KZp

INSTRUKCJA INSTALACJI OPROGRAMOWANIA MICROSOFT LYNC 2010 ATTENDEE ORAZ KORZYTANIA Z WYKŁADÓW SYNCHRONICZNYCH

Firewalle, maskarady, proxy

Narzędzia diagnostyczne protokołów TCP/IP

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Serwer DHCP (dhcpd). Linux OpenSuse.

Brinet sp. z o.o. wyłączny przedstawiciel DrayTek w Polsce

ZABEZPIECZENIE PRZED ZMIANĄ ADRESU IP PRZEZ UŻYTKOWNIKA Andrzej Angowski UCI, UMK Toruń

Wykaz zmian w programie SysLoger

Wireshark analizator ruchu sieciowego

Transkrypt:

Bezpieczny Internet 1 Bezpieczny dostęp do internetu. Zapewnienie bezpiecznego dostępu do zasobów sieci w organizacji wymaga śledzenia działań użytkownika i blokowania dostępu do niepożądanych treści oraz usług sieciowych. Bezpiecznie to także znaczy jawnie! Wykorzystanie otwartych rozwiązań (opartych na Wolnym Oprogramowaniu) pozwoli zbudować rozwiązanie: scentralizowane: tylko jedno miejsce (serwer) filtrowania ruchu, bez potrzeby żmudnego konfigurowania wielu komputerów klienckich. niezależne od systemu operacyjnego: Linux, Windows, MacOS lub dowolny inny - na komputerze klienckim, Linux na serwerze 1 jawne dla operatora: informacje o tym, co blokujemy nie będą w żaden sposób zaszyfrowane, ale dostępne dla operatora systemu (ale nie dla użytkownika komputera klienckiego!). Dodatkowo użycie Wolnego Oprogramowania (z dostępnymi źródłami) zapewnia ochronę przed nadużyciami (na przykład zaszyte w kodzie programu blokowanie treści zawierających słowo 'demokracja') Co chcemy blokować: pobieranie plików wykonywalnych (exe, ELF, itp.) zabraniamy, lub tylko sprawdzamy antywirusem inne pliki, w których mogą znajdować się wirusy: archiwa (zip, rar, ace, lha itp), oraz dokumenty doc, xls, pps... reklamy, oraz inną nietekstową zawartość stron www flash, filmy, pliki dźwiękowe dostęp do poczty elektronicznej, grup dyskusyjnych (nntp) dostęp do komunikatorów, systemów VoIP, sieci P2P Dwa podejścia do blokowania: proste: blokujemy wszystko wyżej wymienione skomplikowane: blokujemy tylko niektóre źródła, żeby nie ograniczać zbytnio funkcjonalności (to chcemy zrobić) potrzebne są heurystyki, które ocenią co jest dozwolone, a co nie na przykład: blokujemy tylko pliki z wirusami, blokujemy tylko obrazki, które są reklamami albo tylko treści erotyczne (potrzebne są algorytmy, które będą w stanie to rozpoznać) Sprzęt i topologia sieci. Poniższe schematy przedstawiają dwa najpopularniejsze układy sieci w organizacjach (szkołach, firmach, itp.). Wyłączając specyficzne konfiguracje 1 Przedstawiamy opis konfiguracji dla Linuksa, dystrybucji: Ubuntu 6.06 oraz Fedora Core 6, przedstawione oprogramowanie dostępne jest także na inne systemy unixowe (na przykład MacOS X)

Bezpieczny Internet 2 z użyciem VPN-ów, sieć w każdej organizacji da się sprowadzić do poniższych schematów (być może z pewnymi modyfikacjami). Średnia i duża firma (w tym przypadku schemat uproszczony). Wszystkie komputery klienckie podłączone przez serwer linuksowy z firewallem. Serwer - posiada dwa interfejsy sieciowe, więc sieć wewnętrzna odseparowana fizycznie od zewnętrznej. Wdrożenie należy przeprowadzić na serwerze pośredniczącym.

Bezpieczny Internet 3 Model często stosowany w małych organizacjach (szkołach, małych firmach). Udostępnianiem internetu zajmuje się prosty sprzętowy router. Nie ma fizycznej separacji sieci wewn. od routera. Przedstawione rozwiązanie da się wdrożyć, ale będzie wymagało: przeznaczenia jednego z komputerów klienckich na serwer (można nadal pracować na nim, jak na końcówce jedyne wymagania to odpowiedni system operacyjny i praca nonstop) odpowiedniej konfiguracji sieci: w istniejącej infrastrukturze tworzymy (za pomocą aliasów do interfejsów i odpowiednich reguł trasowania) dwie sieci logiczne: w jednej będą znajdowały się router i serwer, w drugiej wszystkie pozostałe komputery klienckie i serwer. wymuszamy stosowanie takiej konfiguracji sieci (na przykład zapewniamy, że żaden komputer kliencki nie uzyska dostępu do internetu bezpośrednio przez router, filtrując adresy MAC) Alternatywnym i zdecydowanie prostszym rozwiązaniem jest zamontowanie w jednym z komputerów dodatkowej karty sieciowej (koszt około 30zł). Sprowadzi to problem do przypadku pierwszego. Oprogramowanie na kliencie Komputer kliencki może działać pod kontrolą dowolnego systemu operacyjnego, obsługującego protokoły sieciowe TCP/IP.

Bezpieczny Internet 4 Oprogramowanie na serwerze Ubuntu 6.06 obecnie Fedora Core 6 przykład najpopularniejsza dystrybucja, oparta nowoczesnej dystrybucji opartej na na pakietach deb, ma gwarantowane menadżerze pakietów rpm (opis, 5-cio letnie wsparcie, (opis, z z drobnymi modyfikacjami, powinien drobnymi modyfikacjami działa też na działać też na innych podobnych Debianie, Ubuntu 6.10, LinuxEduCD dystrybucjach: CentOS, SuSE, itp.) itp.). Wszystkie opisane narzędzia dostępne są w repozytorium Ubuntu (universe). Dystrybucje te zostały wybrane ze względu na łatwość instalacji, oraz dostępność oprogramowania. Wszystkie potrzebne do przedstawionego wdrożenia programy już się w nich znajdują i wymagają jedynie konfiguracji. Konfiguracja serwera 1a. Interfejsy sieciowe (serwer z dwoma interfejsami: eth0 do routera, sieć 192.168.1.0/24, adres serwera: 192.168.1.2, adres routera 192.168.1.1; eth1 do LAN-u, sieć 10.0.2.0/24, adres serwera 10.0.2.1). Ubuntu w pliku: /etc/network/interfaces: #eth0 -> do routera auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 #eth1 -> do LAN-u auto eth1 iface eth1 inet static address 10.0.2.1 netmask 255.255.255.0 network 10.0.2.0 broadcast 10.0.2.255 FC6 w pliku: /etc/sysconfig/networkscripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.1.2 NETMASK=255.255.255.0 ONBOOT=yes GATEWAY=192.168.1.1 TYPE=Ethernet w pliku: /etc/sysconfig/networkscripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=static IPADDR=10.0.2.1 NETMASK=255.255.255.0 USERCTL=no PEERDNS=yes ONBOOT=yes TYPE=Ethernet 1b. Interfejsy sieciowe (serwer z jednym interfejsem sieciowym, tworzymy sieci logiczne o adresach, jak wyżej). Zamiast eth1 dodajemy alias do eth0. Będzie to interfejs eth0:1, więc w powyższych listingach należy zamienić wszystkie wystąpienia eth1 na eth0:1 (w FC6 także stworzyć plik:

/etc/sysconfig/network-scripts/ifcfg-eth0:1) Bezpieczny Internet 5 2. Trasowanie (routing) Włączamy mechanizm trasowania i przekazywania pakietów przez jądro. W obu systemach tak samo: w pliku: /etc/sysctl.conf #Uncomment the next line to enable packet forwarding for IPv4 net/ipv4/ip_forward=1 #W niektórych dystrybucjach wymagane jest użycie. zamiast / 3. Translacja adresów. Do konfiguracji zapory sieciowej i translacji adresów w systemach linuksowych służy, wbudowany w jądro, mechanizm iptables. Iptables z pigułce: IPtables operuje na tabelach. W nich znajdują się łańcuchy reguł odfiltrowujących (pasujących do) odpowiednich pakietów sieciowych. Każda reguła określa, co zrobić z odfiltrowanymi pakietami (cel ang. target). Pakiety można zaakceptować do dalszego przetwarzania, odrzucić (usunąć), przekazać do innego łańcucha w danej tabeli, lub nawet zmodyfikować. Pakiety przechodzą przez reguły zdefiniowane w powyższych łańcuchach. Dostęp do łańcuchów możliwy jest z poziomu poszczególnych tabel. Zestawy reguł zdefiniowane w tych samych łańcuchach, ale w poszczególnych tabelach są ze sobą rozłączne (nie kolidują ze sobą). Podział na poszczególne tabele spowodowany jest potrzebą rozdzielenia funkcjonalności (różnych mechanizmów 'obróbki' pakietów). I tak, poszczególne tabele mają różne funkcje (znajdujące się w nich reguły mają różne cele): filter stosowana do odrzucania lub przyjmowania pakietów (implementacji zapory sieciowej) nat stosowana do stanowej modyfikacji pakietów, na przykład.: zmieniamy

Bezpieczny Internet 6 adres źródłowy danego pakietu, zapamiętując jednocześnie oryginalny, oraz inne informacje (stan), które pozwolą dokonać analogicznej zmiany w pakiecie, który przyjdzie w odpowiedzi na wysłany. mangle stosowana do bezstanowej modyfikacji pakietów na przykład zmieniamy czas życia pakietu (TTL), lub zawartość nagłówka protokołu TCP (bezstanowo, czyli nie zapamiętując żadnych zmian) Tabele pozwalają na operowanie na odpowiednich łańcuchach: tabela łańcuch PREROUTING INPUT FORWARD OUTPUT POSTROUTING filter - + + + - nat + - - + + mangle + + + + + Do kontroli dostępu do sieci potrzebne nam będą następujące łańcuchy: FORWARD (z tabeli filter) służy do filtrowania pakietów przechodzących przez nasz serwer. POSTROUTING (z tabeli nat) służy do translacji adresów (udostępniania internetu komputerom w sieci lokalnej tak, że cała sieć widoczna jest jako jeden adres IP w internecie). PREROUTING (z tabeli nat) tu ustawimy odpowiednie przekierowanie portów (por. Wymuszanie Użycia Serwera Proxy). INPUT (z tabeli filter) służy do filtrowania pakietów przeznaczonych dla procesów działających na lokalnym komputerze. Tablice i łańcuchy zaimplementowane są w jądrze systemu. Do operacji na nich służy program iptables. Za pomocą iptables odfiltrujemy: dostęp do odpowiednich protokołów (nntp, smtp, pop3 itp.) - odrzucając połączenia wychodzące na port o danym numerze. dostęp do niektórych komunikatorów (skype) odrzucając odpowiednie pakiety. Odpowiednie reguły załaduje za nas wylistowany poniżej skrypt: #!/bin/bash #Przedstawiony listing jest skryptem powłoki. Pierwsza linia, oznacza, że programem użytym do zinterpretowania poniższych poleceń będzie /bin/bash. Linie zaczynające się od # są komentarzami, pozostałe zawierają polecenia powłoki. #Specjalizowany moduł śledzenia połączeń FTP, bez niego użytkownicy z sieci lokalnej nie będą mogli łączyć się z serwerami ftp. modprobe ip_nat_ftp #Jeżeli na naszym serwerze jest serwer ftp, należy załadować też następujące moduł (odkomentować linijkę).

Bezpieczny Internet 7 #modprobe ip_conntrack_ftp #Czyścimy łańcuchy w tabelach filter i nat. Usuwamy reguły, które mogą się tam znajdować. iptables -F iptables -t nat -F #Ustawiamy domyślną akcję dla łańcucha INPUT (czyli pakietów dla naszego systemu). Domyślna akcja to cel (ale tylko ACCEPT lub DROP), do którego trafią wszystkie pakiety, które nie zostaną odfiltrowane przez reguły w łańcuchu. iptables -P INPUT DROP #Przedstawione tu rozwiązanie to 'firewall stanowy', w którym: #- blokujemy wszystko, a następnie zezwalamy na niektóre połączenia #- śledzimy stan połączeń, w celu odróżnienia pakietów z połączeń już nawiązanych od pakietów, które służą do nawiązywania połączenia. #Poniżej znajdują się reguły, które wybierają pakiety i przepuszczają je dalej. Ponieważ każda kolejna reguła, to konieczność dodatkowych obliczeń w systemie (a więc większe obciążenie), pamiętać należy o tym, aby na początku umieszczać reguły najbardziej ogólne, które odfiltrowują jak najwięcej pakietów. #Wpuszczamy połączenia już nawiązane oraz powiązane z już nawiązanymi. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #Od tej chwili, dla tego łańcucha, przetwarzane są tylko pakiety służące do nawiązywania połączeń #Wpuszczamy pakiety z interfejsu pętli zwrotnej. Jest to konieczne dla prawidłowego działania systemu. iptables -A INPUT -i lo -j ACCEPT #Wpuszczamy pakiety protokołu icmp (programu ping), służące do diagnozowania działania sieci. Ograniczamy maksymalną ilość 'pingów', na które odpowie nasz system do 10/sekundę. iptables -A INPUT -p icmp -m limit --limit 10/sec -j ACCEPT #Akceptujemy połączenia do serwera proxy (służącego do dokładniejszego filtrowania niektórych pakietów) iptables -A INPUT -s 10.0.2.0/24 -p tcp --dport 8080 #Ustawiamy domyślną akcję dla łańcucha FORWARD (czyli pakietów, które przechodzą przez nasz system)

Bezpieczny Internet 8 iptables -P FORWARD DROP #Przepuszczamy połączenia już nawiązane. iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT #Przepuszczamy pakiety protokołu icmp (ping). iptables -A FORWARD -p icmp -j ACCEPT #Blokujemy Skype iptables -I FORWARD -p udp -mlength --length 39 -m u32 --u32 '27&0 x8f=7' --u32 '31=0 x527c4833' -j DROP #źródło: http://www.secdev.org/conf/skype_bheu06.handout.pdf #Blokujemy jabbera: iptables -A FORWARD -p tcp --dport 5222 -j REJECT iptables -A FORWARD -p udp --dport 5222 -j REJECT iptables -A FORWARD -p tcp --dport 5269 -j REJECT iptables -A FORWARD -p udp --dport 5269 -j REJECT #Poniższe reguły blokują dostęp do portów używanych przez najpopularniejsze programy peer-to-peer. Nie wystarczą one do zablokowania korzystania z tych programów (nowoczesne systemy p2p używają szyfrowanych pakietów przesyłanych na losowych portach, lub standardowych portach innych usług, na przykład http). Poniższe reguły jedynie spowolnią transfery plików. #Gnutella/Limewire/Morpheus: iptables -A FORWARD -p tcp --dport 6346:6347 -j REJECT iptables -A FORWARD -p udp --dport 6346:6347 -j REJECT #EDonkey & Overnet: iptables -A FORWARD -p tcp --dport 4660:4666 -j REJECT iptables -A FORWARD -p udp --dport 4660:4666 -j REJECT #Kazaa: iptables -A FORWARD -p tcp --dport 1214 -j REJECT iptables -A FORWARD -p udp --dport 1214 -j REJECT #Otwieranie portów dla poszczególnych usług. #Numery portów odpowiadających danym usługom sieciowym można znaleźć w pliku /etc/services. W celu zamknięcia dostępu do danej usługi wystarczy daną linijkę zakomentować. #FTP iptables -A FORWARD -p tcp --dport 21 -j ACCEPT #SSH iptables -A FORWARD -p tcp --dport 22 -j ACCEPT #SMTP poczta (wysyłanie) iptables -A FORWARD -p tcp --dport 25 -j ACCEPT #POP3 poczta (odbieranie) iptables -A FORWARD -p tcp --dport 110 -j ACCEPT #NNTP grupy dyskusyjne iptables -A FORWARD -p tcp --dport 119 -j ACCEPT

Bezpieczny Internet 9 #HTTPS szyfrowany protokół http dostęp do poczty przez www, banków, sklepów internetowych, itp. iptables -A FORWARD -p tcp --dport 443 -j ACCEPT #IMAPS poczta (odbieranie) iptables -A FORWARD -p tcp --dport 993 -j ACCEPT #POP3S poczta (odbieranie) iptables -A FORWARD -p tcp --dport 995 -j ACCEPT #DNS iptables -A FORWARD -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -p udp --dport 53 -j ACCEPT #Port http (80) został celowo pominięty w udostępnieniach, ponieważ wszystkie pakiety z portem docelowym 80 zostaną, jedną z poniższych reguł, przekierowane do serwera proxy. #Udostępniamy dostęp na zewnątrz komputerom w sieci lokalnej (NAT). #Wcześniejsze reguły operowały na domyślnej tabeli filter. W celu dodania reguły do łańcucha w tabeli nat należy użyć opcji '-t nat' (brak opcji '-t' implikuje w '-t filter') iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j SNAT --tosource 192.168.1.2 #Mniej eleganckim rozwiązaniem (wymagającym więcej obliczeń w systemie), ale nieuniknionym, jeżeli serwer ma np. podłączony bezpośrednio modem ze zmiennym adresem IP, jest: #iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j MASQUERADE #Przekierowanie pakietów przeznaczonych na port docelowy 80 (zazwyczaj serwer http), przechodzących przez nasz system, do serwera proxy nasłuchującego na porcie 8080 (w celu dalszego odfiltrowania). iptables -t nat -A PREROUTING -i eth1 -s 10.0.2.0/24 -d! 10.0.2.1 -p tcp --dport 80 -j REDIRECT --to-port 8080 Uruchamianie. Wprowadzone reguły zachowywane są w pamięci ulotnej (RAM). Po restarcie systemu tablice i łańcuchy będą puste. Aby zachować konfigurację można użyć, przygotowanych przez twórców dystrybucji, skryptów do zarządzania regułami; ze względu na mnogość dystrybucji i rozwiązań, świadomie zrezygnowaliśmy z opisu tej metody na rzecz bardziej uniwersalnej: powyższy skrypt umieścić w pliku /usr/local/bin/fw.sh i nadać mu uprawnienia do wykonywania: chmod +x /usr/local/bin/fw.sh następnie sprawić, aby był uruchamiany przy starcie systemu:

Bezpieczny Internet 10 do pliku: /etc/network/interfaces: dodać: iface eth1 inet static address 10.0.2.1 netmask 255.255.255.0 network 10.0.2.0 broadcast 10.0.2.255 up /usr/local/bin/fw.sh do pliku: /etc/rc.local dodać: /usr/local/bin/fw.sh Iptables potrafi filtrować tylko nagłówki pakietów protokołu ip oraz protokołów w nim zagnieżdżonych. Do filtrowania treści (zawartości pakietów HTTP), potrzebny nam będzie program działający w przestrzeni użytkownika, a konkretnie, serwer proxy. Co to jest proxy. Protokół HTTP przewiduje bardziej skomplikowane rozwiązania niż bezpośrednie połączenie klienta z serwerem. W wymianie danych mogą uczestniczyć maszyny pośrednie. Z punktu widzenia klienta są one serwerami, dla serwera klientami. Najczęstszym zadaniem serwera proxy jest udostępnianie internetu zamkniętej grupie komputerów w sieci lokalnej. Dodatkowo pełni on rolę filtra ograniczającego dostęp do niektórych serwisów oraz buforuje przesyłane dane. Buforowanie ma na celu przyspieszenie pobierania treści z internetu. Raz pobrany obiekt (statyczna strona www, plik z obrazkiem, dźwiękiem, filmem, czy innymi danymi) trafia do bufora. Przy kolejnym zapytaniu o ten sam obiekt, serwer proxy sprawdza jedynie, czy oryginalne źródło nie zdezaktualizowało się (odpowiednim poleceniem protokołu HTTP) i jeśli nie, serwuje obiekt z bufora. Poza specyficznymi zastosowaniami (np. pobieranie aktualizacji dla kliku kopii tej samej dystrybucji), buforowanie ma rolę marginalną (przyspieszenie zaledwie o kilka procent). SQUID Najpopularniejszym i najdojrzalszym serwerem proxy dostępnym na Linuksa i inne platformy unixopodobne jest SQUID. Jest to projekt będący efektem pracy społeczności. SQUID jest dostępny w większości dystrybucji Linuksa. Instalacja sprowadza się do zainstalowania odpowiedniego pakietu, który zazwyczaj zawiera już skrypty startowe. aptitude install squid yum install squid

Konfiguracja plik squid.conf Bezpieczny Internet 11 Konfiguracja SQUIDa zawarta jest w pliku squid.conf. Jego położenie zależy od dystrybucji, ale zwykle jest to miejsce w hierarchii /etc. Plik squid.conf w wersji oryginalnej, czyli takiej jak przygotowali twórcy programu, składa się przede wszystkim z komentarzy. Poszczególne dyrektywy pojawiają się w dużych odległościach od siebie i stanowią niewielką część pliku. Komentarze umieszczone w pliku konfiguracyjnym są podstawową dokumentacją programu. Opisują ono szczegółowo każdą dyrektywę. Opis zawiera dopuszczalne wartości, ich znaczenie oraz wartość domyślną. Ta ostatnia jest używana o ile nie podano żadnej wartości. Skrajną formą pliku konfiguracyjnego może być zatem plik pusty lub składający się wyłącznie z komentarzy. Zwykle pozostawienie wartości domyślnych jest dobrym rozwiązaniem. Wpisy konfiguracyjne składają się z dyrektywy (tagu) i wartości. Ta druga jest zwykle pojedynczą wartością liczbową lub tekstową. Dyrektywy pisane są zwyczajowo małymi literami, a poszczególne słowa rozdzielane są znakiem podkreślenia. Plik konfiguracyjny jest płaski, tzn. nie ma żadnych sekcji czy zagnieżdżeń. Przykładowo: Dyrektywa, która pozwala określić port, na którym nasłuchiwać będzie serwer to http_port. Domyślną wartością jest 3128. Dyrektywa ma postać: http_port 3128 Kontrola dostępu listy kontroli dostępu. Mechanizm kontroli dostępu służy do: ograniczania możliwości korzystania z serwera przez komputery spoza naszej sieci ograniczania dostępu do części stron WWW w określonych porach najczęściej godzinach pracy/zajęć, lub do stron o określonych, niepożądanych treściach. Kontrola dostępu opiera się na pojęciu listy dostępu. Definicja listy dostępu ma postać: lub acl nazwa typ wartości acl nazwa typ plik W drugim przypadku wartości odczytywane są z podanego pliku. Nazwa służy do nadania jednoznacznego identyfikatora danej liście. Będzie on używany w dalszej części do odwoływania się do listy.

Bezpieczny Internet 12 Typ jest jedną z kilkunastu wartości. Najważniejsze, wraz z dopuszczalnymi wartościami, zostały zebrane w tabeli. src <adres_ip>/<maska> dst <adres_ip>/<maska> dstdomain <domena> dstdom_regex <wyrażenie> url_regex <wyrażenie> time <dzień> <gg:mm>- <gg:mm> Adres źródłowy. Maska może być podana w postaci długości prefiksu lub czterech wartości dziesiętnych. Adres docelowy. Poprzedzona kropką końcówka domeny. Domena określona wyrażeniem regularnym. URL określony wyrażeniem regularnym. Dzień i godzina. Dzień powinien być wyrażony jako ciąg liter ze zbioru: M poniedziałek, T wtorek, W środa, H czwartek, F piątek, A sobota, S niedziela. Zdefiniowane w ten sposób listy dostępu mogą być wykorzystane w dyrektywie http_access. Pozwala ona albo zaakceptować połączenie albo je odrzucić. Ma ona postać: http_access typ lista_nazw Pole typ może zawierać jedną z dwóch wartości: allow lub deny. Pierwsza powoduje przyjęcie, a druga odrzucenie żądania. Dalej następuje lista nazw list dostępu. Każda z nich może być poprzedzona wykrzyknikiem powodującym jej zanegowanie. Specjalną wartością, którą można tu umieścić jest all. W tej postaci każda dyrektywa oznacza regułę. Kryterium jest tutaj koniunkcją (logiczne i ) warunków określonych w listach dostępu. Reguły przetwarzane są w kolejności, w której występują w pliku. Zastosowanie ma pierwsza, do której pasuje przetwarzane żądanie. Aby uniknąć nieoczekiwanego działania należy zawsze na końcu podać regułę akceptującą lub odrzucającą wszystko. Transparentne proxy Konstrukcja transparentnego proxy wymaga odpowiednich reguł zapory sieciowej. Zwykle wykorzystuje się cel REDIRECT, który przekierowuje pakiety na wskazany przez administratora port (por. Wymuszenie Użycia). Na tym porcie musi nasłuchiwać SQUID z następującymi wpisami w konfiguracji:

wersja <= 2.5 (Ubuntu 6.06) #przyspieszanie ma dotyczyć wszystkich serwerów, a nie wskazanego httpd_accel_host virtual # przyspieszane serwery nasłuchują na porcie 80 httpd_accel_port 80 # SQUID może pełnić nadal funkcje zwykłego serwera proxy httpd_accel_with_proxy on # faktyczny serwer docelowy może być określany przez pole Host: żądania HTTP httpd_accel_uses_host_header on wersja >= 2.6 (FC6) Bezpieczny Internet 13 http_port 8080 transparent Wszystkie wymienione tu dyrektywy odpowiadają za konfigurację SQUIDa, jako serwera przyspieszającego. Są one wymagane, aby serwer mógł w pełni udawać pełnoprawne serwery HTTP. Tworzymy ACL-e Za pomocą SQUID-a można filtrować adresy adresy HTTP jest to dość proste i mało kosztowne (w sensie nie obciąża zbytnio systemu), ale też i mało skuteczne, z drugiej jednak strony nadaje się do usuwania reklam (mają ad w nazwie). acl-e będą na tyle skuteczne, na ile dobre wyrażenie regularne dopasowujące adresy napiszemy.

squid.conf: Bezpieczny Internet 14 #Port, na którym nasłuchuje squid. http_port 3128 #Jeżeli nasz serwer nie ma poprawnego wpisu w DNS-ie (a serwer w sieci lokalnej zazwyczaj nie ma), musimy podać poniższy parametr. Jest on używany głównie w komunikatach diagnostycznych. visible_hostname serwer #... #W sekcji: # TAG: acl # Defining an Access List #Kolejność acl-i nie ma znaczenia. #Dodajemy acl obiekt, który dopasuje wszystkie komputery z sieci lokalnej: acl moja_siec src 10.0.2.0/24 #Blokowanie komunikatorów (gg) #Acl, który dopasuje adresy serwerów GG (oraz port używany przez gg): acl gg_port port 8074 acl gg_net dst 217.17.41.80/255.255.255.240 #Acl określający plik z listą domen (które następnie zablokujemy odpowiednią regułą). #acl blokowane "/etc/squid/blokowane.txt" #Acl określa maksymalną ilość jednoczesnych połączeń od jednego klienta. Jest to dość robra metoda ograniczenia funkcjonalności programów p2p, które otwierają bardzo dużo połączeń na raz (blokowanie standardowych portów p2p sprawia, że połączenia przechodzą przez serwer proxy, jeżeli połączeń jest zbyt dużo użytkownik zablokuje sobie dostęp do innych usług.). acl za_duzo_pol maxconn 50 #W sekcji: # TAG: http_access #... # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS #Kolejność reguł ma znaczenie. Przetwarzanie dla danego obiektu kończy sie na pierwszej dopasowanej. #Blokuje GG. http_access deny gg_net http_access deny gg_port #Ogranicza ilość jednoczesnych połączeń z jednego adresu. http_access deny za_duzo_pol moja_siec

Bezpieczny Internet 15 #Blokuje dostęp do stron www (należy zdefiniować odpowiedni acl powyżej i odkomentować). #http_access deny blokowane #Pozwoli komputerom w sieci lokalnej na dostęp do wszystkich adresów. http_access allow moja_siec all #... /etc/squid/blokowane.txt (w przypadku użycia opisanego wyżej przykładowego acl-a):.wp.pl playboy.com Plik nie może zawierać komentarzy, jest w nim lista domen jedna na linijkę..wp.pl dopasuje się do cokolwiek.wp.pl, a playboy.com tylko do playboy.com (do www.playboy.com już nie). Dobre rozwiązanie kontroli treści powinno jednak zaglądać do danych transportowanych w filtrowanych pakietach. SQUID, sam z siebie, nie umożliwia tego. Z pomocą przychodzi program dansguardian. Analizowanie treści stron Czyli przetwarzamy zawartość pakietów protokołu http. Co można zyskać: parsować teksty (w miarę proste) i szukać w nich niepożądanych słów kluczowych analizować obrazki to już bardziej złożone a co z resztą? (flash, filmy, dźwięki, java, active-x) -> można po prostu zabronić (co może być zbyt radykalne), lub zezwolić (obiekty, ze stron, do których dostęp został zabroniony i tak zostaną zablokowane).

Bezpieczny Internet 16 Jak to działa? Dansguardian jest programem pośredniczącym pomiędzy użytkownikiem a właściwym serwerem proxy (w tym przypadku squid). Jeżeli w zasobie, do którego dostępu żąda użytkownik, zostaną wykryte treści dotyczące pornografii, lub przemocy (lub inne zdefiniowane przez administratora) zapytanie zostanie przekierowane na stronę z informacją z zablokowaniu. Instalacja Ubuntu 6.06 Dansguardian dostępny jest w dystrybucji. W pliku /etc/apt/sources.list należy odkomentować linie: ## Uncomment the following two lines to add software from the 'universe' ## repository. ## (...) deb http://pl.archive.ubuntu.com/ubun tu/ dapper universe deb-src http://pl.archive.ubuntu.com/ubun tu/ dapper universe A następnie wykonać polecenia: aptitude update aptitude install dansguardian Program dansguardian w dystrybucji Ubuntu zawiera od razu wsparcie dla programu antywirusowego (dzięki czemu, można od razu sprawdzać pliki FC6 W dystrybucji nie ma pakietu z programem dansguardian. Można pobrać go ze strony oficjalnej programu: http://dansguardian.org/ (lub link bezpośrednio do najnowszych rpm-ów: http://dansguardian.org/download s/2/stable/fedoracore4/ ). Najnowsze pakiety przygotowane są dla dystrybucji Fedora Core 4, ale działają bez problemów także w FC6. Na oficjalnej stronie znajdują się też pakiety dla innych dystrybucji. Po pobraniu pakietu należy go zainstalować: rpm -ihv dansguardian-2.8.0.6-1.fc4.i386.rpm oraz ewentualnie zainstalować odpowiednie pakiety dla spełnienia zależności (w instalacji FC6 'z pudełka' wszystkie już są).

pobierane przez użytkownika). Program pobierany z oficjalnego repozytorium Ubuntu jest licencjonowany na GPL, więc nadaje się do dowolnych zastosowań (prywatnie, w szkole oraz w firmie). Konfiguracja dansguardian.conf: Bezpieczny Internet 17 Wersja oficjalna nie posiada wsparcia dla programu antywirusowego. Dansguardian pobierany z oficjalnej strony programu, lub z jej mirrorów jest licencjonowany jako dozwolony do użytku prywatnego, lub przez instytucje edukacyjne i rządowe (szczegóły na stronie www programu). Takiego programu nie możemy legalnie używać w firmie (chyba, że zapłacimy za licencję), ale licencja mówi też, że jeżeli ktoś pobrał program Dansguardian do użytku prywatnego, jest on dla niego dostępny na licencji GPL (czyli może go rozdawać i jest wolny dla wszystkich zastosowań). Więc możemy używać dansguardiana w firmie, jeżeli nie pobraliśmy go ze strony oficjalnej (ale zrobił to ktoś inny, do celów prywatnych a potem na m udostępnił tak na przykład działa licencja w Ubuntu). #Język komunikatów o zablokowaniu zasobu. language = 'polish' #Port na którym nasłuchuje dansguardian (port 8080 to tradycyjnie proxy) filterport = 8080 #Adres ip serwera proxy. W naszej konfiguracji jest to adres pętli zwrotnej (tego komputera) proxyip = 127.0.0.1 #Port na którym nasłuchuje serwer proxy (patrz odpowiednia dyrektywa w pliki konfiguracyjnym squid-a) proxyport = 3128 Dodatkowo, jeżeli używamy wersji ze wsparciem dla antywirusa, należy go skonfigurować. Najpopularniejszym otwartym programem antywirusowym jest clamav, poniżej przykładowa konfiguracja:

dansguardian.conf: Bezpieczny Internet 18 #Włączamy skanowanie zawartości virusscan = on #Ustalamy program antywirusowy virusengine = 'clamav' #Plik gniazda (socket), używany do połączenia z działającym clamd. clamdsocket = '/var/run/clamav/clamd.ctl' clamd.conf: #To jest plik konfigurujący program antywirusowy, ustawiamy plik gniazda, na którym nasłuchuje clamav. LocalSocket /var/run/clamav/clamd.ctl Dansguardian zaraz po zainstalowaniu jest bardzo restrykcyjny, przez co za bardzo ogranicza funkcjonalność www. Dokładniejsze skonfigurowanie polega na: załadowaniu do programu list kontroli dostępu (do pobrania z internetu) przeanalizowaniu plików konfiguracyjnych i ewentualnym spersonalizowaniu ustawień. Lista blokowanych adresów (blacklist). Do pobrania ze strony: http://urlblacklist.com Jest to komercyjna lista (firma zarabia na zbieraniu adresów). Można ją pobrać jeden raz za darmo (nie ma konieczności rejestrowania się). Link bezpośrednio do pobierania (skompresowane pliki tekstowe, archiwum ma około 18MB): http://urlblacklist.com/cgibin/commercialdownload.pl?type=download&file=bigblacklist Lista blokowanych słów (phraselist). Do pobrania ze strony: http://contentfilter.futuragts.com/phraselists/ Darmowa. Poprawia jakość filtrowania. Link bezpośredni (55kB): http://contentfilter.futuragts.com/phraselists/phraselistsmay31.ta r.gz Instalacja list dostępu Przy założeniu, że opisane wyżej pliki zostały pobrane do katalogu domowego użytkownika 'user'. Instalujemy jako root, wydając następujące polecenia: su - cd /etc/dansguardian tar -xzvf ~user/phraselistsmay31.tar.gz cd /etc/dansguardian tar -xzvf ~user/bigblacklist.tar.gz

Bezpieczny Internet 19 Należy pamiętać o okresowej aktualizacji list (strony w Internecie zmieniają się!). Konfiguracja blokowania: Szczegółowe aspekty pracy filtrów są ustalane w plikach znajdujących sie w katalogu /etc/dansguardian. Każdy z plików może zawierać dyrektywy.include<plik> załączające treść innego pliku. bannedphraselist zawiera wyrażenia, których pojawienie się na stronie sugeruje treści niedozwolone. Aby zablokować wszystkie strony zawierające słowo 'sex' należy dopisać < sex > (zablokuje to także strony zawierające frazę 'bezpieczny sex'). bannedextensionlist zawiera listę rozszerzeń plików, których użytkownik nie może pobierać. bannedsitelist i bannedurllist zawierają odpowiednio listy zabronionych domen i listy zabronionych url-i 2. Domyślnie wszystkie wpisy są wyłączone, ponieważ możemy ich użyć tylko po zainstalowaniu blacklisty. Konfiguracji dokonujemy odkomentowując odpowiednie linijki, np (w pliku: bannedurllist):.include</etc/dansguardian/blacklists/mail/urls> spowoduje, że użytkownicy nie będą mogli czytać poczty przez internet..include</etc/dansguardian/blacklists/gambling/domains> spowoduje, że użytkownicy nie dostaną sie na strony związane z hazardem (w tym na przykład na lotto.pl) Lista wszystkich kategorii znajduje się w pliku: blacklists/categories jest ich 58, włączenia blokowania wpisów z KATEGORIA dokonujemy dodając linijki:.include</etc/dansguardian/blacklists/kategoria/urls> i:.include</etc/dansguardian/blacklists/kategoria/domains> do odpowiednich plików. exceptionphraselist zawiera listę wyjątków od blokowanych stron. dopisanie w tym miejscu < bezpieczny sex > pozwoli oglądać strony zawierające tę frazę, nawet jeżeli zablokowano 'sex'. exceptionsitelist i exceptionurllist zawierają analogiczne wyjątki dla blokowanych stron i url-i. pics definiuje blokowanie pojedynczych obrazków na podstawie oznaczeń ustawionych przez webmasterów (jest to działanie jedynie wspomagające, takim oznaczeniom nie można ufać) 2 Blokowana domena (sitelist) jest dopasowywana tylko do nazwy serwera: np..playboy.com natomiast url (urllist) jest dopasowywany do całego adresu URL np. /content/view/78/82/

Bezpieczny Internet 20 plik dansguardianf1.conf zawiera parametr: naughtynesslimit = 50 Jest to sumaryczny wynik strony w punktach wyliczany przez zsumowanie wyników z testów: na przykład strona zawierająca frazę 'sex' dostaje +20 punktów, a zawierająca 'matematyka' dostaje -20 punktów. Zalecane wartości to: 50 dla małych dzieci 100 dla starszych dzieci 160 dla młodzieży Domyślnie dansguardian skonfigurowany jest do użytku w szkole. Ustawiając filtr w firmie, należy zwracać szczególną uwagę na dopracowanie konfiguracji (zazwyczaj nie chcemy przeszkadzać pracownikom w szukaniu informacji, a tylko zabronić im oglądać treści pornograficzne i pobierać potencjalnie szkodliwe programy). Uruchamianie Po zmodyfikowaniu plików konfiguracyjnych należy wystartować odpowiednie usługi oraz zapewnić, że będą się uruchamiały automatycznie przy starcie. Wszystkie polecenia jako root: 1. Uruchamiamy skrypt ładujący firewalla: /usr/local/bin/fw.sh 2. Uruchamiamy squid-a /etc/init.d/squid stop /etc/init.d/squid start (jeżeli drugie polecenie zakończyło się sukcesem squid działa, w przeciwnym wypadku szukamy błędu najczęściej będzie to literówka w pliku konfiguracyjnym) 3a. Jeżeli używamy programu antywirusowego, należy go uruchomić: /etc/init.d/clamav-daemon stop /etc/init.d/clamav-daemon start 3b. Uruchamiamy dansguardiana /etc/init.d/dansguardian stop /etc/init.d/dansguardian start Automatyczny start (ładowanie reguł iptables przy starcie opisano wcześniej). W Ubuntu wszystkie zainstalowane W FC6 należy uruchomić program: usługi uruchamiają się automatycznie ntsysv przy starcie. i zaznaczyć usługi, które mają się uruchomić (squid i dansguardian).

Konfiguracja klienta Bezpieczny Internet 21 W podanym przykładzie, komputery klienckie mają adresy IP z puli 10.0.2.2-254. Adres bramy domyślnej to 10.0.2.1. Wymuszenie użycia serwera proxy Aby zmusić klientów do używania serwera proxy do łączenia się na zewnątrz, mamy do wyboru dwa podejścia konfiguracja przeglądarki na kliencie z jednoczesnym blokowaniem połączeń przechodzących przez serwer, na port docelowy 80. użytkownik jest zmuszony do skonfigurowania przeglądarki i ew. innych programów do używania serwera proxy (zazwyczaj i tak musi to zrobić administrator). Wady to: konieczność konfiguracji każdej maszyny klienckiej, konieczność poprawek, jeżeli użytkownik zmieni/popsuje konfigurację. wymuszenie używania klienty bez zmian, na serwerze przekierowanie pakietów przychodzących na port 80 na port, na którym słucha serwer proxy. Wady: z punktu widzenia teorii działania sieci, jest to dość nieoczywiste mieszanie warstw, oraz prowadzi do różnych nieoczywistych rozwiązań w kodzie serwera proxy (wprowadza komplikację); ponadto transparentne proxy działa tylko dla protokołu HTTP (protokół FTP jest już zbyt skomplikowany). Opisana wyżej konfiguracja squid-a pozwala mu na pracę w obu trybach jednocześnie. Przekierowanie pakietów zapewnia poniższa reguła (obecna w przedstawionym wyżej skrypcie fw.sh). iptables -t nat -A PREROUTING -i eth1 -s 10.0.2.0/24 -d! 10.0.2.1 -p tcp -- dport 80 -j REDIRECT --to-port 8080 Strona zablokowana przez system skonfigurowany według powyższego opisu.