Linux用戶深度管理

每個文件和進程,都需要對應一個用戶和用戶組。

linux系統是通過UID和GID來是識別用戶和組的。

其中用戶名等同於人名(人類識別),UID和GID等同於身份證號(系統識別)。

linux管理員:root

用戶和組的關係

一對一,一對多,多對一,多對多

用戶分類

超級用戶:UID=0 root

普通用戶:UID>=500 由超級用戶或者具有超級用戶權限的用戶創建的用戶

虛擬用戶:UID={1,499}存在滿足文件或者服務啓動的需要,一般不能登錄。

每個文件和進程,都需要對應一個用戶和用戶組。

和用戶關聯的四個文件:

/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow.

用戶管理的命令:

useeradd 添加用戶

userdel 刪除用戶

passwd 設置或修改密碼 更改/etc/shadow

chage 修改用戶密碼屬性 管理/etc/shadow

usermod 修改用戶信息

id 查看用戶信息

su 用戶角色切換工具

sudo 普通用戶不需要root密碼就可以執行只有root才能執行相應的命令或具備的目錄權限

visudo 配置sudo權限的編輯命令,可以直接vi來編輯/etc/sudoers實現。推薦使用,可以自動檢查語法。

groupadd 添加組

groupdel 刪除組

groups 查看組信息

whoami 查看當前用戶

/etc/skel 目錄

/etc/skel 目錄是用來存放新用戶環境變量的目錄,當我們添加新用戶時,這個目錄下的所有文件會自動被複制到新添加的用戶家目錄下(cp -a /etc/skel/* /home/新用戶名/),默認情況下,/etc/skel 目錄下的所有文件都是隱藏文件,通過修改添加、刪除/etc/skel 目錄下的文件,我們可爲新用戶提供統一的、標準的、初始化用戶環境。

/etc/skel 的企業場景作用:

1、可以把通知內容放到skel,讓登錄人員看

2、統一初始化新用戶的環境變量

3、面試題:出現“-bash-4.1$”問題原因及解決方法

原因:家目錄環境變量文件丟失。

解決方法:

su - a(a爲前面出現問題的用戶)

-bash-4.1$ cp /etc/skel/.bash* .

-bash-4.1$ logout

su -

su - a(a爲前面出現問題的用戶)

/etc/login.defs配置文件

/etc/login.defs文件是用來定義創建用戶時需要的一些用戶的配置信息。例如創建用戶時,是否需要家目錄,UID和GID的範圍,用戶及密碼的有效期限每個文件和進程,都需要對應一個用戶和用戶組。


linux系統是通過UID和GID來是識

每個文件和進程,都需要對應一個用戶和用戶組。

linux系統是通過UID和GID來是識別用戶和組的。

其中用戶名等同於人名(人類識別),UID和GID等同於身份證號(系統識別)。

linux管理員:root

用戶和組的關係

一對一,一對多,多對一,多對多

用戶分類

超級用戶:UID=0 root

普通用戶:UID>=500 由超級用戶或者具有超級用戶權限的用戶創建的用戶

虛擬用戶:UID={1,499}存在滿足文件或者服務啓動的需要,一般不能登錄。

每個文件和進程,都需要對應一個用戶和用戶組。

和用戶關聯的四個文件:

/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow.

用戶管理的命令:

useeradd 添加用戶

userdel 刪除用戶

passwd 設置或修改密碼 更改/etc/shadow

chage 修改用戶密碼屬性 管理/etc/shadow

usermod 修改用戶信息

id 查看用戶信息

su 用戶角色切換工具

sudo 普通用戶不需要root密碼就可以執行只有root才能執行相應的命令或具備的目錄權限

visudo 配置sudo權限的編輯命令,可以直接vi來編輯/etc/sudoers實現。推薦使用,可以自動檢查語法。

groupadd 添加組

groupdel 刪除組

groups 查看組信息

whoami 查看當前用戶

/etc/skel 目錄

/etc/skel 目錄是用來存放新用戶環境變量的目錄,當我們添加新用戶時,這個目錄下的所有文件會自動被複制到新添加的用戶家目錄下(cp -a /etc/skel/* /home/新用戶名/),默認情況下,/etc/skel 目錄下的所有文件都是隱藏文件,通過修改添加、刪除/etc/skel 目錄下的文件,我們可爲新用戶提供統一的、標準的、初始化用戶環境。

/etc/skel 的企業場景作用:

1、可以把通知內容放到skel,讓登錄人員看

2、統一初始化新用戶的環境變量

3、面試題:出現“-bash-4.1$”問題原因及解決方法

原因:家目錄環境變量文件丟失。

解決方法:

su - a(a爲前面出現問題的用戶)

-bash-4.1$ cp /etc/skel/.bash* .

-bash-4.1$ logout

su -

su - a(a爲前面出現問題的用戶)

/etc/login.defs配置文件

/etc/login.defs文件是用來定義創建用戶時需要的一些用戶的配置信息。例如創建用戶時,是否需要家目錄,UID和GID的範圍,用戶及密碼的有效期限等等。

/etc/default/useradd文件

/etc/default/useradd文件是在使用useradd添加用戶時的一個需要調用的默認配置文件,可以使用 user -D 參數 這樣的命令格式來修改文件裏面的內容。可以通過vi 命令直接編輯。

用戶密碼管理

1、密碼要複雜8位以上(字母數字特殊字符)

2、大的企業用戶和密碼統一管理(相當於活動目錄,openldap)

3、動態密碼:動態口令,第三方提供,或自己開發

用戶刪除管理

一般不能確認用戶相關目錄有沒有重要數據,就不能用-r。

1、vi /etc/passwd然後註釋掉用戶,觀察一個月,這樣出問題可以還原,相當於操作前備份。

2、把登錄shell改成/sbin/nologin。

3、openldap(類似活動目錄)賬號統一管理的,ldap庫裏幹掉用戶,所有服務器全部都沒了。

提示:修改刪除必須小心謹慎!

useradd參數

-c comenment 新賬號passwd的說明欄

-d home_dir  新賬號每次登入是所使用的home_dir。預設值爲default_home內login名稱,並當成登入時目錄名稱。

-e expire_date 賬號終止日期。日期格式爲MM/DD/YY。重點

-f inactive_days賬號過期幾日後永久停止權限。當值爲0時賬號則被立即停用。當值爲-1時則關閉此功能。

-g initial_group group名稱或以數字來做爲用戶登入起始用戶組。用戶組名須爲系統現有存在的名稱。用戶組數字也須爲系統現有存在的名稱。用戶組數字也須爲系統現有存在的用戶組。預設數字爲1.

-G group,[...]  定義此用戶爲不同groups的成員。每個用戶組使用“,”分隔。用戶組名同-g選項的限制。默認值爲用戶的起始用戶組。重點

-m  用戶目錄如不存在則自動建立。如使用-k選項,skeleton——dir內的檔案將複製至用戶目錄下,然而在/etc/skel目錄下的檔案也會複製過去取代。任何在skeleton_dir /etc/skel的目錄也相同會在用戶目錄下意義建立。The-k 同-m不建立目錄以及不復制任何檔案爲預設值。

-M  不建立用戶家目錄,優先於/etc/login.defs文件的設定。一般創建虛擬用戶時不建立家目錄,部署服務時需要創建虛擬用戶。重點

-n  默認情況用戶的用戶組與用戶的名稱會相同。如果命令加了-n參數,就不會生成和用戶同名的用戶組了。

-r  此參數是用來建立系統賬號。系統賬號的UID會比定義在系統檔上/etc/login.defs.的UID_MIN來的小。注意useradd此用法所建立的賬號不會建立用戶家目錄,也不會在乎記錄在/etc/login,defs.的定義值。如果你想要擁有用戶家目錄須額外指定-m參數來建立系統賬號。這是Red HAT額外增設的選項。

-s shell  用戶登入後使用的shell名稱。默認值爲不填寫,這樣系統會幫你指定預設的登入shell。

-u uid  用戶的ID值。這個值必須是唯一的,除非用-o選項。數字不可爲負值。

passwd 參數

-f , --force force operation #強制操作;僅root權限才能操作

-x,--maximum=DAYS #兩次密碼修改的最大天數,後面接數字;僅root權限操作

-n,--minimum=DAYS #兩次密碼修改的最小天數,後面接數字;僅root權限操作

-w,--warning=DAYS #在距多少天體系用戶修改密碼;僅root權限才能操作

-i,--inactive=DAYS #在密碼過期後多少天,用戶被禁掉;僅root權限才能操作

chage參數

-d,--lastday 最近日期 #將最近一次密碼設置時間設爲“最近日期”。

-E,--expiredate 過期日期 #將賬戶過期時間設爲“過期日期”,日期寫法:MM/DD/YY。

-h,--help #顯示此幫助信息並退出

-i,-inactive 失效密碼 #在密碼過期後多少天,用戶被禁掉;僅root權限才能操作

-l,--list #顯示賬戶年齡信息

-m,-mindays 最小天數 #將兩次改變密碼之間相距的最小天數設爲“最小天數”

-M,--maxdays 最大天數 #將兩次改變密碼之間相距的最大天數設爲“最大天數”

-W,warndays 警告天數 #將過期警告天數設爲“警告天數”

usermod參數

-c comment #增加用戶賬號/etc/passwd中的註釋說明欄(第五欄)。-c參數功能也可使用功能chfn

命令來修改,當然也可以手工修改/etc/passwd文件來實現。

-d home_dir #更新用戶新的家目錄,如果給定-m選項,用戶舊的家目錄會搬到新的家目錄去,

如舊的家目錄不存在則創建新的。

-e expire_date #加上用戶賬戶停止日期。日期格式:MM/DD/YY。

-f inactive_days #賬號過期幾日後永久停權。當值爲0時賬號則立即被停權。當值爲-1時則關閉此功能,預 設值爲-1.

-g initial_group #更新用戶新的起始登入用戶組。用戶組名須已存在。用戶組ID必須參照既有的用戶組。用 戶組ID預設值爲1.

-G group ,[...] #定義用戶爲一堆groups的成員。每個用戶使用“,”隔開。用戶在名同-g選項的限制。

-l login_name 變更用戶login時名稱爲login_name,其餘信息不變。

-s shell 指定新用戶登入shell。如此欄留白,系統將選用系統預設shell。這個-s參數功能也可以使用chsh命令來修改。當然也可以手工修改/etc/passwd文件來實現。

-u uid 指定用戶的ID值。這個值必須是唯一的,除非用-o選項。數字不可爲負值。

-L 凍結用戶的密碼,使之無法登錄,實際就是間接修改/etc/shadow的密碼欄。在密碼欄的開頭加上“!”號,即表示凍結。這個功能和usermod -e , chage -E或passwd -l等命令有類似功效,就是讓用戶無法正常登錄。

-U 取消凍結用戶的密碼,使之恢復登錄,實際同樣是修改/etc/shadow的密碼欄,在密碼欄的開頭取消“!”號,即表示恢復。

用戶查詢相關命令

id, finger, users, w, who, last, lastlog, groups

用戶及日誌查詢:w who

查看用戶登錄信息:當前last  歷史lastlog

查看用戶所屬:全部id 組groups主屬和附加組users

su 切換用戶

-,-l,-login make the shell a login shell 是一個shell成爲登錄的shell,如執行su - oldboy時,表示該用戶想改變身份爲oldboy,並且使用oldboy用戶的環境配置,如:/home/oldboy/.bash_profile等。

-c,--command=COMMAND pass a single COMMAND to the with -c

切換到一個shell下,執行一個命令,然後退出所切換的用戶環境。

-m, --preserve-environment do not reset environment variables,same as -p

切換用戶時,不重置用戶環境變量,-p的功能同-m,這個參數爲su的默認值, 一般較少使用

不加“-”的話,家目錄仍是root。

su - oldboy -c pwd 切到oldboy下執行pwd命令  切到用戶下執行命令,但當前用戶不變

由su和su -的區別談學習linux運維方法  http://oldboy.blog.51cto.com/2561410/1053606 

env|grep -i 用戶名 查看用戶環境變量

sudo尚方寶劍

su切換用戶方便,但有一些致命的缺點:

1)普通用戶必須知道root密碼纔可以切換到root,這樣root密碼就泄露了。相當於把“刀把”交給了別人。

2)使用su命令切換身份,無法對切換後的身份做精細的控制,拿到別人超級權限的人可以爲所欲爲。甚至可以更改root密碼,讓真正的管理員無法擁有root權限。

爲了既不泄露密碼,又讓普通用戶擁有一定的超級權限,推出sudo命令。

通過sudo命令,我們可以把某些超級用戶權限分類,有針對性授權給指定的普通用戶,並且普通用戶不需要知道root密碼就可以得到root權限。

sudo的配置文件:/etc/sudoers

sudo命令執行的大概流程:

a)當用sudo執行命令時,系統首先會查找/var/run/sudo/%HOME(新用戶會先生成此目錄)目錄中是否有用戶時間戳文件,如果時間戳文件過期,則提示用戶輸入自身密碼(注意:這裏需要輸入當前執行命令用戶的密碼,不是root後其他要切換的用戶的密碼)。

b)當密碼驗證成功後,系統查找/etc/sudoers配置文件,判斷用戶是否有執行相應sudo命令權限。

c)如果具備執行相應sudo權限,就會自動由當前用戶切到root(或其他指定切換到的用戶),然後以root(或其他指定的切換到的用戶)身份角色執行該命令。

d)執行完成後,又會自動的直接退回到當前用戶shell下(以root等身份執行任務)。

更改授權/etc/sudoers文件

1)執行visudo命令自動編輯/etc/sudoers文件(推薦)

visudo 在98行,爲普通用戶提權

sudo命令配置時環境配置一定是全路徑。

2)直接修改/etc/sudoers文件方法(不推薦)

echo "oldboy  ALL=(ALL)  ALL" >> /etc/sudoers

visudo -c #檢查語法

sudo參數

-l  列出用戶在主機上可用和被禁止的命令;配置好sudo授權規則後,可用此參數查看授權情況

-v  驗證用戶時間戳;可跟蹤最新時間戳

-u  指定以某個用戶身份執行特定命令

-k  刪除時間戳,下一個sudo命令要求提供密碼

對用戶組進行授權:

echo "%oldboy  ALL=(ALL)  ALL" >> /etc/sudoers  #配置oldboy組的授權,也可以通過visudo來更改。

tail -l /etc/sudoers  #查看授權配置

visudo -c  #檢查語法

ls -l /etc/sudoers  #檢查/etc/sudoers權限

usermod -g oldboy ett  #更改ett屬於oldboy組

id ett  #查看更改結果

別名類型(Alias_Type):

1)Host_Alias 定義主機別名

1.在生產場景中,一般不需要設置主機別名,在定義授權規則時可以通過ALL來匹配所有主機。

2.注意定義規範(Host_Alias  FILESERVERS  =  fs1,  fs2 #等號兩邊有空格逗號後面有空格),雖然不是必須的,但我們還是要求能夠按照系統的標準來配置,這樣可以避免意外的問題發生。

3.以上Host_Aliases內容截取自/etc/sudoers文件,並取消了註釋。

4.其實就是邏輯上的主機組,當多臺服務器共享一個/etc/sudoers時候會用到主機別名。

5.%oldboy  ALL=(ALL)  ALL #第一個ALL就是主機別名的應用位置。

6.%oldboy  FILESERVERS=(ALL)  ALL  #相當於裏面有兩臺機器

2)User_Alias定義用戶別名

1.設置用戶別名也不是必須的,可以通過%groupname的方式來作爲成員。

2.#User_Alias ADMINS = jsmith, mikem, %groupname

給ADMINS授權相當於同時授權給jsmith, mikem, %groupname

oldboy  ALL=(ALL)  ALL #oldboy就是主機別名的應用位置。

3)Runas_Alias 定義runas身份別名

1.這個別名指定的是“用戶身份”,即sudo允許切換到的用戶身份。

2.Runas_Alias定義的是用戶可以執行sudo切換身份到Runas_Alias下包含的成員身份。

3.實際語法 Runas_Alias OP = root

4.oldboy  ALL=(ALL)  ALL #小括號中的第二個ALL的位置就是Runas_Alias別名的應用位置。

4)Cmnd_Alias定義命令別名

1.命令別名就是設置可以執行哪些命令。

2.oldboy  ALL=(ALL)  ALL #第三個ALL的位置就是命令別名的位置。

3.所有的命令別名下的成員必須是文件或目錄的絕對路徑。

4.命令別名超過一行,可用“\”換行。

5.在定義時,可以使用正則表達式,如/usr/bin/passwd [A-Za-z]*。

sudo授權,別名和具體授權配置的關係

用戶和組

主機

可以切換的用戶角色

命令

root

ALL=

(ALL)

ALL

User_Alias ADMINS = jsmith, mikem,  %groupname

Host_Alias FILESERVERS  =  fs1,  fs2

Runas_Alias OP = root

Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

什麼情況下使用上述別名?

工作中一般有多個系統用戶,需要分類,分層次管理用戶時。

別名應用

Linux系統安全最小原則

最小化原則對Linux系統安全來說極其重要:即多一事不如少一事。

具體包括:

▲安裝Linux系統最小化,即選包最小化,yum安裝軟件包也要最小化,無用的包不裝

▲開機自啓動服務最小化,即無用的服務不開啓。

▲操作命令最小化。例:能“rm -f a.txt”就不用“rm -fr a.txt”。

▲登錄Linux用戶最小化。平時沒有特殊需求就不登錄root,用普通用戶登錄即可。

▲普通用戶授權最小化,即只給用戶必須管理系統的命令,不能啥都可以幹。

▲Linux系統文件及目錄的權限設置最小化,禁止隨意創建、更改、刪除文件。

配置sudo命令用戶行爲日誌審計

說明:所謂sudo命令日誌審計,並不記錄普通用戶的普通操作。而是記錄執行sudo命令的用戶操作。

項目實戰:簡歷中的經驗說明

服務器日誌審計項目提出與實施

1.權限方案實施後,權限得到了細化控制,接下來進一步實施對所有用戶日誌記錄方案。

2.通過sudo和syslog(rsyslog)配合實現對所有用戶進行日誌審計並將記錄集中管理(發送到中心日誌服務器)。

3.實施後讓所有運維和開發的所有執行的sudo管理命令都有記錄可查,杜絕了內部人員的操作安全隱患。

生產環境企業日誌審計解決方案:

所謂日誌審計,就是所有系統及相關用戶行爲的信息,並且可以自動分析、處理、展示(包括文本或錄像)

1)通過環境變量命令及rsyslog服務進行全部日誌審計(信息太大)。

2)sudo配合rsyslog服務,進行日誌審計(審計信息較少)

3)在bash解釋器程序裏嵌入一個監視器,讓所有被審計的系統用戶使用修改過的增加了監視器的特殊bash程序作爲解釋程序。

4)齊治的堡壘機(齊治科技堡壘主機系統):商業產品

https://wenku.baidu.com/view/76b3b3e6f18583d0486459 (齊治科技堡壘主機系統技術白皮書)

5)Python開發的開源產品

開源跳板機(堡壘機)Jumpserver部署詳解

http://blog.51cto.com/zt/658

開源堡壘機CrazyEye

http://3060674.blog.51cto.com/3050674/1700814

sudo日誌審計

1)安裝sudo命令,syslog服務(Centoa6.4爲rsyslog服務)

2)配置/var/sudoers(其實只要一行就可搞定sudo審計)

下面3,4可以不執行,直接切換到普通操作,然後查看/var/log/sudo.log有無記錄。

3)配置文件系統日誌/etc/rsyslog.conf(可以不配)

4)重啓rsyslog內核日誌記錄器

日誌集中管理

1)rsync+inotify或定時任務+rsync,推到日誌管理器上,10.0.0.7_2013.0303.sudo.log

2)rsylog服務來處理。

echo "10.0.2.164 logserver" >> /etc/hosts #日誌服務器地址

echo "*.info  @logserver" >> /etc/syslog.conf #時候所有日誌推送

3)日誌收集解決方案scribe,Flume,stom,logstash ELK

別用戶和組的。


其中用戶名等同於人名(人類識別),UID和GID等同於身份證號(系統識別)。


linux管理員:root


用戶和組的關係


一對一,一對多,多對一,多對多


用戶分類


超級用戶:UID=0 root


普通用戶:UID>=500 由超級用戶或者具有超級用戶權限的用戶創建的用戶


虛擬用戶:UID={1,499}存在滿足文件或者服務啓動的需要,一般不能登錄。


每個文件和進程,都需要對應一個用戶和用戶組。


和用戶關聯的四個文件:


/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow.


用戶管理的命令:


useeradd 添加用戶


userdel 刪除用戶


passwd 設置或修改密碼 更改/etc/shadow


chage 修改用戶密碼屬性 管理/etc/shadow


usermod 修改用戶信息


id 查看用戶信息


su 用戶角色切換工具


sudo 普通用戶不需要root密碼就可以執行只有root才能執行相應的命令或具備的目錄權限


visudo 配置sudo權限的編輯命令,可以直接vi來編輯/etc/sudoers實現。推薦使用,可以自動檢查語法。


groupadd 添加組


groupdel 刪除組


groups 查看組信息


whoami 查看當前用戶


/etc/skel 目錄


/etc/skel 目錄是用來存放新用戶環境變量的目錄,當我們添加新用戶時,這個目錄下的所有文件會自動被複制到新添加的用戶家目錄下(cp -a /etc/skel/* /home/新用戶名/),默認情況下,/etc/skel 目錄下的所有文件都是隱藏文件,通過修改添加、刪除/etc/skel 目錄下的文件,我們可爲新用戶提供統一的、標準的、初始化用戶環境。


/etc/skel 的企業場景作用:


1、可以把通知內容放到skel,讓登錄人員看


2、統一初始化新用戶的環境變量


3、面試題:出現“-bash-4.1$”問題原因及解決方法


原因:家目錄環境變量文件丟失。


解決方法:


su - a(a爲前面出現問題的用戶)


-bash-4.1$ cp /etc/skel/.bash* .


-bash-4.1$ logout


su -


su - a(a爲前面出現問題的用戶)


/etc/login.defs配置文件


/etc/login.defs文件是用來定義創建用戶時需要的一些用戶的配置信息。例如創建用戶時,是否需要家目錄,UID和GID的範圍,用戶及密碼的有效期限等等。


/etc/default/useradd文件


/etc/default/useradd文件是在使用useradd添加用戶時的一個需要調用的默認配置文件,可以使用 user -D 參數 這樣的命令格式來修改文件裏面的內容。可以通過vi 命令直接編輯。


用戶密碼管理


1、密碼要複雜8位以上(字母數字特殊字符)


2、大的企業用戶和密碼統一管理(相當於活動目錄,openldap)


3、動態密碼:動態口令,第三方提供,或自己開發


用戶刪除管理


一般不能確認用戶相關目錄有沒有重要數據,就不能用-r。


1、vi /etc/passwd然後註釋掉用戶,觀察一個月,這樣出問題可以還原,相當於操作前備份。


2、把登錄shell改成/sbin/nologin。


3、openldap(類似活動目錄)賬號統一管理的,ldap庫裏幹掉用戶,所有服務器全部都沒了。


提示:修改刪除必須小心謹慎!


useradd參數


-c comenment 新賬號passwd的說明欄


-d home_dir  新賬號每次登入是所使用的home_dir。預設值爲default_home內login名稱,並當成登入時目錄名稱。


-e expire_date 賬號終止日期。日期格式爲MM/DD/YY。重點


-f inactive_days賬號過期幾日後永久停止權限。當值爲0時賬號則被立即停用。當值爲-1時則關閉此功能。


-g initial_group group名稱或以數字來做爲用戶登入起始用戶組。用戶組名須爲系統現有存在的名稱。用戶組數字也須爲系統現有存在的名稱。用戶組數字也須爲系統現有存在的用戶組。預設數字爲1.


-G group,[...]  定義此用戶爲不同groups的成員。每個用戶組使用“,”分隔。用戶組名同-g選項的限制。默認值爲用戶的起始用戶組。重點


-m  用戶目錄如不存在則自動建立。如使用-k選項,skeleton——dir內的檔案將複製至用戶目錄下,然而在/etc/skel目錄下的檔案也會複製過去取代。任何在skeleton_dir /etc/skel的目錄也相同會在用戶目錄下意義建立。The-k 同-m不建立目錄以及不復制任何檔案爲預設值。


-M  不建立用戶家目錄,優先於/etc/login.defs文件的設定。一般創建虛擬用戶時不建立家目錄,部署服務時需要創建虛擬用戶。重點


-n  默認情況用戶的用戶組與用戶的名稱會相同。如果命令加了-n參數,就不會生成和用戶同名的用戶組了。


-r  此參數是用來建立系統賬號。系統賬號的UID會比定義在系統檔上/etc/login.defs.的UID_MIN來的小。注意useradd此用法所建立的賬號不會建立用戶家目錄,也不會在乎記錄在/etc/login,defs.的定義值。如果你想要擁有用戶家目錄須額外指定-m參數來建立系統賬號。這是Red HAT額外增設的選項。


-s shell  用戶登入後使用的shell名稱。默認值爲不填寫,這樣系統會幫你指定預設的登入shell。


-u uid  用戶的ID值。這個值必須是唯一的,除非用-o選項。數字不可爲負值。


passwd 參數


-f , --force force operation #強制操作;僅root權限才能操作


-x,--maximum=DAYS #兩次密碼修改的最大天數,後面接數字;僅root權限操作


-n,--minimum=DAYS #兩次密碼修改的最小天數,後面接數字;僅root權限操作


-w,--warning=DAYS #在距多少天體系用戶修改密碼;僅root權限才能操作


-i,--inactive=DAYS #在密碼過期後多少天,用戶被禁掉;僅root權限才能操作


chage參數


-d,--lastday 最近日期 #將最近一次密碼設置時間設爲“最近日期”。


-E,--expiredate 過期日期 #將賬戶過期時間設爲“過期日期”,日期寫法:MM/DD/YY。


-h,--help #顯示此幫助信息並退出


-i,-inactive 失效密碼 #在密碼過期後多少天,用戶被禁掉;僅root權限才能操作


-l,--list #顯示賬戶年齡信息


-m,-mindays 最小天數 #將兩次改變密碼之間相距的最小天數設爲“最小天數”


-M,--maxdays 最大天數 #將兩次改變密碼之間相距的最大天數設爲“最大天數”


-W,warndays 警告天數 #將過期警告天數設爲“警告天數”


usermod參數


-c comment #增加用戶賬號/etc/passwd中的註釋說明欄(第五欄)。-c參數功能也可使用功能chfn


命令來修改,當然也可以手工修改/etc/passwd文件來實現。


-d home_dir #更新用戶新的家目錄,如果給定-m選項,用戶舊的家目錄會搬到新的家目錄去,


如舊的家目錄不存在則創建新的。


-e expire_date #加上用戶賬戶停止日期。日期格式:MM/DD/YY。


-f inactive_days #賬號過期幾日後永久停權。當值爲0時賬號則立即被停權。當值爲-1時則關閉此功能,預 設值爲-1.


-g initial_group #更新用戶新的起始登入用戶組。用戶組名須已存在。用戶組ID必須參照既有的用戶組。用 戶組ID預設值爲1.


-G group ,[...] #定義用戶爲一堆groups的成員。每個用戶使用“,”隔開。用戶在名同-g選項的限制。


-l login_name 變更用戶login時名稱爲login_name,其餘信息不變。


-s shell 指定新用戶登入shell。如此欄留白,系統將選用系統預設shell。這個-s參數功能也可以使用chsh命令來修改。當然也可以手工修改/etc/passwd文件來實現。


-u uid 指定用戶的ID值。這個值必須是唯一的,除非用-o選項。數字不可爲負值。


-L 凍結用戶的密碼,使之無法登錄,實際就是間接修改/etc/shadow的密碼欄。在密碼欄的開頭加上“!”號,即表示凍結。這個功能和usermod -e , chage -E或passwd -l等命令有類似功效,就是讓用戶無法正常登錄。


-U 取消凍結用戶的密碼,使之恢復登錄,實際同樣是修改/etc/shadow的密碼欄,在密碼欄的開頭取消“!”號,即表示恢復。


用戶查詢相關命令


id, finger, users, w, who, last, lastlog, groups


用戶及日誌查詢:w who


查看用戶登錄信息:當前last  歷史lastlog


查看用戶所屬:全部id 組groups主屬和附加組users


su 切換用戶


-,-l,-login make the shell a login shell 是一個shell成爲登錄的shell,如執行su - oldboy時,表示該用戶想改變身份爲oldboy,並且使用oldboy用戶的環境配置,如:/home/oldboy/.bash_profile等。


-c,--command=COMMAND pass a single COMMAND to the with -c


切換到一個shell下,執行一個命令,然後退出所切換的用戶環境。


-m, --preserve-environment do not reset environment variables,same as -p


切換用戶時,不重置用戶環境變量,-p的功能同-m,這個參數爲su的默認值, 一般較少使用


不加“-”的話,家目錄仍是root。


su - oldboy -c pwd 切到oldboy下執行pwd命令  切到用戶下執行命令,但當前用戶不變


由su和su -的區別談學習linux運維方法  http://oldboy.blog.51cto.com/2561410/1053606 


env|grep -i 用戶名 查看用戶環境變量


sudo尚方寶劍


su切換用戶方便,但有一些致命的缺點:


1)普通用戶必須知道root密碼纔可以切換到root,這樣root密碼就泄露了。相當於把“刀把”交給了別人。


2)使用su命令切換身份,無法對切換後的身份做精細的控制,拿到別人超級權限的人可以爲所欲爲。甚至可以更改root密碼,讓真正的管理員無法擁有root權限。


爲了既不泄露密碼,又讓普通用戶擁有一定的超級權限,推出sudo命令。


通過sudo命令,我們可以把某些超級用戶權限分類,有針對性授權給指定的普通用戶,並且普通用戶不需要知道root密碼就可以得到root權限。


sudo的配置文件:/etc/sudoers


sudo命令執行的大概流程:


a)當用sudo執行命令時,系統首先會查找/var/run/sudo/%HOME(新用戶會先生成此目錄)目錄中是否有用戶時間戳文件,如果時間戳文件過期,則提示用戶輸入自身密碼(注意:這裏需要輸入當前執行命令用戶的密碼,不是root後其他要切換的用戶的密碼)。


b)當密碼驗證成功後,系統查找/etc/sudoers配置文件,判斷用戶是否有執行相應sudo命令權限。


c)如果具備執行相應sudo權限,就會自動由當前用戶切到root(或其他指定切換到的用戶),然後以root(或其他指定的切換到的用戶)身份角色執行該命令。


d)執行完成後,又會自動的直接退回到當前用戶shell下(以root等身份執行任務)。


更改授權/etc/sudoers文件


1)執行visudo命令自動編輯/etc/sudoers文件(推薦)


visudo 在98行,爲普通用戶提權


sudo命令配置時環境配置一定是全路徑。


2)直接修改/etc/sudoers文件方法(不推薦)


echo "oldboy  ALL=(ALL)  ALL" >> /etc/sudoers


visudo -c #檢查語法


sudo參數


-l  列出用戶在主機上可用和被禁止的命令;配置好sudo授權規則後,可用此參數查看授權情況


-v  驗證用戶時間戳;可跟蹤最新時間戳


-u  指定以某個用戶身份執行特定命令


-k  刪除時間戳,下一個sudo命令要求提供密碼


對用戶組進行授權:


echo "%oldboy  ALL=(ALL)  ALL" >> /etc/sudoers  #配置oldboy組的授權,也可以通過visudo來更改。


tail -l /etc/sudoers  #查看授權配置


visudo -c  #檢查語法


ls -l /etc/sudoers  #檢查/etc/sudoers權限


usermod -g oldboy ett  #更改ett屬於oldboy組


id ett  #查看更改結果


別名類型(Alias_Type):


1)Host_Alias 定義主機別名


1.在生產場景中,一般不需要設置主機別名,在定義授權規則時可以通過ALL來匹配所有主機。


2.注意定義規範(Host_Alias  FILESERVERS  =  fs1,  fs2 #等號兩邊有空格逗號後面有空格),雖然不是必須的,但我們還是要求能夠按照系統的標準來配置,這樣可以避免意外的問題發生。


3.以上Host_Aliases內容截取自/etc/sudoers文件,並取消了註釋。


4.其實就是邏輯上的主機組,當多臺服務器共享一個/etc/sudoers時候會用到主機別名。


5.%oldboy  ALL=(ALL)  ALL #第一個ALL就是主機別名的應用位置。


6.%oldboy  FILESERVERS=(ALL)  ALL  #相當於裏面有兩臺機器


2)User_Alias定義用戶別名


1.設置用戶別名也不是必須的,可以通過%groupname的方式來作爲成員。


2.#User_Alias ADMINS = jsmith, mikem, %groupname


給ADMINS授權相當於同時授權給jsmith, mikem, %groupname


oldboy  ALL=(ALL)  ALL #oldboy就是主機別名的應用位置。


3)Runas_Alias 定義runas身份別名


1.這個別名指定的是“用戶身份”,即sudo允許切換到的用戶身份。


2.Runas_Alias定義的是用戶可以執行sudo切換身份到Runas_Alias下包含的成員身份。


3.實際語法 Runas_Alias OP = root


4.oldboy  ALL=(ALL)  ALL #小括號中的第二個ALL的位置就是Runas_Alias別名的應用位置。


4)Cmnd_Alias定義命令別名


1.命令別名就是設置可以執行哪些命令。


2.oldboy  ALL=(ALL)  ALL #第三個ALL的位置就是命令別名的位置。


3.所有的命令別名下的成員必須是文件或目錄的絕對路徑。


4.命令別名超過一行,可用“\”換行。


5.在定義時,可以使用正則表達式,如/usr/bin/passwd [A-Za-z]*。


sudo授權,別名和具體授權配置的關係


用戶和組


主機


可以切換的用戶角色


命令


root


ALL=


(ALL)


ALL


User_Alias ADMINS = jsmith, mikem,  %groupname


Host_Alias FILESERVERS  =  fs1,  fs2


Runas_Alias OP = root


Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig


什麼情況下使用上述別名?


工作中一般有多個系統用戶,需要分類,分層次管理用戶時。


別名應用


Linux系統安全最小原則


最小化原則對Linux系統安全來說極其重要:即多一事不如少一事。


具體包括:


▲安裝Linux系統最小化,即選包最小化,yum安裝軟件包也要最小化,無用的包不裝


▲開機自啓動服務最小化,即無用的服務不開啓。


▲操作命令最小化。例:能“rm -f a.txt”就不用“rm -fr a.txt”。


▲登錄Linux用戶最小化。平時沒有特殊需求就不登錄root,用普通用戶登錄即可。


▲普通用戶授權最小化,即只給用戶必須管理系統的命令,不能啥都可以幹。


▲Linux系統文件及目錄的權限設置最小化,禁止隨意創建、更改、刪除文件。


配置sudo命令用戶行爲日誌審計


說明:所謂sudo命令日誌審計,並不記錄普通用戶的普通操作。而是記錄執行sudo命令的用戶操作。


項目實戰:簡歷中的經驗說明


服務器日誌審計項目提出與實施


1.權限方案實施後,權限得到了細化控制,接下來進一步實施對所有用戶日誌記錄方案。


2.通過sudo和syslog(rsyslog)配合實現對所有用戶進行日誌審計並將記錄集中管理(發送到中心日誌服務器)。


3.實施後讓所有運維和開發的所有執行的sudo管理命令都有記錄可查,杜絕了內部人員的操作安全隱患。


生產環境企業日誌審計解決方案:


所謂日誌審計,就是所有系統及相關用戶行爲的信息,並且可以自動分析、處理、展示(包括文本或錄像)


1)通過環境變量命令及rsyslog服務進行全部日誌審計(信息太大)。


2)sudo配合rsyslog服務,進行日誌審計(審計信息較少)


3)在bash解釋器程序裏嵌入一個監視器,讓所有被審計的系統用戶使用修改過的增加了監視器的特殊bash程序作爲解釋程序。


4)齊治的堡壘機(齊治科技堡壘主機系統):商業產品


https://wenku.baidu.com/view/76b3b3e6f18583d0486459 (齊治科技堡壘主機系統技術白皮書)


5)Python開發的開源產品


開源跳板機(堡壘機)Jumpserver部署詳解


http://blog.51cto.com/zt/658


開源堡壘機CrazyEye


http://3060674.blog.51cto.com/3050674/1700814


sudo日誌審計


1)安裝sudo命令,syslog服務(Centoa6.4爲rsyslog服務)


2)配置/var/sudoers(其實只要一行就可搞定sudo審計)


下面3,4可以不執行,直接切換到普通操作,然後查看/var/log/sudo.log有無記錄。


3)配置文件系統日誌/etc/rsyslog.conf(可以不配)


4)重啓rsyslog內核日誌記錄器


日誌集中管理


1)rsync+inotify或定時任務+rsync,推到日誌管理器上,10.0.0.7_2013.0303.sudo.log


2)rsylog服務來處理。


echo "10.0.2.164 logserver" >> /etc/hosts #日誌服務器地址


echo "*.info  @logserver" >> /etc/syslog.conf #時候所有日誌推送


3)日誌收集解決方案scribe,Flume,stom,logstash ELK等等。

/etc/default/useradd文件

/etc/default/useradd文件是在使用useradd添加用戶時的一個需要調用的默認配置文件,可以使用 user -D 參數 這樣的命令格式來修改文件裏面的內容。可以通過vi 命令直接編輯。

用戶密碼管理

1、密碼要複雜8位以上(字母數字特殊字符)

2、大的企業用戶和密碼統一管理(相當於活動目錄,openldap)

3、動態密碼:動態口令,第三方提供,或自己開發

用戶刪除管理

一般不能確認用戶相關目錄有沒有重要數據,就不能用-r。

1、vi /etc/passwd然後註釋掉用戶,觀察一個月,這樣出問題可以還原,相當於操作前備份。

2、把登錄shell改成/sbin/nologin。

3、openldap(類似活動目錄)賬號統一管理的,ldap庫裏幹掉用戶,所有服務器全部都沒了。

提示:修改刪除必須小心謹慎!

useradd參數

-c comenment 新賬號passwd的說明欄

-d home_dir  新賬號每次登入是所使用的home_dir。預設值爲default_home內login名稱,並當成登入時目錄名稱。

-e expire_date 賬號終止日期。日期格式爲MM/DD/YY。重點

-f inactive_days賬號過期幾日後永久停止權限。當值爲0時賬號則被立即停用。當值爲-1時則關閉此功能。

-g initial_group group名稱或以數字來做爲用戶登入起始用戶組。用戶組名須爲系統現有存在的名稱。用戶組數字也須爲系統現有存在的名稱。用戶組數字也須爲系統現有存在的用戶組。預設數字爲1.

-G group,[...]  定義此用戶爲不同groups的成員。每個用戶組使用“,”分隔。用戶組名同-g選項的限制。默認值爲用戶的起始用戶組。重點

-m  用戶目錄如不存在則自動建立。如使用-k選項,skeleton——dir內的檔案將複製至用戶目錄下,然而在/etc/skel目錄下的檔案也會複製過去取代。任何在skeleton_dir /etc/skel的目錄也相同會在用戶目錄下意義建立。The-k 同-m不建立目錄以及不復制任何檔案爲預設值。

-M  不建立用戶家目錄,優先於/etc/login.defs文件的設定。一般創建虛擬用戶時不建立家目錄,部署服務時需要創建虛擬用戶。重點

-n  默認情況用戶的用戶組與用戶的名稱會相同。如果命令加了-n參數,就不會生成和用戶同名的用戶組了。

-r  此參數是用來建立系統賬號。系統賬號的UID會比定義在系統檔上/etc/login.defs.的UID_MIN來的小。注意useradd此用法所建立的賬號不會建立用戶家目錄,也不會在乎記錄在/etc/login,defs.的定義值。如果你想要擁有用戶家目錄須額外指定-m參數來建立系統賬號。這是Red HAT額外增設的選項。

-s shell  用戶登入後使用的shell名稱。默認值爲不填寫,這樣系統會幫你指定預設的登入shell。

-u uid  用戶的ID值。這個值必須是唯一的,除非用-o選項。數字不可爲負值。

passwd 參數

-f , --force force operation #強制操作;僅root權限才能操作

-x,--maximum=DAYS #兩次密碼修改的最大天數,後面接數字;僅root權限操作

-n,--minimum=DAYS #兩次密碼修改的最小天數,後面接數字;僅root權限操作

-w,--warning=DAYS #在距多少天體系用戶修改密碼;僅root權限才能操作

-i,--inactive=DAYS #在密碼過期後多少天,用戶被禁掉;僅root權限才能操作

chage參數

-d,--lastday 最近日期 #將最近一次密碼設置時間設爲“最近日期”。

-E,--expiredate 過期日期 #將賬戶過期時間設爲“過期日期”,日期寫法:MM/DD/YY。

-h,--help #顯示此幫助信息並退出

-i,-inactive 失效密碼 #在密碼過期後多少天,用戶被禁掉;僅root權限才能操作

-l,--list #顯示賬戶年齡信息

-m,-mindays 最小天數 #將兩次改變密碼之間相距的最小天數設爲“最小天數”

-M,--maxdays 最大天數 #將兩次改變密碼之間相距的最大天數設爲“最大天數”

-W,warndays 警告天數 #將過期警告天數設爲“警告天數”

usermod參數

-c comment #增加用戶賬號/etc/passwd中的註釋說明欄(第五欄)。-c參數功能也可使用功能chfn

命令來修改,當然也可以手工修改/etc/passwd文件來實現。

-d home_dir #更新用戶新的家目錄,如果給定-m選項,用戶舊的家目錄會搬到新的家目錄去,

如舊的家目錄不存在則創建新的。

-e expire_date #加上用戶賬戶停止日期。日期格式:MM/DD/YY。

-f inactive_days #賬號過期幾日後永久停權。當值爲0時賬號則立即被停權。當值爲-1時則關閉此功能,預 設值爲-1.

-g initial_group #更新用戶新的起始登入用戶組。用戶組名須已存在。用戶組ID必須參照既有的用戶組。用 戶組ID預設值爲1.

-G group ,[...] #定義用戶爲一堆groups的成員。每個用戶使用“,”隔開。用戶在名同-g選項的限制。

-l login_name 變更用戶login時名稱爲login_name,其餘信息不變。

-s shell 指定新用戶登入shell。如此欄留白,系統將選用系統預設shell。這個-s參數功能也可以使用chsh命令來修改。當然也可以手工修改/etc/passwd文件來實現。

-u uid 指定用戶的ID值。這個值必須是唯一的,除非用-o選項。數字不可爲負值。

-L 凍結用戶的密碼,使之無法登錄,實際就是間接修改/etc/shadow的密碼欄。在密碼欄的開頭加上“!”號,即表示凍結。這個功能和usermod -e , chage -E或passwd -l等命令有類似功效,就是讓用戶無法正常登錄。

-U 取消凍結用戶的密碼,使之恢復登錄,實際同樣是修改/etc/shadow的密碼欄,在密碼欄的開頭取消“!”號,即表示恢復。

用戶查詢相關命令

id, finger, users, w, who, last, lastlog, groups

用戶及日誌查詢:w who

查看用戶登錄信息:當前last  歷史lastlog

查看用戶所屬:全部id 組groups主屬和附加組users

su 切換用戶

-,-l,-login make the shell a login shell 是一個shell成爲登錄的shell,如執行su - oldboy時,表示該用戶想改變身份爲oldboy,並且使用oldboy用戶的環境配置,如:/home/oldboy/.bash_profile等。

-c,--command=COMMAND pass a single COMMAND to the with -c

切換到一個shell下,執行一個命令,然後退出所切換的用戶環境。

-m, --preserve-environment do not reset environment variables,same as -p

切換用戶時,不重置用戶環境變量,-p的功能同-m,這個參數爲su的默認值, 一般較少使用

不加“-”的話,家目錄仍是root。

su - oldboy -c pwd 切到oldboy下執行pwd命令  切到用戶下執行命令,但當前用戶不變

由su和su -的區別談學習linux運維方法  http://oldboy.blog.51cto.com/2561410/1053606 

env|grep -i 用戶名 查看用戶環境變量

sudo尚方寶劍

su切換用戶方便,但有一些致命的缺點:

1)普通用戶必須知道root密碼纔可以切換到root,這樣root密碼就泄露了。相當於把“刀把”交給了別人。

2)使用su命令切換身份,無法對切換後的身份做精細的控制,拿到別人超級權限的人可以爲所欲爲。甚至可以更改root密碼,讓真正的管理員無法擁有root權限。

爲了既不泄露密碼,又讓普通用戶擁有一定的超級權限,推出sudo命令。

通過sudo命令,我們可以把某些超級用戶權限分類,有針對性授權給指定的普通用戶,並且普通用戶不需要知道root密碼就可以得到root權限。

sudo的配置文件:/etc/sudoers

sudo命令執行的大概流程:

a)當用sudo執行命令時,系統首先會查找/var/run/sudo/%HOME(新用戶會先生成此目錄)目錄中是否有用戶時間戳文件,如果時間戳文件過期,則提示用戶輸入自身密碼(注意:這裏需要輸入當前執行命令用戶的密碼,不是root後其他要切換的用戶的密碼)。

b)當密碼驗證成功後,系統查找/etc/sudoers配置文件,判斷用戶是否有執行相應sudo命令權限。

c)如果具備執行相應sudo權限,就會自動由當前用戶切到root(或其他指定切換到的用戶),然後以root(或其他指定的切換到的用戶)身份角色執行該命令。

d)執行完成後,又會自動的直接退回到當前用戶shell下(以root等身份執行任務)。

更改授權/etc/sudoers文件

1)執行visudo命令自動編輯/etc/sudoers文件(推薦)

visudo 在98行,爲普通用戶提權

sudo命令配置時環境配置一定是全路徑。

2)直接修改/etc/sudoers文件方法(不推薦)

echo "oldboy  ALL=(ALL)  ALL" >> /etc/sudoers

visudo -c #檢查語法

sudo參數

-l  列出用戶在主機上可用和被禁止的命令;配置好sudo授權規則後,可用此參數查看授權情況

-v  驗證用戶時間戳;可跟蹤最新時間戳

-u  指定以某個用戶身份執行特定命令

-k  刪除時間戳,下一個sudo命令要求提供密碼

對用戶組進行授權:

echo "%oldboy  ALL=(ALL)  ALL" >> /etc/sudoers  #配置oldboy組的授權,也可以通過visudo來更改。

tail -l /etc/sudoers  #查看授權配置

visudo -c  #檢查語法

ls -l /etc/sudoers  #檢查/etc/sudoers權限

usermod -g oldboy ett  #更改ett屬於oldboy組

id ett  #查看更改結果

別名類型(Alias_Type):

1)Host_Alias 定義主機別名

1.在生產場景中,一般不需要設置主機別名,在定義授權規則時可以通過ALL來匹配所有主機。

2.注意定義規範(Host_Alias  FILESERVERS  =  fs1,  fs2 #等號兩邊有空格逗號後面有空格),雖然不是必須的,但我們還是要求能夠按照系統的標準來配置,這樣可以避免意外的問題發生。

3.以上Host_Aliases內容截取自/etc/sudoers文件,並取消了註釋。

4.其實就是邏輯上的主機組,當多臺服務器共享一個/etc/sudoers時候會用到主機別名。

5.%oldboy  ALL=(ALL)  ALL #第一個ALL就是主機別名的應用位置。

6.%oldboy  FILESERVERS=(ALL)  ALL  #相當於裏面有兩臺機器

2)User_Alias定義用戶別名

1.設置用戶別名也不是必須的,可以通過%groupname的方式來作爲成員。

2.#User_Alias ADMINS = jsmith, mikem, %groupname

給ADMINS授權相當於同時授權給jsmith, mikem, %groupname

oldboy  ALL=(ALL)  ALL #oldboy就是主機別名的應用位置。

3)Runas_Alias 定義runas身份別名

1.這個別名指定的是“用戶身份”,即sudo允許切換到的用戶身份。

2.Runas_Alias定義的是用戶可以執行sudo切換身份到Runas_Alias下包含的成員身份。

3.實際語法 Runas_Alias OP = root

4.oldboy  ALL=(ALL)  ALL #小括號中的第二個ALL的位置就是Runas_Alias別名的應用位置。

4)Cmnd_Alias定義命令別名

1.命令別名就是設置可以執行哪些命令。

2.oldboy  ALL=(ALL)  ALL #第三個ALL的位置就是命令別名的位置。

3.所有的命令別名下的成員必須是文件或目錄的絕對路徑。

4.命令別名超過一行,可用“\”換行。

5.在定義時,可以使用正則表達式,如/usr/bin/passwd [A-Za-z]*。

sudo授權,別名和具體授權配置的關係

用戶和組

主機

可以切換的用戶角色

命令

root

ALL=

(ALL)

ALL

User_Alias ADMINS = jsmith, mikem,  %groupname

Host_Alias FILESERVERS  =  fs1,  fs2

Runas_Alias OP = root

Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

什麼情況下使用上述別名?

工作中一般有多個系統用戶,需要分類,分層次管理用戶時。

別名應用

Linux系統安全最小原則

最小化原則對Linux系統安全來說極其重要:即多一事不如少一事。

具體包括:

▲安裝Linux系統最小化,即選包最小化,yum安裝軟件包也要最小化,無用的包不裝

▲開機自啓動服務最小化,即無用的服務不開啓。

▲操作命令最小化。例:能“rm -f a.txt”就不用“rm -fr a.txt”。

▲登錄Linux用戶最小化。平時沒有特殊需求就不登錄root,用普通用戶登錄即可。

▲普通用戶授權最小化,即只給用戶必須管理系統的命令,不能啥都可以幹。

▲Linux系統文件及目錄的權限設置最小化,禁止隨意創建、更改、刪除文件。

配置sudo命令用戶行爲日誌審計

說明:所謂sudo命令日誌審計,並不記錄普通用戶的普通操作。而是記錄執行sudo命令的用戶操作。

項目實戰:簡歷中的經驗說明

服務器日誌審計項目提出與實施

1.權限方案實施後,權限得到了細化控制,接下來進一步實施對所有用戶日誌記錄方案。

2.通過sudo和syslog(rsyslog)配合實現對所有用戶進行日誌審計並將記錄集中管理(發送到中心日誌服務器)。

3.實施後讓所有運維和開發的所有執行的sudo管理命令都有記錄可查,杜絕了內部人員的操作安全隱患。

生產環境企業日誌審計解決方案:

所謂日誌審計,就是所有系統及相關用戶行爲的信息,並且可以自動分析、處理、展示(包括文本或錄像)

1)通過環境變量命令及rsyslog服務進行全部日誌審計(信息太大)。

2)sudo配合rsyslog服務,進行日誌審計(審計信息較少)

3)在bash解釋器程序裏嵌入一個監視器,讓所有被審計的系統用戶使用修改過的增加了監視器的特殊bash程序作爲解釋程序。

4)齊治的堡壘機(齊治科技堡壘主機系統):商業產品

https://wenku.baidu.com/view/76b3b3e6f18583d0486459 (齊治科技堡壘主機系統技術白皮書)

5)Python開發的開源產品

開源跳板機(堡壘機)Jumpserver部署詳解

http://blog.51cto.com/zt/658

開源堡壘機CrazyEye

http://3060674.blog.51cto.com/3050674/1700814

sudo日誌審計

1)安裝sudo命令,syslog服務(Centoa6.4爲rsyslog服務)

2)配置/var/sudoers(其實只要一行就可搞定sudo審計)

下面3,4可以不執行,直接切換到普通操作,然後查看/var/log/sudo.log有無記錄。

3)配置文件系統日誌/etc/rsyslog.conf(可以不配)

4)重啓rsyslog內核日誌記錄器

日誌集中管理

1)rsync+inotify或定時任務+rsync,推到日誌管理器上,10.0.0.7_2013.0303.sudo.log

2)rsylog服務來處理。

echo "10.0.2.164 logserver" >> /etc/hosts #日誌服務器地址

echo "*.info  @logserver" >> /etc/syslog.conf #時候所有日誌推送

3)日誌收集解決方案scribe,Flume,stom,logstash ELK

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章