เอกสาร
เริ่มต้นอย่างรวดเร็ว + คำอธิบายฟังก์ชันของแต่ละส่วนและแต่ละอุปกรณ์ (อัปเดตต่อเนื่อง)
จัดการไฟร์วอลล์
บทความนี้แนะนำฟังก์ชัน «จัดการไฟร์วอลล์» ของแผงควบคุม——ดูและจัดการกฎไฟร์วอลล์บนเซิร์ฟเวอร์เป้าหมาย
ทำความรู้จักก่อน: ไฟร์วอลล์คืออะไร
ไฟร์วอลล์เป็น «ประตูรักษาความปลอดภัย» ของเซิร์ฟเวอร์ กำหนดว่าพอร์ตใด 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-legacy | Linux ดั้งเดิม | ไฟร์วอลล์ที่พบบ่อยที่สุด |
nftables | ดิสโทรใหม่ / เซิร์ฟเวอร์ที่มีกฎ nft อยู่แล้ว | ใช้ก่อนเมื่อตรวจพบกฎ nft ที่ทำงานอยู่ กันกฎถูกบดบัง |
ufw | Ubuntu / 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. ส่งต่อพอร์ต: หากต้องทำส่งต่อพอร์ต ดู ส่งต่อพอร์ต