Linux SU命令安全的幾點建議
首先我們看su在man幫助頁中的解釋su - run a shell with substitute user and group IDs, 也就是說通過su我們不用提供用戶和組名就可以啟動一個shell程序. su是一個二進制的可執(zhí)行文件, 命令所在的文件路徑是/bin/su, 下面是通過命令行查詢su文件的類型及所在路徑:
例一:
islab$ which su
/bin/su
例二:
islab$ file /bin/su
/bin/su: setuid ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, stripped
例三:
islab$ll /bin/su
-rwsr-xr-x 1 root root 24060 Jan 10 2007 /bin/su
例三和例二中我們可以看到su是一個setuid程序(setuid位可以使用chmod u+s進行設置, 如ls顯示su文件所有者屬性起用了setuid位), 在這種情況下, su可以獲得比其所有者更高的權限, 也就是說su運行的時候, 您的權限會被提升, 將與root的權限等同.
例三中我們可以看到文件的類型是ELF 32-bit LSB shared object(設置了setuid位), 也就是說程序需要libc這樣的函數庫, 也需要使用了ELF解釋器, 并遵守LSB 規(guī)范.
問一: 普通用戶可以從其它機器拷貝su命令.
答: 他們可以從其它機器拷貝su命令, 但是他們將不能對su進行正確的權限設置比如chown root和chmod u+s等等. 所以拷貝過來su不能夠正常工作.
問二: 如何防止普通用戶執(zhí)行su命令.
#p#答:
1). 你可以建立一個專門的組, 只有組成員才能執(zhí)行su命令
islab# groupadd wheel
islab# useradd wheel
islab# chown root:mysql /bin/bash
islab# chmod 4750 /bin/su
2). 只有root用戶才能執(zhí)行su命令.
islab# chmod 4700 /bin/su
3). 通過pam庫實現只有wheel組成員才能執(zhí)行su命令, 下面例子中增加了zhaoke帳號到wheel組中.
islab# groupadd wheel
islab# useradd wheel
islab# usermod -G wheel zhaoke
islab# ll /lib/security/pam_wheel.so
-rwxr-xr-x 1 root root 5692 Feb 22 2007 /lib/security/pam_wheel.so
islab# vi /etc/pam.d/su
增加下面一行
auth required /lib/security/pam_wheel.so use_uid
然后保存退出su配置文件.
問三: 普通用戶雖然不能執(zhí)行su命令, 但是還有可能通過蠻力攻擊獲得root的密碼
答: 普通用戶可以在shell或者ssh方式對root帳戶進行蠻力攻擊.我們可以考慮使用一些安全工具如pam_abl來對ssh進行保護. pam_abl將能在設定的時間內對錯誤登陸的帳戶進行進行臨時封禁. 當然普通用戶也可以通過程序漏洞提升權限, 比如緩沖區(qū)溢出。
【編輯推薦】