so:firewall [mgr Wiki]

[[so:firewall]]
mgr Wiki

Pytanie: “Linie obrony stosowane w systemach UNIX (firewall, ipchains, iptables)”

# Firewall

Zapora sieciowa czyli konstrukcja zapewniająca kontrolowane połączenie pomiędzy siecią prywatną i Internetem (siecią publiczną).

Podstawowe funkcje, które powinna spełniać zapora sieciowa to:

- a) zapewnienie „bezpiecznego” dostępu do Internetu użytkownikom sieci prywatnej,
- b) zapewnienie ochrony zasobów sieci prywatnej przed atakami z zewnątrz.

Zapory sieciowe stosowane w linuxie:

- Kernel 1.1.X – ipfw – Alan Cox, 1994
- 2.0.X – ipfwadm – Jos Vos, 1996
- 2.2.X - ipchains – Paul „Rusty” Russell, Michael Neuling, 1998
- 2.3.15 – 2.6.X – netfilter (iptables) – Paul „Rusty” Russell, od 1999

## Ipchains

Ipchains jest używany do ustawiania, podtrzymywania i przeglądania reguł zapory ogniowej w jądrze Linuksa. Te reguły możemy podzielić na 4 różne kategorie:

- łańcuch wejściowy (IP input chain)
- łańcuch wyjściowy (IP output chain)
- łańcuch przekazowy (IP forwarding chain)
- łańcuchy zdefiniowane przez użytkownika.

Dla każdej z kategorii utrzymywana jest oddzielna tabela reguł, z których każda może odnosić się do jakiegoś łańcucha reguł zdefiniowanego przez użytkownika.

Reguła ścianki ogniowej określa kryteria dotyczące pakietu i celu. Jeśli pakiet nie pasuje do danej regułki, 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 może być nazwą łańcucha zdefiniowanego przez użytkownika albo też jedną ze specjalnych wartości:

- ACCEPT - przpuścić pakiet

- DENY - odrzucić
- REJECT - odrzuca i wyysyła komunikat zwrotny ICMP informujacy nadawce o odrzuceniu

- MASQ - (tylko łańcuchy przekazowe i zdef. przez użytkownika) maskuje pakiety wychodzące lub przechodzące przez maszynę. Adres nadawcy zostaje podmieniony na adres maszyny lokalnej. Pakiety zwrotne, stanowiące odpowiedź na nie są automatycznie rozpoznawane i “demaskowane” z pominięciem łańcucha przekazowego.
- REDIRECT - (tylko łąńcuchy wejściowe i zdef. przez użytkownika)pakiety przekierowywane do lokalnego gniazda, nawet jeśli były one skierowane do odległej maszyny. Jeśli podany jest port przekierowania 0, który jest domyślną wartością to port docelowy pakietu będzie użyty jako port przekierowawczy
- RETURN - powoduje sprawdzenie następnej regułki w poprzednim (wywołującym) łańcuchu

Jeśli osiągnięty zostaje koniec wbudowanego łańcucha, albo też wystąpi reguła z celem o nazwie RETURN to dalszy los pakietu zależy od celu określonego przez politykę łańcucha.

Za pomocą odpowiednich komend(add, delete, instert...) i opcji można określić specyficzne działanie które ma być dokonane na łańcuchu reguł.

## Iptables(netfilter)

Narzędzie (tzw. user space tool) pozwalające administratorowi systemu na zarządzaniu regułami filtrowania, przekazywania oraz maskowania pakietów. Za bezpośrednią manipulację pakietami odpowiada infrastruktura odpowiednich mechanizmów zawarta w jądrze systemu. Netfilter został włączony do jądra Linuxa 2.3.

Zasada działania

Ipchains i ipfwadm łączyły w sobie filtrowanie pakietów i NAT. Netfilter/iptables pozwala na rozłączenie tych działań na trzy części:

- filtrowanie pakietów
- śledzenie połączenia
- translację adresów (NAT)

Rezultat: uzyskanie informacji o pakiecie już w warstwie połączenia. Iptables umożliwia przekierowywanie, modyfikowanie, zatrzymywanie pakietów na podstawie stanu połączenia a nie tylko adresów (źródłowego i docelowego) oraz zawartości samego pakietu, jak to było w ipchains. Zapora ogniowa zbudowana na bazie iptables nosi angielską nazwę stateful firewall; oparta na ipchains to stateless firewall.

Reguła, łańcuch, tabela

W celu zbadania danego pakietu netfilter/iptables wykorzystuje tzw. reguły. Jest to najmniejsza jednostka filtra netfilter. Zawiera ona zbiór warunków, jakie musi spełniać pakiet oraz akcję, która zostanie wykonana gdy warunki zostaną spełnione. Pojedyncze reguły grupowane są w łańcuchy. Zbiór łańcuchów natomiast tworzy tabelę. Istnieją trzy tabele:

1. filter domyślna tabela; filtrowanie pakietów

2. nat tabela używana przez pakiety nawiązujące połączenie; translacja adresów

3. mangle tabela służąca do modyfikacji przepływających pakietów

Każda z tabel zawiera kilka predefiniowanych łańcuchów oraz łańcuchy zdefiniowane przez administratora. Istnieją następujące predefiniowane łańcuchy:

- INPUT - wywoływany dla pakietów przybywających z sieci przeznaczonych dla lokalnej maszyny.

- FORWARD - wywoływany dla pakietów routowanych przez lokalną maszynę, lecz pochodzących spoza niej i nie przeznaczonych dla niej.

- OUTPUT - wywoływany dla pakietów tworzonych lokalnie i wychodzących poza maszynę.

- PREROUTING - wywoływany dla pakietów z zewnątrz jeszcze przed ich routowaniem.

- POSTROUTING - wywoływany dla pakietów, które właśnie opuszczają maszynę

Różne tabele dysponują różnymi wbudowanymi łańcuchami.

- Tabela filter - łańcuchy INPUT, FORWARD i OUTPUT(w przeciwieństwie do występującego w kernelach 2.2 ipchains) pakiet może znaleźć się w tylko jednym z tych trzech łańcuchów.

- Tabela nat - łańcuchy PREROUTING, OUTPUT i POSTROUTING.
- Tabela mangle - wszystkie rodzaje wbudowanych łańcuchów.

Każdy pakiet rozpoczyna swoją podróż przez filtr pakietowy w jednym z predefiniowanych łańcuchów. Łańcuch skanowany jest od góry do dołu w poszukiwaniu reguł, które będą odpowiadać sprawdzanemu pakietowi. Po napotkaniu takiej reguły, wykonywana jest jej akcja. Pozostała część łańcucha nie jest już skanowana. Wyjątkiem jest przypadek, gdy wywołany zostanie łańcuch zdefiniowany przez administratora zakończony akcją RETURN. Skanowanie rozpocznie się wtedy od kolejnej reguły od tej, która wywołała przeskok do łańcucha administratora. Jeśli pakiet opuszcza łańcuch bez wykonania żadnej akcji, wykonywana jest akcja domyślna (chain policy).

Konfiguracja reguł

Do zarządzania regułami służy polecenie iptables.

Na definicję reguły składa się dowolna ilość warunków oraz dokładnie jedna akcja. W przypadku braku warunków akcja wykonywana jest zawsze, oczywiście tylko wtedy, gdy wykonanie łańcucha dojdzie do takiej reguły. Natomiast reguła posiadająca tylko warunki, a nie posiadająca akcji, będzie używana wyłącznie do liczenia pakietów pasujących do warunków.

Najczęściej używane akcje to:

• ACCEPT - przyjmij pakiet.

• DROP - wyrzuć pakiet bez żadnego komunikatu.

• RETURN - powoduje powrót z łańcucha zdefiniowanego przez administratora do łańcucha, z którego został on wykonany.

• REJECT - odrzuca pakiet z odesłaniem komunikatu o błędzie, domyślnie ICMP port unreachable.

• MARK - oznaczenie pakietu za pomocą wartości numerycznej podanej w parametrze - -set-mark. Użyteczne w tabeli mangle. Używane zwykle dla przekazywania informacji do iproute2.

• MASQUERADE - maskuje adres nadawcy pakietu, użyteczne wyłącznie w łańcuchu POSTROUTING tabeli nat. Powinno się używać jedynie przy dynamicznie przydzielanym adresie IP.

• SNAT - zmienia adres źródłowy pakietów i zapamiętuje tą zmianę dla danego połączenia. Używane głównie do podłączania sieci LAN do Internetu przez łącze ze stałym adresem IP. Użyteczne wyłącznie w łańcuchu POSTROUTING tabeli nat. Akceptujenparametr - -to-source, wskazujący adres IP do wstawienia jako adres źródłowy - zazwyczaj IP interfejsu internetowego.

• REDIRECT - przekierowuje pakiet do lokalnej maszyny, użyteczne w łańcuchach PREROUTING i OUTPUT tabeli nat. Opcjonalny argument - -to-ports pozwala na przekierowanie połączenia na dowolnie wybrany port lokalnej maszyny.

• DNAT - zmienia adres docelowy pakietów i zapamiętuje zmianę dla danego połączenia. Używane głównie do przekazywania połączeń z interfejsu internetowego do maszyn w sieci lokalnej. Użyteczne w łańcuchach PREROUTING i OUTPUT tabeli NAT. Akceptuje parametr - -to-destination, określający adres z opcjonalnym portem docelowym (wg formatu adres:port).

so/firewall.txt · Last modified: 2006/05/20 18:16 by 62.233.163.154