Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Iptables - Wikipedia, wolna encyklopedia

Iptables

Z Wikipedii

Iptables jest programem filtrującym pakiety (głównie używanym jako firewall bądź router) dla systemu operacyjnego GNU/Linux. Został napisany w 1999 roku przez Rusty'ego Russella w języku C. Jego funkcjonalnością jest filtr pakietów jak i tzw. firewall stanowy dla systemów Linux z jądrem począwszy od serii 2.4.x, kontrolujący połączenia wchodzące i wychodzące do sieci komputerowej lub stacji roboczej.

Firewall, uruchamiany jest najczęściej na hostach pełniących rolę routerów. Działanie opiera się na trzech podstawowych regułach delklarujacych dzialanie wobec IP pakietu. Reguła INPUT opisuje działania dla pakietów przychodzących, reguła OUTPUT - wychodzących i FORWARD - dla pakietów przechodzących pomiędzy interfejsami. Możliwe do wykonania działania to ACCEPT (zaakceptowanie pakietu), DROP (usunięcie) i REJECT (odrzucenie z powiadomieniem nadawcy). Reguły iptables pozwalają na dokładniejsze określenie rodzaju i przeznaczenia pakietu, z uwagi na np. port lub host źródłowy/docelowy, wykorzystany protokół, czas życia (TTL).

Spis treści

[edytuj] Przykład

[edytuj] Firewall

Prosty firewall na podstawie iptables, zakładamy że mamy komputer działający jako router i jednocześnie FTP dla sieci lokalnej oraz server http ogólnie dostępny, interfejs sieciowy to ra0 adres ip: 88.88.88.88, interfejs sieci lokalnej to eth0 adres ip: 192.168.0.1.

Celem jest oczyszczenie wszystkich tablic z poprzednio wpisanych reguł aby nowe mogły działać bez zarzutu:

iptables -F
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter

Nowe przełączniki:

-F {łańcuch} - służy do usunięcia wszystkich dotychczasowych reguł lub reguł w danych łańcuchu gdy podany.

-X {łańcuch} - usuwa wszystkie dowiązania do innych tablic

-t [tablica] - wybiera tablicę w jakiej mają być poczynione zmiany domyślna tablica to filter wybierana, gdy brakuje przełącznika używana głównie do filtrowania pakietów, inne tablice: nat używana przy routingu, są jeszcze tablice: mangle i raw których nie będziemy używać.

Celem danych komend jest zablokowanie wszystkich przychodzących i przechodzących pakietów których w dalszej części nie zaznaczymy jako pożądanych:

iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

Nowy przełącznik:

-P [łańcuch] [polityka] - służy do ustawiania domyślnej polityki w danym łańcuchu czyli co zrobić z pakietem który nie znalazł swojego miejsca w poprzednich regułkach: (Opis reguł patrz wyżej) ACCEPT (niezalecane), DROP (zalecane), REJECT(odrzucenie z domyślnym powiadomieniem poprzez icmp-port-unreachable czyli że dany port jest niedostępny).

Celem reguł jest udostępnianie połączenia internetowego. poprzez wpuszczanie połączeń internetowych z ra0 oraz wypuszczanie połączeń z sieci lokalnej z eth0 dodatkowo -d i -s mają posłużyć małemu zabezpieczeniu przed podszywaniem się osób z naszej sieci pod inne adresy ip:

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth0 -o ra0 -s 192.168.0.0/255.255.255.0 -d 0/0 -j ACCEPT
iptables -A FORWARD -i ra0 -o eth0 -s 0/0 -d 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -d 0/0 -j MASQUERADE

Nowe przełączniki:

-A [łańcuch] [reguła] - wybiera łańcuch i dodaje na jego końcu daną regułę

-i [interfejs] - sprawia że dana reguła dotyczy tylko pakietów przychodzących z danego interfejsu (niedostępny w łańcuchu OUTPUT)

-o [interfejs] - jak -i tylko że dotyczy pakietów wychodzących (niedostępny w łańcuchu INPUT)

-s [IP|HOST]/{maska} - wybiera źródło danego pakietu w postaci numeru IP lub adresu host, można także dodać maskę. (0/0 - oznacza wszystkie numery ip i maski)

-d [IP|HOST]/{maska} - tak jak -s tylko że dotyczy numeru IP do którego zmierza pakiet. (0/0 - oznacza wszystkie numery ip i maski)

-j [polityka] - wybór co z danym pakietem zrobić (rodzaje polityki patrz ponad przykład). MASQUERADE - użycie maskarady potrzebne przy udostępnianiu połączenia.

Podobne przełączniki do -A (służące do modyfikacji poleceń łańcuchów) to:

-I [łańcuch] {numer} [reguła] - dodaje regułę na pozycji pierwszej lub jak jest dany numer to dodaje pozycję na tym miejscu przesuwając dalsze o pozycję dalej,

-D [łańcuch] {numer} - usuwa regułę znajdującą się na danej pozycji,

-R [łańcuch] [numer] [reguła] - zamienia regułę o danym numerze na nową.

Ważne!: Pakiet podąża za pierwszą regułą do której pasuje dlatego kolejność ma znaczenie.

Pierwsza instrukcja (echo) włącza przekazywanie pakietów, co jest konieczne na wielu systemach .

Celem jest wpuszczenie wszystkich reguł opartych o interfejs lo czyli interfejs służący do wewnętrznej komunikacji za pośrednictwem tcp/ip:

iptables -A INPUT -i lo -j ACCEPT

Nie wpuszczamy pakietów które przyszły z 'naszego' komputera z sieci gdyż jest to w normalnych warunkach niemożliwe i może to być podstawą jakiegoś ataku.

iptables -A INPUT -i ra0 -s 88.88.88.88 -j DROP

Celem jest wpuszczenie wszystkich połączeń które już wcześniej zostały zaakceptowane:

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Nowe przełączniki:

-m [moduł] - powoduje załadowanie modułu w tym przypadku state który sprawdza stan pakietu.

Moduł '{!} state [jaki]' - dostępne po załadowaniu modułu można opierać się na stanie połączeń dostępne to: NEW (połączenia nowo przychodzące), RELATED (połączenia powiązane z wcześniej nawiązanymi), ESTABLISHED (połączenia już ustanowione), UNTRACKED oraz INVALID oznaczają stany z reguły niezbyt poprawne uszkodzone lub 'dziwne' pakiety. Wykrzyknik powoduje zaprzeczenie np '! --ctstate INVALID' wpuści wszystkie stany poza INVALID.

Celem jest włączenie dostępu do naszych serwerów:

iptables -A INPUT -i eth0 -p tcp -m conntrack --ctstate NEW -d 192.168.0.1 --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -m conntrack --ctstate NEW --dport 80 -j ACCEPT

Nowe przełączniki: -p [typ] - wybieramy typ pakietu spośród tcp, udp, icmp.

--dport [port] - wybieramy port przeznaczenia dostępne tylko po podaniu -p, możliwość podania poprzez service (np http) w zależności od pliki /etc/services. można także dodać przedział portów jak 21:80.

--sport [port] - p/w tylko że źródłowy.

Moduł multiport - moduł służący do ustawienia wielu portów w jednej regułce oddzielonych przecinkiem np. '--dport 21,80' powoduje otwarcie portu 80 i 21. Regułki służą wpuszczeniu w pierwszym przypadku nowych połączeń do naszego serwera ftp tylko z sieci lokalnej, w drugim nowych połączeń do serwera www zarówno z sieci lokalnej jak i internetu. Później będą one wpuszczane za pomocą poprzedniej regułki ze stanami RELATED i ESTABLISHED. Na tej samej zasadzie można otwierać inne porty.

Przykładowa regułka przekierowująca porty:

iptables -A PREROUTING -t nat -i ra0 -p tcp -d 88.88.88.88 --dport 65333 -j DNAT --to-destination 192.168.0.54:21

Nowe przełączniki: --to-destination [ip]{:port} - przekierowanie połączenia na dany adres ip. można także dodać numer portu za numerem ip na jaki ma zostać dane połączenie przekierowane. W danym przykładzie przekierowano połączenia przychodzące z internetu na port 65333(tcp) na komputer w sieci lokalnej o adresie ip 192.168.0.54 port 21.


Celem jest wpuszczenie pingów:

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

Nowy przełącznik:

--icmp-type [numer | nazwa] - pozwala na wybranie typu pakietów icmp które mają być poddane sprawdzeniu, w tym wypadku jest to nr. 8 czyli echo-requst inne użyteczne to np. 3 destination-unreachable oraz 0 echo-reply.

iptables -A INPUT -i ra0 -m limit -d 88.88.88.88 -j LOG --limit 10/hour --log-prefix '[end]'
iptables -A INPUT -i ra0 -p tcp -d 88.88.88.88 -j REJECT --reject-with tcp-reset
iptables -A INPUT -i ra0 -p udp -d 88.88.88.88 -j REJECT --reject-with icmp-port-unreachable

Nowe przełączniki:

--log-prefix ['tekst'] - powoduje dopisanie prefiksu do interesującego nas loga dzięki czemu będzie je nam łatwiej rozróżnić w tym przypadku prefiks to end.

--reject-with [nazwa] - powoduje odrzucenie danego pakietu z innym niż domyślnym pakietem icmp do wyboru.

--limit - dostępna po wybraniu modułu limit, jeśli liczba będzie większa niż ta podana dana regułka się nie wykona, w tym wypadku limit to 10 na godzinę.

Jest to nasze końcowe ustawienie pozwalające nam na 1. logowanie pakietów które przeszły aż dotąd i przekazanie ich dwóm ostatnim funkcjom czyli funkcjom które będą odrzucać pakiety wysyłane do nas dzięki czemu nasz komputer nie będzie głuchy co może przyśpieszyć działanie niektórych usług internetowych i jest także zgodne z obowiązującymi standardami. Oraz nie daje potencjalnemu napastnikowi sądzenia że za naszym firewallem coś jest i to coś wartego uwagi.

[edytuj] Blokowanie pojedynczego komputera

iptables -A FORWARD - p all -s 192.168.1.2 -o eth1 -j DROP

[edytuj] Blokowanie odpowiedzi na ping

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
iptables -A INPUT -i eth0 -s 0/0 -p icmp --icmp-type ping -j DROP

[edytuj] Wyniki naszej pracy można obejrzeć

iptables -L -n --line-numbers

Nowe przełączniki:

-L {łańcuch} - pozwala zobaczyć wszystkie reguły lub te z danego łańcucha,

-n - nie odpytuje DNS, podaje ip zamiast zmieniać je na hosty,

--line-numbers - dodatkowo wyświetla numery obok reguł dzięki czemu łatwiej je zmieniać.

[edytuj] Zobacz też

[edytuj] Linki zewnętrzne

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com