Linux禁用root用戶


  • 在創建各種雲主機的時候,雲服務商給的都是root用戶,這很方便,但是有某些時候會造成一些困擾,日后在服務器上啟動各種服務后,僅僅擁有root權限的用戶才能訪問更改這些服務,這樣會造成一些不必要的困擾,而且也不安全。出於安全考慮,以及日后服務器的多用戶管理,應該在一開始就對服務器的root用戶進行禁用,僅使用sudo命令來執行某些root才能執行的命令。
  1. 工具准備:Linux雲主機,SSH工具
  2. 創建擁有sudo權限的用戶
    1. 注意 :在阻止對root帳戶的訪問之前,請確保已使用useradd命令創建了一個管理帳戶,該帳戶能夠使用sudo命令獲取root用戶權限,並為該用戶帳戶提供強密碼。 標志-m表示創建用戶的主目錄, -c表示注釋:
      1 # useradd -m -c "Admin User" admin
      2 # passwd admin
    2. 接下來,使用usermod命令將此用戶添加到適當的系統管理員組,其中開關-a表示附加用戶帳戶, -G指定用於添加用戶的組(wheel或sudo,具體取決於您的Linux發行版):
      1 # usermod -aG wheel admin    #CentOS/RHEL
      2 # usermod -aG sudo admin     #Debian/Ubuntu 
    3. 創建具有管理權限的用戶后,請切換到該帳戶以阻止root訪問。
      1 # su admin
  3. 更改root用戶的Shell
    1. 禁用root用戶登錄的最簡單方法是將其shell從/bin/bash/bin/bash (或允許用戶登錄的任何其他shell)更改為/etc/passwd文件中的/sbin/nologin ,您可以使用您喜歡的任何命令行編輯器打開進行編輯,如圖所示。
      1 $ sudo vim /etc/passwd

      編輯保存

      1 root:x:0:0:root:/root:/bin/bash
      2 to
      3 root:x:0:0:root:/root:/sbin/nologin

      保存文件並關閉它。

      從現在開始,當root用戶登錄時,他/她將收到消息“ 此帳戶當前不可用。 “這是默認消息,但是,您可以更改它並在文件/etc/nologin.txt中設置自定義消息。此方法僅對需要用於用戶登錄的shell的程序有效,否則,sudo,ftpemail客戶端可以訪問root帳戶。

  4. 通過控制台設備(TTY)禁用root登錄
    1. 第二種方法使用名為pam_securettyPAM模塊,只有當用戶登錄“ 安全”TTY時才允許root訪問,如/etc/securetty中的列表所定義。

      上述文件允許您指定允許root用戶登錄的TTY設備,清空此文件可防止在連接到計算機系統的任何設備上進行root登錄。

      要創建空文件,請運行。

      1 $ sudo mv /etc/securetty /etc/securetty.orig
      2 $ sudo touch /etc/securetty
      3 $ sudo chmod 600 /etc/securetty

      此方法有一些限制,它只影響登錄,顯示管理器(即gdm,kdmxdm)等程序以及啟動TTY的其他網絡服務。 諸如su,sudo,ssh和其他相關openssh工具之類的程序將可以訪問root帳戶。

  5. 禁用SSH root登錄
    1. 訪問遠程服務器或VPS的最常用方法是通過SSH並阻止其下的root用戶登錄,您需要編輯/etc/ssh/ sshd_config文件。
      1 $ sudo vim /etc/ssh/sshd_config

      然后取消注釋(如果它被注釋)指令PermitRootLogin並將其值設置為no ,如屏幕截圖所示。

    2. 在SSh中禁用Root登錄

      完成后,保存並關閉文件。 然后重新啟動sshd服務以應用最近的配置更改。

      1 $ sudo systemctl restart sshd 
      2 OR
      3 $ sudo service sshd restart 

      您可能已經知道,此方法僅影響openssh工具集,ssh,scp,sftp等程序將被阻止訪問root帳戶。

  6. 通過PAM限制root用戶登錄
    1. 可插拔認證模塊 (簡稱PAM )是Linux系統上集中,可插拔,模塊化和靈活的認證方法。 PAM通過/lib/security/pam_listfile.so模塊,可以極大地靈活地限制特定帳戶的權限。

      上述模塊可用於引用不允許通過某些目標服務(如login,ssh和任何PAM感知程序)登錄的用戶列表。

      在這種情況下,我們希望通過限制對login和sshd服務的訪問來禁用對系統的root用戶訪問。 首先在/etc/pam.d/目錄中打開並編輯目標服務的文件,如圖所示。

      $ sudo vim /etc/pam.d/login
      OR
      $ sudo vim /etc/pam.d/login

      接下來,在兩個文件中添加以下配置。

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

      完成后,保存並關閉每個文件。 然后創建普通文件/etc/ssh/deniedusers ,每行應包含一個項目,而不是世界可讀的。

      在其中添加名稱root,然后保存並關閉它。

      $ sudo vim /etc/ssh/deniedusers

      還要為此設置所需的權限。

      $ sudo chmod 600 /etc/ssh/deniedusers

      此方法僅影響支持PAM的程序和服務。 您可以通過ftp和電子郵件客戶端等阻止對系統的root訪問。

      有關更多信息,請參閱相關手冊頁。

    2. $ man pam_securetty
      $ man sshd_config
      $ man pam


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM