เอกสาร

เริ่มต้นอย่างรวดเร็ว + คำอธิบายฟังก์ชันของแต่ละส่วนและแต่ละอุปกรณ์ (อัปเดตต่อเนื่อง)

จัดการไฟร์วอลล์

บทความนี้แนะนำฟังก์ชัน «จัดการไฟร์วอลล์» ของแผงควบคุม——ดูและจัดการกฎไฟร์วอลล์บนเซิร์ฟเวอร์เป้าหมาย

ทำความรู้จักก่อน: ไฟร์วอลล์คืออะไร

ไฟร์วอลล์เป็น «ประตูรักษาความปลอดภัย» ของเซิร์ฟเวอร์ กำหนดว่าพอร์ตใด IP ใดเข้าถึงได้ ตัวอย่างเช่น หากอยากให้เว็บไซต์ให้บริการภายนอก ต้อง «เปิดพอร์ต 80»; หากอยากบล็อก IP ที่โจมตีคุณ ต้อง «บล็อก IP นี้»

> สำคัญ: นอกจากไฟร์วอลล์ในระบบของเซิร์ฟเวอร์แล้ว คลาวด์รายใหญ่ (Tencent Cloud / Alibaba Cloud) ยังมี «security group» ในคอนโซลคลาวด์ อีกชั้น ทั้งสองเป็นอิสระต่อกัน พอร์ตหนึ่งจะเข้าถึงได้ต้องเปิดทั้งสองชั้น

ภาพรวมฟังก์ชัน

«จัดการไฟร์วอลล์» อยู่ใน «แผงจัดการระบบ» ของเซิร์ฟเวอร์เป้าหมาย ใช้ดูกฎไฟร์วอลล์ของระบบ, เพิ่ม / ลบกฎ และจัดการส่งต่อพอร์ต แผงควบคุมปรับให้เข้ากับแบ็กเอนด์ไฟร์วอลล์ยอดนิยมสามแบบ iptables / nftables / ufw อัตโนมัติ ไม่ต้องเลือกเอง

สถานการณ์ที่เหมาะสม

  • ดูว่าเซิร์ฟเวอร์มีกฎไฟร์วอลล์อะไรบ้าง เปิดพอร์ตใดไว้
  • เปิดพอร์ตใดพอร์ตหนึ่งอย่างรวดเร็ว (เช่นเปิด 80 / 443 ให้บริการเว็บ)
  • บล็อก IP หรือพอร์ตต้นทางหนึ่ง
  • จัดการส่งต่อพอร์ต (ดู ส่งต่อพอร์ต)

องค์ประกอบของฟังก์ชัน

เข้าเซิร์ฟเวอร์เป้าหมาย → «จัดการระบบ» → «ไฟร์วอลล์» ประกอบด้วย:

1. รายการกฎ: แสดงกฎ iptables / nftables (พร้อมหมายเลขกฎ) หรือสถานะ ufw (หากเปิดใช้)

2. พอร์ตที่ listen: แสดงพอร์ตที่เซิร์ฟเวอร์กำลัง listen อยู่และโปรเซสที่เกี่ยวข้อง

3. เพิ่ม / ลบกฎ: ป้อนกฎ iptables เองเพื่ออนุญาต / บล็อก

4. ส่งต่อพอร์ต: DNAT ทราฟฟิกของพอร์ตสาธารณะไปยัง IP:พอร์ต เป้าหมาย (ดูรายละเอียดที่ ส่งต่อพอร์ต)

ดูกฎ

iptables / nftables

แผงควบคุมใช้ iptables -L -n --line-numbers แสดงกฎก่อน; หากระบบใช้ nftables จะเปลี่ยนไปใช้ nft list ruleset อัตโนมัติ

ufw

หากเซิร์ฟเวอร์เปิดใช้ ufw (พบบ่อยบน Ubuntu) แผงควบคุมจะแสดงรายการกฎของ ufw status numbered เพิ่ม

พอร์ตที่ listen

แผงควบคุมใช้ ss -tlnp แสดงพอร์ต TCP ที่กำลัง listen และโปรเซสที่เกี่ยวข้อง สะดวกในการตัดสินว่าพอร์ตใดเปิดแล้ว ถูกบริการใดใช้อยู่

เพิ่ม / ลบกฎ

ใน «เพิ่มกฎ» ป้อนกฎ iptables หนึ่งบรรทัด (ไม่ต้องมีคำนำหน้า iptables แผงควบคุมจะเติม -A เพื่อเพิ่ม / -D เพื่อลบ ให้เอง) เช่น:

# เปิดพอร์ต 8080
INPUT -p tcp --dport 8080 -j ACCEPT
# บล็อก IP หนึ่ง
INPUT -s 1.2.3.4 -j DROP

> ⚠️ ข้อควรระวัง: โปรดตรวจสอบให้แน่ใจว่าคุณเข้าใจไวยากรณ์ของกฎ iptables กฎที่ผิดอาจทำให้บริการเข้าถึงไม่ได้ แนะนำให้สำรองกฎปัจจุบันก่อนดำเนินการ (iptables-save > /root/iptables.bak)

ปรับให้เข้ากับหลายแบ็กเอนด์อัตโนมัติ

แผงควบคุมตรวจจับแบ็กเอนด์ไฟร์วอลล์ที่เซิร์ฟเวอร์ใช้อัตโนมัติ:

แบ็กเอนด์ระบบที่ใช้คำอธิบาย
iptables / iptables-legacyLinux ดั้งเดิมไฟร์วอลล์ที่พบบ่อยที่สุด
nftablesดิสโทรใหม่ / เซิร์ฟเวอร์ที่มีกฎ nft อยู่แล้วใช้ก่อนเมื่อตรวจพบกฎ nft ที่ทำงานอยู่ กันกฎถูกบดบัง
ufwUbuntu / Debianใช้แค่ «ดู» การจัดการกฎใช้ iptables

ข้อควรระวัง

1. ดำเนินการอย่างระมัดระวัง: กฎไฟร์วอลล์ส่งผลโดยตรงต่อการเข้าถึงของเซิร์ฟเวอร์ กฎบล็อกที่ผิดอาจทำให้ SSH หลุด แผงควบคุมเชื่อมไม่ติด

2. ความคงทนของกฎ: กฎที่เพิ่มด้วย iptables โดยตรงอาจหายไปหลังรีสตาร์ท (ขึ้นกับว่าระบบติดตั้ง iptables-persistent / netfilter-persistent หรือไม่) หากต้องการให้คงทน โปรด iptables-save เองหรือเปลี่ยนไปใช้ ufw

3. security group ของคลาวด์รายใหญ่: Tencent Cloud / Alibaba Cloud ฯลฯ นอกจากไฟร์วอลล์ระบบแล้วยังมีชั้น «security group» ในคอนโซลคลาวด์ หากพอร์ตใดไม่ถูกเปิดใน security group แม้ไฟร์วอลล์ระบบเปิดแล้วก็เข้าถึงไม่ได้——ต้องเปิดทั้งสองชั้น

4. ส่งต่อพอร์ต: หากต้องทำส่งต่อพอร์ต ดู ส่งต่อพอร์ต