一、身份识别:
1.默认账户安全:
删除或锁定不用需要的默认账户:
执行命令:
#cat /etc/passwd#/cat /etc/shadow
查看账户、口令文件、与系统管理员确认不必要的账户。对于一些保留的系统伪账户如:bin,sys,adm,uucp,lp,nuucp,hpdb,www,daemon等可根据需求锁定登陆
加固方法:
使用命令passwd -l <用户名>,锁定不必要的账号。
使用命令passwd -u <用户名>,解锁需要恢复的账号
使用命令userdel -r <用户名>,删除不用的默认账号
修改高危用户默认shell变量:
打开 /etc/passwd 文件, 你将看到所有用户及其使用的 Shell, 会有很多行类似这样的内容, 每行是一个用户.sr:x:1000:1000:ghw:/home/ghw:/bin/sh这里只需要件 /bin/sh 改成 /bin/bash 即可.sr:x:1000:1000:ghw:/home/ghw:/bin/bash
2.账号及权限分配:
不同用途设置不同权限
Linux中用户的分类
所有者(u) 同组用户(g) 其他人(o)
linu中文件权限
读(r) 写(w) 执行(x) 没有权限(-)
文件权限详情
-rw-r--r--. 2 root root 11 Jun 3 01:32 bb.text drwxr-xr-x. 2 root root 4096 Jun 2 07:46 b 第1位(d 或者 -):d代表这是个目录文件,- 则表示这是个普通文件,还有不常碰到的有p(pipe管道文件)、s(socket套接字文件)、 l(link连接文件)、 c(char字符文件)、b(block块文件) 2~4位(代表u=user):所有者权限 5~7位(代表g=group):同组用户权限 8~11位(o=other):其他人权限 2:该文件的链接个数,要和ln ln -s source target root root:文件所属者 文件所属组 11:文件大小 (Jun 3 01:32)最后修改时间
修改权限:
格式:chmod [添加或者删除权限] file
给文件添加或删除执行权限
方式一:通过字符修改
chmod o+w test.txt
添加权限:+
删除权限:-
chmod o+w,g+w test.txt:给其他人和同组用户写权限
chmod a+w test.txt:给所有用户
方式二:3位8进制表示
rw-r--r--:(110 100 100)2 == 644
chmod 644 test.txt
rwxrwxrwx:(111 111 111)2 == 777
chmod 777 test.txt
修改文件所属用户和所属组:
chown username:groupName file
chown :groupName file
chown username: file
-R:递归修改所属用户和所属组
3.账号登陆限制
限制登陆次数,锁定账户,主要为了防止暴力破解用户密码
1.修改PAM配置
限制终端方式登录:
vim vim /etc/pam.d/login #%PAM-1.0 #添加如下一行 auth required pam_tally2.so deny=3 unlock_time=100 even_deny_root root_unlock_time=300 deny: 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户 unlock_time: 设定普通用户锁定后,多少时间后解锁,单位是秒 root_unlock_time: 设定root用户锁定后,多少时间后解锁,单位是秒
限制ssh方式登录:
vim /etc/pam.d/sshd #%PAM-1.0 #添加如下一行 auth required pam_tally2.so deny=3 unlock_time=100 even_deny_root root_unlock_time=300 注: 由于openssh版本区别,有些版本在/etc/pam.d/sshd添加是不生效的,需要修改ssh配置文件开启PAM模块 vim /etc/ssh/sshd_config #修改并取消注释 UsePAM yes 重启服务 systemctl restart sshd.service #登录成功后重置次数 account required pam_tally2.so
2.PAM命令扩展
查看用户登录失败的次数:
pam_tally2 -u user 解锁aihuidi用户 pam_tally2 -r -u user
4.空口令账户设置
禁止SSH空密码用户登录
加固方法:
编辑文件/etc/ssh/sshd_config,将PermitEmptyPasswords配置为no:
5.删除除root外UID为0的账户
理论依据:
任何UID为0的帐户都具有系统上的超级用户特权,只有root账号的uid才能为0
配置要求:
除root之外的其他账号UID不能为0
检查步骤
执行以下命令查看系统中uid为0的账号
#/bin/cat /etc/passwd | /bin/awk -F: '($3 == 0) { print $1 }'
合规标准
除root外无其他uid为0的账号则合规,否则不合规。
加固方案
1、执行备份
#cp –p /etc/passwd /etc/passwd.bak #cp –p /etc/shadow /etc/shadow.bak #cp –p /etc/group /etc/group.bak
2、删除除root外其他uid为0的账号【删除之前应确保账号未被其他业务使用】
#userdel username
5.账户口令复杂度及定期更换
1). 禁止使用旧密码
vi /etc/pam.d/system-auth找到同时有 “password” 和 “pam_unix.so” 字段并且附加有 “remember=5” 的那行,它表示禁止使用最近用过的5个密码(己使用过的密码会被保存在 /etc/security/opasswd 下面)。
password sufficient pam_unix.so sha512 shadow nullok try_firstpass use_authtok remember=5
2.设置密码最短长度
vi /etc/pam.d/system-auth
找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “minlen=10” 的那行,它表示最小密码长度为(10 - 类型数量)。这里的 “类型数量” 表示不同的字符类型数量。PAM 提供4种类型符号作为密码(大写字母、小写字母、数字和标点符号)。如果你的密码同时用上了这4种类型的符号,并且你的 minlen 设为10,那么最短的密码长度允许是6个字符。
password requisite pam_cracklib.so retry=3 difok=3 minlen=10
3.设置密码复杂度
vi /etc/pam.d/system-auth 找到同时有 “password” 和 “pam_cracklib.so” 那行. # retry 允许重试3次 # difok=N:新密码必需与旧密码不同的位数 difok=3 新密码必须与旧密码有3位不同 # minlen 最小位数 # ucredit 大写字母位数 # lcredit 小写字母位数 # dcredit=N: N >= 0:密码中最多有多少个数字;N < 0密码中最少有多少个数字. dcredit=-1 密码中最少有1个数字 # ocredit=N:特殊字母的个数 ocredit=-1 密码中至少有1个特殊字符 # 它表示密码必须至少包含一个大写字母(ucredit),两个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit)。 password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
centos7如何继续使用pam_cracklib模块检验密码复杂度
由于Centos7默认取消了对pam_cracklib模块的使用,配置文件/etc/pam.d/system-auth中没有pam_cracklib.so相关的条目。
有同学直接在/etc/pam.d/system-auth文件末尾添加“password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=16 ucredit=-1 lcredit=-1 ocredit=-1 dcredit=-1” ,然后发现实际上密码复杂度策略并没有生效。
经测试是因为位置不对,把上面的语句添加在“pam_pwquality.so”所在行的前面,即可使策略生效。如下所示:
4.设置密码过期期限
vi /etc/login.defs PASSMAXDAYS 99999 #密码的最大有效期, 99999:永久有期 PASSMINDAYS 0 #是否可修改密码,0可修改,非0修改密码后下一次修改需间隔多少天后可修改 PASS_MIN_LEN 5 #密码最小长度,使用pam_cracklib module,该参数不再有效 PASSWARNAGE 7 #密码失效前多少天在用户登录时通知用户修改密码
5.linux 禁止普通用户su到root用户
为了更进一步加强系统的安全性,有必要建立一个管理员的 组,只允许这个组的用户来执行“su -”命令登录为root用户,而让其他组的用户即使执行“su -”、输入了正确的root密码,也无法登录为root用户。在UNIX和Linux下,这个组的名称通常为“wheel”
禁止非whell组用户切换到root
1、 修改/etc/pam.d/su配置
vi/etc/pam.d/su auth required pam_wheel.so group=wheel --将auth改行没有注释掉普通用户就没办法切换到root #auth required pam_wheel.so group=wheel --将#auth改行注释掉普通用户就可以切换到root
2、修改/etc/login.defs文件
echo “SU_WHEEL_ONLY yes” >> /etc/login.defs ← 添加语句到行末以上操作完成后,可以再建立一个新用户,然后用这个新建的用户测试会发现,没有加入到wheel组的用户,执行“su -”命令,即使输入了正确的root密码,也无法登录为root用户
3、通过shiran用户登录尝试切换到root
su - root 即使密码输入正确也无法切换
4: 把root用户加入wheel组再尝试切换,可以切换
usermod -G wheel shiran ← 将普通用户woo加在管理员组wheel组中 su - shiran
su - root ← 这时候我们看到是可以切换了