Are you a developer? Try out the
FIREWALL
Firewall - "ściana ognia" jest terminem zaczerpniętym z konstrukcji samochodu, gdzie firewall
fizycznie oddziela silnik samochodu od pasażera.
Komputerowe firewalle są urządzeniami, które chronią sieci prywatne od części publicznej, jaką jest
Internet.
Komputer będący ,,ścianą ognia'' może być obecny tak w sieci chronionej, jak i w Internecie.
Chroniona sieć nie może być osiągalna z Internetu, podobnie jak Internet nie może być osiągalny z
chronionej sieci.
Typy firewalli
Istnieją dwa typy firewalli:
firewalle filtrujące IP
- działające na poziomie pakietów, przepuszczające tylko te pakiety, które
spełniają ustalone warunki filtrowania
serwery proxy
- serwery pośredniczące, dziłające na pozimie aplikacji, wykonujące połączenie
sieciowe za nasz komputer
Are you a developer? Try out the
Filtujące firwalle
Firewalle filtrujące działają na poziomie pakietów IP. Są zaprojektowane do kontroli przepływu,
bazując na adresie źródłowym, docelowym, porcie i typie pakietu (zawartych w każdym z pakietów).
Ten typ firewalli z odpowiednio ustawionymi regułami filtrowania jest bardzo bezpieczny.
Serwery proxy
Serwery proxy pozwalają na niebezpośredni dostęp do Internetu przez firewall.
Podczas łączenia się z proxy serwerem za pomocą specjalnego oprogramowania klienckiego startuje
on swojego klienta i dostarcza rządanych danych.
Ponieważ serwery proxy podwajają każde połączenie, możliwe jest zapisywanie każdego z nich.
Wady firewalli
Wadą filtrujących firewalli jest to, że ograniczają dostęp do twojej sieci z Internetu. Tylko usługi na
filtrowanie, których zezwolisz będą dostępne.
Na serwerach proxy użytkownicy mogą autoryzować się na firewallu i dopiero wtedy mają (z systemu
wewnątrz sieci prywatnej) dostęp do Internetu.
Poza tym nowe typy klientów sieciowych i serwerów przybywają prawie codziennie. Musimy wtedy
wynaleźć nowy sposób zezwolenia na kontrolowany ich dostęp do twojej sieci, zanim będą użyte.
Kompilacja jądra dla obsługi firawalla.
Are you a developer? Try out the
Aby nasz firewall działał, należy uaktywnić podczas kompilacji jądra następujące opcje :
* Turn Networking Support ON
* Turn Network firewalls ON
* Turn TCP/IP Networking ON
* Turn IP Firewalling ON
* Turn IP firewall packet loggin ON
* Turn IP: accounting ON
Konfiguracja zasad filtrowania adresów IP
Aby poprawnie zaprojektować nasz firewall należy zrozumieć jaką drogę pokonuje datagram IP w
czsie przechodzenia przez naszą zaporę.
Najpierw sprawdzana jest suma kontrolna datagramów
checksum
, następnie testowane są one pod
kątem deformacji
sanity
. Później pakiety przechodzą przez łańcuch wejściowy
input chain
i jeśli
trzeba podlegają procesowi
NAT
-
demasquerade
, czyli adres rutera usuwany jest z pola "adres
docelowy" i zastępowany jest adresem IP komputera w sieci prywatnej. Dalej na podstawie tablicy
rutingu
routing decision
lub protokołu rutującego podejmowana jest decyzja o dalszym losie pakietu.
Procesy lokalne
local process
mogą odbierać pakiety po etapie rutowania i wysyłać pakiety poprzez
etap rutowania i łańcuch wyjściowy
output chain
. Jeśli pakiety nie są utworzone poprzez procesy
loklne, są sprawdzane w łańcuchu przejściowym
forward chain
. Jeśli pakiety od procesów lokalnych
są przekazywane do lokalnego komputera localhosta przechodzą przez łańcuch wyjściowy do
interfejsu
lo - loopback
. Wszystkie pakiety wydostające się z komputera muszą przejść przez
łańcuch wyjściowy
output chain
.
Are you a developer? Try out the
Konfigurowanie naszego firewalla należy zacząć od stworzenia skryptu rc.firewall w katalogu
/etc/rc.d/, w którym umieścimy reguły filtrowania naszych pakietów.
W pliku /etc/rc.d/rc.local dodajemy następujący wpis
/etc/rc.d/rc.firewall
który spowoduje uruchomienie podczas startu systemu naszego skryptu .
Do konfiguracji reguł filtrowania posłużymy się programem ipchains o następującej składni dla
wybranych opcji :
ipchains -A łańcuch opcje
ipchains -R łańcuch opcje
ipchains -I łańcuch opcje
ipchains -P łańcuch cel
ipchains -F łańcuch
ipchains -D łańcuch
gdzie :
A
- dołącza jedną lub więcej reguł do końca podanego łańcucha
R
- zamienia reguły w wybranym łańcuchu
I
- wstawia jedną lub więcej reguł do określonego łańcucha
P
- ustawia politykę łańcucha wybranego celu
F
- usuwa wszystkie reguły z podanego łańcucha
D
- usuwa jedną lub więcej reguł z podanego łańcucha
Are you a developer? Try out the
łańcuch
- może przyjmować 3 parametry :
INPUT
- dla pakietów wchodzących
OUTPUT
- dla pakietów wychodzących
FORWARD
- dla pakietów maskowanych
cel
- każda reguła ściany ogniowej określa kryteria dotyczące pakietu i celu .
Jeśli pakiet nie pasuje do danej reguły, to sprawdzana jest następna w danym łańcuchu . Jeśli pakiet
pasuje, wtedy następna regułka jest określana przez wartość celu, która przyjmuje następujące
wartości :
ACCEPT
- należy przepuścić pakiet
DENY
- należy pakiet odrzucić
REJECT
- działa podobnie, jak
DENY
wysyłając dodatkowo do nadawcy komunikat zwrotny ICMP
informujący go, że pakiet nie został przyjęty
MASQ
- jest właściwy tylko dla łańcuchów przekazywanych - forwardingu
opcje
- może przyjmować następujące wartości :
s
- określa źródła, którymi mogą być : nazwa usługi, numer portu, adres IP i maska hosta lub sieci
d
- określa miejsce przeznaczenia i ma taką samą postać jak opcja -s
Are you a developer? Try out the
p
- dzięki tej opcji możemy wskazać bezpośrednio na interesujący nas port
j
- określa cel reguły, który należy spełnić, jeśli pakiet spełnia podane w regule kryteria
i
- wskazuje nazwę interfejsu sieciowego, na który będą przychodzić pakiety podlegające weryfikacji
w danej regule
Na samym początku należy usunąć wszystkie reguły dotyczące filtrowania pakietów wejściowych :
ipchains -F input
Ustawiamy politykę dla wybranych łańcuchów :
ipchains -P input ACCEPT
ipchains -P output ACCEPT
ipchains -P forward DENY
Każda nowa reguła będzie tworzona w oparciu o podany schemat :
ipchains [-A/-I] [input/output] -p [protokół] -s [źródło] [nr portu] -d
[cel] [nr portu] -j [DENY/ACCEPT] -i [interfejs]
Ustawianie reguł zaczynamy od stworzenia doskonałego firewalla, blokującego wszystkie porty dla
pakietów przychodzących z zewnątrz na interfejs ppp0 :
Are you a developer? Try out the
ipchains -A input -p tcp -s 0/0 1:65535 -d 192.168.0.1/24 1:65535 -j DENY
-i ppp0
Dla odblokowania usługi WWW tworzymy nową regułę :
ipchains -I input -p tcp -s 0/0 1024:65535 -d 192.168.0.1/24 WWW -j ACCEPT
-i ppp0
Dla odblokowania usługi FTP adekwatnie do poprzedniej tworzymy regułę :
ipchains -I input -p tcp -s 0/0 1024:65535 -d 192.168.0.1/24 FTP -j ACCEPT
-i ppp0
Nasz firewall możemy również wykorzystać do administrowania dostępem do internetu.
Jeśli chcielibyśmy zabronić komputerowi z naszej sieci o adresie 192.168.0.2 dostępu do internetu
należy stworzyć regułę w postaci :
ipchains -I input -p tcp -s 192.168.0.2/32 1024:65535 -d 0/0 WWW -j REJECT
-i eth0
eth0 - jest interfejsem sieciowym łączącym nasz serwer z siecią prywatną.