账户安全
Linux用户账户概述:
- 用户账号
- 超级用户root
- 系统用户
- 普通用户
- 组账号
- 基本组(私有组----每一个私有组里面只有一个用户)
- 附加组(公共组----每一个用户都可以加入到这个组里面)
UID和GID:
- UID(User IDentity,用户标识号)
- GID(Group IDentity,组标识号)
超级用户root的UID和GID:0 (固定为0的!)(一般情况下,一旦服务器上存在了一个不叫root 但是UID 是0 的账户,那么就很有可能出现了安全性问题,一般就是被入侵了,他是一个后门账号 )
系统用户UID和GID:1-999 (Linux的发行版本不同 这个范围也不太相同)
普通用户的UID和GID:1000-65535
用户账号文件
/etc/passwd:存放用户账号名、UID GID 宿主目录 登录shell
/etc/shadow:存放用户账号名、密码、密码天数、账户失效日期等
查看/etc/passwd里面的内容:分别对应如下的信息。
字段1:用户账号的名称
字段2:用户密码字串或者密码占位符“x”
字段3:用户账号的UID号
字段4:所属基本组账号的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录shell信息 (可以看到上面的登录shell是/bin/bash 这个shell是允许我们远程登录的,但是一旦shell是/sbin/nologin的话,就是不允许远程登录的!)
查看/etc/shadow文件。
字段1:用户账号的名称
字段2:加密的密码字串信息
字段3:上次修改密码的时间(天数:从1970年1月1号到最近依次修改密码时间的间隔天数)
字段4:密码的最短有效天数,默认值为0
字段5:密码的最长有效天数,默认值为99999
字段6:提前多少天警告用户口令将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:账号失效时间,默认值为空
字段9:保留字段(未使用)
系统账号清理
将非登录用户的shell设为/sbin/nologin
usermod -s /sbin/nologin 用户名
锁定长期不使用的账号
- passwd -l 用户名
- usermod -L 用户名 (如果是解锁的话 参数就是-U 上面的命令就是-u)
删除无用的账号
userdel -r 用户名
锁定账号文件 passwd shadow
- chattr +i /etc/passwd /etc/shadow (+i 就是加锁 -i 就是去掉锁)
- chattr -i /etc/passwd /etc/shadow
- lsattr /etc/passwd /etc/shadow
检查后门账号:
awk -F: '$3==0{print $1}' /etc/passwd
(检查/etc/passwd中的第三列中等于0 的结果,然后将对应的第一列打印出来)
密码安全控制
- 设置密码有效期
- 修改/etc/login.defs文件中的"PASS_MAX_DAYS"的值(适用于新建用户,对于已经存在的用户不起作用)
- chage -M 30 用户名 (适用于已有用户)
- 要求用户下次登录时修改密码
- chage -d 0 zhangsan
历史命令限制
- 减少记录的命令条数:修改/etc/profile文件中的“HISTSIZE=”的值
- 注销时自动清空命令历史:修改用户宿主目录下的“.bash_logout”文件,在文件的末尾处追加2行
- history -c
- clear
终端自动注销
修改用户宿主目录下的“.bash_profile“文件,在文件末尾处追加1行:export TMOUT=时间(单位是秒)
su用户切换安全
限制使用su命令的用户
- 启用pam_wheel认证模块
- 修改”/etc/pam.d/su“文件,启用”auth required pam_wheel.so use_uid“
- 将允许使用su命令的用户加入wheel组
- gpasswd -a 用户名 wheel
sudo用户提权安全
查看除root账号意外,其他账号是否存在sudo权限
grep "ALL=(ALL)" /etc/sudoers | grep -v "#" |grep -v "^#"
这里一般就是出现的 root 和%wheel 出现其他的用户就需要额外的注意啦
配置sudo授权
记录格式:用户 主机名列表=命令程序列表
visudo
.....
%wheel ALL=NOPASSWD:ALL zhangsan localhost=/sbin/ifconfig lisi localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route User_Alias ADMINS=wangwu,zhaoliu (这里就是要实现多个用户具备相同权限,起的别名) Host_Alias SERVERS=filesvr,websvr,ftpsvr (共同享有的主机的范围) Cmnd_Alias NETCMD=/sbin/ifconfig,/sbin/route (可以操作的命令) ADMINS SERVERS=NETCMD (最终就是wangwu zhaoliu 都对filesvr,websvr,ftpsvr 可以配置ip 以及路由接入等)
用户弱口令检测
检测工具
John the Ripper 简称JR
一款密码分析工具,支持字典是的暴力破解
通过对shadow文件的口令分析,可以检测密码的强度
官方网站:http://www.openwall.com/john/
检测弱口令账号
- 需要获得Linux/Unix服务器的shadow文件副本 (cp /etc/shadow /root/shadow.txt)
- JR的默认密码字典文件为password.lst (./john /root/shadow.txt)
- 可通过”--wordlist=“指定其他密码字典文件的路径