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/securetty

Centos6系统禁用方法:

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
posted @ 2025-04-07 14:18  没有猫的猫奴  阅读(41)  评论(0)    收藏  举报