一、賬號和口令
1.1 禁用或刪除無用賬號
檢視 /etc/passwd 檔案檢視是否有無用的賬號,如果存在則刪除,降低安全風險。
操作步驟:
- 使用命令
userdel <使用者名稱>
刪除不必要的賬號。 - 使用命令
passwd -l <使用者名稱>
鎖定不必要的賬號。 - 使用命令
passwd -u <使用者名稱>
解鎖必要的賬號。
1.2 檢查特殊賬號
操作步驟:
- 檢視空口令和root許可權賬號,確認是否存在異常賬號:
- 使用命令
awk -F: '($2=="")' /etc/shadow
檢視空口令賬號。 - 使用命令
awk -F: '($3==0)' /etc/passwd
檢視UID為零的賬號。
- 使用命令
- 加固空口令賬號:
- 使用命令
passwd <使用者名稱>
為空口令賬號設定密碼。 - 確認UID為0的賬號只有root賬號。
- 使用命令
1.3 新增口令策略
操作步驟
- 使用命令
vim /etc/login.defs
修改配置檔案。PASS_MAX_DAYS 90
#新建使用者的密碼最長使用天數PASS_MIN_DAYS 0
#新建使用者的密碼最短使用天數(兩次修改口令的最小間隔時間)PASS_MIN_LEN 8
#新建使用者的密碼最小長度PASS_WARN_AGE 14
#新建使用者的密碼到期提前提醒天數
-
使用chage命令修改使用者設定。
# 設定使用者密碼最短使用天數為7天,密碼最長使用天數為30天,過期前14天警告使用者 sudo chage -m 7 -M 90 -W 14 root sudo chage -m 7 -M 90 -W 14 admin # 密碼過期時間檢視方法: [admin@Centos7 ~]$ sudo chage -l root Last password change : Sep 14, 2020【最近一次修改密碼的時間】 Password expires : Dec 13, 2020【密碼過期時間】 Password inactive : never【密碼失效時間】 Account expires : never【賬戶過期時間】 Minimum number of days between password change : 7【兩次改變密碼之間相距最小天數】 Maximum number of days between password change : 90【兩次密碼改變密碼相距最大天數】 Number of days of warning before password expires : 15【密碼過期前開始警告的天數】
- 密碼鎖定策略
說明:# 設定連續輸錯五次密碼,賬號鎖定五分鐘。 vim /etc/pam.d/system-auth auth required pam_tally2.so onerr=fail deny=5 unlock_time=300 even_deny_root root_unlock_time=90
- deny:設定普通使用者和root使用者連續錯誤登陸的最大次數,超過最大次數,則鎖定該使用者
- unlock_time:設定普通使用者鎖定後,多少時間後解鎖,單位是秒
- root_unlock_time:設定root使用者鎖定後,多少時間後解鎖,單位是秒
- 密碼複雜度
說明:# 設定使用者密碼最小長度8位,必須包含大小寫字母+數字+特殊字元(root使用者同理) vim /etc/pam.d/system-auth password requisite pam_pwquality.so try_first_pass local_users_only minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 password required pam_pwhistory.so use_authtok remember=5 enforce_for_root vim /etc/pam.d/password-auth password requisite pam_pwquality.so try_first_pass local_users_only minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 password required pam_pwhistory.so use_authtok remember=5 enforce_for_root
- minlen=8:將密碼的最小長度設定為8個字元。
- lcredit=-1 :將密碼應包含的小寫字母的最小數目設定為至少一個
- ucredit=-1:將密碼上的大寫字母的最小數目設定為至少一個。
- dcredit=-1 :將密碼中包含的最小位數至少設定為一個
- ocredit=-1:設定其他符號的最小數量,例如@,#、! $%等,至少要有一個密碼
- remember=5:口令不能修改為過去5次使用過的舊口令
- enforce_for_root :確保即使是root使用者設定密碼,也應強制執行複雜性策略。
1.4 限制使用者su
操作步驟
使用命令 vim /etc/pam.d/su
修改配置檔案,在配置檔案中新增行。
例如,只允許admin組使用者su到root,則新增 auth required pam_wheel.so group=admin
。
【可選】為了方便操作,可配置admin支援免密sudo:在 /etc/sudoers 檔案中新增 admin ALL=(ALL) NOPASSWD:ALL
1.5 加固su命令
為了防止使用"su"命令將當前使用者環境變數帶入其它使用者,修改/etc/login.defs新增ALWAYS_SET_PATH=yes並儲存。
1.6 禁止root使用者直接登入
操作步驟
-
建立普通許可權賬號並配置密碼,防止無法遠端登入,如:
groupadd -g 1000 admin && useradd -g admin -c "Administrator" -u 1000 -n -s /bin/bash admin
- 使用命令
vi /etc/ssh/sshd_config
修改配置檔案將PermitRootLogin的值改成no,並重啟sshd
服務。
二、系統服務
2.1 關閉不必要的服務
操作步驟:
檢視所有服務列表 systemctl list-units --type=service
- 關閉不必要的服務:systemctl stop <服務名>
- 設定開機不自啟動:systemctl disable <服務名>
2.2 SSH服務安全
操作步驟
使用命令vim /etc/ssh/sshd_config
編輯配置檔案。
PermitRootLogin no # 不允許root賬號直接登入系統
Protocol 2 # 修改SSH使用的協議版本
MaxAuthTries 3 # 修改允許密碼錯誤次數(預設6次)
ClientAliveInterval 60 # server每隔60秒給客戶端傳送一次保活資訊包給客戶端
ClientAliveCountMax 30 # server端發出的請求客戶端沒有回應的次數達到30次的時候就斷開連線。
配置檔案修改完成後,重啟sshd服務生效(systemctl restart sshd)。
三、檔案系統
3.1 設定umask值
操作步驟
修改/etc/profile
配置檔案,新增行 umask 027
, 即新建立的檔案屬主擁有讀寫執行許可權,同組使用者擁有讀和執行許可權,其他使用者無許可權。
3.2 設定登入超時
操作步驟
修改/etc/profile
配置檔案,設定為TMOUT=600,
表示超時10分鐘無操作自動退出登入。
四、系統日誌
4.1 syslogd日誌
操作步驟
Linux系統預設啟用以下型別日誌,配置檔案為 /etc/rsyslog.conf:
- 系統日誌(預設)/var/log/messages
- cron日誌(預設)/var/log/cron
- 安全日誌(預設)/var/log/secure
4.2 記錄所有使用者的登入日誌和操作日誌
# 開啟配置檔案/etc/profile,在配置檔案最後中輸入以下內容:
history
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null
# 執行source使其生效
source /etc/profile
通過上述步驟,可以在 /var/log/history 目錄下以每個使用者為名新建一個資料夾,每次使用者退出後都會產生以使用者名稱、登入IP、時間的日誌檔案,包含此使用者本次的所有操作(root使用者除外)