实验一:系统账号的安全管理
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 ~]#