实验一:系统账号的安全管理

1)账号清理

[root@www ~]# passwd -d u01

clip_image002

[root@www ~]# passwd -l u01

锁定用户 u01 的密码 。

passwd: 操作成功

clip_image004

[root@www ~]# passwd -S u01

u01 LK 2016-01-18 0 99999 7 -1 (密码已被锁定。)

clip_image006

[root@www ~]# passwd -u u01

解锁用户 u01 的密码 。

passwd: 警告:未锁定的密码将是空的。

passwd: 不安全的操作(使用 -f 参数强制进行该操作)

clip_image008

[root@www ~]# passwd -S u01

u01 LK 2016-01-18 0 99999 7 -1 (密码已被锁定。)

clip_image010

[root@www ~]# passwd -u u01 -f

解锁用户 u01 的密码 。

passwd: 操作成功

clip_image012

小脚本管理系统用户:

脚本一:结合计划任务防止系统用户登录系统

[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

clip_image014

测试:

chsh -s /bin/bash ftp

grep ftp /etc/passwd ##验证修改

clip_image016

chmod +x chsh_1-499.sh

./chsh_1-499.sh

grep ftp /etc/passwd ##已经修复

clip_image018

[root@www ~]# echo "1 2 * * 7 /root/bin/chsh_1-499.sh" >>/var/spool/cron/root ##设置计划任务

[root@www ~]# crontab -l

clip_image020

脚本二:结合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." linuxfan360@163.com

else

echo "user is ok."

fi

clip_image022

clip_image024

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" linuxfan360@163.com

else

echo "passwd is ok."

fi

done

clip_image026

clip_image028

3)优化账号及密码安全

a.优化新建账号默认登录shell

sed -i 's@/bin/bash@/sbin/nologin@g' /etc/default/useradd

useradd u03

tail -1 /etc/passwd ##u03的shell为非交互式

clip_image030

chsh -s /bin/bash u03 ##当需要u03登录时使用,作用与usermod -s 一样

clip_image032

b.优化密码使用时间

vi /etc/login.defs

PASS_MAX_DAYS 60

PASS_MIN_DAYS 2

PASS_MIN_LEN 8 ##密码长度最小值

PASS_WARN_AGE 5 ##密码过期提醒时间

:wq

clip_image034

useradd u04 ##修改后创建的账号

tail -1 /etc/shadow ##验证

clip_image036

针对已经建立用户:

chage -m 2 u03 ##密码使用最小值

chage -M 60 u03 ##密码使用最大值

chage -W 5 u03 ##密码过期提醒时间,在最大值前

chage -d 0 u01 ##下次登录时修改密码

tail -2 /etc/shadow

clip_image038

clip_image040

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

clip_image042

su - u01 ##进入u01

passwd #修改密码验证

clip_image044

clip_image046

d.设置登录失败次数锁定账号

vi /etc/pam.d/system-auth

5行:

auth required pam_tally2.so deny=5

11行:

auth required pam_tally2.so

:wq

clip_image048

验证需要在tty终端

pam_tally2 -u u01 ##查看登录失败的次数

clip_image050

clip_image052

pam_tally2 -r -u u01 ##重置u01,解锁

clip_image054

clip_image056

e.修改密码加密方法

MD5与sha512加密算法:

authconfig --test |grep hashing ##查看当前系统的加密算法

clip_image058

authconfig --passalgo=sha512 --update ##修改系统的加密算法为sha512

clip_image060

vi /etc/pam.d/system-auth ##查看验证

:q

clip_image062

3.历史命令

a.清楚历史命令

rm -rf ~/.bash_history

ln -s /dev/null ~/.bash_history

echo 'history -c ' >> ~/.bash_logout

clip_image064

b.设置记录历史的数量

history >my.hist ##导出历史命令

export HISTSIZE=100 ##临时设置记录历史命令的数量

sed -i 's/HISTSIZE=1000/HISTSIZE=200/g' /etc/profile

source /etc/profile

echo $HISTSIZE ##验证

clip_image066

c.超时注销

echo 'export TMOUT=300' >>/etc/profile ##设置300秒后注销

source /etc/profile

unset TMOUT ##取消变量

clip_image068

5.锁定文件:练习

[root@www ~]# man chattr

clip_image070

[root@www ~]# chattr +i /etc/{passwd,shadow} ##锁定文件

clip_image072

[root@www ~]# lsattr /etc/{passwd,shadow} ##查看扩展权限

----i--------e- /etc/passwd

----i--------e- /etc/shadow

clip_image074

[root@www ~]# useradd u02 ##无法创建用户也无法修改密码

useradd: cannot open /etc/passwd

clip_image076

[root@www ~]# echo 123123 |passwd --stdin u01

更改用户 u01 的密码 。

passwd: 鉴定令牌操作错误

clip_image078

[root@www ~]# tail -2 /etc/passwd

mysql:x:500:500::/home/mysql:/sbin/nologin

u01:x:501:501::/home/u01:/bin/bash

clip_image080

[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

clip_image082

[root@www ~]# chattr -i /etc/{passwd,shadow} ##取消权限

[root@www ~]# lsattr /etc/{passwd,shadow} ##验证,无i权限,能创建用户

-------------e- /etc/passwd

-------------e- /etc/shadow

clip_image084

[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 ~]#

clip_image086