Dostęp to przywilej, nie prawo.
– Nieznany admin
Czym jest iptables?
iptables to jak budowanie fortecy wokół Twojego serwera. To niskopoziomowe narzędzie do zarządzania netfilterem, czyli firewallem wbudowanym w jądro Linuksa. Innymi słowy, to mózg operacji, który decyduje o życiu lub śmierci każdego pakietu danych.
Struktura Twojej fortecy
Żeby ogarnąć iptables, musisz zrozumieć jego logikę. To trochę jak instrukcja obsługi bramkarza, która składa się z:
- Tabel (FILTER, NAT, MANGLE, RAW) – to są główne kategorie, gdzie trzymasz swoje reguły. Najczęściej używasz FILTER do decydowania, co przepuścić, a co zablokować.
- Łańcuchów (INPUT, OUTPUT, FORWARD) – to są punkty kontrolne, przez które przechodzą pakiety.
- INPUT: Co wchodzi DO Twojego serwera.
- OUTPUT: Co wychodzi Z Twojego serwera.
- FORWARD: Co przechodzi PRZEZ Twój serwer (np. jeśli działa jako router).
- Reguł (rules) – to są konkretne instrukcje, np. “jeśli pakiet TCP na port 22, to ACCEPT”.
- Celów (targets) – to jest to, co dzieje się z pakietem, który pasuje do reguły:
- ACCEPT: Wpuszczamy.
- DROP: Cicho blokujemy (pakiet znika w eterze, nadawca nic nie wie).
- REJECT: Blokujemy z informacją zwrotną (nadawca dostaje komunikat “odrzucono”).
- LOG: Zapisujemy zdarzenie do logów, ale pakiet idzie dalej (chyba że kolejna reguła go zablokuje).
Podstawowa składnia: Brama wjazdowa dla leniwych
Chcesz dodać regułę? Oto jak to wygląda w najprostszej formie:
iptables -A <łańcuch> -p <protokół> --dport <port> -j <cel>A jak “Append”, czyli dodaj na koniec łańcucha. Proste, prawda?
Podstawowe operacje: Pan i władca pakietów
Zobacz, co tam już nabroiłeś (lub nie)
Zanim zaczniesz zmieniać, zobacz obecny stan rzeczy.
# Lista wszystkich reguł. V jak verbose (więcej info), N jak numeric (liczby, nie nazwy)
iptables -L -n -v
# Z numerami linii – super do edycji i usuwania konkretnych reguł
iptables -L -n --line-numbers
# Tylko reguły dla tabeli FILTER (domyślnej, więc często pomijanej)
iptables -t filter -L -nDodawanie reguł: Wpuść swoich, zablokuj resztę
Zaczynamy od otwierania niezbędnych portów. Pamiętaj, domyślna polityka to często DROP albo REJECT, więc najpierw wpuszczamy kluczowe usługi.
# Wpuść połączenia SSH (konieczne, żebyś się nie odciął!)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Otwórz bramy dla stron www (HTTP i HTTPS)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Bardzo ważna reguła: Pozwól na już nawiązane i powiązane połączenia!
# Bez tego serwer nie będzie odpowiadał na swoje własne zapytania.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTBlokowanie: “Nie, dziękuję”
Chcesz zablokować intruza albo całą sieć? Proszę bardzo.
# Blokuj ping (ICMP). Czasem przydatne, by utrudnić rekonesans.
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# Blokuj konkretnego wścibskiego sąsiada (np. 192.168.1.100)
iptables -A INPUT -s 192.168.1.100 -j DROP
# Zablokuj całą podsieć (np. wszystkich z 192.168.1.0/24)
iptables -A INPUT -s 192.168.1.0/24 -j DROPUsuwanie: Posprzątaj po sobie
Pomyłka? Zmieniłeś zdanie? Oto jak cofnąć zmiany.
# Usuń regułę numer 1 z łańcucha INPUT (numer znajdziesz w 'iptables -L -n --line-numbers')
iptables -D INPUT 1
# Wyczyść CAŁĄ tabelę (wszystkie łańcuchy, wszystkie reguły). Używaj z ostrożnością!
iptables -F
# Resetuj politykę łańcucha INPUT na ACCEPT (domyślnie przepuszczaj wszystko)
iptables -P INPUT ACCEPTUWAGA: Zanim zablokujesz SSH do swojego serwera, upewnij się, że masz fizyczny dostęp (np. konsola, iLO/DRAC) albo inną drogę (np. VPN)! Inaczej… dobranoc. I tak, to dotyczy też pracy w chmurze – tam często tracisz połączenie na amen.
Praktyczne przykłady: Twój pierwszy, kozacki firewall
Oto przepis na solidny, podstawowy firewall.
# 1. Zaczynamy od czystej karty! Wyczyść wszystkie tabele i łańcuchy.
iptables -F # Usuń wszystkie reguły z łańcuchów FILTER
iptables -X # Usuń wszystkie niestandardowe łańcuchy
iptables -t nat -F # Wyczyść tabelę NAT
iptables -t mangle -F # Wyczyść tabelę MANGLE
# 2. Domyślna polityka: Wszystko zabronione, co nie jest dozwolone!
iptables -P INPUT DROP # Domyślnie blokuj wszystko co przychodzi
iptables -P FORWARD DROP # Domyślnie blokuj wszystko co ma być przekazane (dla routerów)
iptables -P OUTPUT ACCEPT # Domyślnie zezwól na wszystko co wychodzi (ale możesz to zmienić!)
# 3. Pozwól na ruch wewnętrzny (localhost) – inaczej nic nie będzie działać poprawnie.
iptables -A INPUT -i lo -j ACCEPT
# 4. Klucz do działania: Pozwól na kontynuowanie już nawiązanych połączeń.
# Bez tego, mimo że otworzysz port 80, serwer nie odeśle strony WWW do klienta!
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 5. SSH z limitem: Niech hakerzy się zmęczą! (Ogranicz próby połączenia SSH)
# Dodaj nową próbę połączenia SSH do listy "ostatnio widzianych"
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
# Jeśli z danego IP były 4 próby w ciągu 60 sekund – ZABLOKUJ!
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
# Jeśli wszystko powyżej przeszło (mniej niż 4 próby) – WPUŚĆ!
iptables -A INPUT -p tcp --dport 22 -j ACCEPTZapisz i przywróć: Żeby nie pisać od nowa po każdym reboocie
Reguły iptables są ulotne i znikają po restarcie! Musisz je zapisać.
# Zapisz obecne reguły do pliku
iptables-save > /etc/iptables/rules.v4
# Przywróć reguły z pliku
iptables-restore < /etc/iptables/rules.v4Pamiętaj, że w wielu dystrybucjach są narzędzia (np. netfilter-persistent czy firewalld), które automatycznie zajmują się tym po restarcie. Sprawdź swoją dystrybucję!
NAT: Zostań routerem!
Jeśli Twój serwer ma dostęp do internetu i chcesz, żeby maszyny w Twojej wewnętrznej sieci też miały, potrzebujesz NAT (Network Address Translation).
# MASQUERADE (maskarada): Dla dynamicznego IP. Zmienia adres źródłowy pakietów wychodzących na adres IP serwera.
# (-o eth0 oznacza, że dotyczy to interfejsu eth0 – wyjściowego do internetu)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# DNAT (Destination NAT): Przekierowanie portu. Np. ruch na port 80 serwera przekieruj na inną maszynę w LAN.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80Podsumowanie: Twój nowy zestaw narzędzi do ochrony
iptables to król firewalla w Linuksie. Kropka. Zrozumienie jego działania to fundament bezpieczeństwa sieciowego.
Kluczowe punkty do zapamiętania:
iptablesto surowa siłanetfiltera.- Pamiętaj o tabelach, łańcuchach, regułach i celach.
- Zawsze zezwalaj na
ESTABLISHED,RELATEDpołączenia – inaczej nic nie działa. - Zapisuj reguły, bo znikną po restarcie!
- Zawsze miej plan awaryjny (np. fizyczny dostęp) zanim zablokujesz SSH!
# Twój nowy zestaw do sprawdzania, kto rządzi:
iptables -L -n -vKolejny odcinek: cat + grep – nauczymy się, jak czytać i szukać w logach jak prawdziwy detektyw. Zostań z nami!