Iptables

Transkrypt

Iptables
Zarządzanie bezpieczeństwem w sieciach
Zarządzanie bezpieczeństwem w sieciach
Router programowy z firewallem oparty o iptables
Celem ćwiczenia jest stworzenie kompletnego routera (bramki internetowej), opartej na
iptables. Bramka umożliwiać ma nie tylko dostęp do sieci komputerom będącym w sieci
wewnętrznej, ale także zapewniać ma podstawową ochronę tej sieci przed atakami intruzów
(firewall).
1. Skonfiguruj sieć według poniższego rysunku:
Klienci sieci wewnętrznej mogą być zarówno komputery, będące pod kontrolą systemów
Windows, jak i Linux, natomiast bramkę stanowi komputer pracujący pod kontrola
systemu Linux. Pamiętaj także o dodaniu adresu bramki oraz serwerów DNS do
konfiguracji klientów. Sprawdź, czy tak skonfigurowana sieć działa (za pomocą polecenia
ping.)
1.1 Skonfiguruj bramkę, aby miała dostęp do Internetu.
2. Na komputerze – bramce stwórz plik o nazwie firewall i nadaj mu prawa
wykonywania.
2.1 W pliku firewall umieszczony będzie skrypt odpowiedzialny zarówno za routing jak
i za filtrowanie pakietów. Pierwszym krokiem jest wyczyszczenie tablic iptables.
Można to zrobić za pomocą następujących poleceń:
mgr inż. Łukasz Jopek, Katedra Informatyki Stosowanej PŁ
Zarządzanie bezpieczeństwem w sieciach
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
Teraz można przystąpić do budowy firewalla, wcześniej jednak należy włączyć
przekazywanie pakietów, aby umożliwić routing.
echo "1" > /proc/sys/net/ipv4/ip_forward
Firwall “doskonały” – nie przepuszcza żadnych pakietów, co można osiągnąć stosując
polecenia:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
Powyższe polecenia sprawiają, że wszystkie pakiety zostają porzucone.
Zapisz skrypt i sprawdź, czy rzeczywiście nie ma dostępu ani z zewnątrz sieci ani do
wewnątrz. Zobacz jak wygląda teraz konfiguracja firewalla za pomocą polecanie
iptables - L
2.2 Udostępnianie wybranych usług na komputerze-bramce:
Ponieważ firewall w tym momencie nie przepuszcza żadnych pakietów, jest więc
nieużyteczny. W tym kroku odblokowane zostaną wybrane usługi – tylko te, z których
będziemy chcieli korzystać, reszta nadal będzie blokowana.
Akceptujemy pakiety IMCP z lokalnej maszyny:
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
Uruchom ponowie skrypt i sprawdź, czy możliwa jest komunikacja za pomocą protokołu
IMCP z komputerami wewnątrz i na zewnątrz sieci. Użyj ponownie polecenia
iptables –L
Co się zmieniło?
Czy możliwe jest uzyskane połączenie z dowolną maszyna z sieci zewnętrznej:
a) z komputera z sieci wewnętrznej?
b) z komputera-bramki?
Akceptujemy pakiety WWW
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
mgr inż. Łukasz Jopek, Katedra Informatyki Stosowanej PŁ
Zarządzanie bezpieczeństwem w sieciach
Akceptujemy pakiety ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
Akceptujemy pakiety poczty wychodzącej (smtp)
iptables -A INPUT -p tcp --sport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
Akceptujemy pakiety poczty przychodzącej (pop3)
iptables -A INPUT -p tcp --sport 110 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT
Akceptujemy pakiety DNS
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
W ten sposób odblokowaliśmy usługi takie jak WWW, DNS, pocztę elektroniczną (protokoły
SMTP i POP3) na komputerze-bramce. Analogicznie można udostępnić inne usługi.
iptables -A INPUT -p tcp --dport 8010 -j ACCEPT -m state --state NEW
iptables -A FORWARD -p all -i Adres_WAN -o Adres_LAN -m state --state
ESTABLISHED,RELATED -j ACCEPT
Na koniec wpuszczamy tylko nawiązane i spokrewnione połączenia (dla wszystkich
protokołów)
2.3 Forwardowanie pakietów.
Forwardowanie pakietów do komputerów znajdujących się wewnątrz sieci powoduje, ze cały
ruch sieciowy, który związany jest z komputerami w Siecie wewnętrznej niejako tylko
„przechodzi” przez bramkę. Z drugiej strony nadal mamy możliwość filtrowania tego ruchu.
dla karty z ip 192.168.65.1
iptables -t filter -A FORWARD -s 192.168.65.1/255.255.255.0 -d 0/0 -j ACCEPT
iptables -t filter -A FORWARD -s 0/0 -d 192.168.65.1/255.255.255.0 -j ACCEPT
iptables -t filter -A INPUT -j ACCEPT
ustawienie nat i maskarady. W tym przypadku dla eth0 (interfejs WAN)
iptables -t nat -A POSTROUTING –o eth0 -j MASQUERADE
Uruchom skrypt i sprawdź, czy komputery z sieci wewnętrznej mają dostęp do sieci
zewnętrznej. Można to zrobić za pomocą protokołu IMCP jak również za pomocą
przeglądarki lynx (linux) czy IE (windows).
2.4 Przekierowanie portów
mgr inż. Łukasz Jopek, Katedra Informatyki Stosowanej PŁ
Zarządzanie bezpieczeństwem w sieciach
Przekierowanie portów (ang. port forwarding, port redirection) – przekierowanie pakietów
z sieci zewnętrznej (np. Internetu), przychodzących na określony port serwera, do innego
komputera w sieci lokalnej. Forwardowane mogą być protokoły TCP, UDP i inne.
W zależności od implementacji i używanego narzędzia przekierowanie pakietów następuje
domyślnie na te same porty do maszyny wewnątrz sieci lokalnej, bądź są one zmieniane na
inne.
Umożliwia komputerom spoza sieci wewnętrznej (LAN) połączyć się z komputerem stojącym
za bramą (np. w strefie zdemilitaryzowanej - DMZ). Przekierowanie portów stosowane jest
w razie konieczności łączenia się z zewnątrz z komputerami w sieci wewnętrznej (np. gdy
użytkownik chce stworzyć serwer na swoim komputerze, podłączonym do sieci poprzez
mechanizm maskarady). Jest to standardowa opcja dostępna w większości routerów.
iptables -t nat -I PREROUTING -p tcp -i eth0 -d 0/0 --dport port -j DNAT --to Adres_wewnetrzny
iptables -t nat -I PREROUTING -p udp -i eth0 -d 0/0 --dport port -j DNAT --to Adres_wewnetrzny
Powyższy przykład ilustruje przykład przekierowania portu „port” do komputera znajdującego się w
sieci wewnętrznej, o adresie „Adres_wewnętrzny”.
Korzystając z tego przykładu przekierujemy następujące porty :
a) Dla komputera o adresie 192.168.65.2 przekieruj port 433 (TCP) (port wykorzystywany przez
„Skype” do transferu plików.)
b) Dla komputera o adresie 192.168.65.3 przekieruj porty 4662 (TCP) i 4672 (UDP) (porty
wykorzystywane przez „Emule”)
2.5 Ochrona przed skanowaniem portów oraz wybranymi atakami sieciowymi.
a) Ochrona przed atakiem typu „Ping of death”
Ping of death – sposób ataku za pomocą wysłania zapytania ping (ICMP Echo Request) w
pakiecie IP o rozmiarze większym niż 65535 bajtów.
Atak :
ping -l 65510 <adres ip>
Powyższe polecenia wykonać można z poziomu systemu windows 98/NT, oraz niektórych
dystrybucji systemu linux, obecnie, w wielu systemach operacyjnych nie można wykonać
takiego polecenia za pomocą wbudowanej implementacji polecenia ping.
Do 65510 bajtów dodany zostanie nagłówek IP (20 bajtów) i zapytanie ICMP Echo Request
(8 bajtów). Może to spowodować awarię atakowanego systemu lub zawieszenie działającej na
nim aplikacji.
Ochrona :
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
mgr inż. Łukasz Jopek, Katedra Informatyki Stosowanej PŁ
Zarządzanie bezpieczeństwem w sieciach
b) Ochrona przed atakiem “Syn-flood”
Atak ten polega na tym, iż komputer (często jest to serwer) odpowiada na pakiety SYN
atakującego ale nie otrzymuje pakietów ACK. Powoduje to, że zwykły użytkownik nie
otrzymuje odpowiedzi na swoje żądanie.
Atak :
Atak polega na wysyłaniu dużej ilości pakietów z ustawioną w nagłówku flagą synchronizacji
(SYN) i najczęściej ze sfałszowanym adresem IP nadawcy (IP spoofing).
Ochrona :
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
Powyższa reguła powoduje, że na pakiety z ustawiona flagą SYN nałożony zostanie limit
czasowy, co spowoduje, ze atakowany serwer (tutaj zakładamy, że znajduje się on w sieci
wewnętrznej) nie zostanie zablokowany przez fałszywe pakiety SYN, ponieważ tylko ich
część będzie docierała do celu, co nie powinno spowodować zablokowania systemu.
c) Ochrona przed atakiem IDENT i SOCK SCANNING
Atak polega na nawiązywaniu pełnego połączenia TCP i próbie ustalenia, poprzez protokół
ident, właściciela procesu na danym porcie. Jeśli właścicielem jest root, można próbować
ataku na ten właśnie port.
Ochrona :
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -p tcp --dport 1080 -j REJECT --reject-with icmp-port-unreachable
Reguła powoduje, że odrzucamy przychodzące zapytania o IDENT i SOCKS z odpowiedzią
port nieosiągalny.
2.4 Używając programu nmap sprawdzić otwarte porty w dostępnych w pracowni
komputerach. Należy wykorzystać przede wszystkim skanowania TCP connect, TCP
SYN, TCP ACK, TCP FIN, TCP XMAS, TCP NULL oraz bardziej rozbudowanych
profili skanowania dostępnych w programie nmap.
2.4.1 Skanowanie portów komputera działającego pod kontrolą systemu Windows należy
wykonać z komputera z zainstalowanym systemem Linux używając konsoli.
2.4.2 Skanowanie portów komputera działającego pod kontrolą systemu Linux należy
wykonać z komputera z zainstalowanym systemem Windows używając interfejsu
graficznego.
3. Konfiguracja Firewalla systemowego w systemie Windows XP
System Windows XP posiada wbudowany firewall, podstawowa konfiguracja firewalla
może wyglądać następująco :
mgr inż. Łukasz Jopek, Katedra Informatyki Stosowanej PŁ
Zarządzanie bezpieczeństwem w sieciach
Zapora systemu Windows (Windows Firewall) posiada trzy tryby pracy:
•
•
•
Włącz (zalecane) - jest to domyślny tryb i zalecany podczas normalnej pracy, gdzie jest
uwzględniona lista wyjątków.
Włącz wraz z opcją "nie zezwalaj na wyjątki" - tryb przeznaczony w czasie różnych zagrożeń
np. praca naszego komputera w obcej sieci. Nie jest tu uwzględniania lista wyjątków.
Wyłącz (nie zalecane) - całkowicie wyłączenie zapory.
Możemy tutaj zauważyć że domyślnie jest włączony wyjątek "Udostępnianie plików i
drukarek. Domyślnie jest też włączony wyjątek "Pomoc zdalna", który się odnosi do danej
aplikacji.
1. Uruchamiamy firewalla na połączeniu lokalnym.
2. Wybieramy zakładkę „wyjątki”. Tutaj dodać można tzn wyjątki, czyli porty wraz z
protokołem (TCP/UDP), które chcemy, aby pozostały otwarte. M ożna uczynić to na
dwa sposoby :
- przypisywać konkretna aplikację – wtedy firewall automatycznie zezwoli na
transmisję na dowolnym porcie, którego zaradza aplikacja, jest to wygodne, gdy
aplikacja pracuje na wielu portach lub wybiera je losowo (np. niektóre gry
komputerowe.) – wybieramy wtedy opcje „dodaj program”, można także ustalić
źródło, z którego pochodzić mogą pakiety : sieć LAN czy adres IP.
- Otworzyć konkretny port - wybieramy wtedy opcję „dodaj port”.
Do prawidłowego działania w otoczeniu sieciowym system musi mieć otwarte poniższe
porty:
•
•
•
port: 137, protokół: UDP, opis: NETBIOS Name Service (137 UDP)
port: 138, protokół: UDP, opis: NETBIOS Datagram Service (138 UDP)
port: 139, protokół: TCP, opis: NETBIOS session service (139 TCP)
opcjonalnie (nie wymagane w wielu sieciach):
•
port: 445, protokół: TCP, opis: Distributed File System (445 TCP) odpowiedzialny
za DFS - Rozproszony system plików.
Zatem skonfiguruj firewall tak ,aby prawidłowo działał w otoczeniu sieciowym.
Następnie można przejść do zakładki "Protokół ICMP" i włączyć "Zezwalaj na przychodzące
żądania echa", dzięki czemu Windows odpowie na ping.
Zakładka "Rejestrowanie zabezpieczeń", w której można włączyć opcje rejestrowania do
pliku o odrzuconych i udanych połączeniach znajduje się powyżej zakładki "Protokół ICMP".
Pozwala ona na zdefiniowanie pliku, w którym zapisywane maja zostać zdarzeń, jego
wielkości maksymalnej oraz możemy zdecydować, czy zapisywane mają być połączenie
odrzucone i/lub zakończone sukcesem.
mgr inż. Łukasz Jopek, Katedra Informatyki Stosowanej PŁ
Zarządzanie bezpieczeństwem w sieciach
Zakładka „Rejestrowanie zabezpieczeń”.
Zaznacz opcje „Rejestruj porzucone pakiety”, zablokuj dostęp do wybranej usługi (lub po
prostu danego portu), a następnie z innego komputera spokój nawiązać połączenie na tym
porcie (np. za pomocą polecenia telnet), a następnie obedrzyj zawartość dziennika. To samo
zrób dla opcji „Rejestruj udane połączenia”.
3. Korzystając z zakładki „wyjątki” otwórz port 25 (protokół TCP, dla komputera z POZA
sieci, adres może być fikcyjny), a następnie prób za pomocą polecenie telnet spróbuj
nawiązać połączenie na tym porcie. Następnie sprawdź zawartość pliku z rejestrem połączeń.
4. Odblokuj następujące porty:
- port 53, protokół UDP, usługa DNS
- port 443, protokół TCP, usługa HTTPS
- port 103, protokół TCP, POP3
- port 25, protokół TCP, SMTP
- port 22, protokół TCP, usługa SSH
- port 67, protokół UDP, usługa DHCP
mgr inż. Łukasz Jopek, Katedra Informatyki Stosowanej PŁ

Podobne dokumenty