- 在創建各種雲主機的時候,雲服務商給的都是root用戶,這很方便,但是有某些時候會造成一些困擾,日后在服務器上啟動各種服務后,僅僅擁有root權限的用戶才能訪問更改這些服務,這樣會造成一些不必要的困擾,而且也不安全。出於安全考慮,以及日后服務器的多用戶管理,應該在一開始就對服務器的root用戶進行禁用,僅使用sudo命令來執行某些root才能執行的命令。
- 工具准備:Linux雲主機,SSH工具
- 創建擁有sudo權限的用戶
- 注意 :在阻止對root帳戶的訪問之前,請確保已使用useradd命令創建了一個管理帳戶,該帳戶能夠使用sudo命令獲取root用戶權限,並為該用戶帳戶提供強密碼。 標志
-m
表示創建用戶的主目錄,-c
表示注釋:1 # useradd -m -c "Admin User" admin 2 # passwd admin
- 接下來,使用usermod命令將此用戶添加到適當的系統管理員組,其中開關
-a
表示附加用戶帳戶,-G
指定用於添加用戶的組(wheel或sudo,具體取決於您的Linux發行版):1 # usermod -aG wheel admin #CentOS/RHEL 2 # usermod -aG sudo admin #Debian/Ubuntu
- 創建具有管理權限的用戶后,請切換到該帳戶以阻止root訪問。
1 # su admin
- 注意 :在阻止對root帳戶的訪問之前,請確保已使用useradd命令創建了一個管理帳戶,該帳戶能夠使用sudo命令獲取root用戶權限,並為該用戶帳戶提供強密碼。 標志
- 更改root用戶的Shell
- 禁用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,ftp和email客戶端可以訪問root帳戶。
- 禁用root用戶登錄的最簡單方法是將其shell從
- 通過控制台設備(TTY)禁用root登錄
-
第二種方法使用名為pam_securetty的PAM模塊,只有當用戶登錄“ 安全”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,kdm和xdm)等程序以及啟動TTY的其他網絡服務。 諸如su,sudo,ssh和其他相關openssh工具之類的程序將可以訪問root帳戶。
-
- 禁用SSH root登錄
- 訪問遠程服務器或VPS的最常用方法是通過SSH並阻止其下的root用戶登錄,您需要編輯/etc/ssh/ sshd_config文件。
1 $ sudo vim /etc/ssh/sshd_config
然后取消注釋(如果它被注釋)指令PermitRootLogin並將其值設置為
no
,如屏幕截圖所示。 -
在SSh中禁用Root登錄
完成后,保存並關閉文件。 然后重新啟動sshd服務以應用最近的配置更改。
1 $ sudo systemctl restart sshd 2 OR 3 $ sudo service sshd restart
您可能已經知道,此方法僅影響openssh工具集,ssh,scp,sftp等程序將被阻止訪問root帳戶。
- 訪問遠程服務器或VPS的最常用方法是通過SSH並阻止其下的root用戶登錄,您需要編輯/etc/ssh/ sshd_config文件。
- 通過PAM限制root用戶登錄
-
可插拔認證模塊 (簡稱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訪問。
有關更多信息,請參閱相關手冊頁。
-
$ man pam_securetty $ man sshd_config $ man pam
-