13 คำถามสัมภาษณ์บน Linux iptables Firewall
Nishita Agarwal ผู้เยี่ยมชม Tecmint บ่อยครั้งได้แบ่งปันประสบการณ์ของเธอ (คำถามและคำตอบ) กับเราเกี่ยวกับการสัมภาษณ์งานที่เธอเพิ่งให้สัมภาษณ์ในบริษัทโฮสติ้งเอกชนใน ปูเน่ , อินเดีย เธอถูกถามคำถามมากมายในหัวข้อต่างๆ อย่างไรก็ตาม เธอเป็นผู้เชี่ยวชาญใน iptables และเธอต้องการแบ่งปันคำถามเหล่านั้นและคำตอบของพวกเขา (เธอให้) ที่เกี่ยวข้องกับ iptables ให้กับผู้อื่นที่อาจกำลังจะไป ให้สัมภาษณ์ในอนาคตอันใกล้นี้
คำถามและคำตอบทั้งหมดถูกเขียนขึ้นใหม่โดยอาศัยความทรงจำของ นิชิตะ อาการ์วัล
"สวัสดีเพื่อน! ฉันชื่อ นิชิตา อาการ์วัล ฉันสำเร็จการศึกษาระดับปริญญาตรีสาขาเทคโนโลยี ความเชี่ยวชาญของฉันคือ UNIX และ UNIX รุ่นต่างๆ (BSD, Linux) ทำให้ฉันหลงใหลตั้งแต่ครั้งแรกที่ได้ยิน ฉันมีประสบการณ์ด้านการจัดเก็บ 1 ปีขึ้นไป ฉันกำลังมองหาการเปลี่ยนงานซึ่งจบลงด้วยการได้บริษัทโฮสติ้งในเมืองปูเน่ ประเทศอินเดีย ”
นี่คือการรวบรวมสิ่งที่ฉันถูกถามระหว่างการสัมภาษณ์ ฉันได้บันทึกเฉพาะคำถามเหล่านั้นและคำตอบที่เกี่ยวข้องกับ iptables ตามความทรงจำของฉัน หวังว่านี่จะช่วยคุณในการสัมภาษณ์
1. คุณเคยได้ยินเกี่ยวกับ iptables และไฟร์วอลล์ใน Linux หรือไม่? มีความคิดบ้างไหมว่ามันคืออะไรและใช้ทำอะไร?
คำตอบ : ฉันใช้ iptables มาเป็นเวลานานแล้ว และฉันรู้จักทั้ง iptables และไฟร์วอลล์ Iptables เป็นโปรแกรมแอปพลิเคชันส่วนใหญ่เขียนด้วยภาษา C และเผยแพร่ภายใต้ GNU General Public License เขียนขึ้นสำหรับมุมมองของผู้ดูแลระบบ ซึ่งเป็นเวอร์ชันเสถียรล่าสุดหาก iptables 1.4.21iptables อาจถือเป็นไฟร์วอลล์สำหรับ UNIX เช่นเดียวกับระบบปฏิบัติการซึ่งสามารถเรียกว่า iptables/netfilter แม่นยำยิ่งขึ้น ผู้ดูแลระบบโต้ตอบกับ iptables ผ่านเครื่องมือคอนโซล/GUI ส่วนหน้า เพื่อเพิ่มและกำหนดกฎไฟร์วอลล์ลงในตารางที่กำหนดไว้ล่วงหน้า Netfilter เป็นโมดูลที่สร้างขึ้นภายในเคอร์เนลซึ่งทำหน้าที่กรอง
ไฟร์วอลล์คือการใช้งานกฎการกรองล่าสุดใน RHEL/CentOS 7 (อาจนำไปใช้ในการแจกแจงอื่นๆ ซึ่งฉันอาจไม่ทราบ) มันได้แทนที่อินเทอร์เฟซ iptables และเชื่อมต่อกับ netfilter
2. คุณเคยใช้เครื่องมือส่วนหน้าที่ใช้ GUI สำหรับ iptables หรือ Linux Command Line หรือไม่?
คำตอบ : แม้ว่าฉันจะใช้ทั้งเครื่องมือส่วนหน้าที่ใช้ GUI สำหรับ iptables เช่น Shorewall ในการผัน Webmin ใน GUI และการเข้าถึงโดยตรงไปยัง iptables ผ่านคอนโซลและฉันต้อง ยอมรับว่าการเข้าถึง iptables โดยตรงผ่านคอนโซล Linux ทำให้ผู้ใช้มีพลังมหาศาลในรูปแบบของความยืดหยุ่นที่สูงขึ้น และความเข้าใจที่ดีขึ้นเกี่ยวกับสิ่งที่เกิดขึ้นในเบื้องหลัง หากไม่ใช่สิ่งอื่นใด GUI มีไว้สำหรับผู้ดูแลระบบมือใหม่ ในขณะที่คอนโซลมีไว้สำหรับผู้มีประสบการณ์
3. อะไรคือความแตกต่างพื้นฐานระหว่าง iptables และ firewalld?
คำตอบ : iptables และ firewalld มีจุดประสงค์เดียวกัน (การกรองแพ็คเก็ต) แต่มีแนวทางที่แตกต่างกัน iptables จะล้างกฎทั้งหมดที่ตั้งไว้ทุกครั้งที่ทำการเปลี่ยนแปลง ซึ่งไม่เหมือนกับไฟร์วอลล์ โดยทั่วไปตำแหน่งของการกำหนดค่า iptables จะอยู่ที่ '/etc/sysconfig/iptables' ในขณะที่การกำหนดค่าไฟร์วอลล์จะอยู่ที่ '/etc/firewalld/' ซึ่งเป็นชุดของไฟล์ XML .การกำหนดค่าไฟร์วอลล์ที่ใช้ XML นั้นง่ายกว่าเมื่อเปรียบเทียบกับการกำหนดค่า iptables อย่างไรก็ตาม คุณสามารถทำงานเดียวกันนี้ได้โดยใช้ทั้งแอปพลิเคชันการกรองแพ็กเก็ต เช่น iptables และไฟร์วอลล์ Firewalld รัน iptables ภายใต้ประทุนพร้อมกับอินเทอร์เฟซบรรทัดคำสั่งและไฟล์การกำหนดค่าที่ใช้ XML ดังที่กล่าวไว้ข้างต้น
4. คุณจะแทนที่ iptables ด้วย firewalld บนเซิร์ฟเวอร์ทั้งหมดของคุณหรือไม่ หากมีโอกาส?
คำตอบ : ฉันคุ้นเคยกับ iptables และมันใช้งานได้ และหากไม่มีสิ่งใดที่ต้องใช้แง่มุมไดนามิกของไฟร์วอลล์ ดูเหมือนจะไม่มีเหตุผลที่จะย้ายการกำหนดค่าทั้งหมดของฉันจาก iptables ไปยัง firewalldในกรณีส่วนใหญ่ จนถึงตอนนี้ฉันไม่เคยเห็น iptables สร้างปัญหาเลย กฎทั่วไปของเทคโนโลยีสารสนเทศยังกล่าวไว้ว่า “ทำไมต้องแก้ไขถ้ามันไม่พัง” อย่างไรก็ตาม นี่เป็นความคิดส่วนตัวของฉัน และฉันจะไม่รังเกียจที่จะใช้ไฟร์วอลล์หากองค์กรกำลังจะแทนที่ iptables ด้วยไฟร์วอลล์
5. ดูเหมือนคุณจะมั่นใจกับ iptables และข้อดีคือแม้เราจะใช้ iptables บนเซิร์ฟเวอร์ของเราก็ตาม
ตารางที่ใช้ใน iptables คืออะไร? อธิบายสั้นๆ เกี่ยวกับตารางที่ใช้ใน iptables และ chain ที่รองรับ
คำตอบ : ขอบคุณสำหรับการยอมรับ ย้ายไปยังส่วนของคำถาม มีตารางสี่ตารางที่ใช้ใน iptables กล่าวคือ:
- แนทโต๊ะ
- โต๊ะแมงเกิล
- ตารางตัวกรอง
- ตารางดิบ
ตาราง Nat : ตาราง Nat ใช้สำหรับการแปลที่อยู่เครือข่ายเป็นหลัก แพ็กเก็ตที่สวมหน้ากากจะได้รับที่อยู่ IP ที่ถูกเปลี่ยนแปลงตามกฎในตาราง แพ็กเก็ตในสตรีมสำรวจ Nat Table เพียงครั้งเดียว กล่าวคือ ถ้าแพ็กเก็ตจากไอพ่นของแพ็กเก็ตถูกปลอมแปลง แพ็กเก็ตที่เหลือในสตรีมจะไม่เดินทางผ่านตารางนี้อีก ขอแนะนำไม่ให้กรองในตารางนี้ เชนที่รองรับโดยตาราง NAT คือ เชนการเตรียมการ เชนการโพสต์ และเชนเอาท์พุต
Mangle Table : ตามชื่อเลย ตารางนี้ใช้สำหรับจัดการแพ็กเก็ต ใช้สำหรับการเปลี่ยนแปลงแพ็คเกจพิเศษ สามารถใช้เพื่อแก้ไขเนื้อหาของแพ็กเก็ตและส่วนหัวต่างๆ โต๊ะ Mangle ไม่สามารถใช้สำหรับการปลอมตัวได้ โซ่ที่รองรับ ได้แก่ โซ่ PREROUTING, โซ่เอาท์พุต, โซ่ข้างหน้า, โซ่อินพุต, โซ่โพสต์
ตารางตัวกรอง : ตารางตัวกรองเป็นตารางเริ่มต้นที่ใช้ใน iptables ใช้สำหรับกรองแพ็คเก็ต หากไม่มีการกำหนดกฎ ตารางตัวกรองจะถูกใช้เป็นตารางเริ่มต้น และการกรองจะดำเนินการตามตารางนี้ เชนที่รองรับคือ INPUT Chain, OUTPUT Chain, FORWARD Chain
ตารางดิบ : ตารางดิบเริ่มทำงานเมื่อเราต้องการกำหนดค่าแพ็คเกจที่ได้รับการยกเว้นก่อนหน้านี้ รองรับ PREROUTING Chain และ OUTPUT Chain
6. อะไรคือค่าเป้าหมาย (ที่สามารถระบุได้ในเป้าหมาย) ใน iptables และสิ่งที่พวกเขาทำ, สรุป!
คำตอบ : ต่อไปนี้เป็นค่าเป้าหมายที่เราสามารถระบุในเป้าหมายใน iptables:
- ยอมรับ : ยอมรับแพ็กเก็ต
- QUEUE : Paas Package ไปยังพื้นที่ผู้ใช้ (ที่ซึ่งมีแอปพลิเคชันและไดรเวอร์อยู่)
- DROP : วางแพ็กเก็ต
- RETURN : ส่งคืนการควบคุมไปยังการเรียกลูกโซ่ และหยุดดำเนินการชุดกฎถัดไปสำหรับแพ็กเก็ตปัจจุบันในลูกโซ่
7. มาดูด้านเทคนิคของ iptables กันดีกว่า โดยทางเทคนิคแล้ว I หมายถึงการปฏิบัติจริง
คุณจะตรวจสอบ iptables rpm ที่จำเป็นในการติดตั้ง iptables ใน CentOS ได้อย่างไร
คำตอบ : iptables rpm รวมอยู่ในการติดตั้ง CentOS มาตรฐาน และเราไม่จำเป็นต้องติดตั้งแยกต่างหาก เราสามารถตรวจสอบรอบต่อนาทีได้ดังนี้:
rpm -qa iptables
iptables-1.4.21-13.el7.x86_64
หากคุณต้องการติดตั้ง คุณอาจทำยำเพื่อให้ได้มันมา
yum install iptables-services
8. จะตรวจสอบและแน่ใจได้อย่างไรว่าบริการ iptables กำลังทำงานอยู่?
คำตอบ : หากต้องการตรวจสอบสถานะของ 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
9. คุณจะตรวจสอบกฎปัจจุบันที่กำหนดไว้ใน iptables อย่างไร
คำตอบ : กฎปัจจุบันใน 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
10. คุณจะล้างกฎ iptables ทั้งหมดหรือ chain เฉพาะอย่างไร?
คำตอบ : ในการล้างห่วงโซ่ iptables เฉพาะ คุณสามารถใช้คำสั่งต่อไปนี้
iptables --flush OUTPUT
เพื่อล้างกฎ iptables ทั้งหมด
iptables --flush
11. เพิ่มกฎใน iptables เพื่อรับแพ็กเก็ตจากที่อยู่ IP ที่เชื่อถือได้ (พูด 192.168.0.7)
คำตอบ : สถานการณ์ข้างต้นสามารถทำได้ง่ายๆ โดยการรันคำสั่งด้านล่าง
iptables -A INPUT -s 192.168.0.7 -j ACCEPT
เราอาจรวมเครื่องหมายทับมาตรฐานหรือซับเน็ตมาสก์ไว้ในแหล่งที่มาดังนี้:
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
12. วิธีเพิ่มกฎในบริการ ACCEPT, REJECT, DENY และ DROP ssh ใน iptables
คำตอบ : หวังว่า ssh จะทำงานบนพอร์ต 22 ซึ่งเป็นพอร์ตเริ่มต้นสำหรับ ssh เราสามารถเพิ่มกฎให้กับ iptables ได้ดังนี้:
หากต้องการยอมรับแพ็กเก็ต TCP สำหรับบริการ SSH (พอร์ต 22)
iptables -A INPUT -s -p tcp --dport 22 -j ACCEPT
หากต้องการ ปฏิเสธ แพ็กเก็ต TCP สำหรับบริการ SSH (พอร์ต 22)
iptables -A INPUT -s -p tcp --dport 22 -j REJECT
หากต้องการ ปฏิเสธ แพ็กเก็ต 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
13. ฉันขอเล่าสถานการณ์ให้คุณฟัง สมมติว่ามีเครื่องที่มีที่อยู่ IP ในเครื่องคือ 192.168.0.6 คุณต้องบล็อกการเชื่อมต่อบนพอร์ต 21, 22, 23 และ 80 ไปยังเครื่องของคุณ คุณจะทำอะไร?
คำตอบ : สิ่งที่ฉันต้องใช้คือตัวเลือก '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 หรือคุณสามารถส่งประสบการณ์การสัมภาษณ์ของคุณโดยใช้แบบฟอร์มต่อไปนี้
ขอบคุณ! เชื่อมต่ออยู่เสมอ โปรดแจ้งให้ฉันทราบด้วยหากฉันสามารถตอบคำถามได้ถูกต้องมากกว่าที่ฉันทำ