一、 身份鑒別
1.1 應(yīng)對登錄的用戶進(jìn)行身份標(biāo)識和鑒別,身份標(biāo)識具有唯一性,身份鑒別信息具有復(fù)雜度要求并定期更換;
建議操作系統(tǒng)對登錄的用戶進(jìn)行身份標(biāo)識和鑒別,身份鑒別信息配置復(fù)雜度要求開啟定期更換策略,避免使用弱口令,至少包含字母和數(shù)字,密碼長度至少8位。密碼最長適用90天,5次內(nèi)不重復(fù)
整改方案:
1.修改 /etc/login.defs 文件內(nèi)容即可,加入如下
# 密碼最大有效期
PASS_MAX_DAYS 90
# 兩次修改密碼的最小間隔時(shí)間
PASS_MIN_DAYS 1
# 密碼最小長度,對于root無效
PASS_MIN_LEN 8
# 密碼過期前 7 天開始提示
PASS_WARN_AGE 7
對于密碼的強(qiáng)度要求可以修改system-auth文件,vim /etc/pam.d/system-auth,修改如下:
# 添加以下內(nèi)容
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict
# remember=5 5次內(nèi)密碼不重復(fù)
# retry=3 輸入錯(cuò)誤重試3次
# difok=3
# minlen=10表示最小密碼長度為 10 類型數(shù)量
# ucredit=-1表示密碼必須至少包含1個(gè)大寫字母
# lcredit=-3表示密碼必須至少包含3個(gè)小寫字母
# dcredit=-3表示密碼必須至少包含3個(gè)數(shù)字
1.2 應(yīng)具有登錄失敗處理功能,應(yīng)配置并啟用結(jié)束會(huì)話、限制非法登錄次數(shù)和當(dāng)?shù)卿涍B接超時(shí)自動(dòng)退出等相關(guān)措施;
1. 登錄失敗
建議操作系統(tǒng)開啟登錄失敗處理功能配置登錄失敗5次及鎖定時(shí)間30分鐘;
vim /etc/pam.d/system-auth
# 添加以下內(nèi)容
auth required pam_tally2.so onerr=fail deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800
參數(shù)含義: 密碼錯(cuò)誤 5 次鎖定 1800 秒
2. 會(huì)話過期,修改 /etc/profile 文件
vim /etc/profile
# 單位秒 1800秒
export TMOUT=1800
source /etc/profile
二、 訪問控制
2.1 應(yīng)對登錄的用戶分配賬戶和權(quán)限;
建議操作系統(tǒng)對登錄的用戶分配賬戶和權(quán)限;
整改方案:
| 組 | 系統(tǒng)表示 | 作用 |
|---|---|---|
| 數(shù)據(jù)庫 | db | 只負(fù)責(zé)管理數(shù)據(jù)庫的用戶 |
| 服務(wù) | server | 負(fù)責(zé)業(yè)務(wù)服務(wù)或其他組件的用戶 |
| 安全 | security | 負(fù)責(zé)系統(tǒng)安全,日志審計(jì)登的用戶 |
命令如下:
#列出所有組
cat /etc/group
# 刪除組
groupdel xulei
# 添加組
groupadd db
groupadd server
groupadd security
# 查看所有用戶
cat /etc/passwd
# 查看用戶所屬組
groups db
# 刪除用戶
userdel -rf xulei
# 添加用戶到某個(gè)組,并指定用戶的所屬目錄
useradd xulei -d /home/users/xulei –N
# 改變用戶組
usermod -g db xulei
# 修改文件屬性只能某個(gè)組的成員操作
chown :server /home/server
# 修改密碼
passwd xulei
| 用戶名 | 所屬組 | 密碼 |
|---|---|---|
| dbuser | db | xxxxx |
| secuser | security | xxxxxx |
| serveruser | server | xxxxxxx |
2.2 修改root的默認(rèn)賬戶信息
# 修改用戶名,這種修改不能修改root
usermod -l 新用戶 舊用戶
# 如下可以修改root賬號
1、vim /etc/passwd 將第一行的第一個(gè)root替換為重命名的用戶
2、vim /etc/shadow 將這一行中的root 替換為重命名
三、安全審計(jì)
3.1 應(yīng)啟用安全審計(jì)功能,審計(jì)覆蓋到每個(gè)用戶,對重要的用戶行為和重要安全事件進(jìn)行審計(jì);
建議操作系統(tǒng)啟用安全審計(jì)功能,審計(jì)覆蓋到每個(gè)用戶,對重要的用戶行為和重要安全事件進(jìn)行審計(jì);
整改方案:
service auditd start
# 查看是否開啟,只要enable=1即可,這個(gè) – 有問題 需要在命令行自己重新打
auditctl –s
# 同時(shí)根據(jù)需求可以添加新規(guī)則
vim /etc/audit/audit.rules
# 監(jiān)控 /etc/my.cnf 文件,只要在文件加如以下內(nèi)容
-w /etc/my.cnf -p wa
# -w 路徑
# -p 權(quán)限 如果沒有 -p 選項(xiàng),則默認(rèn)監(jiān)視所有動(dòng)作 rwxa(讀、寫、執(zhí)行、修改文件屬性)
# -k 關(guān)鍵字
# 監(jiān)控系統(tǒng)調(diào)用行為,監(jiān)視文件權(quán)限變化,因?yàn)楦淖儥?quán)限必須調(diào)用umask
-a entry,always -S umask -S chown
# -a always 總是記錄審計(jì);none 不記錄;exit 行為完成后記錄審計(jì);entry 行為剛剛開始 時(shí)記錄審計(jì)
# -S 系統(tǒng)調(diào)用名稱
# -F 字段=值
# -k 關(guān)鍵字
3.2 審計(jì)記錄應(yīng)包括事件的日期和時(shí)間、用戶、事件類型、事件是否成功及其他與審計(jì)相關(guān)的信息;
建議操作系統(tǒng)啟用安全審計(jì)功能審計(jì)記錄包括事件的日期和時(shí)間、用戶、事件類型、事件是否成功及其他與審計(jì)相關(guān)的信息;
整改方案:
# 包含了以上所有條件
cat /var/log/audit/audit.log
3.3 應(yīng)對審計(jì)記錄進(jìn)行保護(hù),定期備份,避免受到未預(yù)期的刪除、修改或覆蓋等;
建議操作系統(tǒng)啟用安全審計(jì)功能并部署日志審計(jì)系統(tǒng)并對審計(jì)記錄進(jìn)行保護(hù),定期備份,避免受到未預(yù)期的刪除、修改或覆蓋等;
整改方案:
# 輸入以下腳本,并添加到定時(shí)器中
#!/bin/bash
# 日志位置
FILE=/var/log/audit/audit.log
current_time=`date +%y%m%d`
cat $FILE |while read LINE
do
Udate=`echo $LINE|awk -F'[(.]+' '{print $2}'`
#Udate=`echo $LINE|awk -F. '{print $1}' | awk -F'(' '{print $2}'`
Cdate=`date -d @$Udate`
echo $LINE|sed "s/[0-9]\{10\}/$Cdate/" >> /home/sh/log/audit${current_time}.log
done
3.4 應(yīng)對審計(jì)進(jìn)程進(jìn)行保護(hù),防止未經(jīng)授權(quán)的中斷。
建議操作系統(tǒng)啟用安全審計(jì)功能對審計(jì)進(jìn)程進(jìn)行保護(hù),防止未經(jīng)授權(quán)的中斷,限制除審計(jì)員外的審計(jì)控制權(quán)限。
整改方案:
給輸出的日志只允許 security 組可讀即可。
其他日志方式
vi /etc/syslog.conf
加入 # The authpriv file has restricted access.
authpriv.* /var/log/secure
開啟安全日志,日志文件位置/var/log/secure
沒有 syslog.conf 文件,只有 rsyslog.conf。 rsyslog.conf 本身就具有該語句
# 修改所屬組
chown :security /var/log
四、入侵防范
4.1 應(yīng)遵循最小安裝的原則,僅安裝需要的組件和應(yīng)用程序;
建議操作系統(tǒng)遵循最小安裝的原則,僅安裝需要的組件和應(yīng)用程序;
整改方案:
按照部署方案,刪除每臺(tái)機(jī)器上多余的應(yīng)用即可。
4.2 應(yīng)關(guān)閉不需要的系統(tǒng)服務(wù)、默認(rèn)共享和高危端口;
建議操作系統(tǒng)關(guān)閉不需要的系統(tǒng)服務(wù)、默認(rèn)共享和高危端口,如FTP、DHCP等不必要服務(wù)
整改方案:
FTP 目前不能關(guān)閉還需要上傳文件,還有根據(jù)部署方案多余的都可以關(guān)閉。
systemctl list-units 查看所有服務(wù)
快照 建議 備份半年,可以登錄到物理機(jī)上配分。
4.3 設(shè)置登錄地址限制(重啟生效)
通過設(shè)定終端接入方式、網(wǎng)絡(luò)地址范圍等條件限制終端登錄
# 修改文件
vi /etc/hosts.allow
# 加入如下,示例允許 10.10.20.99 ssh登錄系統(tǒng)
sshd:10.10.20.99:allow
# 允許這個(gè)段 使用 telnet訪問
in.telnetd:192.168.221.
#修改文件
vi /etc/hosts.deny
# 修改如下,sshd:all:deny表示拒絕了所有sshd遠(yuǎn)程連接。:deny可以省略。
sshd:all:deny
優(yōu)先級為先檢查 hosts.deny , hosts.allow 后者設(shè)定可越過前者限制。
4.4 高危端口管理
永久禁用,需要重啟生效
# 用 iptables 來控制端口和防火墻管理
yum install iptables-services
# 設(shè)置開機(jī)自啟動(dòng)
systemctl enable iptables
# 啟動(dòng)停止命令
systemctl [stop|start|restart] iptables
# 狀態(tài)查看
service iptables status
# 禁用端口
# 先打開文件編輯
vim /etc/sysconfig/iptables
# 添加禁止端口訪問
-A INPUT -p tcp --dport 445 -j DROP
-A INPUT -p tcp --dport 139 -j DROP
-A INPUT -p tcp --dport 3389 -j DROP
# -A 參數(shù)就看成是添加一條 INPUT 或 OUTPUT 的規(guī)則。
# -p 指定是什么協(xié)議 我們常用的tcp 協(xié)議,當(dāng)然也有udp 例如53端口的DNS,到時(shí)我們要配置DNS用到53端口 大家就會(huì)發(fā)現(xiàn)使用udp協(xié)議的。
# --dport 就是目標(biāo)端口,當(dāng)數(shù)據(jù)從外部進(jìn)入服務(wù)器為目標(biāo)端口(INPUT),反之?dāng)?shù)據(jù)從服務(wù)器出去(OUTPUT),則為數(shù)據(jù)源端口使用 --sport
# -j 就是指定是 ACCEPT 接收 或者 DROP 不接收
# 禁止IP訪問
-A INPUT -p tcp -s 192.168.1.2 -j DROP
我們就用 -p tcp , 如果是 udp 就寫udp,這里就用tcp了, -s就是 來源的意思,
ip來源于 192.168.1.2 ,-j 怎么做 我們拒絕它 這里應(yīng)該是 DROP
快速生效方式,也會(huì)添加到文件中(不建議)
# 禁用端口訪問
/sbin/iptables -A INPUT -p tcp --dport 8080 -j DROP
/sbin/iptables -A OUTPUT -p tcp --sport 8080 -j DROP
# 允許端口
/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT
# 禁用IP訪問,可以ping通 但無法通過shh訪問
/sbin/iptables -A INPUT -p tcp -s 192.168.200.16 -j DROP
# 保存到文件,會(huì)改變默認(rèn)規(guī)則,所有端口可以訪問
service iptables save
# 基礎(chǔ)設(shè)置
# 禁止所有端口訪問,但允許22 端口訪問,因?yàn)槭橇⒓瓷?,最好使用主機(jī)修改
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
-A INPUT –m state --state RELATED,ESTABLISHED –j ACCEPT
-A INPUT –p icmp –j ACCEPT
-A INPUT –i lo –j ACCEPT
-A INPUT –p tcp –m state --state NEW –m tcp --dport 22 –j ACCEPT
-A INPUT –j REJECT --reject-with icmp-host-prohibited
-A FORWARD –j REJECT --reject-with icmp-host-prohibited
# 清除規(guī)則
# 先查看行號
iptables -nL --line-number
# 刪除
iptables -D INPUT 1
-D 是刪除的意思
INPUT 指定刪除INPUT的規(guī)則
1 是行號
注意事項(xiàng),需要關(guān)閉firewalld
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
# 但如果你需要開啟 firewalld,那么請查看如下配置
# 允許22端口訪問
firewall-cmd --zone=public --add-port=22/tcp --permanen
# 重新載入一下防火墻設(shè)置,使設(shè)置生效
firewall-cmd --reload
# 可通過如下命令查看是否生效
firewall-cmd --zone=public --query-port=22/tcp
# 查看當(dāng)前系統(tǒng)打開的所有端口
firewall-cmd --zone=public --list-ports
# 關(guān)掉剛剛打開的22端口
firewall-cmd --zone=public --remove-port=22/tcp --permanent
# 批量開放端口,如從100到500這之間的端口我們?nèi)恳蜷_
firewall-cmd --zone=public --add-port=100-500/tcp --permanent
# 限制IP為192.168.0.200的地址禁止訪問80端口即禁止訪問機(jī)器
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" reject"
# 解除剛才被限制的192.168.0.200
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" accept"
# 限制10.0.0.0-10.0.0.255這一整個(gè)段的IP,禁止他們訪問
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" reject"
四、重啟服務(wù)注意
需要登錄虛擬機(jī)執(zhí)行如下兩句話才能ssh連接:
route add -net 192.168.200.0/24 gw 10.240.30.251
route add -net 192.168.81.0/24 gw 10.240.30.251
開機(jī)執(zhí)行腳本
chmod +x /etc/rc.d/rc.local
vim /etc/rc.d/rc.local
/home/sh/iptable.sh