Linux服务器安全加固系列(持续完善...)

 

一、检查是否存在除root之外UID为0 的用户

复制代码
 1 检查步骤:
 2 执行以下命令查看系统中uid为0的账号。
 3 方法一:#cat /etc/passwd |awk -F: '($3 == 0) { print $1 }'
 4 方法二:#awk -F : '($3 == 0) {print $1}' /etc/passwd
 5 
 6 合规标准:
 7 除root外无其他uid为0的账号则合规,否则不合规。
 8 
 9 加固方案:
10 #执行备份
11 cp -p /etc/passwd /etc/passwd.bat
12 cp -p /etc/shadow /etc/shadow.bat
13 cp -p /etc/group /etc/group.bat
14 #删除除root以外uid为0的账户(删除前应确保账号未被其他业务使用)
15 userdel usename
复制代码

 

检查是否按用户分配账号

复制代码
 1 检查步骤:
 2 1.使用如下命令查看文件/etc/login.defs,确认文件中变量UID_MIN和UID_MAX的值。
 3 #grep -v ^# /etc/login.defs |grep "^UID_MIN"|awk '($1="UID_MIN"){print $2}'
 4 #grep -v ^# /etc/login.defs |grep "^UID_MAX"|awk '($1="UID_MAX"){print $2}'
 5 2.使用以下命令查看系统中是否存在用户id>=UID_MIN且<=UID_MAX的用户。
 6 #up_uidmin=`(grep -v ^# /etc/login.defs |grep "^UID_MIN"|awk '($1="UID_MIN"){print $2}')`
 7 #up_uidmax=`(grep -v ^# /etc/login.defs |grep "^UID_MAX"|awk '($1="UID_MAX"){print $2}')`
 8 #echo "users="`cat /etc/passwd|awk -F: '{if( $3>='$up_uidmin' && $3<='$up_uidmax' ) {print $1":"$3}}'`
 9 
10 合规标准:
11 存在用户id>=UID_MIN且<=UID_MAX的用户则合规,否则不合规。
12 
13 加固方案:
14 #创建用户
15 #useradd username    #创建账号
16 #passwd  username    #设置密码修改权限
复制代码

 

三、检查系统中是否存在空密码账户

复制代码
 1 检查步骤:
 2 执行以下命令查看系统中是否存在空密码账户
 3 awk -F : '($2 == "") {print $1}' /etc/shadow
 4 
 5 合规标准:
 6 执行上面命令后显示为空则合规。否则不合规,即在/etc/shadow文件中第二项不能为空。
 7 
 8 加固方案:
 9 1.执行备份
10 cp -p /etc/shadow /etc/shadow.bat
11 cp -p /etc/passwd /etc/passwd.bat
12 cp -p /etc/group /etc/group.bat13 
13 2.设置密码
14 passwd username
15 
16 测试:
17 1.创建用户:
18 useradd aaa (此时aaa没有设置密码,但还不能使用空密码登录)
19 2.使用root账户清除aaa密码
20 passwd -d aaa
21 3.再次使用如下命令检查
22 awk -F : '($2 == "") {print $1}' /etc/shadow (此时发现显示不为空了)
复制代码

 

四、检查用户口令设置

复制代码
 1 检查步骤:
 2 执行以下命令检查以下参数
 3        PASS_MAX_DAYS     #密码最长过期天数参考值90
 4        PASS_MIN_DAYS      #密码最小过期天数参考值0
 5        PASS_MIN_LEN     #密码最小长度参考值8
 6        PASS_W ARN_AGE     #密码过期警告天数参考值7
 7 
 8 合规标准:
 9 密码设置符合策略则合规。否则不合规。
10 
11 加固方案:
12 1.执行备份
13         cp -p /etc/login.defs /etc/login.defs.bat
14 2.修改如下参数
15        PASS_MAX_DAYS #密码最长过期天数参考值90
16        PASS_MIN_DAYS  #密码最小过期天数参考值0
17        PASS_MIN_LEN #密码最小长度参考值8
18        PASS_W ARN_AGE #密码过期警告天数参考值7
复制代码

 

五、设置用户密码的强度

复制代码
 1 检查步骤:
 2 执行以下命令修改参数
 3 vi /etc/pam.d/sysetm-auth
 4      difok= :此选项用来定义新密码中必须要有几个字符和旧密码不同
 5      minlen=:此选项用来设置新密码的最小长度
 6      ucredit= :此选项用来设定新密码中可以包含的大写字母的最大数目。-1 至少一个
 7      lcredit=:此选项用来设定新密码中可以包含的小写字母的最大数目
 8      dcredit=:此选项用来设定新密码中可以包含的数字的最大数目
 9      ocredit=:此选项用来设定新密码中可以包含的标点符号的最大数目
10  
11 合规标准:
12 新密码不能和旧密码相同,新密码至少8位,同时包含大小写字母、数字和符号则合规。否则不合规
13 
14 加固方案:
15 1.执行备份
16         cp -p /etc/pam.d/sysetm-auth /etc/pam.d/sysetm-auth.bat
17 2.修改参数,在文件中找到开头为如下字样的内容:
18    password requisite  pam_cracklib.so
19  将其修改为:
20    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 ocredit=-1
21 注:这个密码强度的设定只对普通用户有限制作用,root用户无论修改自己的密码还是修改普通用户的时候,不符合强度设置依然可以设置成
复制代码

 

六、对用户的登录次数进行限制

复制代码
 1 检查步骤:
 2 执行以下命令修改文件中的参数
 3 vi  /etc/pam.d/sshd
 4 
 5 合规标准:
 6 对用户登录次数进行限制,当普通用户输入密码错误达到3次锁定150秒,root用户输入密码错误达到3次锁定300秒则合规。否则不合规。
 7 注:锁定的意思即使密码输入正确也无法登录成功。
 8 
 9 加固方案:
10 1.执行备份
11        cp -p /etc/pam.d/sshd /etc/pam.d/sshd.bat
12 2.设置如下
13        auth required pam_tally2.so deny=3 unlock_time=150         
14        even_deny_root root_unlock_time300
复制代码

 

检查是否删除与设备运行、维护等工作无关的账号

复制代码
 1 检查步骤:
 2 #cat /etc/shadow |sed '/^\s*#/d' |awk -F: '($2!~/^*/) && ($2!~/^!!/) {print $1}'
 3 
 4 加固方案:
 5 #删除用户
 6 #userdel username
 7 #锁定用户
 8 #passwd -l username      #锁定用户,只有具备超级用户权限的使用者方可使用。
 9 #passwd –d username      #解锁用户,解锁后原有密码失效,登录设置新密码才能登录。
10 #passwd -u username      #解锁用户后,原密码仍然有效。
11 #修改用户shell域为/bin/false
12 #usermod -s /bin/false username  #命令来更改相应用户的shell为/bin/false,其中[name]为要修改的具体用户名。
复制代码

 

八、禁止root用户远程登录

复制代码
 1 检查步骤:
 2 执行以下命令修改文件中的参数
 3 vi   /etc/ssh/sshd_config
 4 修改参数为 PermitRootLogin no
 5 
 6 合规标准:
 7 root用户无法远程登录(如CRT登录)则合规。否则不合规
 8 
 9 加固方案:
10 1.执行备份
11       cp -p /etc/ssh/sshd_config  /etc/ssh/sshd_config.bat
12 2.修改如下
13       进入/etc/ssh/sshd_config文件
14       修改参数:PermitRootLogin no
复制代码

 

九、设置历史命令保存条数和账户超时时间

复制代码
 1 检查步骤:
 2 执行以下命令修改文件中的参数
 3 vi   /etc/profile
 4 修改参数为
 5     HISTSIZE=100
 6     TMOUT=600
 7 
 8 合规标准:
 9 设置历史命令保存条数和账户超时时间,这个历史条数和超时时间不要太大,越小越好
10 
11 加固方案:
12 1.执行备份
13      cp -p /etc/profile  /etc/profile.bat
14 2.修改如下
15      进入/etc/profile文件
16      修改参数:
17      HISTSIZE=100
18      TMOUT=600    
复制代码

 

十、设置只有指定用户组才能使用su命令切换到root用户

复制代码
 1 检查步骤:
 2 将普通用户加入wheel组:
 3 usermod -G wheel linux
 4 执行以下命令编辑文件
 5 vi   /etc/pam.d/su
 6 将下面这行注释去掉
 7 auth    required   pam_wheel.so   use_uid
 8 执行以下命令编辑文件
 9 vi /etc/login.defs
10 末尾加入SU_WHEEL_ONLY yes 即可。
11 
12 合规标准:
13 只有指定用户才能使用su命令切换到root用户。
14 
15 加固方案:
16 1.执行备份
17      cp -p /etc/pam.d/su  /etc/pam.d/su.bat
18 2.修改如下
19 将普通用户加入wheel组:usermod -G wheel linux
20 执行以下命令编辑文件:vi   /etc/pam.d/su
21 将下面这行注释去掉:auth    required   pam_wheel.so   use_uid
22 执行以下命令编辑文件:vi /etc/login.defs
23 末尾加入SU_WHEEL_ONLY yes 即可。
复制代码

 

十一、对Linux账户进行管理

复制代码
 1 检查步骤:
 2     1.查看具有登录权限的用户:
 3        # awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
 4     2.查看UID为0的账号,UID为0的用户会自动切换到root用户,所以危害很大
 5        # awk -F: '($3==0)' /etc/passwd
 6     3.查看空口令账号,如果存在空口令用户的话必须设置密码
 7        #awk -F: '($2=="")' /etc/shadow
 8 
 9 加固方案:
10      1.删除不必要的账户
11            使用命令 userdel -r usename
12      2.锁定不必要的账户
13             使用命令 passwd -l username
14 注意:username是删除或锁定的账户名称
复制代码

 

十二、停止或禁用与系统无关的服务

复制代码
 1 检查方法:
 2   查看当前init级别:
 3         who -r
 4         runlevel
 5   查看所有服务的状态:
 6        chkconfig --list
 7 
 8 加固方法:
 9    1.备份方法:在改之前记录需要关闭服务的名称
10    2. 设置服务在个init级别下开机是否启动
11       chkconfig --level <服务名> on|off|reset
复制代码

 

十三、对重要文件进行锁定,即使是root'用户也无法删除

复制代码
 1 设置要求:
 2     根据公司的业务需求,觉得哪些文件比较重要,就设置
 3 
 4 加固方案:
 5       chattr  改变文件或目录的扩展属性
 6       lsattr  查看文件目录的扩展属性
 7 操作命令:
 8      chattr  +i  /etc/passwd /etc/shadow                 //增加属性
 9      chattr  -i  /etc/passwd /etc/shadow                 //移除属性
10      sattr  /etc/passwd /etc/shadow                      //查看修改后属性
复制代码

 

十四、检查密码重复使用次数限制

复制代码
 1 检查步骤:
 2     查看文件/etc/pam.d/system-auth,是否有配置口令重复使用次数限
 3 
 4 合规标准:
 5     口令重复使用次数限制不小于5次则合规,否则不合规。
 6     对于采用静态口令认证技术的设备,应配置设备,使用户不能重复使用最近5次(含5次)内已使用的口令。
 7 
 8 加固方案:
 9     1、配置文件备份
10         cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
11     2、创建文件/etc/security/opasswd用于存储旧密码,并设置权限。
12         touch /etc/security/opasswd
13         chown root:root /etc/security/opasswd
14         chmod 600 /etc/security/opasswd
15     3、编辑文件/etc/pam.d/system-auth,找到类似行password  sufficient pam_unix.so,在行末尾增加remember=5,中间以空格隔开.如果没有则新增。
16         password sufficient pam_unix.so remember=5
复制代码

 

十五、检查是否设置SSH登录前警告Banner

复制代码
 1 检查步骤:
 2   查看文件/etc/ssh/sshd_config,检查是否存在如下配置:banner <file_path>,且<file_path>内容不为空。
 3 
 4 合规标准:
 5 ssh服务器未启用或者服务启用但设置了ssh banner警示信息则合规,否则不合规。
 6    注:横幅被用来警告用户连接特定站点的策略。为你的网站提供适当的警告横幅。
 7     SSH登录时显示警告信息,在登录成功前不泄漏服务器信息。
 8 
 9 加固方案:
10 1、编辑文件/etc/ssh/sshd_config文件,修改Banner参数的值如下(如不存在则新增):
11     Banner /etc/ssh_banner
12 2、执行如下命令创建ssh banner警示信息文件:
13     touch /etc/ssh_banner
14     chmod 644 /etc/ssh_banner
15     echo "Authorized only. All activity will be monitored and reported" > /etc/ssh_banner
16 可根据实际需要修改该文件的内容。
17 3、重启sshd服务:
18     systemctl restart sshd

*加固方案二:

  配置ssh服务的打开显示提示信息选项,默认为打开。 编辑提示语文件/etc/motd,默认该文件为空。 删除原来的提示,加入需要的内容即可。

复制代码

 

十六、检查重要目录或文件权限设置

复制代码
 1 检查步骤:
 2     使用以下命令查看如下文件的权限设置:
 3     #ls -lL /etc/passwd 2>/dev/null
 4     #ls -lL /etc/shadow 2>/dev/null
 5     #ls -lL /etc/group 2>/dev/null
 6 
 7 合规标准:
 8     1、/etc/passwd文件的权限小于等于644
 9     2、/etc/shadow文件的权限小于等于400
10     3、/etc/group文件的权限小于等于644
11     以上条件同时满足则合规,否则不合规。
12 配置要求:
13     在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。
14 
15 加固方案:
16     #赋予用户相关账号文件最小权限
17         #chmod 644 /etc/passwd
18         #chmod 400 /etc/shadow
19         #chmod 644 /etc/group
复制代码

 

 

 

、、、

持续完善中....

 

posted @   i潘小潘  阅读(683)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示