實驗一:系統賬號的安全管理
1)賬號清理
[root@www ~]# passwd -d u01
[root@www ~]# passwd -l u01
鎖定用戶 u01 的密碼 。
passwd: 操作成功
[root@www ~]# passwd -S u01
u01 LK 2016-01-18 0 99999 7 -1 (密碼已被鎖定。)
[root@www ~]# passwd -u u01
解鎖用戶 u01 的密碼 。
passwd: 警告:未鎖定的密碼將是空的。
passwd: 不安全的操作(使用 -f 參數強制進行該操作)
[root@www ~]# passwd -S u01
u01 LK 2016-01-18 0 99999 7 -1 (密碼已被鎖定。)
[root@www ~]# passwd -u u01 -f
解鎖用戶 u01 的密碼 。
passwd: 操作成功
小腳本管理系統用戶:
腳本一:結合計劃任務防止系統用戶登錄系統
[root@www ~]#
[root@www ~]# vim chsh_1-499.sh
#!/bin/bash
##by linuxfan
##檢測UID大於1小於500的系統用戶被設置爲/bin/bash,防止程序用戶登錄系統。
for i in $(awk -F : '$7~"bash$"{if($3 > 1 && $3 < 500) print $1}' /etc/passwd);do
chsh -s /sbin/nologin $i
done
:wq
測試:
chsh -s /bin/bash ftp
grep ftp /etc/passwd ##驗證修改
chmod +x chsh_1-499.sh
./chsh_1-499.sh
grep ftp /etc/passwd ##已經修復
[root@www ~]# echo "1 2 * * 7 /root/bin/chsh_1-499.sh" >>/var/spool/cron/root ##設置計劃任務
[root@www ~]# crontab -l
腳本二:結合mail命令郵件通知管理員,能登錄系統的用戶變化
vi chkuser.sh
#!/bin/bash
UN=$(grep /bin/bash |wc -l)
if [ $UN -gt 2 ];then
echo "user is too many." |mail -s "linux sys user alter." [email protected]
else
echo "user is ok."
fi
2)密碼安全:
a.檢查空密碼
腳本三:檢查密碼爲空的用戶,如果有空密碼的用戶鎖定用戶並郵件通知管理員
vi chkzonepwd.sh
#!/bin/bash
ELU=$(grep /bin/bash /etc/passwd |awk -F : '{print $1}')
for i in $ELU
do
ZPWD=$(grep $i /etc/shadow |awk -F : '{print $2}')
if [ -z $ZPWD ];then
passwd -l $i
echo "$i user password is zore." |mail -s "$i user passwd zore" [email protected]
else
echo "passwd is ok."
fi
done
3)優化賬號及密碼安全
a.優化新建賬號默認登錄shell
sed -i 's@/bin/bash@/sbin/nologin@g' /etc/default/useradd
useradd u03
tail -1 /etc/passwd ##u03的shell爲非交互式
chsh -s /bin/bash u03 ##當需要u03登錄時使用,作用與usermod -s 一樣
b.優化密碼使用時間
vi /etc/login.defs
PASS_MAX_DAYS 60
PASS_MIN_DAYS 2
PASS_MIN_LEN 8 ##密碼長度最小值
PASS_WARN_AGE 5 ##密碼過期提醒時間
:wq
useradd u04 ##修改後創建的賬號
tail -1 /etc/shadow ##驗證
針對已經建立用戶:
chage -m 2 u03 ##密碼使用最小值
chage -M 60 u03 ##密碼使用最大值
chage -W 5 u03 ##密碼過期提醒時間,在最大值前
chage -d 0 u01 ##下次登錄時修改密碼
tail -2 /etc/shadow
c.優化密碼複雜性要求
vi /etc/pam.d/system-auth
14行後添加如下內容:
minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1 ##長度最小值8,至少有2個數字,至少有1個大寫、小寫、特殊字符
14 password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1
15 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=3 ##密碼歷史
:wq
su - u01 ##進入u01
passwd #修改密碼驗證
d.設置登錄失敗次數鎖定賬號
vi /etc/pam.d/system-auth
5行:
auth required pam_tally2.so deny=5
11行:
auth required pam_tally2.so
:wq
驗證需要在tty終端
pam_tally2 -u u01 ##查看登錄失敗的次數
pam_tally2 -r -u u01 ##重置u01,解鎖
e.修改密碼加密方法
MD5與sha512加密算法:
authconfig --test |grep hashing ##查看當前系統的加密算法
authconfig --passalgo=sha512 --update ##修改系統的加密算法爲sha512
vi /etc/pam.d/system-auth ##查看驗證
:q
3.歷史命令
a.清楚歷史命令
rm -rf ~/.bash_history
ln -s /dev/null ~/.bash_history
echo 'history -c ' >> ~/.bash_logout
b.設置記錄歷史的數量
history >my.hist ##導出歷史命令
export HISTSIZE=100 ##臨時設置記錄歷史命令的數量
sed -i 's/HISTSIZE=1000/HISTSIZE=200/g' /etc/profile
source /etc/profile
echo $HISTSIZE ##驗證
c.超時註銷
echo 'export TMOUT=300' >>/etc/profile ##設置300秒後註銷
source /etc/profile
unset TMOUT ##取消變量
5.鎖定文件:練習
[root@www ~]# man chattr
[root@www ~]# chattr +i /etc/{passwd,shadow} ##鎖定文件
[root@www ~]# lsattr /etc/{passwd,shadow} ##查看擴展權限
----i--------e- /etc/passwd
----i--------e- /etc/shadow
[root@www ~]# useradd u02 ##無法創建用戶也無法修改密碼
useradd: cannot open /etc/passwd
[root@www ~]# echo 123123 |passwd --stdin u01
更改用戶 u01 的密碼 。
passwd: 鑑定令牌操作錯誤
[root@www ~]# tail -2 /etc/passwd
mysql:x:500:500::/home/mysql:/sbin/nologin
u01:x:501:501::/home/u01:/bin/bash
[root@www ~]# ls -l /etc/{passwd,shadow} ##查看基本權限無變化
-rw-r--r-- 1 root root 982 2月 15 05:24 /etc/passwd
---------- 1 root root 666 1月 21 17:20 /etc/shadow
[root@www ~]# chattr -i /etc/{passwd,shadow} ##取消權限
[root@www ~]# lsattr /etc/{passwd,shadow} ##驗證,無i權限,能創建用戶
-------------e- /etc/passwd
-------------e- /etc/shadow
[root@www ~]# useradd u02
[root@www ~]# tail -2 /etc/passwd
u01:x:501:501::/home/u01:/bin/bash
u02:x:502:502::/home/u02:/bin/bash
[root@www ~]#