Linux服务器安全加固设置
Linux不需要的服务
服务器安全加固设置
密码安全
设置密码
echo "用户名:密码" | chpasswd
或者:
设置密码策略
进入配置文件:vi /etc/login.defs
- PASS_MAX_DAYS 730 # 密码最长有效期
- PASS_MIN_DAYS 0 # 密码修改之间最小天数
- PASS_MIN_LEN 8 # 密码长度
- PASS_WARN_AGE 15 # 密码失效前多少天通知用户修改密码
对密码强度进行设置
进入配置文件:vi /etc/pam.d/password-auth
#password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1
- difok= 定义新密码中必须要有几个字符和旧密码不同
- minlen= 新密码的最小长度
- ucredit= 新密码中可以包含的大写字母的最大数目。-1:至少一个
- lcredit= 新密码中可以包含的小写字母的最大数
- dcredit= 新密码中可以包含的数字的最大数目
注:这个密码强度的设定只对"普通用户"有限制作用,root用户无论修改自己的密码还是修改普通用户的时候,不符合强度设置依然可以设置成功
用户安全
用户账户管理
-
userdel -r 用户名
# 删除不必要的账号 -
passwd -l 用户名
# 锁定不必要的账号 -
awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
# 查看具有登录权限的用户 -
awk -F: '($3==0)' /etc/passwd
# 查看UID为0的账号,UID为0的用户会自动切换到root用户,所以危害很大 -
awk -F: '($2=="")' /etc/shadow
# 查看空口令账号,如果存在空口令用户的话必须设置密码
普通用户SSH登录
编辑文件 vi /etc/ssh/sshd_config
- 普通用户ssh权限
给普通用户增加ssh权限,可以多个,空格分开
AllowUsers bsoft,AllowGroups wheel
拒绝ssh的用户/用户组:
DenyUsers username,DenyGroups groupname
优先级: DenyUsers > AllowUsers > DenyGroups > AllowGroups
- 禁止用root登录
PermitRootLogin no
- 加载配置,使其生效:
systemctl restart sshd
或者service restart sshd
PS:
允许user3使用ssh:echo "AllowUsers user3" >> /etc/ssh/sshd_config
阻止user1使用ssh:echo "DenyUsers user1" >> /etc/ssh/sshd_config
限制su命令切换到root用户,看需求配置
在linux中,有一个默认的管理组 wheel。在实际生产环境中,即使我们有系统管理员root的权限,也不推荐用root用户登录。一般情况下用普通用户登录就可以了,在需要root权限执行一些操作时,再su登录成为root用户。但是,任何人只要知道了root的密码,就都可以通过su命令来登录为root用户,这无疑为系统带来了安全隐患。所以,将普通用户加入到wheel组,被加入的这个普通用户就成了管理员组内的用户。然后设置只有wheel组内的成员可以使用su命令切换到root用户。
比如,我们将普通用户xie加入wheel组。
usermod -G wheel xie
PS:从用户组移除用户-gpasswd -d username usergorup
然后,修改配置文件 /etc/pam.d/su ,将这行的注释给去掉
del.png
然后去 /etc/login.defs 末尾加入 SU_WHEEL_ONLY yes 即可。
add.png
对用户的登录次数进行限制
编辑文件: vi /etc/pam.d/sshd
auth required pam_tally2.so deny=5 unlock_time=150 even_deny_root root_unlock_time=300
- even_deny_root 也限制root用户
- deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
- unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
- root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;
相关命令:
- pam_tally2 查看被锁定的用户
- pam_tally2 --reset -u username 将被锁定的用户解锁
数据安全
对重要文件锁定
chattr:改变文件或目录的扩展属性
- lsattr 查看文件目录的扩展属性
-
chattr +i /etc/passwd /etc/shadow
//增加属性 -
chattr -i /etc/passwd /etc/shadow
//移除属性 lsattr /etc/passwd /etc/shadow
系统日志以及建立日志服务器
tail -f /var/log/messages # 程序日志
tail -f /var/log/secure # 登陆信息
建立日志服务器:详情见文末参考文档。
重要服务器可以将日志定向传输到指定服务器进行分析。
数据备份
略
其他
安全组:在控制台设置
设置账户历史命令、超时断连
编辑文件:vi /etc/profile
HISTSIZE=1000 # 历史命令条数 history
TMOUT=600 # 超时自动断连,单位为秒
加载配置:source /etc/profile