系統安全加固——Linux操作系統(一)


最近備戰國網信通調考信息安全專業,參考系統安全加固手冊,練習加固命令。

操作系統選用CentOS 7,考慮到可以隨時進行“破壞性試驗”,所以選擇安裝在VM虛擬機中,可以使用快照隨時回退錯誤操作。 

首先,為了熟悉使用CLI,設置開機不進入圖形界面。之前版本是修改 /etc/inittab 文件,到CentOS 7改為如下命令:

systemctl set-default multi-user.target    //設置成命令模式
systemctl set-default graphical.target     //設置成圖形模式

事實上,系統進行了如下操作:

好!進入系統,不要忘了首先做好初始快照哦。


一、賬號管理、認證授權

第一部分主要是對用戶賬號和權限進行加固,主要用到的命令主要是一些文件查看與編輯類的命令。

1、與賬號、用戶組、密碼等有關的文件

這些文件包括:

/etc/passwd  

/etc/shadow

/etc/group

簡單說明一下:

/etc/passwd  記錄了系統中各用戶的一些基本屬性,root可寫,所有用戶可讀,查看可見如下信息:

用“:”隔開的各部分含義為:  

用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄Shell

其中口令由於安全考慮,被記錄在了 /etc/shadow 文件中,所以這里統一顯示為x。

/etc/shadow 負責所有用戶的密碼:

與passwd文件相似,各字段也被“:”隔開,其含義為:  

登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標志(系統保留)

這里有幾點需要說明:

(1)“口令”字段存放的是加密后的用戶口令字,如果為空,則對應用戶沒有口令,登錄時不需要口令; 星號代表帳號被鎖定,有些系統為NP; 雙嘆號表示這個密碼已經過期了。   $6$開頭的,表明是用SHA-512加密的   $1$ 表明是用MD5加密的   $2$ 是用Blowfish加密的   $5$ 是用SHA-256加密的。 (2)“最后一次修改時間”表示的是從某個時刻起,到用戶最后一次修改口令時的天數。時間起點對不同的系統可能不一樣。例如1970年1月1日。(后面所有時間均以此時間為起點) (4)“最小時間間隔”指的是兩次修改口令之間所需的最小天數。 (5)“最大時間間隔”指的是口令保持有效的最大天數。 (6)“警告時間”字段表示的是從系統開始警告用戶到用戶密碼正式失效之間的天數。 (7)“不活動時間”表示的是用戶沒有登錄活動但賬號仍能保持有效的最大天數。 (8)“失效時間”字段給出的是一個絕對的天數,如果使用了這個字段,那么就給出相應賬號的生存期。

/etc/group 負責用戶組屬性:

這個文件比較簡單:  組名:口令:組標識號:組內用戶列表

其中,組內用戶列表中,用戶間用“,”隔開。

如果想要查看一個用戶的用戶組信息,可以使用

id [user]

來查看:

OK,文件說明到此結束,讓我們來干些實際的吧~

2、鎖定無關賬戶

在確認某些賬戶可以鎖定的情況下,可以使用

passwd -l [user]

其原理是在/etc/shadow中用戶的密碼字段前加入“!!”(因系統而異,有些系統是加入“*LK*”),使得用戶密碼改變,無法登陸

這還真是簡單粗暴,不過這也意味着,只要隨意修改shadow文件密碼字段,即可實現賬號鎖定。

對應的解鎖命令為

passwd -u [user]

3、禁止超級管理員賬戶遠程登錄

在進行這方面工作之前,首先要知道一個重要內容 Linux-PAM(Linux可插拔認證模塊)。

用戶可以通過修改配置文件/etc/pam.conf(RedHat等系統還支持另外一種配置方式,即通過配置目錄/etc/pam.d/)對認證機制進行修改,而個模塊的具體配置在/etc/security下。

具體相關知識由於篇幅,可以自行百度,(推薦一篇博客,很實用)這里只對本小節內容進行說明。

1 PAM工作機制 
/lib/security 目錄下的每一個認證模塊都會返回pass或者fail結果,部分程序使用/etc/security目錄下的設置文件決定認證方式。
應用程序調用PAM模塊認證的配置,存放於/etc/pam.d,文件名與應用程序名對應,文件中的每一行都會返回一個成驗證功還是失敗的控制標志,以決定用戶是否擁有訪問權限。 2 PAM驗證類型 * auth 驗證使用者身份,提示輸入賬號和密碼 * account 基於用戶表、時間或者密碼有效期來決定是否允許訪問 * password 禁止用戶反復嘗試登錄,在變更密碼時進行密碼復雜性控制 * session 進行日志記錄,或者限制用戶登錄的次數 libpam函數庫會可以調用以上一種服務或者全部。 3 PAM驗證控制類型(Control Values) 驗證控制類型也可以稱做Control Flags,用於PAM驗證類型的返回結果。 * required 驗證失敗時仍然繼續,但返回Fail(用戶不會知道哪里失敗) * requisite 驗證失敗則立即結束整個驗證過程,返回Fail * sufficient 驗證成功則立即返回,不再繼續,否則忽略結果並繼續 * optional 無論驗證結果如何,均不會影響(通常用於session類型

 

打開/etc/pam.d/login文件,可以看到如下內容:

其中

auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so

auth required pam_securetty.so

處於未注釋狀態,再查看/etc/securetty中沒有pts/xx為一個十進制整數)或已被注釋掉

確保root不能通過telnet連接主機。

再檢查SSH:

 /etc/ssh/sshd_config

檢查下列行設置是否為no並且該行未被注釋:PermitRootLogin

然后重新啟動ssh服務:

service sshd stop
service sshd start

4、修改用戶組

使用usermod -g [group/GID] [username] 修改用戶組。沒什么好說的,上圖:

5、口令策略

(1)口令復雜度及時效

 修改 /etc/login.defs,文件注釋很清楚,可以自己修改:

(2)設定密碼歷史,不能重復使用近N次內已使用的口令(方法來自網絡)

對於Redhat系列的Linux,查看/etc/pam.d/system-auth

對於Debian系列的Linux,查看/etc/pam.d/common-password

在如圖所示的行后,加入remember=N

但我目前有一個疑問,remember=N這個語句的PAM驗證控制類型是否應該是sufficient而不是其他類型。但求大神指導!

(3)設定連續認證失敗次數超過N次鎖定該賬號

依然是修改/etc/pam.d/login文件的第二行,加入如下命令

auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10

6、設定文件目錄權限

在用戶登錄中,passwd、shadow、group文件非常重要,需要嚴格管理文件權限

/etc/passwd 必須所有用戶都可讀,root用戶可寫 –rw-rr— 權限值為644

/etc/shadow 只有root可讀 –r--------  權限值為400

/etc/group 必須所有用戶都可讀,root用戶可寫 –rw-rr— 權限值為644

使用如下命令修改權限:

chmod 644 /etc/passwd
chmod 400 /etc/shadow
chmod 644 /etc/group

此外還有一個重要的參數 umask ,其值確定了新建目錄文件的默認權限,這里先給出我們推薦的值 027

在權限設定中 r=4;w=2;x=1 但對於umask來說,umask=777(666)-權限值,即權限值=777(666)-umask。例如,umask=002,所對應的文件和目錄創建缺省權限分別為6 6 4(666-2)和7 7 5(777-2)。

為什么是這樣的呢?對於文件來說,這一數字的最大值分別是6。系統不允許你在創建一個文本文件時就賦予它執行權限,必須在創建后用chmod命令增加這一權限。目錄則允許設置執行權限,這樣針對目錄來說,umask中各個數字最大可以到7。

如果使用推薦值umask=027,則對於文件來說,其權限為640,即-rw-r----- ,對目錄來說,其權限為750,即-rwxr-x---

7、檢查是否存在除root之外UID為0的用戶

使用如下代碼,對passwd文件進行檢索:

awk -F ':' '($3==0){print $1)' /etc/passwd

將檢索出來的不是root的用戶使用userdel命令全部刪除。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM