เนื่องจากการเข้าถึง SSH เป็นจุดเริ่มต้นที่สำคัญที่สุดสำหรับการจัดการเซิร์ฟเวอร์ของคุณมันจึงกลายเป็นเวคเตอร์การโจมตีที่ใช้กันอย่างแพร่หลาย
ขั้นตอนพื้นฐานในการรักษาความปลอดภัย SSH รวมถึง: ปิดใช้งานการเข้าถึงรูท, ปิดการตรวจสอบสิทธิ์รหัสผ่านทั้งหมด (และใช้กุญแจแทน) และเปลี่ยนพอร์ต (ทำเพียงเล็กน้อยเกี่ยวกับความปลอดภัยยกเว้นการสแกนพอร์ตทั่วไปและบันทึกสแปมน้อยที่สุด)
ขั้นตอนต่อไปจะเป็นโซลูชันไฟร์วอลล์ PF ที่มีการติดตามการเชื่อมต่อ โซลูชันนี้จะจัดการสถานะการเชื่อมต่อและบล็อก IP ใด ๆ ที่มีการเชื่อมต่อมากเกินไป วิธีนี้ใช้งานได้ดีและทำได้ง่ายมากกับ PF แต่ภูต SSH ยังคงปรากฏต่ออินเทอร์เน็ต
วิธีการทำให้ SSH ไม่สามารถเข้าถึงได้จากภายนอกอย่างสมบูรณ์? นี่คือที่มาspipedจากหน้าแรก:
Spiped (ออกเสียงว่า "ess-pipe-dee") เป็นยูทิลิตี้สำหรับการสร้างไพพ์ที่เข้ารหัสและรับรองความถูกต้องระหว่างที่อยู่ซ็อกเก็ตเพื่อให้หนึ่งอาจเชื่อมต่อกับที่อยู่หนึ่ง (เช่นซ็อกเก็ต UNIX บน localhost) และโปร่งใส address (เช่นซ็อกเก็ต UNIX ในระบบอื่น) สิ่งนี้คล้ายกับฟังก์ชั่น 'ssh -L' แต่ไม่ได้ใช้ SSH และต้องการคีย์สมมาตรที่แชร์ล่วงหน้า
ที่ดี! โชคดีสำหรับเรามันมีแพ็คเกจ OpenBSD ที่มีคุณภาพสูงซึ่งทำงานได้ทั้งหมดสำหรับเราดังนั้นเราจึงสามารถเริ่มต้นด้วยการติดตั้ง:
sudo pkg_add spiped
สิ่งนี้จะติดตั้งสคริปต์เริ่มต้นที่ดีสำหรับเราเพื่อให้เราสามารถดำเนินการต่อและเปิดใช้งาน:
sudo rcctl enable spiped
และในที่สุดก็เริ่ม:
sudo rcctl start spiped
สคริปต์เริ่มต้นทำให้แน่ใจว่ารหัสถูกสร้างขึ้นสำหรับเรา (ซึ่งเราจะต้องใช้กับเครื่องท้องถิ่นในระยะเวลาอันสั้น)
สิ่งที่เราต้องทำตอนนี้คือการปิดการใช้งานsshd
จากการฟังที่อยู่สาธารณะบล็อกพอร์ต 22 และอนุญาตพอร์ต 8022 (ซึ่งโดยค่าเริ่มต้นจะใช้ในสคริปต์ init แบบ spiped)
เปิด/etc/ssh/sshd_config
ไฟล์และเปลี่ยน (และยกเลิกหมายเหตุ) ListenAddress
บรรทัดที่จะอ่าน127.0.0.1
:
ListenAddress 127.0.0.1
หากคุณใช้กฎ PF สำหรับการบล็อกพอร์ตตรวจสอบให้แน่ใจว่าผ่านพอร์ต 8022 (และคุณสามารถปล่อยให้พอร์ต 22 ถูกบล็อก) เช่น:
pass in on egress proto tcp from any to any port 8022
ตรวจสอบให้แน่ใจว่าได้โหลดกฎเพื่อให้ใช้งานได้:
sudo pfctl -f /etc/pf.conf
ตอนนี้สิ่งที่เราต้องทำก็คือคัดลอกรหัส spiped ที่สร้างขึ้น ( /etc/spiped/spiped.key
) จากเซิร์ฟเวอร์ไปยังเครื่องท้องถิ่นและปรับการกำหนดค่า SSH ของเราบางอย่างตามบรรทัดต่อไปนี้:
Host HOSTNAME
ProxyCommand spipe -t %h:8022 -k ~/.ssh/spiped.key
คุณต้องspipe/spiped
ติดตั้งในเครื่องท้องถิ่นด้วยเช่นกัน หากคุณคัดลอกคีย์และปรับชื่อ / พา ธ คุณควรจะสามารถเชื่อมต่อกับProxyCommand
บรรทัดนั้นใน~/.ssh/config
ไฟล์ของคุณได้
หลังจากคุณยืนยันว่าใช้งานได้เราสามารถรีสตาร์ทsshd
เซิร์ฟเวอร์:
sudo rcctl restart sshd
และนั่นมัน! ในตอนนี้คุณได้กำจัดเวกเตอร์การโจมตีขนาดใหญ่หนึ่งรายการอย่างสมบูรณ์และคุณมีการฟังการบริการที่น้อยลงบนส่วนต่อประสานสาธารณะ ตอนนี้การเชื่อมต่อ SSH ของคุณควรมาจาก localhost เช่น:
username ttyp0 localhost Thu Nov 06 07:58 still logged in
ข้อดีของการใช้ Vultr ก็คือ Vultr VPS แต่ละตัวเสนอไคลเอนต์ VNC แบบออนไลน์ที่ดีซึ่งเราสามารถใช้ในกรณีที่เราปิดกั้นตัวเองโดยไม่ตั้งใจ ทดลองออกไป!