อย่างไร (และทำไม) เพื่อปิดการใช้งานการเข้าสู่ระบบรูทผ่าน SSH บน Linux
เผยแพร่แล้ว: 2022-09-29การเข้าสู่ระบบในฐานะผู้ใช้รูท Linux ถือเป็นแนวทางปฏิบัติที่ไม่ดี การเข้าสู่ระบบในฐานะรูทผ่านการเชื่อมต่อ SSH นั้นแย่ยิ่งกว่า เราบอกคุณว่าทำไม และแสดงให้คุณเห็นถึงวิธีป้องกัน
ดาบสองคม
คุณต้องการใครสักคนที่มีอำนาจในการเป็นเจ้าของและดูแลส่วนต่างๆ ของระบบปฏิบัติการของคุณที่มีความสำคัญหรือละเอียดอ่อนเกินกว่าที่ผู้ใช้ทั่วไปจะรับมือได้ นั่นคือที่มาของรูท รูทคือ superuser ที่ทรงพลังของระบบปฏิบัติการ Unix และ Linux
บัญชีผู้ใช้รูท เช่นเดียวกับบัญชีทั้งหมด ได้รับการปกป้องด้วยรหัสผ่าน หากไม่มีรหัสผ่านของผู้ใช้ root จะไม่มีใครสามารถเข้าถึงบัญชีนั้นได้ นั่นหมายความว่าผู้อื่นไม่สามารถใช้สิทธิ์และพลังของรูทได้ ด้านพลิกคือการป้องกันเพียงอย่างเดียวระหว่างผู้ใช้ที่เป็นอันตรายและพลังของรูทคือรหัสผ่านนั้น แน่นอนว่ารหัสผ่านสามารถเดา อนุมาน ถูกขีดเขียนไว้ที่ใดที่หนึ่ง หรือถูกบังคับอย่างดุร้าย
หากผู้โจมตีที่ประสงค์ร้ายค้นพบรหัสผ่านของรูท พวกเขาสามารถเข้าสู่ระบบและทำทุกอย่างที่พวกเขาต้องการกับทั้งระบบ ด้วยสิทธิ์ระดับสูงของรูท ไม่มีข้อจำกัดในสิ่งที่พวกเขาสามารถทำได้ มันจะเหมือนกับว่าผู้ใช้รูทได้เดินออกจากเทอร์มินัลโดยไม่ได้ออกจากระบบ ทำให้สามารถเข้าถึงบัญชีของพวกเขาได้โดยฉวยโอกาส
เนื่องจากความเสี่ยงเหล่านี้ ลีนุกซ์รุ่นใหม่จำนวนมากจึงไม่อนุญาตให้รูทเข้าสู่ระบบคอมพิวเตอร์ภายในเครื่อง ไม่ต้องกังวลเรื่อง SSH มีผู้ใช้รูทอยู่แต่พวกเขาไม่ได้ตั้งรหัสผ่านไว้ และยังต้องมีใครบางคนสามารถจัดการระบบได้ วิธีแก้ปัญหาคือคำสั่ง sudo
sudo
อนุญาตให้ผู้ใช้ที่ได้รับการเสนอชื่อสามารถใช้สิทธิ์ระดับรูทได้ชั่วคราวจากภายในบัญชีผู้ใช้ของตนเอง คุณต้องตรวจสอบสิทธิ์เพื่อใช้ sudo
ซึ่งคุณทำได้โดยป้อนรหัสผ่านของคุณเอง ซึ่งจะช่วยให้คุณเข้าถึงความสามารถของรูทได้ชั่วคราว
พาวเวอร์รูทของคุณจะตายเมื่อคุณปิดหน้าต่างเทอร์มินัลที่ถูกใช้ หากคุณเปิดหน้าต่างเทอร์มินัลทิ้งไว้ ค่าหมดเวลาจะทำให้คุณกลับสู่สถานะผู้ใช้ปกติโดยอัตโนมัติ นี่เป็นการป้องกันอีกประเภทหนึ่ง มันปกป้องคุณจากตัวคุณเอง
หากคุณเข้าสู่ระบบในฐานะรูทแทนที่จะเป็นบัญชีปกติ ข้อผิดพลาดใดๆ ที่คุณทำในบรรทัดคำสั่งอาจเป็นหายนะ การต้องใช้ sudo
เพื่อดำเนินการบริหารหมายความว่าคุณมีแนวโน้มที่จะจดจ่อและระมัดระวังเกี่ยวกับสิ่งที่คุณพิมพ์มากขึ้น
การอนุญาตการเข้าสู่ระบบรูทผ่าน SSH จะเพิ่มความเสี่ยงเนื่องจากผู้โจมตีไม่จำเป็นต้องอยู่ในเครื่อง พวกเขาสามารถพยายามบังคับระบบของคุณจากระยะไกล
ที่เกี่ยวข้อง: วิธีตรวจสอบการใช้คำสั่ง sudo บน Linux
ผู้ใช้รูทและการเข้าถึง SSH
คุณมีแนวโน้มที่จะพบปัญหานี้มากขึ้นเมื่อคุณดูแลระบบสำหรับบุคคลอื่น อาจมีบางคนตัดสินใจตั้งรหัสผ่านรูทเพื่อให้สามารถเข้าสู่ระบบได้ จำเป็นต้องเปลี่ยนการตั้งค่าอื่นๆ เพื่อให้รูทเข้าสู่ระบบผ่าน SSH ได้
สิ่งนี้จะไม่เกิดขึ้นโดยบังเอิญ แต่สามารถทำได้โดยผู้ที่ไม่เข้าใจความเสี่ยงที่เกี่ยวข้อง หากคุณเข้าควบคุมดูแลระบบคอมพิวเตอร์ในสถานะนั้น คุณจะต้องแจ้งเจ้าของว่าเหตุใดจึงเป็นความคิดที่ไม่ดี จากนั้นจึงเปลี่ยนระบบให้ทำงานอย่างปลอดภัย หากเป็นสิ่งที่กำหนดค่าโดยผู้ดูแลระบบคนก่อน เจ้าของอาจไม่ทราบ
นี่คือผู้ใช้บนคอมพิวเตอร์ที่ใช้ Fedora ซึ่งทำการเชื่อมต่อ SSH กับคอมพิวเตอร์ Ubuntu ในฐานะผู้ใช้รูทของคอมพิวเตอร์ Ubuntu
ssh [email protected]
คอมพิวเตอร์ Ubuntu อนุญาตให้ผู้ใช้รูทเข้าสู่ระบบผ่าน SSH บนคอมพิวเตอร์ Ubuntu เราจะเห็นว่ามีการเชื่อมต่อแบบสดจากผู้ใช้รูท
ใคร
สิ่งที่เรามองไม่เห็นคือว่าใครกำลังใช้เซสชันนั้นอยู่ เราไม่ทราบว่าบุคคลที่อยู่อีกด้านหนึ่งของการเชื่อมต่อ SSH เป็นผู้ใช้รูทหรือผู้ที่จัดการเพื่อรับรหัสผ่านของรูท
การปิดใช้งานการเข้าถึง SSH สำหรับรูท
ในการปิดใช้งานการเข้าถึง SSH สำหรับผู้ใช้รูท เราจำเป็นต้องทำการเปลี่ยนแปลงไฟล์การกำหนดค่า SSH ซึ่งอยู่ที่ “/etc/ssh/sshd_config” เราจะต้องใช้ sudo
เพื่อเขียนการเปลี่ยนแปลง
sudo gedit /etc/ssh/sshd_config
เลื่อนดูไฟล์หรือค้นหาสตริง “PermitRootLogin”
ตั้งค่านี้เป็น "ไม่" หรือแสดงความคิดเห็นบรรทัดโดยวางแฮช " #
" เป็นอักขระตัวแรกในบรรทัด บันทึกการเปลี่ยนแปลงของคุณ
เราจำเป็นต้องรีสตาร์ท SSH daemon เพื่อให้การเปลี่ยนแปลงมีผล
sudo systemctl รีสตาร์ท ssh
หากคุณต้องการป้องกันการเข้าสู่ระบบภายในเครื่อง ให้ปิดใช้งานรหัสผ่านของรูท เรากำลังเข้าใกล้เข็มขัดและเครื่องมือจัดฟันและใช้ทั้งตัวเลือก -l
(ล็อค) และ -d
(ลบรหัสผ่าน)
sudo passwd root -ld
สิ่งนี้จะล็อคบัญชีและลบรหัสผ่านของบัญชีในการต่อรอง แม้ว่าผู้ใช้รูทจะนั่งอยู่ที่คอมพิวเตอร์ของคุณ พวกเขาก็จะไม่สามารถเข้าสู่ระบบได้
วิธีที่ปลอดภัยกว่าในการอนุญาตการเข้าถึงรูท SSH
บางครั้ง คุณจะพบการต่อต้านการจัดการเพื่อลบการเข้าถึงรูทผ่าน SSH หากพวกเขาไม่ฟังจริงๆ คุณอาจพบว่าตัวเองอยู่ในตำแหน่งที่ต้องคืนสถานะ หากเป็นกรณีนี้ คุณควรจะสามารถประนีประนอมในลักษณะที่ช่วยลดความเสี่ยงและยังอนุญาตการเข้าสู่ระบบระยะไกลจากผู้ใช้รูท
การใช้คีย์ SSH เพื่อเชื่อมต่อผ่าน SSH มีความปลอดภัยมากกว่าการใช้รหัสผ่าน เนื่องจากไม่มีรหัสผ่านที่เกี่ยวข้อง จึงไม่สามารถบังคับ เดา หรือค้นพบได้
ก่อนที่คุณจะล็อกบัญชีรูทภายในเครื่อง ให้ตั้งค่าคีย์ SSH บนคอมพิวเตอร์ระยะไกลเพื่อให้ผู้ใช้รูทสามารถเชื่อมต่อกับคอมพิวเตอร์ในพื้นที่ของคุณได้ จากนั้นดำเนินการต่อและลบรหัสผ่านและล็อคบัญชีในเครื่อง
เรายังต้องแก้ไขไฟล์ “sshd_config” อีกครั้ง
sudo gedit /etc/ssh/sshd_config
เปลี่ยนบรรทัด "PermitRootLogin" เพื่อให้ใช้ตัวเลือก "prohibit-password"
บันทึกการเปลี่ยนแปลงของคุณและรีสตาร์ท SSH daemon
sudo systemctl รีสตาร์ท ssh
ตอนนี้ แม้ว่าจะมีคนคืนสถานะรหัสผ่านของผู้ใช้รูท พวกเขาจะไม่สามารถเข้าสู่ระบบผ่าน SSH โดยใช้รหัสผ่านได้
เมื่อผู้ใช้รูทระยะไกลทำการเชื่อมต่อ SSH กับเครื่องคอมพิวเตอร์ของคุณ คีย์จะถูกแลกเปลี่ยนและตรวจสอบ หากผ่านการตรวจสอบสิทธิ์ ผู้ใช้รูทจะเชื่อมต่อกับคอมพิวเตอร์ในพื้นที่ของคุณโดยไม่ต้องใช้รหัสผ่าน
ssh [email protected]
ห้ามเข้า
การปฏิเสธการเชื่อมต่อระยะไกลจากผู้ใช้รูทเป็นตัวเลือกที่ดีที่สุด การอนุญาตให้รูทเชื่อมต่อโดยใช้คีย์ SSH นั้นดีที่สุดเป็นอันดับสอง แต่ก็ยังดีกว่าการใช้รหัสผ่านมาก
ที่เกี่ยวข้อง: วิธีควบคุมการเข้าถึง sudo บน Linux