banner
xingli

xingli

猫娘爱好者

linux安全

Linux 添加使用者及提權#

當你剛拿到一台伺服器時,通常會禁用 root 使用者登入,而使用其他一般使用者,這時就需要建立一個新的使用者。

添加使用者#

建立一個新的使用者:

$ useradd  boo

設定密碼:

$ passwd  boo

提權#

此時此使用者已經可以正常使用了,但是還沒有提權,所以很多事情做不了,這時可以把該使用者加入 sudo 使用者組,透過 sudo 命令來進行提權。

$ usermod  -G  sudo  boo

一般直接就加入成功了,但是有些發行版本預設並沒有 sudo 使用者組,所以這時需要先添加使用者組。

image-20230125133746199

$ groupadd  sudo

上圖是帶 sudo 使用者組的 Linux 發行版的 visudo 配置檔案

手動添加完使用者組之後,還需要修改 sudoers 配置檔案,這裡有幾種方式,根據實際情況進行選擇:

  1. 允許 sudo 組的成員執行任何命令
$ sudo  visudo  //  或者  sudo  vim  /etc/sudoers

// 添加以下內容

# the 'sudo' group has all the sudo privileges
%sudo ALL=(ALL:ALL) ALL
  1. 直接允許該使用者執行任何命令
$ sudo  visudo

// 添加以下內容,注意:沒有 %
# Allow boo to run any commands anywhere
boo ALL=(ALL:ALL) ALL

通常還是建議將使用者添加至 sudo 使用者組,然後賦予 sudo 組成員權限,而不是直接對具體某個使用者進行提權。

總結#

查看所有使用者的列表:

$ cat  /etc/passwd

查看所有使用者組:

$ cat  /etc/group

查看當前登入使用者的組:

$ groups

查看指定使用者所在的組:

$ groups  usernmae

添加使用者:

$ useradd  username

設定 (重置) 密碼:

$ passwd  username

添加使用者組:

$ groupadd  group_name

將某個使用者添加到某個組:

$ usermod  -G  group_name  username

編輯 visudo 配置檔案:

$ sudo  visudo

禁用 root 使用者登入#

1. 更改 root 使用者的 shell#

禁用 root 使用者登入的最簡單方法是將其 shell 從 /bin/bash 或 /bin/bash(或任何其他允許使用者登入的 shell)更改為 /sbin/nologin,在 /etc/passwd 檔案,你可以使用任何你喜歡的命令行編輯器打開該檔案進行編輯

> vim /etc/passwd

更改行:

root:x:0:0:root:/root:/bin/bash
to
root:x:0:0:root:/root:/sbin/nologin

當 root 使用者登入,將收到消息 This account is currently not available. 這是預設消息,但是,你可以更改它並在檔案中設定自訂消息 /etc/nologin.txt.

此方法僅對需要 shell 進行使用者登入的程式有效 sudo, ftp 和 email 客戶端可以存取 root 帳戶。

2. 通過控制台設備 (TTY) 禁用 root 登入#

第二種方法使用 PAM 模組呼叫 pam_securetty,僅當使用者登入 secure TTY,如列表中所定義 /etc/securetty.

上面的檔案允許你指定哪個 TTY 允許 root 使用者登入的設備,清空此檔案可防止在連接到電腦系統的任何設備上進行 root 登入。

創建一個空檔案

> mv /etc/securetty /etc/securetty.orig
> touch /etc/securetty
> chmod 600 /etc/securetty

這種方法有一定的局限性,它只影響登入、顯示管理器(即 gdm, kdm 和 xdm) 和其他啟動 TTY 的網路服務。su、sudo、ssh 等程式以及其他相關的 openshell 工具都可以存取 root 帳戶。

3. 禁用 SSH Root 登入#

訪問遠程伺服器或 VPS 的最常見方式是通過 SSH 並阻止 root 使用者在其下登入,你需要編輯 /etc/ssh/sshd_config 檔案。

image-20230125133357020

> vim /etc/ssh/sshd_config

然後取消註釋 PermitRootLogin(如果已註釋) 並將其值設置為 no

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

> systemctl restart sshd

OR

> service sshd restart

你可能已經知道,此方法僅影響 openshell 工具集,將阻止 ssh、scp、sftp 等程式存取 root 帳戶。

4. 通過 PAM 限制對服務的根訪問#

Pluggable Authentication Modules (PAM 簡而言之)是一種在 Linux 系統上的集中式、可插拔、模組化和靈活的身份驗證方法。PAM,通過 /lib/security/pam_listfile.so 模組,在限制特定帳戶的權限方面具有很大的靈活性。

上述模組可用於引用不允許通過某些目標服務(例如 login、ssh 和任何 PAM 感知程式)登入的使用者列表。

在這種情況下,我們希望通過限制對登入和 sshd 服務的存取來禁用 root 使用者對系統的存取。首先打開並編輯目標服務中的檔案 /etc/pam.d/ 目錄如圖。

> vim /etc/pam.d/login

OR

sudo vim  /etc/pam.d/sshd

接下來,在兩個檔案中添加以下配置。

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

完成後,保存並關閉每個檔案。然後創建純檔案 /etc/sshd/deniedusers 每行應該包含一個項目,而不是世界可讀的。

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

> vim /etc/sshd/deniedusers

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

> chmod 600 /etc/sshd/deniedusers

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

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

$ man  pam_securetty

$ man  sshd_config

$ man  pam
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。