查看完整版本: 帳號管理

danny 2006-11-30 10:51

帳號管理

[size=5][color=red]帳號管理結構[/color][/size]

最後更新:2006/12/02 

[color=blue] 帳號檔: /etc/passwd[/color]
檔案結構說明 (範例)
aaa:x:100:200:aaa200:/aaa:/bin/bash

aaa:user name
x:password 帳號密碼,基於安全性考量以MD5加密後的密碼存放於/etc/shadow,這裡只用x標示,另一種附加功能是標示該帳號為有效帳號(空值視為無效帳號)
100:user id
200:group id
aaa200: 說明
/aaa: 家目錄
/bin/bash: 權限(shell路徑位置) -->對應到 /etc/shells

[color=blue]密碼檔:/etc/shadow[/color]
檔案結構說明 (範例)
aaa:!!:13222:0:99999:7:100:200:300
aaa:帳號
!!:經過編碼的密碼
13222:最後變動密碼的天數
0:可以更改密碼的剩餘天數
99999:必須更改密碼的剩餘天數
7:必須變更的幾天前送出警告訊息
100:更期限後的幾天還沒修改自動關閉帳號
200:帳號被關閉的天數
300:保留的欄位

[color=blue]群組檔:/etc/group[/color]
檔案結構說明 (範例)
disk:x:6:root
disk:群組名稱
x:密碼(x=無密碼,另一種附加功能是標示該群組為有效群組)
6:group id (群組ID)
root:群組成員,以分號標記

[color=blue]新增帳號預設檔: /etc/default/useradd[/color]
GROUP=100             #預設群組
HOME=/home           #使用者預設家目錄
INACTIVE=-1
EXPIRE=                  # 預設帳號過期日
SHELL=/bin/bash   #預設權限
SKEL=/etc/skel         #複製家目錄下的預設檔案與子目錄(複製 /etc/skel 範本目錄)

[color=#0000ff]shell權限檔: /etc/shells
[/color]您可以在這裡新增或刪除您自訂的權限項目
也就是這裡是您的
預設的權限有下列幾個
/bin/sh
/bin/bash
/sbin/nologin
/bin/ash
/bin/bsh
/bin/ksh
/usr/bin/ksh
/usr/bin/pdksh
/bin/tcsh
/bin/csh
/bin/zsh

那上面這些shell是做啥用的呢?
有修芳昌老師的shell script的人應該在撰寫程式時會在程式上key上#!/usr/bin/perl
來引用perl 的函式庫及權限
沒錯...在linux中使用者的權限也是以引用的方式的方式來取得權限及函式庫....
一般預設的權限是/bin/bash  但是如果你所創的帳號使用來收信則通常會給/sbin/nologin
意思是說...可以使用系統服務但不能登入主機....

===========愛的分格線===========愛的分格線===========愛的分格線===========愛的分格線===========
[size=5][color=red]帳號管理指令[/color][/size]


[color=blue]新增帳號:useradd[/color]
useradd -D [-g default_group] [-b default_home] [-f default_inactive]
           [-e default_expire_date] [-s default_shell]

參數說明:

-g <default_group>           設定預設的群組
-d <default_home>           使用者家目錄上層管理目錄(如 /home)
-f <default_inactive>        設定逾期未變更密碼後幾日停用帳戶
-e <default_expire_date>   設定預設的帳戶到期日
-s <default_shell>          設定預設的 shell
[color=red]-p <set_password>            設定預設密碼,這個指令其實是無效的,因為沒有經過編碼直接塞進去[/color]

範例
useradd -u 500  -g 100  -d /home/danny  -s /bin/bash -e 20061121 danny
新增一個帳號名稱為danny , 指定uid為500, 指定gid為100, 家目錄的路徑為/home/danny , 權限shell指定為/bin/bash , 有效日期到2006年11月21日

[color=blue]設定或更改密碼:passwd[/color]

語法:passwd [-k] [-l] [-u [-f]] [-d] [-S] username

參數說明:

-k                                   設定密碼逾期失效後才可變更
-l                                    鎖住帳戶(會在 /etc/shadow 檔案密碼欄位前加上 !! 或 ! 符號)
-u                                   解開鎖定的帳戶
-f                                    強制執行(配合 -u 參數使用)
-d             刪除帳戶密碼
-S             列出密碼相關資訊
-n minday                設定不可變更密碼的天數
-x maxday                        設定最常需要變更密碼的天數
-w warnday                      設定密碼到期前幾日發出警訊
-i inactiveday                    設定帳戶到期後的緩衝天數

[color=blue]修改使用者:usermod [/color]

語法:usermod [-c comment] [-d home_dir [-m]] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group [,...]] [-l login_name] [-p passwd]
        [-s shell] [-u uid [-o]] [-L|-U] username


參數說明:

-c <comment>          全名或註解
-d <home_dir>        指定使用者家目錄
-e <expire_date>      指定帳戶到期日
-f <inactive_time>     逾期未變更密碼後帳戶停用日期(緩衝天數)
-g <initial_group>      指定帳戶主要的隸屬群組
-G <group>              指定帳戶其它的隸屬群組
-l <login_name>        自動建立使用者家目錄(系統預設)
-p <passwd>            指定帳戶密碼
-s <shell>                 指定登入後所使用的 shell
-u <uid>                  指定帳戶辨識碼 UID
-L                            鎖定帳戶
-U                            解除鎖定帳戶


[color=blue]刪除使用者:userdel[/color]
語法:
userdel [-r] username

參數說明:
-r <del all setting>   刪除相關設定

範例
userdel danny
刪除danny這個帳號...

注意,有參數跟沒參數有很大的差別

userdel danny
(1)只會刪掉 /etc/passwd  /etc/shadow及 /etc/group 中的danny 資料
(2)uid 及 gid 值將會被保留,不會沿用給下一個新建的user

userdel -r danny
(1)刪除danny這個帳號,含家目錄及裡面所有檔案
(2)如果被刪除的uid 及 gid 值是最後一個數值,則該uid 及 gid 值將會給下一個user
[color=blue][/color]
[color=blue]顯示使用者執行過的指令:lastcomm[/color]
[color=black]需啟動 psacct 服務: /etc/init.d/psacct start [/color]
[color=black]資料檔案: /var/account/pacct [/color]
[color=#cccc00][/color]
參數說明:
S -- command executed by super-user
F -- command executed after a fork but without a following exec
C -- command run in PDP-11 compatibility mode (VAX only)
D -- command terminated with the generation of a core file
X -- command was terminated with the signal SIGTERM (usually Ctrl + C)
執行者帳號
終端機名稱
CPU 執行時間
常用參數: 在 lastcomm 後面加上: 指令名稱、帳號、終端機名稱
ex. lastcomm rm; lastcomm root; lastcomm pts/1
[color=#0000ff][color=blue][/color][/color]
[color=#0000ff]顯示最近系統登入/登出主機的用戶及時間:last
[/color][color=black]這個指令預設只會紀錄最近的登入紀錄[/color]


[color=#0000ff][color=blue]統計執行過的程序[/color]:sa[/color]
[color=black]需啟動 psacct 服務: /etc/init.d/psacct start [/color]
[color=black]資料檔案: /var/account/pacct [/color]
[color=black]顯示格式: [/color]
[color=black]該程序執行次數 [/color]
[color=black]已執行時間 (單位: 分鐘) [/color]
[color=black]CPU 處理時間 (單位: 分鐘) [/color]
[color=black]以 CPU 時間平均計算的記憶體使用量 [/color]
[color=black]程序名稱 [/color]
[color=black]sa -a 顯示所有程序記錄 [/color]
[color=black]sa -m 依使用者統計 [/color]

[color=blue]切換使用者帳號:su[/color]
[font=細明體][color=#ff6666][color=black]參數[font=Tahoma]說明:[/font]
-     如果執行 su - 時,表示該使用者想要變換身份成為 root ,且使用 root 的
      環境設定參數檔,如 /root/.bash_profile 等等。
-l    後面可以接使用者,例如 su -l dmtsai ,這個 -l 好處是,可使用欲變換身份者
      他的所有相關環境設定檔。
-m    使用目前的環境設定,而不重新讀取新使用者的設定檔[/color][/color][/font]
[font=細明體]-p    同上[/font]
[font=細明體][color=#ff6666][color=black]-c    僅進行一次指令,所以 -c 後面可以加上指令[/color]

[/color][/font][color=#0000ff]取得權限:[/color][size=4][color=#0000bb]sudo[/color][/size]
設定檔位置:/etc/sudoers
設定方法請參照另一個網頁:[url=http://www.ihao.org/dz5/viewthread.php?tid=137&extra=page%3D1]http://www.ihao.org/dz5/viewthread.php?tid=137&extra=page%3D1[/url]

===========愛的分格線===========愛的分格線===========愛的分格線===========愛的分格線===========
[size=5][color=#ff0000]安全性控管方法[/color][/size]

Linux伺服器的安全控管重要嗎?不用說當然很重要,所以正確的概念對管理者來說是非常重要的
在設定權限時要先搞清楚要給使用者何種服務,這裡的服務指的是要做什麼用?
例如如果是Mail帳號可以使用 /bin/nologin 的空shell權限或乾脆不建實體帳號以虛擬帳號的方式建立
因為:並不是所有的user或使用者都必須親自進到伺服器內使用服務,減少非管理者進到主機才是王道,
在預設的linux中有給八個左右的shell權限,這些shell很重要...可惜的是老師沒有說明權限的用意

再來提到log (紀錄檔)
講義上的兩個大問題
(1) Log是有分的,並不是只看/var/log/messages
mail log跟system log是不會在同一個檔案中!!
詳情可請參照 /etc/syslog設定檔跟/var/log下的檔案

(2)在我的經驗中,當你被入侵的時候通常log檔是無效的,為什麼這麼說呢?
因為沒有一個白癡入侵者會笨笨的把紀錄留給你看,通常會下一個crontab 把log 丟到 /dev/null 中
俗稱毀屍滅跡...
那log的真正用途是做啥用?
這個答案很簡單,就是給管理者除錯跟分析使用狀況...
[size=3][/size]
[size=5][color=#ff0000]事前防備[/color][/size]
事先防備其實是個很廣義的名詞,不然就不會有所謂的資安專家
那在帳號管理的事先防備有哪些呢

其實就只有一個...那就是創建帳號時要給予帳號適當的權限
例如:
帳號的shell 、 目錄鎖定、是否可以登入主機、特定使用者給予特定的登入方式等等

[size=5][color=#ff0000]事後追查[/color][/size]

好啦...那是不是就無法偵測或了解被入侵的狀況呢?
當然不是囉
可以從幾個方向下手

1.檢查有沒有人動過執行檔
檢查/sbin/ 及 /bin/ 或者重要系統指令目錄下的執行檔有沒有被動過手腳,駭客通常會引用內建執行指令進行攻擊,所以會去竊改系統指令
這時候 lsattr 這個指令就很重要了,不懂的人翻一下書或者等下次補齊

2.檢查網頁檔
網頁檔跟系統有何關係呢?其實在這個網路化時代中,傳統的攻擊手法已經漸漸式微了,目前比較常見的是以apache或nobody的權限入侵網頁,
藉由竄改程式語言(如PHP或PERL)的方式入侵到主機內取得攻擊或入侵權限
頁: [1]
查看完整版本: 帳號管理