How to disable root account in Linux

Most Recent

Seo Services

เนื่องจาก root เป็น user ที่สามารถดำเนินการและเข้าถึงการทำงานคำสั่งและไฟล์ต่างๆได้ทั้งหมด
เพื่อเป็นการลดความเสี่ยงอันอาจจะเกิดจากการทำงานที่ผิดพลาดและผู้ไม่ประสงค์ดี จึงมีความจำเป็นที่จะจำกัดการเข้าถึงระบบโดยตรงผ่าน account "root"

สำหรับการที่จะใช้งานคำสั่งต่างที่ต้องใช้สิทธิ์เท่า root ทำได้ผ่านคำสั่ง "sudo" หรือ "su"

ก่อนที่จะ disable root จะต้องมั่นใจว่ามี user ที่อยู่ในกลุ่มที่มีสิทธิ์ใช้คำสั่ง "sudo" เรียบร้อยแล้ว

เมื่อตรวจสอบเรียบร้อยก็สามารถดำเนินการได้ดังนี้


1. เปลี่ยน shell ของ root เป็น nologin

ปกติ shell ของ root คือ /bin/bash เมื่อต้องการยกเลิกการ login ด้วย root จึงเปลี่ยนเป็น /sbin/nologin

วิธีที่ 1. แก้ไขไฟล์ /etc/passwd

$ sudo vi  /etc/passwd                                  

เปลี่ยนจาก

root:x:0:0:root:/root:/bin/bash

เป็น

root:x:0:0:root:/root:/sbin/nologin                      

จากนั้นทำการ save และออกจากไฟล์

หรือ
วิธีที่ 2. ใช้คำสั่ง chsh 

$ sudo chsh -s /sbin/nologin root                 

หลังจากนี้ถ้ามีการ login ด้วย root จะได้รับข้อความ "This account is currently not available"


2. ยกเลิกการ login ด้วย root  ผ่าน Console

ขั้นตอนนี้ใช้ PAM module ที่เรียกว่า pam_security ซึ่งยินยอมให้ root เข้าใช้งานผ่านเส้นทางที่ระบุไว้ใน /etc/securetty เท่านั้น

วิธีการคือทำให้ไฟล์นี้ว่าง ด้วยการสร้างไฟล์ว่างๆ

เปลี่ยนชือไฟล์ต้นฉบับ
$ sudo mv /etc/securetty /etc/securetty.org   

จากนั้นก็ทำการสร้างไฟล์ว่างๆขึ้นมา
$ sudo touch /etc/securetty                             
หรือ
$ sudo echo > /etc/securetty                            

จากนั้นทำการเปลี่ยนโหมดการเข้าถึงไฟล์โดยไม่ให้ user อื่นเข้าใช้งาน
$ sudo chmod 600 /etc/securetty                     


ถ้ายังต้องการให้ securetty รองรับการใช้งานผ่าน KDM, GDM และ XDM login managers ให้เพิ่มข้อความข้างล่างนี้

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

ไปที่ไฟล์

  • /etc/pam.d/gdm
  • /etc/pam.d/gdm-autologin
  • /etc/pam.d/gdm-fingerprint
  • /etc/pam.d/gdm-password
  • /etc/pam.d/gdm-smartcard
  • /etc/pam.d/kdm
  • /etc/pam.d/kdm-np
  • /etc/pam.d/xdm

ขั้นตอนนี้จะไม่กระทบต่อการใช้งานผ่าน su, sudo, ssh, scp, sftp


3. ยกเลิก ssh login ด้วย root

$ sudo vi /etc/ssh/sshd_config                         

กำหนด PermitRootLogin เป็น no

PermitRootLogin no

จากนั้นทำการ save และปิดไฟล์  แล้วทำการ restart service "ssh"

$ sudo systemctl restart sshd                            (RHEL/CentOS 7 or upper)
OR
$ sudo service sshd restart                                (RHEL/CentOS 6 or lower)

จะมีผลกระทบกับคำสั่ง ssh, scp, sftp


4. จำกัดสิทธิ์การเข้าถึง Service ต่างของ root ด้วย PAM

PAM ใช้งานผ่าน /lib/security/pam_listfile.so module มีความยืดหยุ่นในการกำหนดสิทธิ์ของ account ใช้งาน
Module ดังกล่าวสามารถใช้อ้างอิงรายชื่อ user ว่าใครที่ไม่ได้รับอนุญาตให้ login ผ่าน service ไหน เช่น login, ssh เป็นต้น

สำหรับเคสนี้ เราต้องการยกเลิกการเข้าถึงผ่าน root มาที่ระบบ โดยยกเลิกการเข้าถึงด้วย login และ sshd service ขั้นแรกจะต้องแก้ไขไฟล์สำหรับ service ที่ต้องการใน /etc/pam.d directory

$ sudo vi /etc/pam.d/login                                   
OR
$ sudo vi /etc/pam.d/sshd                                    

ถัดไป ทำการเพิ่ม config ด้านล่างในทั้ง 2 ไฟล์

auth     required      pam_listfile.so \                                                          
            onerr=succeed item=user sense=deny file=/etc/ssh/deniedusers

หลังจากทำการ save และออกจากไฟล์แล้ว ให้ทำการสร้างไฟล์ /etc/ssh/deniedusers ซึ่งระบุ 1 ชื่อต่อ  1 บรรทัด และทำการเปลี่ยนสิทธิ์ของไฟล์ไม่ให้ user อื่นอ่านได้

เพิ่ม root เข้าไปในไฟล์ แล้ว save และออกจากไฟล์

$ sudo vi /etc/ssh/deniedusers                              
root

$ sudo chmod 600 /etc/ssh/deniedusers               


5. ยกเลิกการ ftp ด้วย root

เพิ่มชื่อ user ในไฟล์ /etc/ftpusers หรือ /etc/vsftpd/ftpusers (VSFTPD)

$ sudo echo root >> /etc/ftpusers                                  
OR
$ sudo echo root >> /etc/vsftpd/ftpusers                      

ชื่อ user ที่เพิ่มในไฟล์ /etc/ftpusers หรือ /etc/vsftpd/ftpusers จะไม่สามารถ login ใน service ftp ได้

ในส่วนของ PAM vsftpd FTP server จะใช้ไฟล์ /etc/pam.d/vsftpd config โดยเพิ่มข้อความ

auth     required      /lib/security/pam_listfile.so item=user \                         
            onerr=succeed sense=deny file=/etc/vsftpd/ftpusers                         

*** NOTE: ในไฟล์ config ของ vsftpd (/etc/vsftpd/vsftpd.conf) สามารถเปลี่ยนไฟล์ user list (ซึ่งเก็บรายชื่อ user ที่ต้องการให้ใช้ ftp) ได้ที่ตัวแปร userlist_file (default file = /etc/vsftpd/user_list) เช่น ถ้าต้องการเปลี่ยนชื่อไฟล์สำหรับเก็บรายชื่อ user ที่ต้องการให้ใช้ ftp ใหม่ ก็แก้ไขได้ตามตัวอย่างคือ

userlist_enable=YES
userlist_file=/etc/vsftpd/ftp.user_list                                                              
userlist_deny=NO                                                                                           

สำหรับตัวแปร userlist_deny ค่า default คือ YES จะไม่อนุญาตให้ user ที่อยู่ในไฟล์ที่ระบุในตัวแปร userlist_file ใช้งาน ftp ได้
ถ้าต้องการให้ user ที่อยู่ในไฟล์นี้ใช้งาน ftp ได้ ให้กำหนด ค่าตัวแปร userlist_deny เป็น NO

อ้างอิง url:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-controlling_root_access








How to disable root account in Linux How to disable root account in Linux Reviewed by Wisoot Amatariyakul on 11:04 PM Rating: 5

No comments:

Powered by Blogger.