文章目录
1、账号安全基本措施
1.1 系统账号操作
将用户设置为无法登录
#nologin的修改
[root@localhost ~]# tail /etc/passwd
#查看lisi的属性
[root@localhost ~]# chsh -s /sbin/nologin lisi
#修改lisi的shell属性
Changing shell for lisi.
Shell changed.
[root@localhost ~]# tail -1 /etc/passwd
#查看lisi的属性
lisi:x:1001:1001::/home/lisi:/sbin/nologin
锁定用户
[root@localhost ~]# passwd -l zhaosi
锁定用户 zhaosi 的密码 。
passwd: 操作成功
[root@localhost ~]# su zhangsan
[zhangsan@localhost root]$ su zhaosi
密码:
su: 鉴定故障
[root@localhost ~]# passwd -u zhaosi
解锁用户 zhaosi 的密码。
passwd: 操作成功
[root@localhost ~]# passwd -u zhaosi
解锁用户 zhaosi 的密码。
passwd: 操作成功
[root@localhost ~]# su zhangsan
[zhangsan@localhost root]$ su zhaosi
密码:
[zhaosi@localhost root]$
删除账户
userdel -r 用户名
家目录
家目录 无主文件 前主人的uid
锁定配置文件
chattr
-
-a 让文件或目录仅供附加用途。只能追加
-
-i 不得任意更动文件或目录
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
#加i
[root@localhost ~]# useradd liqi
useradd:无法打开 /etc/passwd
[root@localhost ~]# lsattr /etc/passwd /etc/shadow
----i----------- /etc/passwd
----i----------- /etc/shadow
chattr -i /etc/passwd /etc/shadow
1.2 密码安全控制
1.2.1 设置密码的规则
对于新建的用户可以修改 /etc/login.defs 文件里的内容来设置密码规则
[root@localhost ~]# vim /etc/login.defs
#适用于修改后生效后修改的用户
--------------------------------
25 PASS_MAX_DAYS 99999
26 PASS_MIN_DAYS 0
27 PASS_MIN_LEN 5
28 PASS_WARN_AGE 7
[root@localhost ~]# tail -5 /etc/shadow
#修改密码有效期限
对于已有的用户可以使用chage命令
chage
chage [选项] 用户名
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
[root@localhost ~]# chage -d 0 zhangsan
#强制张三下一次登录一定修改密码(密码符合复杂性要求)
[root@localhost ~]#chage -M 30 lisi
#设置密码有效期为30天
[root@localhost ~]#cat /etc/shadow|tail -1
lisi:!!:19055:0:30:7:::
第5字段
man 5 shadow
1.3 命令历史
Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。 Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通 过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。例如,可以设 置最多只记录 200 条历史命令。
#可以使用以下命令临时清除历史命令
history -c
clear
[root@localhost ~]#vim /etc/profile
.............................
export HISTSIZE=200
[root@localhost ~]#source /etc/profile
###退出清空密码#############
[root@localhost ~]#vim .bash_logout
#退出后清除
# ~/.bash_logout
echo " " >~/.bash_history
#一定要加空格
[root@localhost ~]#vim .bashrc 自对自己生效
#开机后清除
echo " " >~/.bash_history
bash windows 桌面
bash
#设置超时时间
[root@localhost ~]# vi /etc/profile 对所有用户生效
.................................
export TMOUT=60
[root@localhost ~]# source /etc/profile
1.4 切换用户
su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令
格式
su [options...] [-] [user [args...]]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换
su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换
说明:root su至其他用户无须密码;非root用户切换时需要密码
注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。
su 与 su-
即有 - 选项,切换用户身份更彻底;反之,只切换了一部分,这会导致某些命令运行出现问题或错误(例如无法使用 service 命令)。
示例:
[zhangsan@localhost ~]$ pwd
/home/zhangsan
[zhangsan@localhost ~]$ su
密码:
[root@localhost zhangsan]# pwd
/home/zhangsan
[zhangsan@localhost ~]$ su -
密码:
上一次登录:二 7月 13 10:24:14 CST 2021pts/1 上
[root@localhost ~]# pwd
/root
限制使用su命令的用户
[root@localhost ~]# gpasswd -a lisi wheel
#将用户加入 wheel组 root
[root@localhost ~]#vim /etc/pam.d/su
#开启服务
#auth required pam_wheel.so use_uid
vim /etc/pam.d/su
2 # auth sufficient pam_ rootok.so
6 #auth required pam_ wheel.so use_ _uid
a)以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
b)两行都注释也是允许所有用户都能使用su命令,但root'下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)
c)如果只开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令
d)如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。
1.5 sudo
1.5.1 sudo的组成
包:sudo
配置文件:/etc/sudo.conf
执行授权命令:/usr/bin/sudo
时间戳文件:/var/db/sudo
日志文件:/var/log/secure
授权规则配置文件:
/etc/sudoers
#修改文件
10
20
/etc/sudoers.d/*.conf 子配置
zhangsan
例子:修改权限
[root@localhost ~]#vim /etc/sudoers
[root@localhost ~]#visudo
#语法检查
visudo -c
#检查语法
1.5.2 sudo命令
sudo命令
ls -l /usr/bin/sudo
sudo -i -u wang 切换身份功能和 su 相似,但不一样,sudo必须提前授权,而且要输入自已的密码
sudo [-u user] COMMAND
-V 显示版本信息等配置信息
-u user 默认为root
-l,ll 列出用户在主机上可用的和被禁止的命令
-v 再延长密码有效期限5分钟,更新时间戳
-k 清除时间戳(1970-01-01),下次需要重新输密码
-K 与-k类似,还要删除时间戳文件
-b 在后台执行指令
-p 改变询问密码的提示符号
示例:-p "password on %h for user %p: "