在某些情況下, 以root
用戶身份訪問系統有潛在危險,並可能導致系統和數據損害。我們可以用setuid程序,例如su和sudo解決。
su命令
[app01rot@app-01 ~]$ su - root
一旦在使用su
命令登錄root,用戶獲取了系統的絕對管理權限
只允許特定用戶使用該su
命令
要做到這一點,編輯插入式驗證模塊為(PAM)配置文件/etc/pam.d/su
在文本編輯器中打開該文件,取消注釋:
#auth required pam_wheel.so use_uid
將用戶添加到名為wheel的特殊管理組
usermod -a -G wheel username
sudo命令
只有/etc/sudoers
配置文件中列出的用戶才可以使用該sudo
命令,命令在用戶的 shell中執行,而不是在root
shell中執行。這意味着root
可以完全禁用shell。
sudo ls /root
每個使用該sudo
命令的成功身份驗證都會記錄到/var/log/messages
,並將的用戶和發出的命令記錄到文件/var/log/secure中
。
/var/log/secure
Nov 7 17:09:49 app-01 sudo: root : TTY=pts/1 ; PWD=/root ; USER=root ; COMMAND=/bin/ls /root/
如果需要額外的日志記錄,請使用該pam_tty_audit
模塊為指定用戶啟用TTY審計,方法是將以下行添加到/etc/pam.d/system-auth
文件中:
session required pam_tty_audit.so disable=pattern enable=pattern
其中pattern表示逗號分隔的用戶列表,以下配置將啟用root
用戶的TTY審計,並禁用所有其他用戶
session required pam_tty_audit.so disable=* enable=root
權限管理
要賦予某人完全的管理權限:
用visudo命令編輯/etc/sudoers
juan ALL =(ALL)ALL #允許juan使用sudo執行任何命令
賦予部分管理權限
%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom #允許users組中的成員執行執行的掛載磁盤命令
不需要輸入sudo密碼執行一組命令
Cmnd_Alias SYS_BACKUP = /bin/su - root -c /usr/locale/sbin/sys_backup.sh,/mnt/cdrom insmsop1 ALL=(ALL) NOPASSWD: SYS_BACKUP
配置sudo記錄密碼的時間
sudo
將密碼保存五分鍾的超時時間。在此期間對該命令的任何后續使用都不會提示用戶輸入密碼。添加下面的一行將修改時間
Defaults timestamp_timeout=value #value=0,每次sudo都需要輸入密碼
如果某個帳戶遭到入侵,攻擊者可以使用以下sudo
管理權限打開一個新的shell:
sudo /bin/bash #繞過/etc/sudoers
文件中指定的超時時間,並且永遠不要求攻擊者sudo
再次輸入密碼