ค้นหาเว็บไซต์

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 กล่าวคือ:

  1. แนทโต๊ะ
  2. โต๊ะแมงเกิล
  3. ตารางตัวกรอง
  4. ตารางดิบ

ตาราง Nat : ตาราง Nat ใช้สำหรับการแปลที่อยู่เครือข่ายเป็นหลัก แพ็กเก็ตที่สวมหน้ากากจะได้รับที่อยู่ IP ที่ถูกเปลี่ยนแปลงตามกฎในตาราง แพ็กเก็ตในสตรีมสำรวจ Nat Table เพียงครั้งเดียว กล่าวคือ ถ้าแพ็กเก็ตจากไอพ่นของแพ็กเก็ตถูกปลอมแปลง แพ็กเก็ตที่เหลือในสตรีมจะไม่เดินทางผ่านตารางนี้อีก ขอแนะนำไม่ให้กรองในตารางนี้ เชนที่รองรับโดยตาราง NAT คือ เชนการเตรียมการ เชนการโพสต์ และเชนเอาท์พุต

Mangle Table : ตามชื่อเลย ตารางนี้ใช้สำหรับจัดการแพ็กเก็ต ใช้สำหรับการเปลี่ยนแปลงแพ็คเกจพิเศษ สามารถใช้เพื่อแก้ไขเนื้อหาของแพ็กเก็ตและส่วนหัวต่างๆ โต๊ะ Mangle ไม่สามารถใช้สำหรับการปลอมตัวได้ โซ่ที่รองรับ ได้แก่ โซ่ PREROUTING, โซ่เอาท์พุต, โซ่ข้างหน้า, โซ่อินพุต, โซ่โพสต์

ตารางตัวกรอง : ตารางตัวกรองเป็นตารางเริ่มต้นที่ใช้ใน iptables ใช้สำหรับกรองแพ็คเก็ต หากไม่มีการกำหนดกฎ ตารางตัวกรองจะถูกใช้เป็นตารางเริ่มต้น และการกรองจะดำเนินการตามตารางนี้ เชนที่รองรับคือ INPUT Chain, OUTPUT Chain, FORWARD Chain

ตารางดิบ : ตารางดิบเริ่มทำงานเมื่อเราต้องการกำหนดค่าแพ็คเกจที่ได้รับการยกเว้นก่อนหน้านี้ รองรับ PREROUTING Chain และ OUTPUT Chain

6. อะไรคือค่าเป้าหมาย (ที่สามารถระบุได้ในเป้าหมาย) ใน iptables และสิ่งที่พวกเขาทำ, สรุป!

คำตอบ : ต่อไปนี้เป็นค่าเป้าหมายที่เราสามารถระบุในเป้าหมายใน iptables:

    1. ยอมรับ : ยอมรับแพ็กเก็ต
    2. QUEUE : Paas Package ไปยังพื้นที่ผู้ใช้ (ที่ซึ่งมีแอปพลิเคชันและไดรเวอร์อยู่)
    3. DROP : วางแพ็กเก็ต
    4. 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 หรือคุณสามารถส่งประสบการณ์การสัมภาษณ์ของคุณโดยใช้แบบฟอร์มต่อไปนี้

ขอบคุณ! เชื่อมต่ออยู่เสมอ โปรดแจ้งให้ฉันทราบด้วยหากฉันสามารถตอบคำถามได้ถูกต้องมากกว่าที่ฉันทำ