Wéi eng Iptables Firewall opzestellen fir Remote Zougang zu Servicer am Linux z'aktivéieren - Deel 8


Aféierung vum Linux Foundation Certification Program

Dir erënnert Iech aus Deel 1 - Iwwer Iptables vun dëser LFCE (Linux Foundation Certified Engineer) Serie datt mir eng Basisbeschreiwung ginn hunn wat eng Firewall ass: e Mechanismus fir ze managen Pakete kommen an d'Netzwierk verlassen. Mat \verwalten\ mengen mir eigentlech:

  1. Fir z'erlaaben oder ze verhënneren datt verschidde Päck an eisem Netz erakommen oder ausgoen.
  2. Fir aner Pakete vun engem Punkt vum Netz op en aneren weiderzebréngen.

baséiert op virbestëmmte Critèren.

An dësem Artikel wäerte mir diskutéieren wéi d'Basis Paketfiltering ëmgesat gëtt a wéi d'Firewall mat iptables konfiguréiert gëtt, e Frontend op Netfilter, wat e gebiertege Kernelmodul ass fir Firewalling benotzt.

Notéiert w.e.g. datt Firewalling e grousst Thema ass an dësen Artikel ass net geduecht fir e komplette Guide ze sinn fir alles ze verstoen wat et muss wëssen, awer éischter als Ausgangspunkt fir eng méi déif Studie vun dësem Thema. Wéi och ëmmer, mir wäerten d'Thema am Deel 10 vun dëser Serie erëm besichen, wa mir e puer spezifesch Benotzungsfäll vun enger Firewall am Linux entdecken.

Dir kënnt un eng Firewall als en internationale Fluchhafen denken, wou Passagéierfliger bal 24/7 kommen a goen. Baséierend op eng Rei vu Konditiounen, wéi d'Validitéit vum Pass vun enger Persoun, oder sengem/hirem Hierkonftsland (fir e puer Beispiller ze nennen), kann hien oder hatt net erlaabt sinn an e bestëmmte Land anzeginn oder ze verloossen.

Zur selwechter Zäit kënne Fluchhafenbeamten d'Leit instruéieren, vun enger Plaz vum Fluchhafen op eng aner ze plënneren, wann néideg, zum Beispill wann se duerch d'Douaneservicer musse goen.

Mir kënnen d'Analogie vum Fluchhafen nëtzlech fannen am Rescht vun dësem Tutorial. Bedenkt just déi folgend Relatiounen wéi mir virugoen:

  1. Persounen = Pakete
  2. Firewall = Flughafen
  3. Land #1 = Netzwierk #1
  4. Land #2 = Netzwierk #2
  5. Flughafenreglementer duerchgefouert vun Offizéier = Firewall Regelen

Iptables - D'Grondlage

Um nidderegen Niveau ass et de Kär selwer deen \entscheet wat mat Päck ze maachen baséiert op Regelen, déi an Ketten oder Sätze gruppéiert sinn. Dës Ketten definéieren wéi eng Aktioune solle gemaach ginn wann e Package mat de Critèren entsprécht, déi se uginn.

Déi éischt Handlung, déi vun iptables geholl gëtt, besteet doranner ze entscheeden wat mat engem Paket ze maachen:

  1. Et akzeptéieren (lass et an eise Réseau duerchgoe loossen)?
  2. Et refuséieren (verhënneren datt et Zougang zu eisem Netz gëtt)?
  3. Fortschécken (an eng aner Kette)?

Just am Fall wou Dir Iech gefrot hutt firwat dëst Tool iptables genannt gëtt, ass et well dës Ketten an Tabellen organiséiert sinn, mat der Filtertabelle déi bekanntst ass an deen deen ass benotzt fir Paketfilter mat sengen dräi Standardketten ëmzesetzen:

1. D'INPUT Kette behandelt Päckchen, déi an d'Netz kommen, déi fir lokal Programmer bestëmmt sinn.

2. D'OUTPUT Kette gëtt benotzt fir Päckchen aus dem lokalen Netzwierk ze analyséieren, déi no bausse geschéckt ginn.

3. D'FORWARD Kette veraarbecht d'Päckchen, déi op eng aner Destinatioun weidergeleet ginn (wéi am Fall vun engem Router).

Fir jiddereng vun dëse Ketten gëtt et eng Standardpolitik, déi diktéiert wat als Standard gemaach soll ginn wann d'Päck net mat enger vun de Regelen an der Kette passen. Dir kënnt d'Regele erstallt fir all Kette an d'Standardpolitik kucken andeems Dir de folgende Kommando ausféiert:

# iptables -L

Déi verfügbar Politik sinn wéi follegt:

  1. ACCEPTEREN → léisst de Pak duerch. All Paket, dee keng Regelen an der Kette entsprécht, ass an d'Netz erlaabt.
  2. DROP → fällt de Pak roueg erof. All Paket, dee keng Regelen an der Kette entsprécht, gëtt verhënnert datt se an d'Netz kommen.
  3. REJECT → refuséiert de Paket a gëtt eng informativ Noriicht zréck. Dëst besonnesch funktionnéiert net als Standardpolitik. Amplaz ass et geduecht fir Paketfilterregelen ze ergänzen.

Wann et drëms geet ze entscheeden wéi eng Politik Dir implementéiert, musst Dir d'Pros an Cons vun all Approche berücksichtegen wéi uewen erkläert - notéiert datt et keng eenzeg Gréisst passt -all Léisung.

Fir eng Regel un d'Firewall ze addéieren, rufft den iptables Kommando op wéi follegt:

# iptables -A chain_name criteria -j target

wou,

  1. -A steet fir Append (fügen déi aktuell Regel un d'Enn vun der Kette un).
  2. chain_name ass entweder INPUT, OUTPUT oder FORWARD.
  3. Zil ass d'Aktioun, oder d'Politik, fir an dësem Fall ze gëllen (ACCEPT, REJECT oder DROP).
  4. Critèrë ass de Set vu Konditioune géint déi d'Päck ënnersicht ginn. Et besteet aus mindestens engem (wahrscheinlech méi) vun de folgende Fändelen. Optiounen bannent Klammern, getrennt vun enger vertikaler Bar, sinn gläichwäerteg mateneen. De Rescht representéiert optional Schalter:

[--protocol | -p] protocol: specifies the protocol involved in a rule.
[--source-port | -sport] port:[port]: defines the port (or range of ports) where the packet originated.
[--destination-port | -dport] port:[port]: defines the port (or range of ports) to which the packet is destined.
[--source | -s] address[/mask]: represents the source address or network/mask.
[--destination | -d] address[/mask]: represents the destination address or network/mask.
[--state] state (preceded by -m state): manage packets depending on whether they are part of a state connection, where state can be NEW, ESTABLISHED, RELATED, or INVALID.
[--in-interface | -i] interface: specifies the input interface of the packet.
[--out-interface | -o] interface: the output interface.
[--jump | -j] target: what to do when the packet matches the rule.

Loosst eis dat alles an 3 klassesch Beispiller pechen mat der folgender Testëmfeld fir déi éischt zwee:

Firewall: Debian Wheezy 7.5 
Hostname: dev2.gabrielcanepa.com
IP Address: 192.168.0.15
Source: CentOS 7 
Hostname: dev1.gabrielcanepa.com
IP Address: 192.168.0.17

An dëst fir dat lescht Beispill

NFSv4 server and firewall: Debian Wheezy 7.5 
Hostname: debian
IP Address: 192.168.0.10
Source: Debian Wheezy 7.5 
Hostname: dev2.gabrielcanepa.com
IP Address: 192.168.0.15

Mir definéieren als éischt eng DROP Politik fir Input Pings op eis Firewall. Dat ass, icmp Pakete ginn roueg erofgelooss.

# ping -c 3 192.168.0.15
# iptables -A INPUT --protocol icmp --in-interface eth0 -j DROP

Ier mer mam REJECT Deel virgoen, spülen mir all Reegelen aus der INPUT Kette fir sécher ze stellen datt eis Päck mat dëser neier Regel getest ginn:

# iptables -F INPUT
# iptables -A INPUT --protocol icmp --in-interface eth0 -j REJECT
# ping -c 3 192.168.0.15

Mir wäerte mat der OUTPUT Kette beschäftegen wéi mir den ausgaangende Verkéier behandelen:

# iptables -A OUTPUT --protocol tcp --destination-port 22 --out-interface eth0 --jump REJECT

Fëllt déi folgend Kommandoen am NFSv4 Server/Firewall fir d'Ports 2049 an 111 fir all Zort Traffic zouzemaachen:

# iptables -F
# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 2049 -j REJECT
# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 111 -j REJECT

Loosst eis elo dës Ports opmaachen a kucken wat geschitt.

# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 111 -j ACCEPT
# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 2049 -j ACCEPT

Wéi Dir gesitt, konnte mir den NFSv4 Deele montéieren nodeems de Traffic opgemaach gouf.

An de fréiere Beispiller hu mir gewisen wéi Dir Regelen un d'Ketten INPUT an OUTPUT bäidréit. Sollte mir se amplaz op enger virdefinéierter Positioun asetzen, sollte mir amplaz den -I (Groussbuch i) Schalter benotzen.

Dir musst drun erënneren datt d'Regele een nom aneren evaluéiert ginn, an datt d'Evaluatioun stoppt (oder spréngt) wann eng DROP oder ACCEPT-Politik entsprécht. Aus deem Grond kënnt Dir Iech an der Bedierfnes fannen fir Regelen erop oder erof an der Kettelëscht ze réckelen wéi néideg.

Mir benotzen en trivial Beispill fir dëst ze demonstréieren:

Loosst eis déi folgend Regel setzen,

# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT

op der Positioun 2) an der INPUT Kette (also bewegt virdrun #2 als #3)

Mat der Konfiguratioun uewendriwwer gëtt de Traffic gepréift fir ze kucken ob et op den Port 80 geleet gëtt ier Dir no Port 2049 iwwerpréift.

Alternativ kënnt Dir eng Regel läschen an d'Zil vun de verbleiwen Regelen änneren op REJECT (mat der -R Schalter):

# iptables -D INPUT 1
# iptables -nL -v --line-numbers
# iptables -R INPUT 2 -i eth0 -s 0/0 -p tcp --dport 2049 -j REJECT
# iptables -R INPUT 1 -p tcp --dport 80 -j REJECT

Zu gudder Lescht, awer net zulescht, musst Dir drun erënneren datt fir datt d'Firewall-Regele persistent sinn, musst Dir se an eng Datei späicheren an se dann automatesch beim Boot restauréieren (mat der gewënschter Method vun Ärer Wiel oder déi déi ass fir Är Verdeelung verfügbar).

Firewall Regelen späicheren:

# iptables-save > /etc/iptables/rules.v4		[On Ubuntu]
# iptables-save > /etc/sysconfig/iptables		[On CentOS / OpenSUSE]

Restauratiounsregelen:

# iptables-restore < /etc/iptables/rules.v4		[On Ubuntu]
# iptables-restore < /etc/sysconfig/iptables		[On CentOS / OpenSUSE]

Hei kënne mir eng ähnlech Prozedur gesinn (Späicheren a restauréiert Firewall Reegele mat der Hand) mat enger Dummy-Datei genannt iptables.dump amplaz vum Standard wéi hei uewen gewisen.

# iptables-save > iptables.dump

Fir dës Ännerungen persistent iwwer Stiwwelen ze maachen:

Ubuntu: Installéiert de iptables-persistent Package, deen d'Regelen lued, déi an der Datei /etc/iptables/rules.v4 gespäichert sinn.

# apt-get install iptables-persistent

CentOS: Füügt déi folgend 2 Zeilen op /etc/sysconfig/iptables-config Datei.

IPTABLES_SAVE_ON_STOP="yes"
IPTABLES_SAVE_ON_RESTART="yes"

OpenSUSE: Lëscht erlaabt Ports, Protokoller, Adressen, a sou weider (getrennt duerch Komma) an /etc/sysconfig/SuSEfirewall2.

Fir méi Informatioun kuckt op d'Datei selwer, déi staark kommentéiert ass.

Conclusioun

D'Beispiller, déi an dësem Artikel geliwwert ginn, wärend net all d'Klacken a Pfeifen vun iptables ofdecken, déngen den Zweck fir ze illustréieren wéi een de Traffic erakommen oder erausgoen Traffic aktivéiert an deaktivéiert.

Fir déi vun iech, déi Firewall-Fans sinn, bedenkt datt mir dëst Thema mat méi spezifeschen Uwendungen am Deel 10 vun dëser LFCE Serie revidéieren.

Fillt mech gratis wann Dir Froen oder Kommentarer hutt.