Jinsi ya Kusanidi Firewall ya Iptables kuwezesha Ufikiaji wa Mbali wa Huduma katika Linux - Sehemu ya 8


Tunakuletea Mpango wa Uthibitishaji wa Msingi wa Linux

Utakumbuka kutoka Sehemu ya 1 - Kuhusu Iptables za mfululizo huu wa LFCE (Mhandisi Aliyeidhinishwa na Wakfu wa Linux) ambapo tulitoa maelezo ya kimsingi ya nini ngome ni: mbinu ya kudhibiti. pakiti zinazoingia na kutoka kwenye mtandao. Kwa kusimamia tunamaanisha:

  1. Kuruhusu au kuzuia pakiti fulani kuingia au kutoka kwenye mtandao wetu.
  2. Kusambaza pakiti zingine kutoka sehemu moja ya mtandao hadi nyingine.

kwa kuzingatia vigezo vilivyowekwa.

Katika makala hii tutajadili jinsi ya kutekeleza uchujaji wa msingi wa pakiti na jinsi ya kusanidi ngome na iptables, sehemu ya mbele kwa netfilter, ambayo ni moduli ya asili ya kernel inayotumiwa kwa firewalling.

Tafadhali kumbuka kuwa firewalling ni somo kubwa na makala haya hayakusudiwi kuwa mwongozo wa kina wa kuelewa yote ambayo kuna kujua kuihusu, lakini kama mahali pa kuanzia kwa uchunguzi wa kina wa mada hii. Hata hivyo, tutatazama upya mada katika Sehemu ya 10 ya mfululizo huu tunapochunguza matukio machache mahususi ya utumiaji wa ngome katika Linux.

Unaweza kufikiria ngome kama uwanja wa ndege wa kimataifa ambapo ndege za abiria huja na kuondoka karibu 24/7. Kulingana na idadi ya masharti, kama vile uhalali wa pasipoti ya mtu, au nchi yake ya asili (kutaja mifano michache) anaweza, au hawezi, kuruhusiwa kuingia au kuondoka katika nchi fulani.

Wakati huo huo, maofisa wa uwanja wa ndege wanaweza kuwaagiza watu kuhama kutoka sehemu moja ya uwanja hadi nyingine ikiwa ni lazima, kwa mfano wakati wanahitaji kupitia Huduma za Forodha.

Tunaweza kupata mlinganisho wa uwanja wa ndege kuwa muhimu wakati wa somo hili lililosalia. Kumbuka tu mahusiano yafuatayo tunapoendelea:

  1. Watu = Pakiti
  2. Firewall = Uwanja wa ndege
  3. Nchi #1 = Mtandao #1
  4. Nchi #2 = Mtandao #2
  5. Kanuni za uwanja wa ndege zinazotekelezwa na maafisa = sheria za ngome

Iptables - Msingi

Katika kiwango cha chini, ni kokwa yenyewe ambayo \huamua” nini cha kufanya na pakiti kulingana na sheria zilizowekwa katika minyororo, au sentensi Minyororo hii inafafanua hatua gani zichukuliwe wakati kifurushi kinalingana na vigezo vilivyoainishwa nao.

Hatua ya kwanza iliyochukuliwa na iptables itajumuisha kuamua nini cha kufanya na pakiti:

  1. Uikubali (iruhusu ipitie kwenye mtandao wetu)?
  2. Ikatae (uizuie kufikia mtandao wetu)?
  3. Isambaze (kwa mnyororo mwingine)?

Ila ikiwa ulikuwa unashangaa kwa nini zana hii inaitwa iptables, ni kwa sababu minyororo hii imepangwa katika majedwali, na meza ya kichujio ndiyo inayojulikana zaidi na ile inayojulikana. kutumika kutekeleza uchujaji wa pakiti na minyororo yake mitatu ya msingi:

1. Msururu wa INPUT hushughulikia pakiti zinazoingia kwenye mtandao, ambazo zinakusudiwa kwa programu za ndani.

2. Msururu wa OUTPUT hutumika kuchanganua pakiti zinazotoka kwenye mtandao wa ndani, ambazo zinapaswa kutumwa nje.

3. Msururu wa MBELE huchakata pakiti ambazo zinapaswa kutumwa mahali pengine (kama ilivyo kwa kipanga njia).

Kwa kila moja ya minyororo hii kuna sera ya chaguo-msingi, ambayo inaamuru nini kifanyike kwa chaguo-msingi wakati pakiti hazilingani na sheria yoyote katika mnyororo. Unaweza kutazama sheria zilizoundwa kwa kila mlolongo na sera chaguo-msingi kwa kutekeleza amri ifuatayo:

# iptables -L

Sera zilizopo ni kama zifuatazo:

  1. KUBALI → ruhusu pakiti kupita. Pakiti yoyote ambayo hailingani na sheria zozote kwenye mnyororo inaruhusiwa kwenye mtandao.
  2. DROP → inadondosha pakiti kimya kimya. Pakiti yoyote ambayo hailingani na sheria zozote kwenye mnyororo imezuiwa kuingia kwenye mtandao.
  3. KATAA → inakataa pakiti na kurudisha ujumbe wa taarifa. Hii hasa haifanyi kazi kama sera chaguo-msingi. Badala yake, inakusudiwa kutimiza sheria za uchujaji wa pakiti.

Linapokuja suala la kuamua ni sera gani utakayotekeleza, unahitaji kuzingatia faida na hasara za kila mbinu kama ilivyoelezwa hapo juu - kumbuka kuwa hakuna uwiano wa ukubwa mmoja. - suluhisho zote.

Ili kuongeza sheria kwenye firewall, omba amri ya iptables kama ifuatavyo:

# iptables -A chain_name criteria -j target

wapi,

  1. -A inawakilisha Nyongeza (ongeza kanuni ya sasa hadi mwisho wa msururu).
  2. chain_name ni PEKEE, PATO, au FORWARD.
  3. lengo ni hatua, au sera, ya kutumika katika kesi hii (KUBALI, KATAA, au DROP).
  4. vigezo ni seti ya masharti ambayo pakiti zinapaswa kuchunguzwa. Inaundwa na angalau moja (uwezekano mkubwa zaidi) wa bendera zifuatazo. Chaguo ndani ya mabano, ikitenganishwa na upau wima, ni sawa na kila mmoja. Zilizosalia zinawakilisha swichi za hiari:

[--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.

Wacha tuunganishe hayo yote katika mifano 3 ya kawaida kwa kutumia mazingira yafuatayo ya majaribio kwa mbili za kwanza:

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

Na hii kwa mfano wa mwisho

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

Tutafafanua sera ya DROP kwanza kwa pings za kuingiza kwenye ngome zetu. Hiyo ni, pakiti za icmp zitashushwa kimya kimya.

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

Kabla ya kuendelea na sehemu ya KATAA, tutaondoa sheria zote kutoka kwa msururu wa INPUT ili kuhakikisha kuwa pakiti zetu zitajaribiwa kwa sheria hii mpya:

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

Tutashughulika na msururu wa OUTPUT tunaposhughulikia trafiki inayotoka:

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

Tekeleza amri zifuatazo kwenye seva/firewall ya NFSv4 ili kufunga bandari 2049 na 111 kwa kila aina ya trafiki:

# 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

Sasa hebu tufungue bandari hizo na tuone nini kinatokea.

# 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

Kama unavyoona, tuliweza kuweka sehemu ya NFSv4 baada ya kufungua trafiki.

Katika mifano iliyotangulia tulionyesha jinsi ya kuambatanisha sheria kwenye minyororo ya PENDO na TOTO. Iwapo tutataka kuziingiza badala yake katika nafasi iliyobainishwa awali, tunapaswa kutumia swichi ya -I (herufi kubwa i) badala yake.

Unahitaji kukumbuka kuwa sheria zitatathminiwa moja baada ya nyingine, na kwamba tathmini itasimama (au kuruka) wakati sera ya DROP au KUBALI inalinganishwa. Kwa sababu hiyo, unaweza kujikuta katika haja ya kusogeza sheria juu au chini katika orodha ya minyororo inavyohitajika.

Tutatumia mfano mdogo kuonyesha hii:

Wacha tuweke sheria ifuatayo,

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

katika nafasi ya 2) kwenye mnyororo wa INPUT (hivyo kusonga mbele #2 kama #3)

Kwa kutumia usanidi ulio hapo juu, trafiki itaangaliwa ili kuona ikiwa imeelekezwa kwenye mlango wa 80 kabla ya kuangalia mlango wa 2049.

Vinginevyo, unaweza kufuta sheria na kubadilisha lengo la sheria zilizosalia kuwa KATAA (kwa kutumia swichi ya -R):

# 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

Mwisho, lakini sio uchache, utahitaji kukumbuka kuwa ili sheria za firewall ziendelee, utahitaji kuzihifadhi kwenye faili na kisha kuzirejesha kiotomatiki kwenye buti (kwa kutumia njia unayopendelea au ile iliyochaguliwa). inapatikana kwa usambazaji wako).

Sheria za kuokoa firewall:

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

Sheria za kurejesha:

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

Hapa tunaweza kuona utaratibu sawa (kuhifadhi na kurejesha sheria za ngome kwa mkono) kwa kutumia faili ya dummy inayoitwa iptables.dump badala ya ile chaguo-msingi kama inavyoonyeshwa hapo juu.

# iptables-save > iptables.dump

Ili kufanya mabadiliko haya yaendelee kwenye buti:

Ubuntu: Sakinisha kifurushi cha iptables-persistent, ambacho kitapakia sheria zilizohifadhiwa katika /etc/iptables/rules.v4 faili.

# apt-get install iptables-persistent

CentOS: Ongeza mistari 2 ifuatayo kwenye faili ya /etc/sysconfig/iptables-config.

IPTABLES_SAVE_ON_STOP="yes"
IPTABLES_SAVE_ON_RESTART="yes"

OpenSUSE: Orodhesha milango, itifaki, anwani na kadhalika zinazoruhusiwa (zinazotenganishwa na koma) katika /etc/sysconfig/SuSEfirewall2.

Kwa habari zaidi rejea faili yenyewe, ambayo ina maoni mengi.

Hitimisho

Mifano iliyotolewa katika makala haya, ingawa haiangazii kengele na filimbi zote za iptables, inatumika kwa madhumuni ya kuonyesha jinsi ya kuwezesha na kuzima trafiki inayoingia au inayotoka.

Kwa wale ambao ni mashabiki wa firewall, kumbuka kwamba tutarejea mada hii na programu mahususi zaidi katika Sehemu ya 10 ya mfululizo huu wa LFCE.

Jisikie huru kunijulisha ikiwa una maswali au maoni.