Linux服务器安全加固
Linux服务器安全加固
一、用户系统检查
A、检查系统内核版本
检查方式(命令):
a、uname -a
b、cat /etc/os-release
c、cat /etc/centos-release
B、检查口令为空的账户
判断依据:存在密码为空的账户则不符合
检查方式:
a、命令查看用户:cat /etc/passwd
b、命令查看密码栏为空的账户:cat /etc/shadow
加固方式:删除密码为空的账户,或者为账户添加密码
命令删除用户:userdel 用户名
设置密码:passwd 用户名
备注:(/bin/bash为可登录系统,/sbin/nologin和/bin/false为禁止用户登录系统)
C、检查UID与root相同的账户
前言:如果UID为0该账户的权限就和root一样的权限
判断依据:存在则不符合
检查方式:
命令查看第三位数字为0的账户:cat/etc/passwd
加固方式:修改恶意账户的UID并删除恶意账户
备注:先修改UID才可以删除账户
1、vim etc/passwd
2、userdel 用户名
D、检查是否启用core dump设置(内存转储)
判断依据:存在则符合
检查方式:
cat/etc/security/limits.conf查看solt core 0 ,hard core 0配置
加固方式:添加或者修改配置文件
E、检查硬盘使用情况
判断依据:大于80%则不符合
检查方式:
命令查看硬盘使用率:df -f
加固方式:对硬盘实施扩容或者删除部分不重要的资源
F、检查History历史命令条数设置
判断依据:建议值为200
检查方式:
命令查看HISTSIZE=值:cat /etc/profile
加固方式:修改profile配置文件中的HISTSIZE值为200
G、检查系统当前umask值
判断依据:值为022则符合
检查方式:通过命令umask输出当前umask的值
加固方式:通过umask命令修改值为022
修改例子: umask 022
二、口令策略检查
A、检查密码最小长度
判断依据:最小长度为8则符合
检查方式:
命令:cat /etc/login.defs查看PASS_MIN_LEN的值,但是对root无效
加固方式:修改login.defs配置文件,修改密码最小长度值
例子:vim /etc/login.defs;PASS_MIN_LEN 10
B、检查密码过期时间
判断依据:值大于90则不符合
检查方式:
命令查看PASS_MAX_DAYS的值:cat /etc/login.defs
加固方式:修改login.defs的PASS_MAX_DAYS的值为90
例子:vim etc/login.defs;PASS_MAX_DAYAS 90
C、检查密码认证失败次数
判断依据:值大于5则不符合
检查方式:(两个文件都要看一下,默认是没有的)
文件一:cat /etc/pam.d/sshd
文件二:cat etc/pam.d/login
加固方式:添加配置
例子:vim /etc/pam.d/sshd;auth required Parm_tally2.so deny=5
D、检查密码复杂度
判读依据:值未配置则不符合
检查方式:
查看配置:cat /etc/pam.d/system-auth
加固方式:没有该配置则要进行添加
E、检查密码过期告警天数
判断依据:值小于3则不符合
检查方式:
命令查看PASS_WARN_AGE的值:cat /etc/login.defs
加固方式:修改login.defs中的PASS_WARN_AGE的值为3
例子:vim etc/login.defs;PASS_WARN_AGE 3
三、日志审计检查
A、检查系统是否开启日志功能
判断依据:开启则符合
检查方式:
命令查看是否存在syslogd服务:ps -ef
加固方式:通过systemctl命令打开日志审计功能(systemctl start rsyslog)
B、检查系统是否开启审计功能
判断依据:存在则符合
检查方式:
命令查看是否存在auditd服务:ps -ef
加固方式:通过命令:systemctl打开审计服务
例子:systemctl start auditd
C、检查是否对登录进行记录
判断依据:存在则符合
检查方式:
命令查看是否有返回结果:last -f /var/log/wtmp
四、系统服务检查
A、检查是否启用talk
判断依据:存在则不符合
检查方式:
命令查看服务以及ntalk服务:ps -ef | grep talk
加固方式:kill掉talk以及ntalk服务,并禁止其开机启动
例子:kill -9 <pid>
Systemctl disable <talk service name>
B、检查是否启用sendmail服务
判断依据:存在则不符合
检查方式:
命令查看服务:ps -ef | grep sendmail
加固方式:kill掉sendmail服务,并禁止开机启动
例子:kill -9 <PID>
systemctl disable <sendmail service name>
C、检查是否启用FTP服务
判断依据:存在则不符合
检查方式:
命令查看服务:ps -ef | grep ftp
加固方式:kill掉FTP服务并禁止开机启动
例子: kill -9 <PID>
kill -9 1801(备注:进程是第三个字段)
systemctl disable <ftp service name>
D、检查是否启用TELNET服务
判断依据:存在则不符合
检查方式:
命令查看服务:ps -ef | grep telnet
加固方式:kill掉telnet服务并禁止开机启动
例子:kill -9 <PID>
systemctl disable <telnet service name>
五、访问控制检查
A、检查系统登录和SSH登陆超时时间
判断依据:存在则符合
检查方式:
命令查看export TMOUT=值:cat /etc/profile
加固方式:将profile中的TMOUT的值设置为100
例子:vim /etc/profile;export TMOUT=100
备注默认是没有的,需要我们手动做一个追加
B、检查SSH协议是否使用SSH2
判断依据:存在则符合
检查方式:
命令:cat /etc/ssh/sshd_config或者cat /etc/ssh2/ssh2d_config查看Protocol配置项
加固方式:将ssh的协议类型改成ssh2,若不存在protocol配置则需要追加
例子:vim etc/ssh/sshd_config;Protocol 2
C、检查是否允许root账户远程登录SSH连接
判断依据:值为no则符合
检查方式:
命令:cat /etc/ssh/sshd_config或cat /etc/ssh2/ssh2d_config查看PermitRootLogin的值
加固方式:修改PermitRootLogin的值为no,若不存在则还需要进行追加;
例子:vim etc/ssh/sshd_config;PermitRootLogin no
D、检查是否允许所有IP访问主机
判断依据:值ALL不符合
检查方式:
命令查看sshd的值:cat /etc/hosts.allow
加固方式:在hosts.allow配置文件中追加允许访问的IP地址
例子:
ssh允许单个IP sshd: 12.1.1.2
ssh允许IP段: sshd: 10.10.10.
E、检查是否拒绝所有IP访问主机
判断依据:值ALL符合
检查方式:
命令查看sshd的值:cat /etc/hosts.deny
加固方式:在hosts.deny中追加sshd:ALL
备注:允许优先于拒绝