13 ຄຳ ຖາມ ສຳ ພາດກ່ຽວກັບ Linux iptables Firewall
ນາງ Nishita Agarwal, ຜູ້ຢ້ຽມຢາມ Tecmint ເລື້ອຍໆແບ່ງປັນປະສົບການ (ຄຳ ຖາມແລະ ຄຳ ຕອບ) ໃຫ້ພວກເຮົາກ່ຽວກັບການ ສຳ ພາດວຽກທີ່ນາງຫາກໍ່ໃຫ້ຢູ່ໃນບໍລິສັດໂຮດຕິ້ງທີ່ເປັນເຈົ້າຂອງເອກະຊົນໃນ Pune, ອິນເດຍ. ນາງໄດ້ຖືກຖາມຫລາຍໆ ຄຳ ຖາມໃນຫລາຍຫົວຂໍ້ເຖິງຢ່າງໃດກໍ່ຕາມນາງເປັນຜູ້ຊ່ຽວຊານດ້ານ iptables ແລະນາງຕ້ອງການແບ່ງປັນ ຄຳ ຖາມເຫລົ່ານັ້ນແລະ ຄຳ ຕອບຂອງພວກເຂົາ (ນາງໃຫ້) ກ່ຽວຂ້ອງກັບ iptables ກັບຄົນອື່ນທີ່ອາດຈະໃຫ້ ສຳ ພາດໃນອະນາຄົດອັນໃກ້ນີ້
ທຸກ ຄຳ ຖາມແລະ ຄຳ ຕອບຂອງພວກເຂົາແມ່ນຂຽນຄືນໂດຍອີງຕາມຄວາມຊົງ ຈຳ ຂອງ Nishita Agarwal.
“ ສະບາຍດີເພື່ອນ! ຂ້ອຍຊື່ Nishita Agarwal. ຂ້ອຍໄດ້ຮຽນຕໍ່ປະລິນຍາຕີດ້ານເຕັກໂນໂລຢີ. ເຂດພິເສດຂອງຂ້ອຍແມ່ນ UNIX ແລະ Variants ຂອງ UNIX (BSD, Linux) ເຮັດໃຫ້ຂ້ອຍສົນໃຈຕັ້ງແຕ່ເວລາທີ່ຂ້ອຍໄດ້ຍິນ. ຂ້ອຍມີປະສົບການ 1+ ປີໃນການເກັບຮັກສາ. ຂ້ອຍ ກຳ ລັງຊອກຫາການປ່ຽນແປງວຽກທີ່ສິ້ນສຸດລົງກັບບໍລິສັດໂຮດຕິ້ງທີ່ເມືອງ Pune, ປະເທດອິນເດຍ.”
ນີ້ແມ່ນການເກັບ ກຳ ສິ່ງທີ່ຂ້ອຍຖືກຖາມໃນລະຫວ່າງການ ສຳ ພາດ. ຂ້າພະເຈົ້າໄດ້ບັນທຶກພຽງແຕ່ ຄຳ ຖາມເຫຼົ່ານັ້ນແລະ ຄຳ ຕອບຂອງພວກເຂົາທີ່ກ່ຽວຂ້ອງກັບ iptables ອີງຕາມຄວາມຊົງ ຈຳ ຂອງຂ້ອຍ. ຫວັງວ່າສິ່ງນີ້ຈະຊ່ວຍທ່ານໃນການແກ້ບົດ ສຳ ພາດຂອງທ່ານ.
ຕອບ: ຂ້ອຍໄດ້ໃຊ້ iptables ເປັນເວລາດົນນານແລ້ວແລະຂ້ອຍກໍ່ຮູ້ທັງ iptables ແລະ firewall. Iptables ແມ່ນໂປແກຼມສະ ໝັກ ທີ່ຂຽນເປັນພາສາ C Programming Language ແລະຖືກປ່ອຍອອກພາຍໃຕ້ໃບອະນຸຍາດສາທາລະນະທົ່ວໄປຂອງ GNU. ລາຍລັກອັກສອນ ສຳ ລັບລະບົບການບໍລິຫານລະບົບ, ການປ່ອຍແບບ ໃໝ່ ທີ່ ໝັ້ນ ຄົງຖ້າ iptables 1.4.21. Administrator ພົວພັນກັບ iptables ຜ່ານເຄື່ອງມືດ້ານ ໜ້າ console/GUI ເພື່ອເພີ່ມແລະ ກຳ ນົດກົດລະບຽບຂອງ firewall ເຂົ້າໃນຕາຕະລາງທີ່ ກຳ ນົດໄວ້. Netfilter ແມ່ນໂມດູນທີ່ຖືກສ້າງຂຶ້ນພາຍໃນຂອງແກ່ນທີ່ເຮັດ ໜ້າ ທີ່ໃນການກັ່ນຕອງ.
Firewalld ແມ່ນການປະຕິບັດລ້າສຸດຂອງກົດລະບຽບການກັ່ນຕອງໃນ RHEL/CentOS 7 (ອາດຈະຖືກຈັດຕັ້ງປະຕິບັດໃນການແຈກຈ່າຍອື່ນໆທີ່ຂ້ອຍອາດຈະບໍ່ຮູ້). ມັນໄດ້ທົດແທນການໂຕ້ຕອບ iptables ແລະເຊື່ອມຕໍ່ກັບ netfilter.
ຕອບ: ພະລັງງານມະຫາສານຂອງຜູ້ໃຊ້ໃນຮູບແບບຂອງລະດັບສູງຂອງຄວາມຍືດຫຍຸ່ນແລະຄວາມເຂົ້າໃຈທີ່ດີກວ່າກ່ຽວກັບສິ່ງທີ່ເກີດຂື້ນໃນພື້ນຫລັງ, ຖ້າບໍ່ແມ່ນສິ່ງອື່ນ. GUI ແມ່ນ ສຳ ລັບຜູ້ບໍລິຫານຈົວໃນຂະນະທີ່ຄອນໂຊນແມ່ນ ສຳ ລັບຜູ້ທີ່ມີປະສົບການ.
ຕອບ: iptables ແລະ firewalld ໃຫ້ບໍລິການຈຸດປະສົງດຽວກັນ (Packet Filtering) ແຕ່ມີວິທີການທີ່ແຕກຕ່າງກັນ. iptables flush ກົດລະບຽບທັງ ໝົດ ທີ່ຕັ້ງໄວ້ໃນແຕ່ລະຄັ້ງທີ່ມີການປ່ຽນແປງທີ່ແຕກຕ່າງຈາກ firewalld. ໂດຍປົກກະຕິສະຖານທີ່ຂອງການຕັ້ງຄ່າ iptables ແມ່ນຢູ່ '/ etc/sysconfig/iptables' ໃນຂະນະທີ່ການຕັ້ງຄ່າ firewalld ແມ່ນຢູ່ '/ etc/firewalld /', ເຊິ່ງເປັນຊຸດຂອງເອກະສານ XML. ມັນງ່າຍກວ່າເມື່ອທຽບໃສ່ກັບການຕັ້ງຄ່າຂອງ iptables, ເຖິງຢ່າງໃດກໍ່ຕາມວຽກງານດຽວກັນສາມາດບັນລຸໄດ້ໂດຍໃຊ້ໂປແກຼມການກັ່ນຕອງແບບແພັກເກັດເຊັ່ນ: iptables ແລະ firewalld. Firewalld ໃຊ້ iptables ພາຍໃຕ້ເຄື່ອງຂອງມັນພ້ອມດ້ວຍອິນເຕີເຟດເສັ້ນ ຄຳ ສັ່ງແລະເອກະສານການຕັ້ງຄ່າທີ່ເປັນ XML ແລະກ່າວມາຂ້າງເທິງ.
ຕອບ: ຂ້ອຍຄຸ້ນເຄີຍກັບ iptables ແລະມັນ ກຳ ລັງເຮັດວຽກແລະຖ້າບໍ່ມີສິ່ງໃດທີ່ຮຽກຮ້ອງໃຫ້ມີລັກສະນະແບບເຄື່ອນໄຫວຂອງ firewalld, ເບິ່ງຄືວ່າບໍ່ມີເຫດຜົນຫຍັງທີ່ຈະຍ້າຍການຕັ້ງຄ່າທັງ ໝົດ ຂອງຂ້ອຍຈາກ iptables ໄປເປັນ firewalld. ໃນກໍລະນີຫຼາຍທີ່ສຸດ , ເຖິງຕອນນີ້ຂ້ອຍບໍ່ເຄີຍເຫັນ iptables ສ້າງບັນຫາ. ພ້ອມກັນນັ້ນກົດລະບຽບທົ່ວໄປຂອງເຕັກໂນໂລຢີຂໍ້ມູນຂ່າວສານກ່າວວ່າ“ ເປັນຫຍັງແກ້ໄຂຖ້າມັນບໍ່ແຕກ”. ເຖິງຢ່າງໃດກໍ່ຕາມນີ້ແມ່ນຄວາມຄິດສ່ວນຕົວຂອງຂ້ອຍແລະຂ້ອຍບໍ່ເຄີຍຄິດທີ່ຈະປະຕິບັດ firewalld ຖ້າອົງການຈະປ່ຽນແທນ iptables ດ້ວຍ firewalld.
ຕາຕະລາງທີ່ໃຊ້ໃນ iptables ແມ່ນຫຍັງ? ໃຫ້ຄໍາອະທິບາຍສັ້ນໆກ່ຽວກັບຕາຕະລາງທີ່ໃຊ້ໃນ iptables ແລະຕ່ອງໂສ້ທີ່ພວກເຂົາສະ ໜັບ ສະ ໜູນ.
ຕອບ: ຂໍຂອບໃຈ ສຳ ລັບການຮັບຮູ້. ການເຄື່ອນຍ້າຍໄປຫາ ຄຳ ຖາມສ່ວນ ໜຶ່ງ, ມີສີ່ໂຕະທີ່ໃຊ້ໃນ iptables, ຄື:
<
ຕາຕະລາງ Nat: ຕາຕະລາງ Nat ແມ່ນຖືກ ນຳ ໃຊ້ຕົ້ນຕໍ ສຳ ລັບການແປ Network Address Address. ແພັກເກັດທີ່ລວດລາຍໄດ້ຮັບທີ່ຢູ່ IP ຂອງພວກເຂົາປ່ຽນແປງຕາມກົດລະບຽບໃນຕາຕະລາງ. ແພັກເກັດຕ່າງໆທີ່ຢູ່ໃນກະແສນ້ ຳ Traverse Nat Table ພຽງແຕ່ຄັ້ງດຽວ. ຕົວຢ່າງ:, ຖ້າວ່າເຄື່ອງຂອງຈາກຊຸດຂອງຊອງຂອງ Packets ຖືກ masqueraded ພວກມັນສ່ວນທີ່ເຫຼືອຢູ່ໃນກະແສຈະບໍ່ຜ່ານຕາຕະລາງນີ້ອີກ. ຂໍແນະ ນຳ ໃຫ້ບໍ່ກັ່ນຕອງໃນຕາຕະລາງນີ້. ລະບົບຕ່ອງໂສ້ທີ່ໄດ້ຮັບການສະ ໜັບ ສະ ໜູນ ຈາກ NAT Table ແມ່ນລະບົບຕ່ອງໂສ້ PREROUTING, ຕ່ອງໂສ້ POSTROUTING ແລະຕ່ອງໂສ້ OUTPUT.
ຕາຕະລາງ Mangle: ດັ່ງທີ່ຊື່ໄດ້ແນະ ນຳ, ຕາຕະລາງນີ້ໃຫ້ບໍລິການເກັບມ້ຽນຊອງ ມັນຖືກນໍາໃຊ້ສໍາລັບການປ່ຽນແປງຊຸດພິເສດ. ມັນສາມາດຖືກ ນຳ ໃຊ້ເພື່ອປ່ຽນເນື້ອໃນຂອງແພັກເກັດຕ່າງໆແລະສ່ວນຫົວຂອງມັນ. ຕາຕະລາງ Mangle ບໍ່ສາມາດໃຊ້ ສຳ ລັບ Masquerading. ຕ່ອງໂສ້ທີ່ຮອງຮັບແມ່ນລະບົບຕ່ອງໂສ້ PREROUTING, ຕ່ອງໂສ້ OUTPUT, ຕ່ອງໂສ້ Forward, INPUT Chain, POSTROUTING Chain.
ຕາຕະລາງການກັ່ນຕອງ: ຕາຕະລາງການກັ່ນຕອງແມ່ນຕາຕະລາງເລີ່ມຕົ້ນທີ່ໃຊ້ໃນ iptables. ມັນຖືກໃຊ້ ສຳ ລັບການກັ່ນຕອງ Packet. ຖ້າບໍ່ມີກົດລະບຽບໃດຖືກ ກຳ ນົດ, ຕາຕະລາງການກັ່ນຕອງຖືກປະຕິບັດເປັນຕາຕະລາງເລີ່ມຕົ້ນແລະການກັ່ນຕອງແມ່ນເຮັດບົນພື້ນຖານຂອງຕາຕະລາງນີ້. ລະບົບຕ່ອງໂສ້ທີ່ໄດ້ຮັບການສະ ໜັບ ສະ ໜູນ ແມ່ນລະບົບຕ່ອງໂສ້ INPUT, ລະບົບຕ່ອງໂສ້ OUTPUT, ລະບົບຕ່ອງໂສ້ FORWARD.
ຕາຕະລາງດິບ: ຕາຕະລາງດິບເຂົ້າມາປະຕິບັດງານເມື່ອພວກເຮົາຕ້ອງການ ກຳ ນົດການຫຸ້ມຫໍ່ທີ່ໄດ້ຮັບການຍົກເວັ້ນກ່ອນ ໜ້າ ນີ້. ມັນສະຫນັບສະຫນູນລະບົບຕ່ອງໂສ້ PREROUTING ແລະ OUTPUT.
ຕອບ: ຕໍ່ໄປນີ້ແມ່ນຄຸນຄ່າເປົ້າ ໝາຍ ທີ່ພວກເຮົາສາມາດ ກຳ ນົດໄດ້ໃນເປົ້າ ໝາຍ ໃນ iptables:
<
ທ່ານຈະກວດສອບ iptables rpm ທີ່ຕ້ອງການຕິດຕັ້ງ iptables ໃນ CentOS ໄດ້ແນວໃດ?.
ຕອບ: iptables rpm ແມ່ນລວມຢູ່ໃນການຕິດຕັ້ງແບບ CentOS ມາດຕະຖານແລະພວກເຮົາບໍ່ ຈຳ ເປັນຕ້ອງຕິດຕັ້ງມັນແຍກຕ່າງຫາກ. ພວກເຮົາສາມາດກວດສອບ rpm ໄດ້ທີ່:
# rpm -qa iptables iptables-1.4.21-13.el7.x86_64
ຖ້າທ່ານຕ້ອງການຕິດຕັ້ງມັນ, ທ່ານອາດຈະເຮັດແນວໃດເພື່ອໃຫ້ມັນ.
# yum install iptables-services
ຕອບ: ເພື່ອກວດກາເບິ່ງສະຖານະພາບຂອງ iptables, ທ່ານອາດຈະໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້ຢູ່ປາຍທາງ.
# service iptables status [On CentOS 6/5] # systemctl status iptables [On CentOS 7]
ຖ້າມັນບໍ່ໄດ້ເຮັດວຽກ, ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້ອາດຈະຖືກປະຕິບັດ.
---------------- On CentOS 6/5 ---------------- # chkconfig --level 35 iptables on # service iptables start ---------------- On CentOS 7 ---------------- # systemctl enable iptables # systemctl start iptables
ພວກເຮົາຍັງອາດຈະກວດເບິ່ງວ່າໂມດູນ iptables ຖືກໂຫລດຫລືບໍ່ເຊັ່ນ:
# lsmod | grep ip_tables
ຕອບ: ກົດລະບຽບໃນປະຈຸບັນໃນ iptables ສາມາດທົບທວນງ່າຍໆຄື:
# iptables -L
ຜົນໄດ້ຮັບຕົວຢ່າງ
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination
ຕອບ: ເພື່ອໄຫລສາຍໂສ້ iptables ໂດຍສະເພາະ, ທ່ານອາດຈະໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.
# iptables --flush OUTPUT
ເພື່ອ Flush ລະຫັດ iptables ທັງ ໝົດ.
# iptables --flush
ຕອບ: ສະຖານະການຂ້າງເທິງນີ້ສາມາດປະສົບຜົນ ສຳ ເລັດໄດ້ງ່າຍໆໂດຍການເຮັດ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້.
# iptables -A INPUT -s 192.168.0.7 -j ACCEPT
ພວກເຮົາອາດຈະລວມເອົາ slash ມາດຕະຖານຫຼື ໜ້າ ກາກ subnet ໃນແຫລ່ງທີ່ມາ:
# iptables -A INPUT -s 192.168.0.7/24 -j ACCEPT # iptables -A INPUT -s 192.168.0.7/255.255.255.0 -j ACCEPT
ຕອບ: ຫວັງວ່າ ssh ກຳ ລັງແລ່ນຢູ່ port 22 ເຊິ່ງມັນກໍ່ເປັນພອດເລີ່ມຕົ້ນ ສຳ ລັບ ssh, ພວກເຮົາສາມາດເພີ່ມກົດລະບຽບໃຫ້ iptables ຄື:
ເພື່ອ ACCEPT ຊອງ tcp ສຳ ລັບບໍລິການ ssh (ພອດ 22).
# iptables -A INPUT -s -p tcp --dport 22 -j ACCEPT
ເພື່ອ REJECT ຫຸ້ມຫໍ່ tcp ສຳ ລັບບໍລິການ ssh (ພອດ 22).
# iptables -A INPUT -s -p tcp --dport 22 -j REJECT
ເຖິງຊອງ DENY tcp ສຳ ລັບບໍລິການ ssh (ພອດ 22).
# iptables -A INPUT -s -p tcp --dport 22 -j DENY
ເພື່ອ DROP ຊອງ tcp ສຳ ລັບບໍລິການ ssh (ພອດ 22).
# iptables -A INPUT -s -p tcp --dport 22 -j DROP
ຕອບ: ດີທັງ ໝົດ ທີ່ຂ້ອຍຕ້ອງການໃຊ້ແມ່ນຕົວເລືອກ 'multiport' ກັບ iptables ຕາມດ້ວຍເລກພອດທີ່ຈະຖືກບລັອກແລະສະຖານະການຂ້າງເທິງສາມາດປະສົບຜົນ ສຳ ເລັດໄດ້ເປັນຢ່າງດຽວ.
# iptables -A INPUT -s 192.168.0.6 -p tcp -m multiport --dport 21,22,23,80 -j DROP
ກົດລະບຽບທີ່ເປັນລາຍລັກອັກສອນສາມາດກວດສອບໄດ້ໂດຍໃຊ້ ຄຳ ສັ່ງຂ້າງລຸ່ມ.
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh REJECT all -- anywhere anywhere reject-with icmp-host-prohibited DROP tcp -- 192.168.0.6 anywhere multiport dports ssh,telnet,http,webcache Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination
ຜູ້ ສຳ ພາດ: ນັ້ນແມ່ນສິ່ງທີ່ຂ້ອຍຢາກຖາມ. ທ່ານແມ່ນພະນັກງານທີ່ມີຄ່າທີ່ພວກເຮົາບໍ່ຄວນພາດ. ຂ້ອຍຈະແນະ ນຳ ຊື່ຂອງເຈົ້າໃຫ້ HR. ຖ້າທ່ານມີ ຄຳ ຖາມໃດໆທີ່ທ່ານອາດຈະຖາມຂ້ອຍ.
ໃນຖານະເປັນຜູ້ສະ ໝັກ ຂ້ອຍບໍ່ຕ້ອງການຂ້າການສົນທະນາດັ່ງນັ້ນຈຶ່ງສືບຕໍ່ສອບຖາມກ່ຽວກັບໂຄງການຕ່າງໆທີ່ຂ້ອຍຈະຈັດການຖ້າຖືກຄັດເລືອກແລະສິ່ງໃດທີ່ເປັນການເປີດອື່ນໆໃນບໍລິສັດ. ບໍ່ໄດ້ກ່າວເຖິງຮອບ HR ແມ່ນບໍ່ຍາກທີ່ຈະແຕກແລະຂ້ອຍໄດ້ຮັບໂອກາດ.
ນອກຈາກນີ້ຂ້າພະເຈົ້າຂໍຂອບໃຈ Avishek ແລະ Ravi (ເຊິ່ງຂ້ອຍເປັນເພື່ອນນັບຕັ້ງແຕ່ດົນນານ) ທີ່ໄດ້ໃຊ້ເວລາເພື່ອບັນທຶກການ ສຳ ພາດຂອງຂ້ອຍ.
ເພື່ອນ! ຖ້າທ່ານໄດ້ໃຫ້ການ ສຳ ພາດດັ່ງກ່າວແລະທ່ານຢາກແບ່ງປັນປະສົບການ ສຳ ພາດຂອງທ່ານໃຫ້ກັບຜູ້ອ່ານ Tecmint ຫຼາຍລ້ານຄົນທົ່ວໂລກບໍ? ຈາກນັ້ນສົ່ງ ຄຳ ຖາມແລະ ຄຳ ຕອບຂອງທ່ານມາທີ່ [email ຫຼືທ່ານອາດຈະສົ່ງປະສົບການ ສຳ ພາດຂອງທ່ານໂດຍໃຊ້ແບບຟອມຕໍ່ໄປນີ້.
ຂອບໃຈ! ຮັກສາການເຊື່ອມຕໍ່. ພ້ອມທັງແຈ້ງໃຫ້ຂ້ອຍທາບວ່າຂ້ອຍສາມາດຕອບ ຄຳ ຖາມໄດ້ຢ່າງຖືກຕ້ອງຫຼາຍກວ່າສິ່ງທີ່ຂ້ອຍໄດ້ເຮັດ.