ວິທີການຕັ້ງ Firewall Iptables ເພື່ອໃຫ້ສາມາດເຂົ້າເຖິງການບໍລິການຫ່າງໄກສອກຫຼີກໃນ Linux - ພາກ 8
ແນະ ນຳ ໂຄງການຢັ້ງຢືນມູນນິທິ Linux
ທ່ານຈະຈື່ໄດ້ຈາກພາກທີ 1 - ກ່ຽວກັບ Iptables ຂອງຊຸດນີ້ LFCE ( Linux Foundation Certified Engineer ) ທີ່ພວກເຮົາໃຫ້ ຄຳ ອະທິບາຍຂັ້ນພື້ນຖານວ່າ Firewall ແມ່ນຫຍັງ: ກົນໄກໃນການຈັດການ ຊຸດທີ່ເຂົ້າມາແລະອອກຈາກເຄືອຂ່າຍ. ໂດຍ“ ຈັດການ” ພວກເຮົາ ໝາຍ ຄວາມວ່າ:
<
ອີງຕາມເງື່ອນໄຂທີ່ໄດ້ ກຳ ນົດໄວ້ກ່ອນ.
ໃນບົດຄວາມນີ້ພວກເຮົາຈະປຶກສາຫາລືກ່ຽວກັບວິທີການຈັດຕັ້ງປະຕິບັດການກັ່ນຕອງແພັກເກັດຂັ້ນພື້ນຖານແລະວິທີການ ກຳ ນົດຄ່າໄຟວໍກັບ iptables ເຊິ່ງເປັນ ໜ້າ ຈໍຕໍ່ ໜ້າ netfilter ເຊິ່ງເປັນໂມດູນ kernel ພື້ນເມືອງທີ່ໃຊ້ ສຳ ລັບການປ້ອງກັນໄຟ.
ກະລຸນາຮັບຊາບວ່າການດັບເພີງແມ່ນຫົວຂໍ້ທີ່ກວ້າງຂວາງແລະບົດຄວາມນີ້ບໍ່ໄດ້ມີຈຸດປະສົງເພື່ອເປັນຄູ່ມືທີ່ສົມບູນແບບໃນການເຂົ້າໃຈທຸກຢ່າງທີ່ຕ້ອງຮູ້ກ່ຽວກັບມັນ, ແຕ່ແທນທີ່ຈະເປັນຈຸດເລີ່ມຕົ້ນຂອງການສຶກສາຫົວຂໍ້ນີ້ຢ່າງເລິກເຊິ່ງ. ເຖິງຢ່າງໃດກໍ່ຕາມ, ພວກເຮົາຈະທົບທວນຄືນຫົວຂໍ້ດັ່ງກ່າວໃນ ພາກທີ 10 ຂອງຊຸດນີ້ເມື່ອພວກເຮົາຄົ້ນຫາກໍລະນີການ ນຳ ໃຊ້ສະເພາະຂອງໄຟ ໄໝ້ ໃນ Linux.
ທ່ານສາມາດຄິດວ່າ ກຳ ແພງໄຟເປັນສະ ໜາມ ບິນສາກົນທີ່ມີຍົນໂດຍສານມາໃຊ້ບໍລິການເກືອບ 24/7. ອີງຕາມເງື່ອນໄຂ ຈຳ ນວນ ໜຶ່ງ, ເຊັ່ນວ່າຄວາມຖືກຕ້ອງຂອງ ໜັງ ສືເດີນທາງຂອງບຸກຄົນ, ຫຼືປະເທດຂອງລາວ (ທີ່ຈະຕັ້ງຊື່ບາງຕົວຢ່າງ) ລາວອາດຈະ, ຫຼືອາດຈະບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ເຂົ້າຫລືອອກຈາກປະເທດໃດ ໜຶ່ງ.
ພ້ອມດຽວກັນນີ້, ເຈົ້າ ໜ້າ ທີ່ສະ ໜາມ ບິນສາມາດແນະ ນຳ ໃຫ້ປະຊາຊົນຍ້າຍຈາກສະຖານທີ່ ໜຶ່ງ ຂອງສະ ໜາມ ບິນໄປບ່ອນອື່ນຖ້າ ຈຳ ເປັນ, ຍົກຕົວຢ່າງເມື່ອພວກເຂົາຕ້ອງໄປໂດຍຜ່ານບໍລິການດ້ານພາສີ.
ພວກເຮົາອາດຈະເຫັນການປຽບທຽບສະ ໜາມ ບິນມີປະໂຫຍດໃນຊ່ວງເວລາທີ່ເຫຼືອຂອງການສອນນີ້. ພຽງແຕ່ຈື່ ຈຳ ການພົວພັນດັ່ງຕໍ່ໄປນີ້ໃນຂະນະທີ່ພວກເຮົາ ດຳ ເນີນການຕໍ່ໄປ:
<
Iptables - ພື້ນຖານ
ໃນລະດັບຕໍ່າ, ມັນແມ່ນແກ່ນແທ້ທີ່“ ຕັດສິນໃຈ ” ສິ່ງທີ່ຕ້ອງເຮັດກັບຊຸດຕ່າງໆໂດຍອີງໃສ່ກົດລະບຽບທີ່ຈັດຢູ່ໃນ ຕ່ອງໂສ້ , ຫຼື ປະໂຫຍກ . ລະບົບຕ່ອງໂສ້ເຫລົ່ານີ້ ກຳ ນົດວ່າຄວນຈະເຮັດຫຍັງເມື່ອຊຸດໃດກົງກັບມາດຖານທີ່ລະບຸໄວ້.
ການກະ ທຳ ທຳ ອິດຂອງ iptables ຈະປະກອບດ້ວຍການຕັດສິນໃຈເຮັດຫຍັງກັບແພັກເກັດ:
<
ພຽງແຕ່ໃນກໍລະນີທີ່ທ່ານສົງໄສວ່າເປັນຫຍັງເຄື່ອງມືນີ້ຈຶ່ງຖືກເອີ້ນວ່າ iptables , ເພາະວ່າຕ່ອງໂສ້ເຫລົ່ານີ້ຖືກຈັດຢູ່ໃນຕາຕະລາງ, ໂດຍທີ່ ຕາຕະລາງການກັ່ນຕອງ ແມ່ນເປັນທີ່ຮູ້ຈັກດີທີ່ສຸດແລະເປັນເຄື່ອງມືທີ່ ນໍາໃຊ້ເພື່ອປະຕິບັດການກັ່ນຕອງຊຸດທີ່ມີລະບົບຕ່ອງໂສ້ສາມຢ່າງຂອງມັນ:
1. ລະບົບຕ່ອງໂສ້ຂອງ INPUT ຈັດການແພັກເກັດທີ່ເຂົ້າມາໃນເຄືອຂ່າຍ, ເຊິ່ງມີຈຸດປະສົງ ສຳ ລັບໂປແກຼມທ້ອງຖິ່ນ.
2. ລະບົບຕ່ອງໂສ້ OUTPUT ຖືກໃຊ້ເພື່ອວິເຄາະຊຸດທີ່ມີຢູ່ໃນເຄືອຂ່າຍທ້ອງຖິ່ນ, ເຊິ່ງຈະຖືກສົ່ງໄປທາງນອກ.
3. ລະບົບຕ່ອງໂສ້ຂອງ FORWARD ປຸງແຕ່ງແພັກເກັດທີ່ຄວນຈະຖືກສົ່ງຕໍ່ໄປຍັງຈຸດ ໝາຍ ປາຍທາງອື່ນ (ເຊັ່ນໃນກໍລະນີຂອງ router).
ສຳ ລັບຕ່ອງໂສ້ເຫລົ່ານີ້ແຕ່ລະອັນມີນະໂຍບາຍເລີ່ມຕົ້ນ, ເຊິ່ງ ກຳ ນົດວ່າຄວນຈະເຮັດຫຍັງໂດຍຄ່າເລີ່ມຕົ້ນເມື່ອຊຸດບໍ່ກົງກັບກົດລະບຽບໃດ ໜຶ່ງ ໃນຕ່ອງໂສ້. ທ່ານສາມາດເບິ່ງກົດລະບຽບທີ່ສ້າງຂື້ນ ສຳ ລັບແຕ່ລະຕ່ອງໂສ້ແລະນະໂຍບາຍເລີ່ມຕົ້ນໂດຍການ ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້:
# iptables -L
ນະໂຍບາຍທີ່ມີຢູ່ແມ່ນດັ່ງຕໍ່ໄປນີ້:
<
ເມື່ອຕັດສິນໃຈວ່ານະໂຍບາຍໃດທີ່ທ່ານຈະປະຕິບັດ, ທ່ານ ຈຳ ເປັນຕ້ອງພິຈາລະນາແຕ່ລະວິທີການທີ່ໄດ້ອະທິບາຍຂ້າງເທິງນີ້ - ໃຫ້ສັງເກດວ່າບໍ່ມີຂະ ໜາດ ໃດ ເໝາະ ສົມກັບທ່ານ ການແກ້ໄຂບັນຫາ.
ເພື່ອເພີ່ມກົດລະບຽບໃສ່ firewall, ໃຫ້ອ້າງ ຄຳ ສັ່ງ iptables ດັ່ງຕໍ່ໄປນີ້:
# iptables -A chain_name criteria -j target
ຢູ່ໃສ,
<
[--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.
ໃຫ້ກາວທັງ ໝົດ ໃນ 3 ຕົວຢ່າງແບບເກົ່າໂດຍໃຊ້ສະພາບແວດລ້ອມການທົດສອບຕໍ່ໄປນີ້ ສຳ ລັບສອງ ທຳ ອິດ:
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
ແລະນີ້ ສຳ ລັບຕົວຢ່າງສຸດທ້າຍ
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
ພວກເຮົາຈະ ກຳ ນົດນະໂຍບາຍ DROP ກ່ອນ ສຳ ລັບການປ້ອນຂໍ້ມູນໃສ່ກັບ firewall ຂອງພວກເຮົາ. ນັ້ນແມ່ນ, ຊອງ icmp ຈະຖືກລຸດລົງຢ່າງງຽບໆ.
# ping -c 3 192.168.0.15
# iptables -A INPUT --protocol icmp --in-interface eth0 -j DROP
ກ່ອນທີ່ຈະ ດຳ ເນີນການກັບພາກສ່ວນ ທີ່ຢູ່ພວກເຮົາຈະໄຫລທຸກໆກົດລະບຽບຈາກຕ່ອງໂສ້ INPUT ເພື່ອໃຫ້ແນ່ໃຈວ່າແພັກເກັດຂອງພວກເຮົາຈະຖືກທົດສອບໂດຍກົດລະບຽບ ໃໝ່ ນີ້:
# iptables -F INPUT # iptables -A INPUT --protocol icmp --in-interface eth0 -j REJECT
# ping -c 3 192.168.0.15
ພວກເຮົາຈະຈັດການກັບລະບົບຕ່ອງໂສ້ OUTPUT ດັ່ງທີ່ພວກເຮົາ ກຳ ລັງຈັດການການຈະລາຈອນຂາອອກ:
# iptables -A OUTPUT --protocol tcp --destination-port 22 --out-interface eth0 --jump REJECT
ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ໃນ NFSv4 server/firewall ເພື່ອປິດພອດ 2049 ແລະ 111 ສໍາລັບການຈະລາຈອນທຸກປະເພດ:
# 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
ຕອນນີ້ເປີດທ່າເຮືອເຫລົ່ານັ້ນແລະເບິ່ງວ່າຈະມີຫຍັງເກີດຂື້ນ.
# 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
ດັ່ງທີ່ທ່ານເຫັນ, ພວກເຮົາສາມາດຕິດຕໍ່ຮຸ້ນ NFSv4 ໄດ້ຫຼັງຈາກເປີດການຈະລາຈອນ.
ໃນຕົວຢ່າງທີ່ຜ່ານມາພວກເຮົາໄດ້ສະແດງວິທີການເພີ່ມກົດລະບຽບໃນຕ່ອງໂສ້ INPUT ແລະ OUTPUT . ຖ້າພວກເຮົາຕ້ອງການໃສ່ພວກມັນແທນທີ່ ຕຳ ແໜ່ງ ທີ່ ກຳ ນົດໄວ້, ພວກເຮົາຄວນໃຊ້ປຸ່ມ -I (uppercase i) ແທນ.
ທ່ານ ຈຳ ເປັນຕ້ອງຈື່ວ່າກົດລະບຽບຕ່າງໆຈະຖືກປະເມີນຜົນຫຼັງຈາກນັ້ນ, ແລະການປະເມີນຢຸດ (ຫຼືເພີ່ມຂື້ນ) ເມື່ອນະໂຍບາຍ DROP ຫຼື ACCEPT ຖືກຈັບຄູ່. ດ້ວຍເຫດຜົນດັ່ງກ່າວ, ທ່ານອາດຈະເຫັນວ່າທ່ານຕ້ອງການຍ້າຍກົດລະບຽບຂຶ້ນຫລືລົງໃນບັນຊີຕ່ອງໂສ້ຕາມຄວາມຕ້ອງການ.
ພວກເຮົາຈະໃຊ້ຕົວຢ່າງທີ່ບໍ່ ສຳ ຄັນເພື່ອສະແດງສິ່ງນີ້:
ໃຫ້ໃຊ້ກົດລະບຽບຕໍ່ໄປນີ້,
# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT
ຢູ່ ຕຳ ແໜ່ງ ທີ 2) ໃນຕ່ອງໂສ້ INPUT (ດັ່ງນັ້ນການເຄື່ອນຍ້າຍອັນດັບ 2 ໃນອັນດັບ 3)
ການ ນຳ ໃຊ້ການຕັ້ງຄ່າຂ້າງເທິງນີ້, ການຈະລາຈອນຈະຖືກກວດເບິ່ງເພື່ອເບິ່ງວ່າມັນຖືກມຸ້ງໄປທີ່ Port 80 ກ່ອນທີ່ຈະກວດເບິ່ງທີ່ Port 2049 ຫຼືບໍ່.
ອີກທາງເລືອກ ໜຶ່ງ, ທ່ານສາມາດລຶບກົດລະບຽບແລະປ່ຽນເປົ້າ ໝາຍ ຂອງກົດລະບຽບທີ່ຍັງເຫຼືອເປັນ ປະຕິເສດ (ໃຊ້ປຸ່ມ -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
ສຸດທ້າຍ, ແຕ່ທ່ານ ຈຳ ເປັນຕ້ອງຈື່ວ່າເພື່ອໃຫ້ກົດລະບຽບຂອງໄຟວຸທ໌ມີຄວາມຄົງທົນ, ທ່ານຈະຕ້ອງເກັບມັນໄວ້ໃນແຟ້ມເອກະສານແລະຫຼັງຈາກນັ້ນໃຫ້ພວກມັນຟື້ນຟູໂດຍອັດຕະໂນມັດເມື່ອໃສ່ເກີບ (ໂດຍໃຊ້ວິທີທີ່ທ່ານເລືອກຫລືແບບທີ່ທ່ານເລືອກ. ມີໄວ້ ສຳ ລັບການແຈກຈ່າຍຂອງທ່ານ).
ປະຢັດລະບຽບການໃຊ້ໄຟວໍ:
# iptables-save > /etc/iptables/rules.v4 [On Ubuntu] # iptables-save > /etc/sysconfig/iptables [On CentOS / OpenSUSE]
ການຟື້ນຟູກົດລະບຽບ:
# iptables-restore < /etc/iptables/rules.v4 [On Ubuntu] # iptables-restore < /etc/sysconfig/iptables [On CentOS / OpenSUSE]
ນີ້ພວກເຮົາສາມາດເຫັນຂັ້ນຕອນຄ້າຍຄືກັນ (ປະຢັດແລະຟື້ນຟູກົດລະບຽບຂອງໄຟວໍດ້ວຍມື) ໂດຍໃຊ້ແຟ້ມ dummy ທີ່ມີຊື່ວ່າ iptables.dump ແທນທີ່ຈະເປັນຄ່າເລີ່ມຕົ້ນດັ່ງທີ່ສະແດງຢູ່ຂ້າງເທິງ.
# iptables-save > iptables.dump
ເພື່ອເຮັດໃຫ້ການປ່ຽນແປງເຫຼົ່ານີ້ມີຄວາມ ໝັ້ນ ຄົງຕະຫຼອດເກີບ:
Ubuntu : ຕິດຕັ້ງຊຸດ iptables-persistent ເຊິ່ງຈະໂຫລດລະບຽບທີ່ບັນທຶກໄວ້ໃນແຟ້ມ /etc/iptables/rules.v4 .
# apt-get install iptables-persistent
CentOS : ເພີ່ມ 2 ເສັ້ນຕໍ່ໄປນີ້ໃສ່ /etc/sysconfig/iptables-config .
IPTABLES_SAVE_ON_STOP="yes" IPTABLES_SAVE_ON_RESTART="yes"
OpenSUSE : ລາຍຊື່ພອດ, ອະນຸສັນຍາ, ທີ່ຢູ່, ແລະອື່ນໆ (ແຍກດ້ວຍເຄື່ອງ ໝາຍ ຈຸດ) ໃນ /etc/sysconfig/SuSEfirewall2 .
ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມ ໝາຍ ເຖິງເອກະສານເອງ, ເຊິ່ງມີ ຄຳ ເຫັນຫຼາຍ.
ສະຫຼຸບ
ຕົວຢ່າງທີ່ລະບຸໄວ້ໃນບົດຄວາມນີ້, ໃນຂະນະທີ່ບໍ່ໄດ້ກວມເອົາລະຄັງແລະສຽງກະດິງທັງ ໝົດ ຂອງ iptables, ໃຫ້ບໍລິການເພື່ອຈຸດປະສົງໃນການສະແດງວິທີການເປີດໃຊ້ງານແລະການປິດການຈະລາຈອນທີ່ເຂົ້າມາ.
ສຳ ລັບທ່ານຜູ້ທີ່ເປັນແຟນເພັງຂອງ firewall, ຈົ່ງຈື່ໄວ້ວ່າພວກເຮົາຈະທົບທວນຄືນຫົວຂໍ້ນີ້ໂດຍມີ ຄຳ ຮ້ອງສະເພາະເພີ່ມເຕີມໃນ ພາກທີ 10 ຂອງຊຸດ LFCE ນີ້.
ຮູ້ສຶກວ່າບໍ່ເສຍຄ່າທີ່ຈະແຈ້ງໃຫ້ຂ້ອຍທາບຖ້າທ່ານມີຄໍາຖາມຫຼືຄໍາເຫັນໃດໆ.