อย่างไร (และทำไม) เพื่อปิดการใช้งานการเข้าสู่ระบบรูทผ่าน SSH บน Linux

เผยแพร่แล้ว: 2022-09-29
แล็ปท็อป Linux แสดง bash prompt
fatmawati achmad zaenuri/Shutterstock.com

การเข้าสู่ระบบในฐานะผู้ใช้รูท Linux ถือเป็นแนวทางปฏิบัติที่ไม่ดี การเข้าสู่ระบบในฐานะรูทผ่านการเชื่อมต่อ SSH นั้นแย่ยิ่งกว่า เราบอกคุณว่าทำไม และแสดงให้คุณเห็นถึงวิธีป้องกัน

ดาบสองคม

คุณต้องการใครสักคนที่มีอำนาจในการเป็นเจ้าของและดูแลส่วนต่างๆ ของระบบปฏิบัติการของคุณที่มีความสำคัญหรือละเอียดอ่อนเกินกว่าที่ผู้ใช้ทั่วไปจะรับมือได้ นั่นคือที่มาของรูท รูทคือ superuser ที่ทรงพลังของระบบปฏิบัติการ Unix และ Linux

บัญชีผู้ใช้รูท เช่นเดียวกับบัญชีทั้งหมด ได้รับการปกป้องด้วยรหัสผ่าน หากไม่มีรหัสผ่านของผู้ใช้ root จะไม่มีใครสามารถเข้าถึงบัญชีนั้นได้ นั่นหมายความว่าผู้อื่นไม่สามารถใช้สิทธิ์และพลังของรูทได้ ด้านพลิกคือการป้องกันเพียงอย่างเดียวระหว่างผู้ใช้ที่เป็นอันตรายและพลังของรูทคือรหัสผ่านนั้น แน่นอนว่ารหัสผ่านสามารถเดา อนุมาน ถูกขีดเขียนไว้ที่ใดที่หนึ่ง หรือถูกบังคับอย่างดุร้าย

หากผู้โจมตีที่ประสงค์ร้ายค้นพบรหัสผ่านของรูท พวกเขาสามารถเข้าสู่ระบบและทำทุกอย่างที่พวกเขาต้องการกับทั้งระบบ ด้วยสิทธิ์ระดับสูงของรูท ไม่มีข้อจำกัดในสิ่งที่พวกเขาสามารถทำได้ มันจะเหมือนกับว่าผู้ใช้รูทได้เดินออกจากเทอร์มินัลโดยไม่ได้ออกจากระบบ ทำให้สามารถเข้าถึงบัญชีของพวกเขาได้โดยฉวยโอกาส

ทำไมคุณไม่ควรเข้าสู่ระบบ Linux ของคุณในฐานะรูท
ที่เกี่ยวข้อง เหตุใดคุณจึงไม่ควรเข้าสู่ระบบ Linux ของคุณในฐานะรูท

เนื่องจากความเสี่ยงเหล่านี้ ลีนุกซ์รุ่นใหม่จำนวนมากจึงไม่อนุญาตให้รูทเข้าสู่ระบบคอมพิวเตอร์ภายในเครื่อง ไม่ต้องกังวลเรื่อง SSH มีผู้ใช้รูทอยู่แต่พวกเขาไม่ได้ตั้งรหัสผ่านไว้ และยังต้องมีใครบางคนสามารถจัดการระบบได้ วิธีแก้ปัญหาคือคำสั่ง sudo

sudo อนุญาตให้ผู้ใช้ที่ได้รับการเสนอชื่อสามารถใช้สิทธิ์ระดับรูทได้ชั่วคราวจากภายในบัญชีผู้ใช้ของตนเอง คุณต้องตรวจสอบสิทธิ์เพื่อใช้ sudo ซึ่งคุณทำได้โดยป้อนรหัสผ่านของคุณเอง ซึ่งจะช่วยให้คุณเข้าถึงความสามารถของรูทได้ชั่วคราว

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

หากคุณเข้าสู่ระบบในฐานะรูทแทนที่จะเป็นบัญชีปกติ ข้อผิดพลาดใดๆ ที่คุณทำในบรรทัดคำสั่งอาจเป็นหายนะ การต้องใช้ sudo เพื่อดำเนินการบริหารหมายความว่าคุณมีแนวโน้มที่จะจดจ่อและระมัดระวังเกี่ยวกับสิ่งที่คุณพิมพ์มากขึ้น

การอนุญาตการเข้าสู่ระบบรูทผ่าน SSH จะเพิ่มความเสี่ยงเนื่องจากผู้โจมตีไม่จำเป็นต้องอยู่ในเครื่อง พวกเขาสามารถพยายามบังคับระบบของคุณจากระยะไกล

ที่เกี่ยวข้อง: วิธีตรวจสอบการใช้คำสั่ง sudo บน Linux

ผู้ใช้รูทและการเข้าถึง SSH

คุณมีแนวโน้มที่จะพบปัญหานี้มากขึ้นเมื่อคุณดูแลระบบสำหรับบุคคลอื่น อาจมีบางคนตัดสินใจตั้งรหัสผ่านรูทเพื่อให้สามารถเข้าสู่ระบบได้ จำเป็นต้องเปลี่ยนการตั้งค่าอื่นๆ เพื่อให้รูทเข้าสู่ระบบผ่าน SSH ได้

สิ่งนี้จะไม่เกิดขึ้นโดยบังเอิญ แต่สามารถทำได้โดยผู้ที่ไม่เข้าใจความเสี่ยงที่เกี่ยวข้อง หากคุณเข้าควบคุมดูแลระบบคอมพิวเตอร์ในสถานะนั้น คุณจะต้องแจ้งเจ้าของว่าเหตุใดจึงเป็นความคิดที่ไม่ดี จากนั้นจึงเปลี่ยนระบบให้ทำงานอย่างปลอดภัย หากเป็นสิ่งที่กำหนดค่าโดยผู้ดูแลระบบคนก่อน เจ้าของอาจไม่ทราบ

นี่คือผู้ใช้บนคอมพิวเตอร์ที่ใช้ Fedora ซึ่งทำการเชื่อมต่อ SSH กับคอมพิวเตอร์ Ubuntu ในฐานะผู้ใช้รูทของคอมพิวเตอร์ Ubuntu

 ssh [email protected] 

ผู้ใช้รูทที่เชื่อมต่อกับคอมพิวเตอร์ระยะไกลโดยใช้ SSH

คอมพิวเตอร์ Ubuntu อนุญาตให้ผู้ใช้รูทเข้าสู่ระบบผ่าน SSH บนคอมพิวเตอร์ Ubuntu เราจะเห็นว่ามีการเชื่อมต่อแบบสดจากผู้ใช้รูท

 ใคร 

ใช้คำสั่ง who เพื่อแสดงรายการผู้ใช้ที่ล็อกอิน

สิ่งที่เรามองไม่เห็นคือว่าใครกำลังใช้เซสชันนั้นอยู่ เราไม่ทราบว่าบุคคลที่อยู่อีกด้านหนึ่งของการเชื่อมต่อ SSH เป็นผู้ใช้รูทหรือผู้ที่จัดการเพื่อรับรหัสผ่านของรูท

การปิดใช้งานการเข้าถึง SSH สำหรับรูท

ในการปิดใช้งานการเข้าถึง SSH สำหรับผู้ใช้รูท เราจำเป็นต้องทำการเปลี่ยนแปลงไฟล์การกำหนดค่า SSH ซึ่งอยู่ที่ “/etc/ssh/sshd_config” เราจะต้องใช้ sudo เพื่อเขียนการเปลี่ยนแปลง

 sudo gedit /etc/ssh/sshd_config 

การแก้ไขไฟล์ sshd-config

เลื่อนดูไฟล์หรือค้นหาสตริง “PermitRootLogin”

ตั้งค่านี้เป็น "ไม่" หรือแสดงความคิดเห็นบรรทัดโดยวางแฮช " # " เป็นอักขระตัวแรกในบรรทัด บันทึกการเปลี่ยนแปลงของคุณ

เราจำเป็นต้องรีสตาร์ท SSH daemon เพื่อให้การเปลี่ยนแปลงมีผล

 sudo systemctl รีสตาร์ท ssh 

กำลังรีสตาร์ท sshd daemon

หากคุณต้องการป้องกันการเข้าสู่ระบบภายในเครื่อง ให้ปิดใช้งานรหัสผ่านของรูท เรากำลังเข้าใกล้เข็มขัดและเครื่องมือจัดฟันและใช้ทั้งตัวเลือก -l (ล็อค) และ -d (ลบรหัสผ่าน)

 sudo passwd root -ld 

การล็อคบัญชีรูทและการลบรหัสผ่านรูท

สิ่งนี้จะล็อคบัญชีและลบรหัสผ่านของบัญชีในการต่อรอง แม้ว่าผู้ใช้รูทจะนั่งอยู่ที่คอมพิวเตอร์ของคุณ พวกเขาก็จะไม่สามารถเข้าสู่ระบบได้

วิธีที่ปลอดภัยกว่าในการอนุญาตการเข้าถึงรูท SSH

บางครั้ง คุณจะพบการต่อต้านการจัดการเพื่อลบการเข้าถึงรูทผ่าน SSH หากพวกเขาไม่ฟังจริงๆ คุณอาจพบว่าตัวเองอยู่ในตำแหน่งที่ต้องคืนสถานะ หากเป็นกรณีนี้ คุณควรจะสามารถประนีประนอมในลักษณะที่ช่วยลดความเสี่ยงและยังอนุญาตการเข้าสู่ระบบระยะไกลจากผู้ใช้รูท

วิธีสร้างและติดตั้งคีย์ SSH จาก Linux Shell
ที่เกี่ยวข้อง วิธีการสร้างและติดตั้งคีย์ SSH จาก Linux Shell

การใช้คีย์ SSH เพื่อเชื่อมต่อผ่าน SSH มีความปลอดภัยมากกว่าการใช้รหัสผ่าน เนื่องจากไม่มีรหัสผ่านที่เกี่ยวข้อง จึงไม่สามารถบังคับ เดา หรือค้นพบได้

ก่อนที่คุณจะล็อกบัญชีรูทภายในเครื่อง ให้ตั้งค่าคีย์ SSH บนคอมพิวเตอร์ระยะไกลเพื่อให้ผู้ใช้รูทสามารถเชื่อมต่อกับคอมพิวเตอร์ในพื้นที่ของคุณได้ จากนั้นดำเนินการต่อและลบรหัสผ่านและล็อคบัญชีในเครื่อง

เรายังต้องแก้ไขไฟล์ “sshd_config” อีกครั้ง

 sudo gedit /etc/ssh/sshd_config 

การแก้ไขไฟล์ sshd-config

เปลี่ยนบรรทัด "PermitRootLogin" เพื่อให้ใช้ตัวเลือก "prohibit-password"

บันทึกการเปลี่ยนแปลงของคุณและรีสตาร์ท SSH daemon

 sudo systemctl รีสตาร์ท ssh 

กำลังรีสตาร์ท sshd daemon

ตอนนี้ แม้ว่าจะมีคนคืนสถานะรหัสผ่านของผู้ใช้รูท พวกเขาจะไม่สามารถเข้าสู่ระบบผ่าน SSH โดยใช้รหัสผ่านได้

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

 ssh [email protected] 

ผู้ใช้รูทที่เชื่อมต่อกับคอมพิวเตอร์ระยะไกลโดยใช้ SSH โดยไม่มีรหัสผ่าน

ห้ามเข้า

การปฏิเสธการเชื่อมต่อระยะไกลจากผู้ใช้รูทเป็นตัวเลือกที่ดีที่สุด การอนุญาตให้รูทเชื่อมต่อโดยใช้คีย์ SSH นั้นดีที่สุดเป็นอันดับสอง แต่ก็ยังดีกว่าการใช้รหัสผ่านมาก

ที่เกี่ยวข้อง: วิธีควบคุมการเข้าถึง sudo บน Linux