มีพิธีผ่านสำหรับใครที่ใหม่ต่อการรันเซิร์ฟเวอร์ของตัวเอง: คุณตัดสินใจตั้ง firewall คุณพิมพ์คำสั่ง ufw ไม่กี่ตัว คุณกด enable — และ terminal ของคุณเงียบ SSH หายไป คุณไม่ได้แครชอะไร คุณไม่ได้ถูกแฮ็ก คุณแค่ล็อกประตูโดยตัวเองอยู่ข้างนอก
มันเกิดกับ sysadmin ที่ดีด้วย มันเกิดกับลูกค้าของเราสัปดาห์ที่แล้ว ซึ่งเป็นเหตุผลที่ฉันเขียนนี่ลง ข่าวดี: มันกู้คืนได้สมบูรณ์ในเวลาต่ำกว่าหนึ่งนาที และคุณไม่ต้องติดตั้งใหม่หรือเสียไฟล์แม้แต่ไฟล์เดียว นี่คือวิธี

เกิดอะไรผิดจริง ๆ
ufw (Uncomplicated Firewall) ค่าเริ่มต้นเป็น ปฏิเสธขาเข้าทั้งหมด ทันทีที่คุณรัน ufw enable อะไรที่คุณไม่ได้อนุญาตชัดเจนถูก drop — รวมเซสชัน SSH ที่คุณนั่งอยู่ หากคุณลืม ufw allow พอร์ต SSH ของคุณก่อน คุณตัดการเชื่อมต่อของคุณเองทันทีที่กฎมีผล
นั่นคือฉบับคลาสสิก มีอีกสองรสที่จับคน:
- คุณอนุญาตพอร์ตผิด พิมพ์ผิด หรือคุณอนุญาตพอร์ตบริการ (เช่น 8080) และลืม 22
- คุณอนุญาต 22 แต่แล้วตั้งกฎ
denyสูงกว่าในรายการที่บัง มัน ufw ไวต่อลำดับ
ไม่ว่าทางไหน เซิร์ฟเวอร์เองโอเค — รันอยู่ ดิสก์ไม่เสีย แอปของคุณยังฮัมหลังกำแพง มันคือปัญหาการเข้าถึงเครือข่ายล้วน ซึ่งเป็นเหตุผลพอดีที่การแก้ง่าย
ท่าผิด: การติดตั้งใหม่
สัญชาตญาณแรกมักคือ "แค่รีเซ็ตเซิร์ฟเวอร์และเริ่มใหม่" อย่า — ไม่ใช่สำหรับนี่ การติดตั้งใหม่ล้างทุกอย่างเพื่อให้ได้ SSH ที่ทำงานกลับ เมื่อสิ่งที่บล็อก SSH คือคำสั่ง firewall หนึ่งที่คุณ undo ในสิบวินาที คุณจะเผาบ้านเพราะคุณล็อกประตูหน้า
การติดตั้งใหม่คือทางเลือกที่ถูกเมื่อคุณต้องการเริ่มสะอาด สำหรับการล็อก ufw มันเกินจำเป็น
ท่าถูก: เว็บคอนโซล
VPS ทุกตัวที่คุ้มค่าให้คุณคอนโซล out-of-band — ทางเข้าเครื่องที่ไม่ผ่าน SSH หรือแม้แต่ network stack บน EQVPS มันคือปุ่ม Console บนหน้าเซิร์ฟเวอร์ของคุณ มันคือ serial console: ข้อความเท่านั้น เชื่อมต่อตรงกับ VM แบบที่จอและคีย์บอร์ดจะทำ กฎ firewall ไม่มีอำนาจเหนือมัน เพราะมันไม่ใช่ทราฟฟิกเครือข่าย

คลิกมัน เข้าสู่ระบบด้วยข้อมูลรับรอง root ของคุณ (หรือเปิดดูรหัสผ่านในแผงหากคุณไม่มีมันติดมือ) และคุณอยู่บนเครื่อง firewall หรือไม่มี firewall
ตอนนี้ undo ความเสียหาย เส้นทางเร็วที่สุด:
sudo ufw disable
นั่นปิด firewall และเก็บกฎของคุณ ดังนั้นคุณเปิดใหม่ได้ภายหลังเมื่อคุณแก้ข้อผิดพลาด SSH กลับมาทันที
หากคุณไม่อยาก drop firewall ทั้งหมด แค่เปิดพอร์ตที่คุณพลาด:
sudo ufw allow 22
sudo ufw status numbered
มุมมอง status numbered คุ้มค่าดู — มันแสดงลำดับกฎ ซึ่งเป็นที่ที่กรณี "ฉันอนุญาต 22 แต่มันยังบล็อก" ซ่อน หาก deny นั่งเหนือ allow ของคุณ ลบมันด้วย sudo ufw delete <number>
ข้อควรระวัง NAT ที่คู่มือส่วนใหญ่พลาด
หากคุณอยู่บนแพ็กเกจ NAT มีกับดักที่นี่ คุณ SSH เข้าบนพอร์ตสูง — อย่าง 20266 — ดังนั้นสัญชาตญาณธรรมชาติคือ ufw allow 20266 นั่นไม่ทำอะไร
บน NAT พอร์ตภายนอกนั้นถูก forward ไปพอร์ต 22 ภายใน VM ufw รันภายใน VM และเห็นเฉพาะ 22 ดังนั้นกฎที่คุณต้องการจริงคือ:
sudo ufw allow 22
อนุญาต 20266 และคุณจะจ้องการเชื่อมต่อที่ยังเสียสงสัยว่าทำไม อนุญาต 22 และคุณเข้า ไอเดียเดียวกันสำหรับบริการใด: อนุญาตพอร์ตที่โปรเซสรอรับภายในเครื่อง ไม่ใช่ตัวที่ forward ที่คุณเชื่อมต่อจากภายนอก
วิธีไม่ทำนี่อีก
การแก้ใช้เวลาหนึ่งนาที แต่การไม่ต้องการมันดีกว่า สองนิสัย:
อนุญาตพอร์ต SSH ของคุณก่อนเปิด ในลำดับนี้ เสมอ:
sudo ufw allow 22
sudo ufw enable
ทำมันย้อนกลับและคุณกลับในคอนโซล
เก็บเซสชันที่สองเปิดขณะเปลี่ยนกฎ firewall เข้าสู่ระบบสองครั้ง ทำการเปลี่ยนในหน้าต่างหนึ่ง หาก SSH ตาย หน้าต่างอีกอันยังมีชีวิตให้แก้ ทริกเก่า ช่วยคุณทุกครั้ง
และหากคุณกำลังตั้งเครื่องสด เช็กลิสต์ความปลอดภัย VPS ใหม่ของเราครอบคลุม ufw ถูกทาง ควบคู่คีย์ SSH และสิ่งอื่นสองสามอย่างที่สำคัญจริงในสิบนาทีแรก
สิ่งที่ควรจำ
การล็อก ufw ดูน่ากลัวและแทบไม่มีอะไร เซิร์ฟเวอร์ไม่เคยไป คุณแค่ต้องการประตูที่ firewall กระแทกไม่ได้ — เว็บคอนโซล — และหนึ่งคำสั่ง เก็บ ufw disable และคอนโซลไว้ในกระเป๋าหลัง อนุญาตพอร์ตของคุณก่อนเปิดครั้งหน้า และคุณจะไม่เหงื่อออกกับอันนี้อีก
ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกสิ