2010
Kiedy zaczynałem swoją przygodę z Linuxem niestety okienka były jeszcze mało popularne. Wszystkie operacje trzeba było wykonywać w konsoli. Konfiguracja systemu, różnego rodzaju serwerów, jak i firewalla, którym właśnie się teraz zajmiemy. Iptables to program, który filtruje krążące w sieci pakiety danych. Zależy na jakim typie komputera jest postawiony może zabezpieczać np. całą firmę przed złośliwymi atakami, lub bronić zwykłego, pojedynczego peceta. Zacznijmy od zobrazowania, co może dziać się z pakietem danych w firewallu.

Jak krąży pakiet danych

Ilustracja IPTABLES
Pakiet danych może dostać jedną z trzech reguł:
1. INPUT (wejściowy)
2. OUTPUT (wyjściowy)
3. FORWARD (przekazany)
Całe IPTABLES można wyobrazić sobie jako wielką szafę na dokumenty z trzema szufladami, a w nich odpowiednie reguły Można ustalać reguły inne dla pakietów INPUT, inne dla OUTPUT i analogicznie inne dla FORWARD. Zacznijmy od początku...
1. PODSTAWOWE OPERACJE NA REGUŁACH (łańcuchach)
-P - zmiana zasady dla wbudowanego łańcucha -L - listowanie reguł w łańcuchu -F - wyczyszczenie reguł z łańcucha -A - dodanie nowej reguły do łańcucha -I - wstawienie reguły do łańcucha na określoną pozycję -R - wymiana reguły na określonej pozycji -D - skasowanie reguły -X - skasowanie pustego łańcucha -Z - zerowanie liczników w łańcuchu
np. IPTABLES -A INPUT ... tworzy nową regułę w łańcuchu INPUT
2. OPCJE FILTROWANIA
-p -użycie reguły dla konkretnego protokołu
-s -określenie adresu źródłowego pakietu
-d -określenie adresu docelowego pakietu
-i -określenie interfejsu sieciowego
--sport -określenie portu źródłowego
--dport -określenie portu docelowego
-j - określa co należy wykonać z pakietem pasującym do reguły:
-j DENY (odmów, nie akceptuj pakietu)
-j ACCEPT (przyjmij pakiet)
-j DROP (porzuć kategorycznie pakiet)
i inne (np. RETURN, MARK, DNAT - odsyłam do manuala)
-m state - umożliwia śledzenie połączeń w ip_contract i ip_contract_ftp:
-m state --state NEW (NOWY) - pakiet tworzący nowe połączenie -m state --state
ESTABLISHED (NAWIĄZUJĄCY) - pakiet należący do istniejącego połączenia
-m state --state RELATED (ZWIĄZANY) - pakiet związany z połączeniem już ustanowionym, ale nie będący jego częścią -m state --state INVALID (BŁĘDNY) - pakiet błędny lub nie do zidentyfikowania
3. PRZYKŁADY, BO NA NICH NAJŁATWIEJ SIĘ NAUCZYĆ
Chcemy, aby nasza zapora ogniowa udostępniała usługę ftp:
iptables –A INPUT –p tcp --dport 20:21 –j ACCEPT
Dodaj regułę w łańcuchu INPUT [-A INPUT] dla protokołu tcp [-p tcp] dla portów docelowych (lokalnych) od 20 do 21 [--dport 20:21] i zaakceptuj (przyjmij) pakiet [-j ACCEPT]. Jednak w ten sposób dostęp do naszego serwera ftp będą mieli użytkownicy pracujący w trybie passive off. Korzystając z flagi -m możemy udostępnić serwer ftp dla użytkowników pasywnych:
iptables –A INPUT -m state --state ESTABLISHED, RELATED –j ACCEPT
Jeśli jakiś adres IP nam podpadł, możemy go zablokować, np tak:
iptables -A INPUT -d AAA.BBB.CCC.DDD -j DROP
Blokuje wszystkie połączenia przychodzące od adresu IP AAA.BBB.CCC.DDD. Można również zablokować dostęp danemu adresowi do portów np:
iptables -A OUTPUT -d AAA.BBB.CCC.DDD --sport 20:21 -j DROP
Taki wpis zablokuje dostęp adresowi IP AAA.BBB.CCC.DDD do usługi FTP. Często administratorzy sieci konfigurując firewalla piszą sobie skrypty. Warto wtedy zacząć taki skrypt od takiego wpisu:
# Usuwamy poprzednie reguly $IPTABLES -F INPUT $IPTABLES -F FORWARD $IPTABLES -F OUTPUT # Ustawienie domyslnej polityki blokując CAŁY ruch $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP # Zapisujemy caly nasz ruch w logach $IPTABLES -A INPUT -j LOG -m limit --limit 15/hour # 15 logów na godzine $IPTABLES -A OUTPUT -j LOG -m limit --limit 15/hour $IPTABLES -A FORWARD -j LOG -m limit --limit 15/hour
i dopiero wtedy pisać reguły. W takim przypadku dla bezpieczeństwa danych mamy zablokowany cały ruch pakietów. Dopiero teraz dodajemy reguły np, odblokowujemy w jedną i drugą stronę (INPUT i OUTPUT) serwer www (na porcie 80). O iptables można by pisać w nieskończoność, dlatego proponuję samemu poeksperymentować, lecz jeśli masz zamiar całkowicie zablokować adres 127.0.0.1 radzę pograć w sapera
Zobacz także:
Na każdy komentarz postaramy się udzielić odpowiedzi w ciągu 24 godzin od momentu wysłania.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.




Rejestracja
Zapomniane hasło






Nareszcie porządny artykuł. Dzięki!
Ja tam mam firewall wyłączony, raczej nikt nie będzie chciał atakować mojego komputera.
@adme
podaj IP
poda Ci taki: 127.0.0.1
tja...albo dokładny adres http://localhost
Adme: Chociaż ufw postaw. :> Chociaż jakieś zabezpieczenie, a gufw jest banalny w obsłudze.
@3ED chociaż ufw postaw, chociaż jakieś zabezpieczenie? ufw w ubuntu to nakładka na iptables która umożliwia łatwiejsze jego konfigurowanie.