1. 程式人生 > >Linux中設定'sudo'的10個小技巧

Linux中設定'sudo'的10個小技巧

在Linux和其他類Unix作業系統中,只有root使用者可以執行所有命令並在系統上執行某些關鍵操作,如安裝和更新,刪除包,建立使用者和組,修改重要的系統配置檔案等。
然而,承擔root使用者角色的系統管理員可以允許其他正常系統使用者在sudo命令和幾個配置的幫助下執行某些命令以及執行包括上述的一些重要系統操作。

或者,系統管理員可以共享root使用者密碼(這不是推薦的方法),以便正常系統使用者可以通過su命令訪問root使用者帳戶。

sudo允許使用者以root使用者身份(或另一個使用者)執行安全策略指定的命令:

  • 它讀取並解析/etc sudoers,查詢呼叫的使用者及其許可權,
  • 然後提示呼叫使用者輸入密碼(通常是使用者的密碼,但也可以是目標使用者的密碼,也可以使用NOPASSWD取消密碼驗證),
  • 之後,sudo建立一個子程序,在其中呼叫setuid()切換到目標使用者
  • next,它執行一個shell或在上面的子程序中作為引數給出的命令。

以下是十個/etc/sudoers檔案配置,以使用Defaults條目修改sudo命令的行為。

sudo cat /etc/sudoers | less

這裡寫圖片描述

1.設定安全路徑

這是用於每個使用sudo執行的命令的路徑,它有兩個重要性:

  • 在系統管理員不信任sudo使用者具有安全的PATH環境變數時使用
  • 要分離“根路徑”和“使用者路徑”,只有由exempt_group定義的使用者不受此設定的影響。

要設定它,請新增行:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2.在TTY使用者登入會話上啟用sudo

要啟用從真實tty呼叫sudo,而不是通過cron或cgi-bin指令碼等方法呼叫,請新增以下行:

Defaults  requiretty   

3.執行Sudo命令使用pty

有些時候,攻擊者可以使用sudo執行惡意程式(例如病毒或惡意軟體),這將再次分叉保留在使用者的終端裝置上的後臺程序,即使在主程式已經完成執行時。

為了避免這種情況,您可以將sudo配置為僅使用use_pty引數從psuedo-pty運​​行其他命令,無論I /O日誌是否已開啟,如下所示:

Defaults  use_pty

4.建立Sudo日誌檔案

預設情況下,sudo日誌通過syslog(3)。但是,要指定自定義日誌檔案,請使用logfile引數,如:

Defaults  logfile="/var/log/sudo.log"

要在自定義日誌檔案中記錄主機名和四位數年份,請分別使用log_host和log_year引數,如下所示:

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

這裡寫圖片描述

可以看出sudo.log已經生效

5.記錄Sudo命令輸入/輸出

log_input和log_output引數允許sudo在偽tty中執行命令,並記錄所有使用者輸入和所有輸出傳送到螢幕。

預設I / O日誌目錄為/var/log/sudo-io,如果有會話序列號,則儲存在此目錄中。您可以通過iolog_dir引數指定自定義目錄。

Defaults   log_input, log_output

支援一些轉義序列,例如%{seq},其擴充套件為單調遞增的基礎36序列號,例如000001,其中每兩個數字用於形成新的目錄,例如。00/00/01,如下例所示:

[root@linuxprobe ~]# cd /var/log/sudo-io/
[root@linuxprobe sudo-io]# ll
total 8
drwx------ 3 root root 4096 Jan 12 18:58 00
-rw------- 1 root root    7 Jan 12 19:08 seq
[root@linuxprobe sudo-io]# cd 00/00/06/
[root@linuxprobe 06]# ls
log  stderr  stdin  stdout  timing  ttyin  ttyout
[root@linuxprobe 06]# cat log 
1484219333:root:root::/dev/pts/0
/root
/bin/bash

6.講解​​Sudo使用者

要講授sudo使用者關於系統上的密碼使用,請使用如下所示的lecture引數。
它有3個可能的值:

  • always - 總是講一個使用者。
  • once - 只在使用者第一次執行sudo命令時使用(當沒有指定值時使用)
  • never - 從不講授使用者。
Defaults  lecture="always"

此外,您可以使用lecture_file引數設定自定義講義檔案,在檔案中鍵入相應的訊息:

Defaults  lecture_file="/path/to/file"

7.輸入錯誤的sudo密碼時顯示自定義訊息

當用戶輸入錯誤的密碼時,命令列上將顯示特定的訊息。預設訊息是“sorry,try again”,您可以使用badpass_message引數修改訊息,如下所示:

Defaults  badpass_message="Password is wrong, please try again,thank you!"

8.增加sudo密碼嘗試限制

引數passwd_tries用於指定使用者嘗試輸入密碼的次數。 預設值為3:

Defaults   passwd_tries=5 

9.讓Sudo輸入錯誤的密碼時輸入提示

Defaults  insults 

10.瞭解更多Sudo配置