Sheria 25 Muhimu za IPtable Firewall Kila Msimamizi wa Linux Anapaswa Kujua


sanidi ngome kwa njia ambayo itakidhi mahitaji ya mfumo na watumiaji kwa miunganisho inayoingia na inayotoka, bila kuacha mfumo katika hatari ya kushambuliwa.

Hapa ndipo iptables huja kwa manufaa. Iptables ni ngome ya mstari wa amri ya Linux ambayo inaruhusu wasimamizi wa mfumo kudhibiti trafiki inayoingia na kutoka kupitia seti ya sheria za jedwali zinazoweza kusanidiwa.

Iptables hutumia seti ya jedwali ambazo zina minyororo iliyo na seti ya sheria zilizojumuishwa au zilizobainishwa na mtumiaji. Shukrani kwao msimamizi wa mfumo anaweza kuchuja vizuri trafiki ya mtandao ya mfumo wake.

Kwa mwongozo wa iptables, kwa sasa kuna aina 3 za jedwali:

    1. CHUJI – hili ndilo jedwali chaguo-msingi, ambalo lina minyororo iliyojengewa ndani ya:
      1. INPUT  – vifurushi vinavyolengwa kwa soketi za ndani
      2. MBELE - pakiti zinazopitishwa kwenye mfumo
      3. OUTPUT - pakiti zinazozalishwa ndani

      1. PREROUTING - hutumika kwa kubadilisha pakiti mara tu inapopokelewa
      2. OUTPUT - hutumika kwa kubadilisha pakiti zinazozalishwa ndani ya nchi
      3. POSTROUTING - hutumika kwa kubadilisha pakiti zinapokaribia kutoka

      1. PREROUTING - kwa kubadilisha miunganisho inayoingia
      2. OUTPUT - kwa kubadilisha pakiti zinazozalishwa ndani ya nchi
      3. INPUT - kwa pakiti zinazoingia
      4. POSTROUTING - kwa kubadilisha pakiti zinapokaribia kutoka
      5. MBELE - kwa pakiti zinazopitishwa kwenye kisanduku

      Katika makala hii, utaona amri muhimu ambazo zitakusaidia kudhibiti firewall yako ya sanduku la Linux kupitia iptables. Kwa madhumuni ya makala haya, nitaanza na amri rahisi na kwenda kwenye tata zaidi hadi mwisho.

      1. Anza/Stop/Anzisha upya Iptables Firewall

      Kwanza, unapaswa kujua jinsi ya kudhibiti huduma ya iptables katika usambazaji tofauti wa Linux. Hii ni rahisi sana:

      ------------ On Cent/RHEL 7 and Fedora 22+ ------------
      # systemctl start iptables
      # systemctl stop iptables
      # systemctl restart iptables
      
      ------------ On Cent/RHEL 6/5 and Fedora ------------
      # /etc/init.d/iptables start 
      # /etc/init.d/iptables stop
      # /etc/init.d/iptables restart
      

      2. Angalia Kanuni zote za Firewall za IPtables

      Ikiwa unataka kuangalia sheria zako zilizopo, tumia amri ifuatayo:

      # iptables -L -n -v
      

      Hii inapaswa kurudisha pato sawa na ile iliyo hapa chini:

      Chain INPUT (policy ACCEPT 1129K packets, 415M bytes)
       pkts bytes target prot opt in out source destination 
       0 0 ACCEPT tcp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
       0 0 ACCEPT udp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
       0 0 ACCEPT tcp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
       0 0 ACCEPT udp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
      Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
       pkts bytes target prot opt in out source destination 
       0 0 ACCEPT all -- * lxcbr0 0.0.0.0/0 0.0.0.0/0 
       0 0 ACCEPT all -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0
      Chain OUTPUT (policy ACCEPT 354K packets, 185M bytes)
       pkts bytes target prot opt in out source destination

      Ikiwa ungependa kuangalia sheria za jedwali mahususi, unaweza kutumia chaguo la -t likifuatiwa na jedwali ambalo ungependa kuangalia. Kwa mfano, ili kuangalia sheria katika jedwali la NAT, unaweza kutumia:

      # iptables -t nat -L -v -n
      

      3. Zuia Anwani Maalum ya IP katika Firewall ya IPtables

      Ukipata shughuli isiyo ya kawaida au ya matusi kutoka kwa anwani ya IP unaweza kuzuia anwani hiyo ya IP kwa sheria ifuatayo:

      # iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
      

      Ambapo unahitaji kubadilisha \xxx.xxx.xxx.xxx\ na anwani halisi ya IP. Kuwa mwangalifu sana unapoendesha amri hii kwani unaweza kuzuia kwa bahati mbaya anwani yako ya IP. Chaguo la -A huongeza sheria katika mwisho wa msururu uliochaguliwa.

      Iwapo ungependa tu kuzuia trafiki ya TCP kutoka kwa anwani hiyo ya IP, unaweza kutumia chaguo la -p ambalo linabainisha itifaki. Kwa njia hiyo amri itaonekana kama hii:

      # iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP
      

      4. Fungua Anwani ya IP katika Firewall ya IPtables

      Ikiwa umeamua kuwa hutaki tena kuzuia maombi kutoka kwa anwani maalum ya IP, unaweza kufuta sheria ya kuzuia kwa amri ifuatayo:

      # iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP
      

      Chaguo la -D hufuta sheria moja au zaidi kutoka kwa msururu uliochaguliwa. Ukipendelea kutumia chaguo refu zaidi unaweza kutumia --delete.

      5. Zuia Bandari Maalum kwenye IPtables Firewall

      Wakati mwingine unaweza kutaka kuzuia miunganisho inayoingia au inayotoka kwenye bandari maalum. Ni kipimo kizuri cha usalama na unapaswa kufikiria juu ya jambo hilo wakati wa kusanidi ngome yako.

      Ili kuzuia miunganisho inayotoka kwa matumizi maalum ya bandari:

      # iptables -A OUTPUT -p tcp --dport xxx -j DROP
      

      Ili kuruhusu miunganisho inayoingia tumia:

      # iptables -A INPUT -p tcp --dport xxx -j ACCEPT
      

      Katika mifano yote miwili badilisha \xxx\ na mlango halisi unaotaka kuruhusu. Ikiwa unataka kuzuia trafiki ya UDP badala ya TCP, badilisha tu \tcp\ na \udp\ katika sheria ya iptables iliyo hapo juu.

      6. Ruhusu Bandari Nyingi kwenye IPtables kwa kutumia Multiport

      Unaweza kuruhusu bandari nyingi mara moja, kwa kutumia multiport, hapa chini unaweza kupata sheria kama hiyo kwa miunganisho inayoingia na inayotoka:

      # iptables -A INPUT  -p tcp -m multiport --dports 22,80,443 -j ACCEPT
      # iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT
      

      7. Ruhusu Masafa Mahususi ya Mtandao kwenye Mlango Maalum kwenye Jedwali la IP

      Unaweza kutaka kupunguza miunganisho fulani kwenye bandari maalum kwa mtandao fulani. Hebu tuseme ungependa kuruhusu miunganisho inayotoka kwenye mlango 22 kwa mtandao 192.168.100.0/24.

      Unaweza kuifanya kwa amri hii:

      # iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT
      

      8. Zuia Facebook kwenye IPtables Firewall

      Waajiri wengine hupenda kuzuia ufikiaji wa Facebook kwa wafanyikazi wao. Chini ni mfano wa jinsi ya kuzuia trafiki kwa Facebook.

      Kumbuka: Ikiwa wewe ni msimamizi wa mfumo na unahitaji kutumia sheria hizi, kumbuka kwamba wenzako wanaweza kuacha kuzungumza nawe :)

      Kwanza pata anwani za IP zinazotumiwa na Facebook:

      # host facebook.com 
      facebook.com has address 66.220.156.68
      
      # whois 66.220.156.68 | grep CIDR
      CIDR: 66.220.144.0/20
      

      Kisha unaweza kuzuia mtandao huo wa Facebook kwa:

      # iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP
      

      Kumbuka kwamba anuwai ya anwani ya IP inayotumiwa na Facebook inaweza kutofautiana katika nchi yako.

      9. Weka Usambazaji wa Bandari katika IPtables

      Wakati mwingine unaweza kutaka kusambaza trafiki ya huduma moja kwenye bandari nyingine. Unaweza kufanikisha hili kwa amri ifuatayo:

      # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525
      

      Amri iliyo hapo juu inapeleka mbele trafiki yote inayoingia kwenye kiolesura cha mtandao eth0, kutoka lango 25 hadi lango 2525. Unaweza kubadilisha bandari na zile unazohitaji.

      10. Zuia Mafuriko ya Mtandao kwenye Bandari ya Apache na IPtables

      Wakati mwingine anwani za IP zinaweza kuomba miunganisho mingi sana kuelekea bandari za wavuti kwenye tovuti yako. Hii inaweza kusababisha idadi ya maswala na kuzuia shida kama hizo, unaweza kutumia sheria ifuatayo:

      # iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT
      

      Amri iliyo hapo juu inaweka mipaka miunganisho inayoingia kutoka kwa kila dakika hadi 100 na kuweka kikomo cha kupasuka hadi 200. Unaweza kuhariri kikomo na kupasuka kwa kikomo kwa mahitaji yako mahususi.

      11. Zuia Maombi ya Ping yanayoingia kwenye IPtables

      Baadhi ya wasimamizi wa mfumo hupenda kuzuia maombi ya ping yanayoingia kutokana na masuala ya usalama. Ingawa tishio sio kubwa sana, ni vizuri kujua jinsi ya kuzuia ombi kama hilo:

      # iptables -A INPUT -p icmp -i eth0 -j DROP
      

      12. Ruhusu Ufikiaji wa loopback

      Ufikiaji wa loopback (ufikiaji kutoka 127.0.0.1) ni muhimu na unapaswa kuiacha ikifanya kazi kila wakati:

      # iptables -A INPUT -i lo -j ACCEPT
      # iptables -A OUTPUT -o lo -j ACCEPT
      

      13. Weka Logi ya Pakiti za Mtandao zilizoshuka kwenye IPtables

      Ikiwa unataka kuweka pakiti zilizodondoshwa kwenye kiolesura cha mtandao eth0, unaweza kutumia amri ifuatayo:

      # iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:"
      

      Unaweza kubadilisha thamani baada ya \--log-prefix\ na kitu kwa chaguo lako. Ujumbe umeingia katika /var/log/messages na unaweza kuzitafuta kwa:

      # grep "IPtables dropped packets:" /var/log/messages
      

      14. Zuia Ufikiaji wa Anwani Maalum ya MAC kwenye IPtables

      Unaweza kuzuia ufikiaji wa mfumo wako kutoka kwa anwani maalum ya MAC kwa kutumia:

      # iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP
      

      Bila shaka, utahitaji kubadilisha \00:00:00:00:00:00\ na anwani halisi ya MAC ambayo ungependa kuzuia.

      15. Punguza Idadi ya Viunganisho vya Wakati Mmoja kwa Anwani ya IP

      Ikiwa hutaki kuwa na miunganisho mingi ya wakati mmoja iliyoanzishwa kutoka kwa anwani moja ya IP kwenye bandari fulani unaweza kutumia amri iliyo hapa chini:

      # iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
      

      Amri iliyo hapo juu hairuhusu miunganisho isiyozidi 3 kwa kila mteja. Bila shaka, unaweza kubadilisha nambari ya bandari ili kufanana na huduma tofauti. Pia --connlimit-ave inapaswa kubadilishwa ili kuendana na mahitaji yako.

      16. Tafuta ndani ya Kanuni ya IPtables

      Baada ya kufafanua sheria zako za iptables, utataka kutafuta mara kwa mara na huenda ukahitaji kuzibadilisha. Njia rahisi ya kutafuta ndani ya sheria zako ni kutumia:

      # iptables -L $table -v -n | grep $string
      

      Katika mfano ulio hapo juu, utahitaji kubadilisha $table na jedwali halisi ambalo ungependa kutafuta na $string na mfuatano halisi ambao unatafuta.

      Hapa kuna mfano:

      # iptables -L INPUT -v -n | grep 192.168.0.100
      

      17. Bainisha Msururu Mpya wa IPTables

      Kwa iptables, unaweza kufafanua mlolongo wako mwenyewe na kuhifadhi sheria maalum ndani yake. Ili kufafanua mnyororo, tumia:

      # iptables -N custom-filter
      

      Sasa unaweza kuangalia ikiwa kichujio chako kipya kipo:

      # 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
      Chain custom-filter (0 references)
      target prot opt source destination

      18. Osha Minyororo ya Ngome ya IPtables au Kanuni

      Ikiwa unataka kufuta minyororo yako ya ngome, unaweza kutumia:

      # iptables -F
      

      Unaweza kufuta minyororo kutoka kwa meza maalum na:

      # iptables -t nat -F
      

      Unaweza kubadilisha \nat\ na jedwali halisi ambalo minyororo ungependa kuiondoa.

      19. Hifadhi Kanuni za IPtables kwenye Faili

      Ikiwa ungependa kuhifadhi sheria zako za ngome, unaweza kutumia amri ya iptables-save. Unaweza kutumia zifuatazo kuhifadhi na kuhifadhi sheria zako kwenye faili:

      # iptables-save > ~/iptables.rules
      

      Ni juu yako wapi utahifadhi faili na jinsi utakavyoipa jina.

      20. Rejesha Kanuni za IPtables kutoka kwa Faili

      Ikiwa ungependa kurejesha orodha ya sheria za iptables, unaweza kutumia iptables-restore. Amri inaonekana kama hii:

      # iptables-restore < ~/iptables.rules
      

      Kwa kweli njia ya faili yako ya sheria inaweza kuwa tofauti.

      21. Weka Kanuni za IPtables kwa Uzingatiaji wa PCI

      Baadhi ya wasimamizi wa mfumo wanaweza kuhitajika kusanidi seva zao ili zitumike PCI. Kuna mahitaji mengi ya wachuuzi tofauti wa kufuata PCI, lakini kuna wachache wa kawaida.

      Katika visa vingi, utahitaji kuwa na anwani zaidi ya moja ya IP. Utahitaji kutumia sheria zilizo hapa chini kwa anwani ya IP ya tovuti. Kuwa mwangalifu zaidi unapotumia sheria zilizo hapa chini na uzitumie tu ikiwa una uhakika kile unachofanya:

      # iptables -I INPUT -d SITE -p tcp -m multiport --dports 21,25,110,143,465,587,993,995 -j DROP
      

      Ikiwa unatumia cPanel au paneli sawa ya kudhibiti, unaweza kuhitaji kuzuia bandari zake pia. Hapa kuna mfano:

      # iptables -I in_sg -d DEDI_IP -p tcp -m multiport --dports  2082,2083,2095,2096,2525,2086,2087 -j DROP
      

      Kumbuka: Ili kuhakikisha kuwa unakidhi mahitaji ya mchuuzi wako wa PCI, angalia ripoti yao kwa makini na utumie sheria zinazohitajika. Katika baadhi ya matukio unaweza kuhitaji kuzuia trafiki ya UDP kwenye bandari fulani pia.

      22. Ruhusu Viunganisho Vilivyoanzishwa na Vinavyohusiana

      Kwa vile trafiki ya mtandao ni tofauti kwa zinazoingia na zinazotoka, utataka kuruhusu trafiki iliyoanzishwa na inayohusiana inayoingia. Kwa miunganisho inayoingia ifanye na:

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

      Kwa matumizi yanayotoka:

      # iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
      

      23. Weka Vifurushi Batili kwenye IPtables

      Inawezekana kuweka baadhi ya pakiti za mtandao alama kuwa si sahihi. Watu wengine wanaweza kupendelea kuweka vifurushi hivyo, lakini wengine wanapendelea kuviacha. Ili kuacha pakiti zisizo sahihi, unaweza kutumia:

      # iptables -A INPUT -m conntrack --ctstate INVALID -j DROP 
      

      24. Zuia Muunganisho kwenye Kiolesura cha Mtandao

      Mifumo mingine inaweza kuwa na zaidi ya kiolesura kimoja cha mtandao. Unaweza kupunguza ufikiaji wa kiolesura hicho cha mtandao au kuzuia miunganisho kutoka kwa anwani fulani ya IP.

      Kwa mfano:

      # iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP
      

      Badilisha \xxx.xxx.xxx.xxx na anwani halisi ya IP (au mtandao) ambayo ungependa kuzuia.

      25. Zima Barua Zinazotoka kupitia IPTables

      Ikiwa mfumo wako haupaswi kutuma barua pepe zozote, unaweza kuzuia bandari zinazotoka kwenye milango ya SMTP. Kwa mfano, unaweza kutumia hii:

      # iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT
      

      Hitimisho

      Iptables ni ngome yenye nguvu ambayo unaweza kufaidika nayo kwa urahisi. Ni muhimu kwa kila msimamizi wa mfumo kujifunza angalau misingi ya iptables. Ikiwa unataka kupata habari zaidi juu ya iptables na chaguzi zake inashauriwa sana kusoma mwongozo wake:

      # man iptables
      

      Ikiwa unafikiri tunapaswa kuongeza amri zaidi kwenye orodha hii, tafadhali zishiriki nasi, kwa kuziwasilisha katika sehemu ya maoni hapa chini.