對未經(jīng)過安全認證的RPM包進行安全檢查
rpm -qp xxx.rpm --scripts 查看rpm包中的腳本信息
設定密碼策略
修改 /etc/login.defs 配置文件
PASS_MAX_DAYS 90 密碼最長有效期
PASS_MIN_DAYS 10 密碼修改之間最小的天數(shù)
PASS_MIN_LEN 8 密碼長度
PASS_WARN_AGE 7 口令失效前多少天開始通知用戶修改密碼
腳本實現(xiàn)設定密碼策略
#伶椿! /bin/bash
# Function: 實現(xiàn)對用戶密碼策略的設定鸭轮,如密碼最長有效期等
read -p "設置密碼最多可多少天不修改:" A
read -p "設置密碼修改之間最小的天數(shù):" B
read -p "設置密碼最短的長度:" C
read -p "設置密碼失效前多少天通知用戶:" D
sed -i '/^PASS_MAX_DAYS/c\PASS_MAX_DAYS '$A'' /etc/login.defs
sed -i '/^PASS_MIN_DAYS/c\PASS_MIN_DAYS '$B'' /etc/login.defs
sed -i '/^PASS_MIN_LEN/c\PASS_MIN_LEN '$C'' /etc/login.defs
sed -i '/^PASS_WARN_AGE/c\PASS_WARN_AGE '$D'' /etc/login.defs
echo "已設置好密碼策略......"
對用戶密碼強度的設定
打開 /etc/pam.d/sysetm-auth 文件 浇雹,修改如下稿蹲。我們設置新密碼不能和舊密碼相同,同時新密碼至少8位,還要同時包含大字母舌稀、小寫字母和數(shù)字
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1
- difok= :此選項用來定義新密碼中必須要有幾個字符和舊密碼不同
- minlen=:此選項用來設置新密碼的最小長度
- ucredit= :此選項用來設定新密碼中可以包含的大寫字母的最大數(shù)目啊犬。-1 至少一個
- lcredit=:此選項用來設定新密碼中可以包含的小寫字母的最大數(shù)目
- dcredit=:此選項用來設定新密碼中可以包含的數(shù)字的最大數(shù)目
注意:這個密碼強度的設定只對普通用戶有限制作用,root用戶無論修改自己的密碼還是修改普通用戶的時候壁查,不符合強度設置依然可以設置成功
腳本實現(xiàn)對用戶密碼強度的設定
#觉至! /bin/bash
# Function: 對用戶密碼強度的設定,新密碼不能和舊密碼相同睡腿,同時新密碼至少8位语御,還要同時包含大字母、小寫字母和數(shù)字
sed -i '/pam_pwquality.so/c\password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1' /etc/pam.d/system-auth
對用戶的登錄次數(shù)進行限制
有一些攻擊性的軟件是專門采用暴力破解密碼的形式反復進行登錄嘗試席怪,對于這種情況应闯,我們可以調(diào)整用戶登錄次數(shù)限制,使其密碼輸入3次后自動鎖定挂捻,并且設置鎖定時間碉纺,在鎖定時間內(nèi)即使密碼輸入正確也無法登錄
打開 /etc/pam.d/sshd 文件,在 #%PAM-1.0 的下面刻撒,加入下面的內(nèi)容骨田,表示當密碼輸入錯誤達到3次,就鎖定用戶150秒声怔,如果root用戶輸入密碼錯誤達到3次态贤,鎖定300秒。鎖定的意思是即使密碼正確了也登錄不了
auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300
當輸入3次密碼錯誤時
pam_tally2 查看被鎖定的用戶
pam_tally2 --reset -u username 將被鎖定的用戶解鎖
腳本設置對用戶的登錄次數(shù)做限制
#醋火! /bin/bash
# Function: 對用戶登錄輸入錯誤密碼次數(shù)做限制
n=`cat /etc/pam.d/sshd | grep "auth required pam_tally2.so "|wc -l`
if [ $n -eq 0 ];then
sed -i '/%PAM-1.0/a\auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300' /etc/pam.d/sshd
fi
禁止ROOT用戶遠程登錄
禁止ROOT用戶遠程登錄 悠汽。打開 /etc/ssh/sshd_config
腳本設置禁止ROOT用戶遠程登錄
#! /bin/bash
# Function: 禁止ROOT用戶遠程登錄
sed -i '/PermitRootLogin/c\PermitRootLogin no' /etc/ssh/sshd_config
設置歷史命令保存條數(shù)和賬戶超時時間
設置賬戶保存歷史命令條數(shù)芥驳,超時時間 柿冲。打開 /etc/profile ,修改如下
設置只有指定用戶組才能使用su命令切換到root用戶
在linux中,有一個默認的管理組 wheel兆旬。在實際生產(chǎn)環(huán)境中姻采,即使我們有系統(tǒng)管理員root的權(quán)限,也不推薦用root用戶登錄爵憎。一般情況下用普通用戶登錄就可以了,在需要root權(quán)限執(zhí)行一些操作時婚瓜,再su登錄成為root用戶宝鼓。但是,任何人只要知道了root的密碼巴刻,就都可以通過su命令來登錄為root用戶愚铡,這無疑為系統(tǒng)帶來了安全隱患。所以,將普通用戶加入到wheel組沥寥,被加入的這個普通用戶就成了管理員組內(nèi)的用戶碍舍。然后設置只有wheel組內(nèi)的成員可以使用su命令切換到root用戶。
比如邑雅,我們將普通用戶xie加入wheel組片橡。 usermod -G wheel xie
然后,我們修改配置文件 /etc/pam.d/su 淮野,將這行的注釋給去掉
然后去 /etc/login.defs 末尾加入 SU_WHEEL_ONLY yes 即可捧书。
當 tom 用戶使用su命令切換到root用戶時,會提示拒絕權(quán)限
使用腳本設置配置文件
#骤星! /bin/bash
# Function: 修改配置文件经瓷,使得只有wheel組的用戶可以使用 su 權(quán)限
sed -i '/pam_wheel.so use_uid/c\auth required pam_wheel.so use_uid ' /etc/pam.d/su
n=`cat /etc/login.defs | grep SU_WHEEL_ONLY | wc -l`
if [ $n -eq 0 ];then
echo SU_WHEEL_ONLY yes >> /etc/login.defs
fi
對Linux賬戶進行管理
- 使用命令 userdel -r 用戶名 刪除不必要的賬號
- 使用命令 passwd -l 用戶名 鎖定不必要的賬號
- 使用命令 awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd 查看具有登錄權(quán)限的用戶
- 使用命令 awk -F: '($3==0)' /etc/passwd 查看UID為0的賬號,UID為0的用戶會自- 動切換到root用戶洞难,所以危害很大
- 使用命令 awk -F: '($2=="")' /etc/shadow 查看空口令賬號舆吮,如果存在空口令用戶的話必須設置密碼
使用腳本對賬戶進行管理
#! /bin/bash
# Function: 對系統(tǒng)中的用戶做檢查,加固系統(tǒng)
echo "系統(tǒng)中有登錄權(quán)限的用戶有:"
awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
echo "********************************************"
echo "系統(tǒng)中UID=0的用戶有:"
awk -F: '($3=="0"){print $1}' /etc/passwd
echo "********************************************"
N=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
echo "系統(tǒng)中空密碼用戶有:$N"
if [ $N -eq 0 ];then
echo "恭喜你队贱,系統(tǒng)中無空密碼用戶I健!"
echo "********************************************"
else
i=1
while [ $N -gt 0 ]
do
None=`awk -F: '($2==""){print $1}' /etc/shadow|awk 'NR=='$i'{print}'`
echo "------------------------"
echo $None
echo "必須為空用戶設置密碼B锻病呐伞!"
passwd $None
let N--
done
M=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
if [ $M -eq 0 ];then
echo "恭喜,系統(tǒng)中已經(jīng)沒有空密碼用戶了慎式!"
else
echo "系統(tǒng)中還存在空密碼用戶:$M"
fi
fi
對重要的文件進行鎖定伶氢,即使ROOT用戶也無法刪除
chattr 改變文件或目錄的擴展屬性
lsattr 查看文件目錄的擴展屬性
chattr +i /etc/passwd /etc/shadow //增加屬性
chattr -i /etc/passwd /etc/shadow //移除屬性
lsattr /etc/passwd /etc/shadow
使用腳本對重要文件進行鎖定
#! /bin/bash
# Function: 鎖定創(chuàng)建用戶和組的文件,使之無法對用戶和組進行操作瘪吏!
read -p "警告:此腳本運行后將無法添加刪除用戶和組Q⒎馈!確定輸入Y掌眠,取消輸入N蕾盯;Y/N:" i
case $i in
[Y,y])
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
echo "鎖定成功!"
;;
[N,n])
chattr -i /etc/passwd
chattr -i /etc/shadow
chattr -i /etc/group
chattr -i /etc/gshadow
echo "取消鎖定成功@侗级遭!"
;;
*)
echo "請輸入Y/y or N/n"
esac
一個腳本對上面所有的合并了
#! /bin/bash
# Function:對賬戶的密碼的一些加固
read -p "設置密碼最多可多少天不修改:" A
read -p "設置密碼修改之間最小的天數(shù):" B
read -p "設置密碼最短的長度:" C
read -p "設置密碼失效前多少天通知用戶:" D
sed -i '/^PASS_MAX_DAYS/c\PASS_MAX_DAYS '$A'' /etc/login.defs
sed -i '/^PASS_MIN_DAYS/c\PASS_MIN_DAYS '$B'' /etc/login.defs
sed -i '/^PASS_MIN_LEN/c\PASS_MIN_LEN '$C'' /etc/login.defs
sed -i '/^PASS_WARN_AGE/c\PASS_WARN_AGE '$D'' /etc/login.defs
echo "已對密碼進行加固,新密碼不得和舊密碼相同渺尘,且新密碼必須同時包含數(shù)字挫鸽、小寫字母,大寫字母E父丢郊!"
sed -i '/pam_pwquality.so/c\password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1' /etc/pam.d/system-auth
echo "已對密碼進行加固盔沫,如果輸入錯誤密碼超過3次,則鎖定賬戶7阖摇架诞!"
n=`cat /etc/pam.d/sshd | grep "auth required pam_tally2.so "|wc -l`
if [ $n -eq 0 ];then
sed -i '/%PAM-1.0/a\auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300' /etc/pam.d/sshd
fi
echo "已設置禁止root用戶遠程登錄!干茉!"
sed -i '/PermitRootLogin/c\PermitRootLogin no' /etc/ssh/sshd_config
read -p "設置歷史命令保存條數(shù):" E
read -p "設置賬戶自動注銷時間:" F
sed -i '/^HISTSIZE/c\HISTSIZE='$E'' /etc/profile
sed -i '/^HISTSIZE/a\TMOUT='$F'' /etc/profile
echo "已設置只允許wheel組的用戶可以使用su命令切換到root用戶谴忧!"
sed -i '/pam_wheel.so use_uid/c\auth required pam_wheel.so use_uid ' /etc/pam.d/su
n=`cat /etc/login.defs | grep SU_WHEEL_ONLY | wc -l`
if [ $n -eq 0 ];then
echo SU_WHEEL_ONLY yes >> /etc/login.defs
fi
echo "即將對系統(tǒng)中的賬戶進行檢查...."
echo "系統(tǒng)中有登錄權(quán)限的用戶有:"
awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
echo "********************************************"
echo "系統(tǒng)中UID=0的用戶有:"
awk -F: '($3=="0"){print $1}' /etc/passwd
echo "********************************************"
N=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
echo "系統(tǒng)中空密碼用戶有:$N"
if [ $N -eq 0 ];then
echo "恭喜你,系統(tǒng)中無空密碼用戶5戎俏蛮!"
echo "********************************************"
else
i=1
while [ $N -gt 0 ]
do
None=`awk -F: '($2==""){print $1}' /etc/shadow|awk 'NR=='$i'{print}'`
echo "------------------------"
echo $None
echo "必須為空用戶設置密碼!上遥!"
passwd $None
let N--
done
M=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
if [ $M -eq 0 ];then
echo "恭喜搏屑,系統(tǒng)中已經(jīng)沒有空密碼用戶了!"
else
echo "系統(tǒng)中還存在空密碼用戶:$M"
fi
fi
echo "即將對系統(tǒng)中重要文件進行鎖定粉楚,鎖定后將無法添加刪除用戶和組"
read -p "警告:此腳本運行后將無法添加刪除用戶和組@绷怠!確定輸入Y模软,取消輸入N伟骨;Y/N:" i
case $i in
[Y,y])
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
echo "鎖定成功!"
;;
[N,n])
chattr -i /etc/passwd
chattr -i /etc/shadow
chattr -i /etc/group
chattr -i /etc/gshadow
echo "取消鎖定成功H家臁携狭!"
;;
*)
echo "請輸入Y/y or N/n"
esac
建立日志服務器
日志服務器的好處在于,每個工作服務器將自己的日志信息發(fā)送給日志服務器進行集中管理回俐,即使有人入侵了服務器并將自己的登錄信息悄悄刪除逛腿,但由于日志信息實時與日志服務器同步,保證了日志的完整性仅颇。以備工作人員根據(jù)日志服務器信息對服務器安全進行評測单默。
- 客戶端的配置:
打開 /etc/rsyslog.conf 配置文件
你想把哪種類型的日志文件發(fā)送給服務端,你就把他原來的對應的目錄改成: @192.168.10.20
如果你想吧所有的日志文件都發(fā)送給服務器的話忘瓦,你可以在文件最后加上: . @@192.168.10.20:514
然后重啟rsyslog服務: systemctl restart rsyslog
- 服務器端的配置:
打開 /etc/rsyslog.conf 配置文件搁廓,將這里的注釋給去掉
然后重啟rsyslog服務:systemctl restart rsyslog
開啟防火墻: firewall-cmd --add-port=514/tcp
這樣客戶端的相應的日志文件就會保存在服務器端的相應的文件中。