之前的三年工作中沒有對新系統的安全和優化這兩方面的總結,只是單單的記住了幾個方面,沒有做過多的整理,導致在面試中被問到,雖然也簡單的說了幾個。於是趁著今天把這方面的技術整理一下。
1)禁止root使用者遠端登入
[root@hya ~]# vim /etc/ssh/sshd_config
#PermitRootLogin yes 改為 PermitRootLogin no
[root@hya ~]# systemctl restart sshd.service #重新啟動sshd服務
2)修改ssh埠
[root@hya ~]# vim /etc/ssh/sshd_config
Port 66 #更改埠
[root@hya ~]# systemctl restart sshd.service
3)禁止ping掃描
[root@hya ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
1代表關閉 0代表開啟
[root@hya ~]# iptables -I INPUT -p icmp -j DROP
4)設定密碼修改最小間隔時間,限制密碼更改過於頻繁
[root@hya ~]# vim /etc/login.defs
PASS_MIN_DAYS 7 #引數設定7-14之間,建議為7
# 須同時執行命令為root使用者設定
[root@hya ~]# chage --mindays 7 root
5)設定ssh空閒超時退出時間
#設定SSH空閒超時退出時間,可降低未授權使用者存取其他使用者ssh對談的風險
[root@hya ~]# vim /etc/ssh/sshd_config
#將ClientAliveInterval 設定為300到900,即5-15分鐘,將ClientAliveCountMax設定為0-3之間
ClientAliveInterval 600
ClientAliveCountMax 2
6)密碼複雜度檢查
#檢查密碼長度和密碼是否使用多種字元型別
[root@hya ~]# vim /etc/security/pwquality.conf 把minlen(密碼最小長度)設定為9-32位元,把minclass(至少包含小寫字母、大寫字母、數位、特殊字元等4類字元中等3類或4類)設定為3或4。
minlen = 10
minclass = 3
7)檢查密碼重用是否受限制(身份鑑別)
#強制使用者不重用最近使用的密碼,降低密碼猜測攻擊風險
[root@hya ~]# vim /etc/pam.d/password-auth
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
[root@hya ~]# vim /etc/pam.d/system-auth
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
## 只是在password sufficient pam_unix.so
這行的末尾設定remember引數為5-24之間,原來的內容不用更改,只在末尾加了remember=5
8)檢查系統空密碼賬戶(身份鑑別)
[root@hya ~]# passwd -l root
鎖定使用者 root 的密碼 。
passwd: 操作成功
#設定非空密碼
9)禁止ssh空密碼使用者登入
[root@hya ~]# vim /etc/ssh/sshd_config
PermitEmptyPasswords no 取消註釋
10)設定密碼失效時間(身份鑑別不建議)
#設定密碼失效時間,強制定期修改密碼,減少密碼被洩漏和猜測風險,使用非密碼登陸方式(如金鑰對)請忽略此項
[root@hya ~]# vim /etc/login.defs
PASS_MAX_DAYS 90 #將 PASS_MAX_DAYS 引數設定為 60-180之間
[root@hya ~]# chage --maxdays 90 root #需同時執行命令設定root密碼失效時間。
11)確保密碼到期警告天數為7或更多(身份鑑別)
[root@hya ~]# vim /etc/login.defs # 確保密碼到期警告天數為7或更多
PASS_WARN_AGE 7
[root@hya ~]# chage --warndays 7 root #同時執行命令使root使用者設定生效
12)確保SSH MaxAuthTries設定為3到6之間 (SSH服務設定)
#設定較低的Max AuthTrimes引數將降低SSH伺服器被暴力攻擊成功的風險。
[root@hya ~]# vim /etc/ssh/sshd_config #設定最大密碼嘗試失敗次數3-6,建議為4
MaxAuthTries 4
13)確保rsyslog服務已啟用 |(安全審計)
#確保rsyslog服務已啟用,記錄紀錄檔用於審計
[root@hya ~]# systemctl enable rsyslog
[root@hya ~]# systemctl start rsyslog
[root@hya ~]#
14)確保SSH LogLevel設定為INFO (服務設定)
#確保SSH LogLevel設定為INFO,記錄登入和登出活動
[root@hya ~]# vim /etc/ssh/sshd_config
LogLevel INFO
15)存取控制組態檔的許可權設定 |(檔案許可權)
#存取控制組態檔的許可權設定
[root@hya ~]# chown root:root /etc/hosts.allow
[root@hya ~]# chown root:root /etc/hosts.deny
[root@hya ~]# chmod 644 /etc/hosts.deny
[root@hya ~]# chmod 644 /etc/hosts.allow
16)開啟地址空間佈局隨機化(入侵防範)
#它將程序的記憶體空間地址隨機化來增大入侵者預測目的地址難度,從而降低程序被成功入侵的風險
[root@hya ~]# vim /etc/sysctl.conf
kernel.randomize_va_space = 2
[root@hya ~]# sysctl -w kernel.randomize_va_space=2
kernel.randomize_va_space = 2
17)確保root是唯一的UID為0的賬戶(身份鑑別)
#除root以外其他UID為0的使用者都應該刪除,或者為其分配新的UID
[root@hya ~]# cat /etc/passwd | awk -F: '($3 == 0) { print $1 }'|grep -v '^root$'
[root@hya ~]#
至於說系統安全優化還有很多很多,在這裡我只是簡單的寫了這麼幾條,我們也可以藉助第三方工具來進行防範暴力破解、攻擊等問題。