Erinevus lehekülje "Iptables puust ja punaseks" redaktsioonide vahel

Allikas: Kuutõrvaja
(Uute ahelate loomine)
(Reeglid)
135. rida: 135. rida:
 
*SNAT – paketi saatja aadressi muutmine
 
*SNAT – paketi saatja aadressi muutmine
 
*MASQUERADE - Paketi saatja aadressi muutmine tulemüüri enda omaks
 
*MASQUERADE - Paketi saatja aadressi muutmine tulemüüri enda omaks
 +
 +
====Lihtne tulemüür serverile, mis kasutab enda tööks ainult FILTER tabelit====
 +
 +
<source lang=bash>
 +
#  Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
 +
iptables -A INPUT -i lo -j ACCEPT
 +
iptables -A INPUT -i lo -d 127.0.0.0/8 -j REJECT
 +
 +
#  Accepts all established inbound connections
 +
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 +
 +
#  Allows all outbound traffic
 +
#  You can modify this to only allow certain traffic
 +
iptables -A OUTPUT -j ACCEPT
 +
 +
# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
 +
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 +
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
 +
 +
#  Allows SSH connections
 +
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
 +
 +
# Allow ping
 +
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
 +
 +
# log iptables denied calls
 +
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
 +
 +
# Reject all other inbound - default deny unless explicitly allowed policy
 +
iptables -A INPUT -j REJECT
 +
iptables -A FORWARD -j REJECT
 +
</source>
 +
 +
===Network adress translation kasutades NAT tabelit===
 +
 +
Lubame kerneline IP'de edastamise võrguseadmete vahel.
 +
 +
# echo "1" > /proc/sys/net/ipv4/ip_forward
 +
 +
Laadime NAT'i mooduli
 +
 +
# modprobe iptable_nat
 +
 +
Saatja aadress muudetakse tulemüüri omaks. Näiteks kasutame seda, et
 +
ühendada LAN internetiga:
 +
 +
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
 +
 +
Võtmed tähendavad siin järgnevat:
 +
 +
*-t nat - Valime tabeli nat.
 +
*-A - POSTROUTING Kasutame postrouting ahelat
 +
*-o - eth1 reegel kehtib pakettidele mis väljuvad teiselt interfacelt (-o tähendab output)
 +
*-j - MASQUERADE Saatja aadress asendatakse ruuteri aadressiga.
 +
 +
Juhul kui ruuter omab staatilist IP aadress on soovitatud ülaloleva näite kasutada source NAT'i. Selleks tuleb kirjutada järgnev käsk:
 +
 +
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to <eth0-ehk välise võrguseadme aadress>

Redaktsioon: 17. august 2011, kell 12:20

                                        Roheline.jpg Toores. Ehk seda pala võib täiendada.

Mis see on?

Iptables on töövahend linuxi kernelisse ehitatud filtreerimismehanismi kasutamiseks. Kokku koosneb iptables niisiis kahest osast. Kerneli moodulitest ning käsurea utiliidist.

Iptables koosneb kolme tüüpi objektidest:

  1. Reeglid (Rules)
  2. Ahelad (Chains)
  3. Tabelid (Tables)

Tabelid

Paketid liiguvad läbi tabelite ning ahelate ning seejärel neile omakorda rakendatakse reegleid.

Kõik ahelad kasutavad ühte või teist tabelit. Kui tabel pole määratud võetakse vaikimisi FILTER tabel.

Iptables sisaldab kolme põhitabelit:

filter table

Seda tabelit kasutatakse pakettide filtreerimiseks läbi tulemüüri. Eesmärgiks on puhtalt pakettide filtreerimine. Näiteks sissetulevate pakettide (incoming), väljuvate pakettide (outgoing) ja pakettide mis on edastatud võrgukaartide vahel (filtering).

See tabel on seotud kolme ahelaga:

  • INPUT ahel - Sisenevate pakettide filtreerimine
  • OUTPUT ahel - Väljuvate pakettide filtreerimine
  • FORWARD ahel - Võrgukaartide vahel edasi suunatud pakettide filtreerimine

nat table Seda tabelit kasutatakse IP muutmiseks.

  • PREROUTING chain - Kasutatakse IP aadressi muutmiseks enne paketi edastamist
  • POSTROUTING chain - Kasutatakse IP muutmiseks peale paketi edastamist
  • OUTPUT chain - Väljuvate ühenduste filtreerimiseks

mangle Leiab kasutamist pakettide päiste ja QoS bittide modifitseerimiseks

Tabelite sisu näeb järgnevate käsuga iptables -f <tabelinimi> -L. Näiteks:

# iptables -t filter -L

või

# iptables -t nat -L

Ahelad

Ahel kujutab endast objekti mis on seotud mingi tabeliga ning millele on omakorda kirjutatud peale hulk erinevaid reegleid.

Masinasse sisenenud oakett liigub mööda ahelaid ülevalt alla seni kuni mõni reegel ühildub paketiga. Näiteks lubab selle või kustutab.

Vaatleme esialgu ahelaid FILTER tabelis. Ehk siis ahelaid INPUT, OUTPUT JA FORWARD.

Ahelates olevaid reegleid näeb käsuga:

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Selline pilt näitab, et mingeid reegleid hetkel pole kehtestatud.

Igal ahelaga saab siduda reegleid. Näiteks tekitame järgneva reegli:

# iptables -A INPUT -i eth0 -j REJECT 

See reegel on seotud INPUT ahelaga (ehk sissetulevad paketid) ja kehtib ainult pakettide kohta, mis tulevad eth0 võrguliidesele. Lisaks ütleb, et need paketid lükatakse tagasi. Reject tähendab, et keeldutakse paketist ja antakse sellest ka paketi saatjale teada.

Või keelustame ligipääsu teatud võrgule:

# iptables -I FORWARD -s 192.168.2.0/255.255.255.0 -j DROP

See reegel kustutab armutult kõik FORWARD ahelasse saabunud ja teatud võrku suunduvad paketid.

Uute ahelate loomine

Võimalik on luua ka täiesti uusi ahelaid ning siduda neid omakorda erinevate tabelitega. Kui tabel pole määratud kasutatakse automaatselt FILTER tabelit.

Loome ahela nimega LOGDROP

# iptables -N LOGDROP

Lisame sinna ahelasse, et sealsed paketid logitakse

# iptables -A LOGDROP -j LOG

Ning seejärel kustutatakse

# iptables -A LOGDROP -j DROP

Seome meieloodud ahela nüüd omakorda INPUT ahelaga

# iptables -A INPUT -j LOGDROP

Näide 2. Loome ahela nimega blacklist kus olevad aadressid armutult blokeeritakse

# iptables -N blacklist

Lisame sinna tabelisse kaks aadresside vahemikku

# iptables -A blacklist -s 207.46.130.0/24 -j DROP
# iptables -A blacklist -s 207.46.250.0/24 -j DROP

Seejärel blokeerime meie loodud ahela kõigis kolmes põhiahelas. Ehk siis keelame nii siseneva kui väljuva ja võrgukaartide vahel ruuditava liikluse neile võrkudele.

# iptables -A INPUT -j blacklist
# iptables -A OUTPUT -j blacklist
# iptables -A FORWARD -j blacklist

Reeglid

Peamisteks reegliteks on ACCEPT, DROP, LOG, REJECT, DNAT, SNAT ja MASQUERADE.

  • ACCEPT - lubab
  • DROP - kustutab armutult
  • REJECT - kustutab paketi ja teavitab sellest ka paketi saatjat
  • LOG - logib paketi ja liigutab paketi edasi järgmisele ahelale
  • DNAT – paketi saaja aadress muutmine
  • SNAT – paketi saatja aadressi muutmine
  • MASQUERADE - Paketi saatja aadressi muutmine tulemüüri enda omaks

Lihtne tulemüür serverile, mis kasutab enda tööks ainult FILTER tabelit

#  Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i lo -d 127.0.0.0/8 -j REJECT

#  Accepts all established inbound connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allows all outbound traffic
#  You can modify this to only allow certain traffic
iptables -A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

#  Allows SSH connections
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Allow ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

Network adress translation kasutades NAT tabelit

Lubame kerneline IP'de edastamise võrguseadmete vahel.

# echo "1" > /proc/sys/net/ipv4/ip_forward

Laadime NAT'i mooduli

# modprobe iptable_nat

Saatja aadress muudetakse tulemüüri omaks. Näiteks kasutame seda, et ühendada LAN internetiga:

# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Võtmed tähendavad siin järgnevat:

  • -t nat - Valime tabeli nat.
  • -A - POSTROUTING Kasutame postrouting ahelat
  • -o - eth1 reegel kehtib pakettidele mis väljuvad teiselt interfacelt (-o tähendab output)
  • -j - MASQUERADE Saatja aadress asendatakse ruuteri aadressiga.

Juhul kui ruuter omab staatilist IP aadress on soovitatud ülaloleva näite kasutada source NAT'i. Selleks tuleb kirjutada järgnev käsk:

# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to <eth0-ehk välise võrguseadme aadress>