Linux服务器安全管理规范
一、 发行版本选择 centos7.9 最新稳定版本 二、系统更新
# 升级软件包及系统内核
$ sudo yum -y update
二、系统加固 阿里云安全加固文档:https://help.aliyun.com/knowledge_list/60787.html 1.1 账户控制 1.1.1 ROOT账户 1.1.1.1 禁止SSH登入系统
# Centos7系统禁止方法:编辑以下文件将除console之外行的全部注释 sudo sed -i '2,$s/^/#/g' /etc/securettyCentos6系统禁用方法:
sed -i 's//dev/tty[1-6]//dev/tty[1-1]/g' /etc/init/start-ttys.conf
sed -i 's//dev/tty[1-6]//dev/tty[1-1]/g' /etc/sysconfig/init
initctl stop tty TTY=/dev/ttyn{2,3,4,5,6}
1.1.2 普通账户 1.1.2.1 创建账号
roupadd -g 1000 admin && useradd -g admin -c "Administrator" -u 1000 -n -s /bin/bash admin
1.1.2.2 配置复杂性密码
strings /dev/urandom |tr -dc A-Za-z0-9 | head -c15; echo
passwd admin
1.1.2.3 提权(sudo支持免密)
vim /etc/sudoers
admin ALL=(ALL) NOPASSWD:ALL
1.1、密码复杂性设置
要求: 1、口令长度不得低于6位 2、须由数字、字母组成 3、并至少每90天进行强制更新 4、更新密码时不得使用最近5次以内重复使用的口令; 5、登录系统时连续5次口令输入错误,则应暂停该工号登录。 解决方法: 1、修改密码过期天数
vim /etc/login.defs PASS_MAX_DAYS 90 #密码最长过期天数 PASS_MIN_DAYS 7 #密码最小过期天数 PASS_MIN_LEN 8 #密码最小长度 PASS_WARN_AGE 14 #密码过期警告天数 注:以上配置对root用户不生效,需要执行如下命令配置
sudo chage -m 7 -M 90 -W 14 root
sudo chage -m 7 -M 90 -W 14 admin
密码过期时间查看方法:
[admin@Centos7 ~]$ sudo chage -l root
Last password change : Sep 14, 2019【最近一次修改密码的时间】
Password expires : Dec 13, 2019【密码过期时间】
Password inactive : never【密码失效时间】
Account expires : never【账户过期时间】
Minimum number of days between password change : 7【两次改变密码之间相距最小天数】
Maximum number of days between password change : 90【两次密码改变密码相距最大天数】
Number of days of warning before password expires : 15【密码过期前开始警告的天数】
2、设置密码复杂度
# 编辑/etc/security/pwquality.conf,把minlen(密码最小长度)设置为9-32位,把minclass(至少包含小写字母、大写字母、数字、特殊字符等4类字符中等3类或4类)设置为3或4。如:
minlen=10
minclass=3
设置密码复杂性
vim /etc/pam.d/system-auth
# CentOS 6
password requisite pam_cracklib.so retry=5 difok=3 minlen=6 ucredit=-1 lcredit=-1 dcredit=-1 enforce_for_root
# CentOS 7
password requisite pam_pwquality.so try_first_pass local_users_only minlen=15 ucredit=-1 lcredit=-1 dcredit=-1
# 在/etc/pam.d/password-auth和/etc/pam.d/system-auth中password sufficient pam_unix.so 这行的末尾配置remember参数为5-24之间,原来的内容不用更改,只在末尾加了remember=5。
修改结果如下:
sudo grep "password sufficient pam_unix.so" /etc/pam.d/{system-auth,password-auth}
/etc/pam.d/system-auth:password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
/etc/pam.d/password-auth:password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
minlen=8:将密码的最小长度设置为8个字符。
lcredit=-1 :将密码应包含的小写字母的最小数目设置为至少一个
ucredit=-1:将密码上的大写字母的最小数目设置为至少一个。
dcredit=-1 :将密码中包含的最小位数至少设置为一个
ocredit=-1:设置其他符号的最小数量,例如@,#、! $%等,至少要有一个密码
enforce_for_root :确保即使是root用户设置密码,也应强制执行复杂性策略。
3、 登入密码错误次数限制
vim /etc/pam.d/system-auth
auth required pam_tally2.so onerr=fail deny=5 unlock_time=600 even_deny_root root_unlock_time=90
deny:设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
unlock_time:设定普通用户锁定后,多少时间后解锁,单位是秒
root_unlock_time:设定root用户锁定后,多少时间后解锁,单位是秒
4、设置密码过期提醒
vim /etc/profile.d/password.sh
#!/bin/bash
for user in admin root ; do
RfcDate=`sudo chage -l ${user} | sed -n '2p' | sed 's/,//g' | awk -F": " '{print $NF}'`
Time=$[`date +%s --date "${RfcDate}"` - `date +%s`]
Date=`expr ${Time} / 60 / 60 / 24`
if [[ $Date < 15 ]]; then
echo -e "\033[31m 注意:!!! ${user}用户密码还有${Date}天过期,为了避免影响使用,请及时更新! \033[0m"
fi
done
1.2、修改默认端口 5、修改ssh默认端口为2226
#vim /etc/ssh/sshd_config
#Port 62345
6.设置umask值
使用命令 vi /etc/profile 修改配置文件,添加行 umask 027, 即新创建的文件属主拥有读写执行权限,同组用户拥有读和执行权限,其他用户无权限。
二、三权分立之普通账户(admin)设置
要求:root账号不能登入系统
1、创建普通用户账号:
groupadd -g 1000 admin && useradd -g admin -c "Administrator" -u 1000 -n -s /bin/bash admin
2、配置admin用户复杂性密码
strings /dev/urandom |tr -dc A-Za-z0-9 | head -c15; echo
passwd admin
3、给admin用户提权,使sudo支持免密
vim /etc/sudoers
admin ALL=(ALL) NOPASSWD:ALL
三、三权分立之审计账号(shenji)设置
https://blog.csdn.net/weixin_43279032/article/details/103974605
1、创建审计账号
groupadd -g 1001 shenji && useradd -g shenji -c "shenji" -u 1001 -n -s /bin/bash shenji
strings /dev/urandom |tr -dc A-Za-z0-9 | head -c15; echo | passwd --stdin shenji
2、设置审计账号权限
# 设置权限控制
setfacl -m u:shenji:rx /*
# 给shenji用户授权
vim /etc/sudoers
shenji ALL = (root) NOPASSWD: /usr/bin/cat, /usr/bin/less, /usr/bin/more, /usr/bin/tail, /usr/bin/head, /bin/chage
五、常见问题处理 1、普通用户(admin)无法使用docker命令
# 将admin用户加入docker组,然后重新打开终端
sudo usermod -G docker admin
2、普通用户(admin)无法使用nginx命令
sudo ln -s /usr/local/nginx1.10/sbin/nginx /usr/bin/nginx
sudo nginx -t
nginx: the configuration file /usr/local/nginx1.10/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx1.10/conf/nginx.conf test is successful
3、普通用户(admin)无法使用kubectl命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

浙公网安备 33010602011771号