Ubuntu基線指導手冊
1. 身份鑒別策略組檢測
准備:
安裝一個PAM模塊來啟用cracklib支持,這可以提供額外的密碼檢查功能。
在Debian,Ubuntu或者Linux Mint使用命令:
sudo apt-get install libpam-cracklib
這個模塊在CentOS,Fedora或者RHEL默認安裝了。但是在Ubuntu這些系統上就必需安裝。
1.1. 口令周期檢測
1.1.1. 最長使用周期小於等於90天(非強制)
sudo vim /etc/login.defs
PASS_MAX_DAYS 90
PASS_MAX_DAYS 99999 代表永不過期
1.1.2. 查看密碼期限:最短更換周期大於等於2天
PASS_MIN_DAYS 2
檢查命令:
chage -l root
1.1.3. 距失效提示天數大於等於5天
PASS_WARN_AGE 5
1.2. 密碼復雜度檢測
1.2.1. 密碼復雜性要求
pam_cracklib.so支持的部分選項如下:
retry=N:定義登錄/修改密碼失敗時,可以重試的次數
minlen=N:新密碼的最小長度
dcredit=N:當N>0時表示新密碼中數字出現的最多次數;當N<0時表示新密碼中數字出現最少次數;
ucredit=N: 當N>0時表示新密碼中大寫字母出現的最多次數;當N<0時表示新密碼中大寫字母出現最少次數;
lcredit=N: 當N>0時表示新密碼中小寫字母出現的最多次數;當N<0時表示新密碼中小寫字母出現最少次數;
ocredit=N:當N>0時表示新密碼中特殊字符出現的最多次數;當N<0時表示新密碼中特殊字符出現最少次數;
maxrepeat=N:拒絕包含多於N個相同連續字符的密碼。 默認值為0表示禁用此檢查
maxsequence=N:拒絕包含長於N的單調字符序列的密碼。默認值為0表示禁用此檢查。實例是'12345'或'fedcb'。除非序列只是密碼的一小部分,否則大多數此類密碼都不會通過簡單檢查。
enforce_for_root: 如果用戶更改密碼是root,則模塊將在失敗檢查時返回錯誤。默認情況下,此選項處於關閉狀態,只打印有關失敗檢查的消息,但root仍可以更改密碼。不要求root用戶輸入舊密碼,因此不會執行比較舊密碼和新密碼的檢查
方法:
vim /etc/pam.d/common-password
password requisite pam_cracklib.so retry=3 minlen=10 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1
在pam_cracklib.so 后添加minlen=10 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1
參數含義:密碼長度最小為10位,數字出現的最少次數為1次,大寫字母出現最少1次,小寫字母出現最少1次,特殊字符出現最少1次
1.3. 登錄鎖定檢測
1.3.1. 普通用戶觸發鎖定次數小於等於5
1.3.2. 普通用戶鎖定時間大於等於5分鍾
1.3.3. Root用戶觸發鎖定次數小於等於5
1.3.4. Root用戶鎖定時間大於等於5分鍾具體安裝配置:
1、修改如下配置文件:(不建議修改)
這個只是限制了用戶從tty登錄,而沒有限制遠程登錄,如果想限制遠程登錄,需要改sshd文件
vim /etc/pam.d/login
在第二行添加
auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root=5 root_unlock_time=300
此處使用的是 pam_tally2 模塊,如果不支持 pam_tally2 可以使用 pam_tally 模塊。另外,不同的pam版本,設置可能有所不同,具體使用方法,可以參照相關模塊的使用規則。
注意
在第二行,添加內容,一定要寫在前面,如果寫在后面,雖然用戶被鎖定,但是只要用戶輸入正確的密碼,還是可以登錄的!
這個只是限制了用戶從tty登錄,而沒有限制遠程登錄,如果想限制遠程登錄,需要改sshd文件
2、修改sshd文件(建議修改)
vim /etc/pam.d/sshd
繼續在第二行上添加
auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root=5 root_unlock_time=300
查看用戶登錄失敗的次數:
sudo pam_tally2 --user
結果
ubuntu@VM-0-5-ubuntu:~$ sudo pam_tally2 --user
Login Failures Latest failure From
root 3 09/29/19 15:53:24 45.119.212.105
ubuntu 9 09/29/19 15:46:58 223.107.140.84
解鎖指定用戶:
sudo pam_tally2 -r -u admin
admin@VM-0-5-ubuntu:~$ sudo pam_tally2 -r -u admin
Login Failures Latest failure From
admin 15 09/29/19 15:58:49 223.107.140.84
ps:這個遠程ssh的時候,輸入密碼錯誤超過三次但是沒有提示,但是只要超過設定的值,輸入正確的密碼也是登陸不了的!,還是要等到設定的時間在重新嘗試輸入正確密碼進行登錄認證
1.4. Root權限用戶
1.4.1. root權限用戶檢測 (非強制)
檢查配置文件cat /etc/passwd,不能包含用戶標識號為0,除root用戶外。
以第一行為例,從左至右,分別表示:
帳號名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄shell
1.5. Wheel組(非強制)
1.5.1. wheel組檢測 (非強制)
命令:cat /etc/group
檢查文件/etc/group中,wheel后面是否有用戶名,如果有,將其刪除。
如下圖中示例,viewer用戶加入了wheel組中,因此viewer用戶擁有了root的部分功能和權限,因此需要將viewer刪除。
Wheel組概念
Wheel組是Unix系統一個遺留物。當服務器需要做比日常例行維護更高級的工作的時候,就經常需要用到root權限了。而這個wheel組就是建立用來歸納一些特殊的系統用戶用的,這其中的用戶都或多或少地擁有root的部分功能和權限。也就是說如果你不是wheel組成員,那就沒有root身上任何的特權。也因為這樣,使用wheel組成員用戶的話,會盡量減少對系統“摧毀性”破壞的概率和風險。如今大多數的Linux發行版本中,仍然保留了wheel這個組,雖然它已經不像當初設計出來的那樣必要了,但是有些老玩家還是忠於這種舊式經典風格的,所以他們經常還是依舊讓wheel組發揮着以往的作用。他們是這樣做的:在建立他們自己的用戶時,將其添加入wheel組中(用wheel組作為用戶的主組),或者使用vigr來編輯/etc/group文件,將他們的用戶名追加到wheel組那行的末尾。
1.6. 相同ID用戶
1.6.1. 相同ID用戶檢測
命令:cat /etc/passwd
檢查配置/etc/passwd中,是否包含用戶標識號相同的帳號,用戶標識號位置如下:
以第一行為例,從左至右,依次為:
帳號名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄shell
2. 訪問控制策略組檢測
2.1. 空口令監測
2.1.1. 空口令賬戶
命令:cat /etc/shadow(檢查shadow文件中密碼為空且的用戶)
如圖上所示,輸出test3為空口令賬戶,且可以登錄的用戶。
用戶test2:!!:18820:0:99999:7:::第二個字段是“:!!:”代表沒有設置密碼,但無法登錄。
用戶test3::18820:0:99999:7:::第二個字段是“::”代表第二個字段密碼為空,且可以登錄。
如果檢測出有空口令賬戶,可以做以下處理:
A. 刪除該用戶
命令如下:
userdel 用戶名
rm -rf /home/用戶名 (可選,表示刪除該用戶的主目錄)
B. 給該用戶設置密碼
passwd 用戶名
2.2. 弱口令檢測
2.2.1. 弱口令賬戶
如果檢測出弱口令賬戶,建議設置符合秘密復雜度要求的密碼,命令如下:
passwd 用戶名
3. 安全審計策略組檢測
3.1. 日志守護進程
3.1.1. 開啟日志守護進程
當rsyslog沒有在運行,則檢測失敗,操作命令如下:
systemctl status rsyslog (查看狀態)
systemctl stop rsyslog (停止)
systemctl start rsyslog (啟動)
啟動成功后狀態:
查看進程有沒有啟動:
命令:ps -ef | grep rsyslog
4. SSH策略檢測
4.1. SSH檢測
執行如下命令,修改配置文件
sudo vim /etc/ssh/sshd_config
4.1.1. 最大失敗嘗試登錄次數小於等於5(需要修改)
MaxAuthTries 5
4.1.2. 開啟密碼認證
PasswordAuthentication yes
4.1.3. 開啟RSA認證
RSAAuthentication yes (有的系統 需要手動添加)
4.1.4. 開啟公鑰驗證
PubkeyAuthentication yes
重啟sshd生效,重啟命令如下:
CentOS系列: systemctl restart sshd
后續隨着建立應用賬戶會回收root權限登陸。
5. 入侵防范策略組監測
5.1. 防火牆
查看狀態
systemctl status firewalld.service
啟動防火牆
systemctl start firewalld.service
關閉防火牆
systemctl stop firewalld.service
重新啟動防火牆
systemctl restart firewalld.service
5.2. 防暴力破解
安裝EDR
6. 惡意代碼防范監測
6.1. 安裝EDR
7. NTP時間同步配置
安裝ntpdateNTP時間同步配置
apt-get install ntpdate
編輯/etc/ntp.conf文件
vim /etc/ntp.conf
添加配置
server 10.14.1.11 prefer iburst
其中的prefer優先級最高,不然在多個同步服務時,可能自己本地的ntp服務不被選中,會使用其他的源作為同步的時間選項。
其中的iburst是初始化時,每2秒發送一批同步
重新啟動NTP服務器:
service ntp restart
查看同步情況:
watch ntpq –p