Linux操作系统安全加固

掌握的加固点:

  1. 用户系统检查

  2. 口令策略检测

  3. 日志审计检查

  4. 系统服务检查

  5. 访问控制检查


2.1.1用户系统检查

#系统内核版本检查
  • 判断依据:无

  • 检查方式:通过命令uname -a查看系统内核,或者cat /etc/os-release,或者cat /etc/centos-release查看系统发行版本


#检查口令为空的账户
  • 判断依据:存在就是不符合

  • 知识预热:特殊的shell

    a. /bin/false:将用户的shell设置为/bin/false 用户会无法登陆,并且不会有任何提示 passwd文件中设置

    b. /sbin/nologin:nologin会礼貌回复用户一句话,然后给你拒绝登录

  • 检查方式:命令cat /etc/passwd,cat /etc/shadow查看密码栏为空的账户

  • 加固方式:删除密码为空的账户,或者给该账户添加密码。

    • userdel <username> 删除用户

    • passwd <username> 用户设置密码

passwd文件中可以设置a b操作

shadow可以查看用户的密码,如果用户名后面有*则代表该用户是无法被登录的,如果用户后面有!!则代表这个用户是没有密码的

查看命令:

1 [root@localhost ~]# awk -F":" '{if ($7!="/sbin/nologin" && $7!="/bin/false") print $1}' /etc/passwd > passwd
2 # 输出在passwd文件下,可以被用作登录的用户
3
4 [root@localhost ~]# awk -F":" '{if ($2=="!!") print $1}' /etc/shadow > shadow
5 # 列出 shadow 文件下密码为空的账户,在 shadow 文件中 "!!" 表示密码为空,"*" 表示账户被锁定
6
7 [root@localhost ~]# grep -f passwd shadow
8 oracle
9 # 比较输出的 passwd 和 shadow 结果,若存在同时命中的账户则不符合检查要求

#检查UID与Root相同的账户
  • 判断依据:存在即不合理

  • 知识预热:若UID为0则该账户与Root一样的权限

  • 检查方式:命令cat /etc/passwd查看第三位数字为0的账户

  • 加固方式:修改恶意账户的UID并删除恶意账户

检查命令

awk -F ":" '{if ($3==0 && $1!='root') print$0}' /etc/passwd
判断,passwd中第三块内容为0,但用户不是root的有哪些
​
#普通用户添加root权限
echo "guest:x:0:0::/:/bin/sh" >> /etc/passwd
#若要删除UID=0的用户则将UID修改成正常用户的UID

#检查core dump是否开启
  • 判断依据:开启即合理,关闭则不合理

  • 知识预热:内存镜像

    • 当程序运行过程中崩溃异常终止,操作系统会将程序当前的内存状态记录下来,保存在一个文件当中,这种行为叫做core dumo核心存储。

    • core dump 是内存快照,除了内存信息之外,有些关键的程序运行状态也会同时dump下来,例如寄存器信息、内存管理信息、其他处理器和操作系统状态信息

  • 检查方式:命令cat /etc/security/limits.conf查看

    • solt core 0

    • hard core 0

    • 是否存在,必须二者同时存在

  • 加固方式:添加或者修改配置文件


#检查硬盘使用情况

  • 判断依据:大于80%不符合

  • 检查方式:命令df -h查看硬盘使用率

  • 加固方式:对硬盘实施扩容或者删除部分不重要资源


#检查History历史命令条数设置
  • 判断依据:建议值为200

  • 检查方式:命令cat /etc/profile 查看HISTSIZE=的值

  • 加固方式:修改profile配置文件中HISTSIZE的值,建议修改为200

    • vi /etc/Profile

    • HISTSIZE = 200


#检查系统当前umask值
  • 判断依据:值022符合

  • 知识预热:

    • umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限补码,二chmod设置的是文件权限码

    • 系统管理员必须设置一个合理的umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限

  • 检查方式:命令umask输出当前umask的值

  • 加固方式:通过umask命令修改值为022

umask 022 即可修改umask的值

2.1.2口令策略检查

#检查密码最小长度
  • 判断依据:最小长度为8

  • 检查方式:查看cat /etc/login.defs查看PASS_MIN_LEN的值。login.defs是用户账号限制文件,但是里面的策略对ROOT无效

  • 加固方式:修改login.defs配置文件,修改密码最小长度值,建议修改为10

    • vi /etc/login.defs

    • PASS_MIN_LEN 10


#检查密码过期时间
  • 判断依据:值大于90不符合

  • 检查方式:命令cat /etc/login.defs查看PASS_MAX_DAYS的值

  • 加固方式:修改login.defs配置文件,建议修改为90

vi /etc/login.defs

PASS_MAX_DAYS 90


#检查密码认证失败次数
  • 判断依据:值大于5不符合

  • 知识预热:默认情况下在 pam.d/login及 /pamd.d/sshd 文件中不含有认证失败次数

  • 检查方式:命令cat /etc/pam.d/sshd , cat /etc/pam.d/login查看

    • auth required pam_tally2.so deny=5 lock_time=300 even_deny_root root_unlock_time=300


#检查密码复杂度
  • 判断依据:值未配置不符合

  • 知识预热:默认情况下没有密码复杂度

  • 检查方式:命令cat /etc/pam.d/system-auth查看

    • password requisite pam_cracklib.so retry= difok= minlen= ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict值是否配置

  • 加固方式:在pam.d/login配置文件中添加以上字段

retry= 尝试次数

difok= 新密码和旧密码最少不同字符数量

minlen= 最小密码长度

ucredit=-1 最少大写字母1个

lcredit=-3 最少小写字母3个

dcredit=-3最少数字3个

dictpath=/usr/share/cracklib/pw_dict 字典位置


#检查密码过期告警天数
  • 判断依据:值小于3不符合

  • 检查方式:命令cat /etc/login.defs查看PASS_WARN_AGE的值

  • 加固方式:修改login.defs配置文件中,PASS_WARN_AGE字段,建议值为3

    • vim /etc/login.defs

    • PASS_WARN_AGE 3


2.1.3日志审计检查

#检查是否开启日志审计功能
  • 判断依据:存在则符合

  • 检查方式:命令 ps -ef 查看是否存在syslogd服务

  • 加固方式:通过systemctl命令打开日志审计功能 systemctl start rsyslog


#检查是否开启审计功能
  • 判断依据:存在则符合

  • 检查方式:命令ps -ef 查看是否存在auditd服务

  • 加固方式:通过systemctl命令打开审计服务,systemctl start auditd


#检查是否对登录进行记录
  • 判断依据:存在则符合

  • 检查方式:wtmp该日志文件永久记录每个用户登录、注销及系统启动、停机事件、需要使用last命令查看

  • 检查方式:命令last -f /var/log/wtmp 查看是否有返回结果


2.1.4检查系统服务

#检查是否启动talk服务
  • 判断依据:存在即不合理

  • 知识预热:Linux不重要的服务,用于同一网络下用户之间的交流,存在就会有风险

  • 检查方式:ps -ef | grep talk查看服务以及ntalk服务

  • 加固方式:K掉它,并禁止自动启动

    • kill -9 <PID>

    • systemctl disable <talk service name>


#是否启用sendmail服务

判断依据:存在即不合理

检查方式:命令ps -ef | grep sendmail查看服务

加固方式:k掉sendmail服务,禁止开机自启


#是否启用FTP服务
  • 判断:存在不合理

  • 检查:ps -ef | grep ftp

  • 加固:k掉,禁止自启动


#是否启用TELNET服务
  • 判断:存在不合理

  • 检查:ps -ef | grep telnet

  • 加固:k掉,禁止自启动


2.1.5访问控制检查

#检查系统登陆和SSH登陆超时时间
  • 判断依据:存在即符合

  • 知识预热:默认情况下在profile中没有配置相关timeout参数

  • 检查方式:命令cat /etc/profile查看 export TMOUT=的值

  • 加固方式:在profile中追加:export TMOUT的值,建议设置100

    • vim /etc/profile

    • export TMOUT=100


#检查SSH协议是否使用SSH2
  • 判断依据:存在即合理

  • 知识预热:

  • 检查方式:命令cat /etc/ssh/sshd_config,cat /etc/ssh2/ssh2d_config查看Protocol 2配置

  • 加固方式:将ssh的协议类型改为ssh2,若不存配置则追加字段刀sshd_config配置文件中

    • vim /etc/ssh/sshd_config

    • Protocol 2


#检查是否允许root账户远程连接SSH
  • 判断依据:值为no则符合

  • 知识预热:

  • 检查方式:命令 cat /etc/ssh/sshd_config , cat /etc/ssh2/ssh2d_config查看PermitRootLogin的值

  • 加固方式:修改PermitRootLogin的值为no,若不存则追加字段刀sshd_config配置文件下即可

    • vim /etc/ssh/sshd_config

    • PermitRootLogin no


#检查是否允许所有IP访问主机
  • 判断依据:值为ALL或者没配置 则不符合

  • 知识预热:

  • 检查方式:命令cat /etc/hosts.allow查看sshd:的值

  • 加固方式:在hosts.allow配置文件中追加允许访问的ip地址

    • ssh允许单个ip地址:sshd:192.168.222.1

    • ssh允许ip段:sshd:192.168.222.


#检查是否拒绝所有ip访问主机
  • 判断依据:值ALL符合

  • 知识预热:

  • 检查方式:命令 cat /etc/hosts.deny查看sshd:的值

  • 加固方式:在hosts.deny中追加sshd:ALL

    • 关于拒绝所有主机会不会造成业务问题,答案是不会。因为deny和前面的allow存在先后关系,它会先允许allow文件中的ip地址通过,然后再拒绝除allow文件外的ip

检查表单

检查项系统现状结果(符合或者不符合)加固建议
用户系统检查口令为空的账户
检查UID与ROOT相同账户
检查是否启用core dump设置
检查硬盘使用情况
检查histry历史命令条目设置
检查系统当前umask值
口令策略检查密码最小长度
检查密码过期时间
检查密码认证失败次数
检查密码复杂度
检查密码过期告警天数
日志审计检查系统是否开启日志功能
检查系统是否开启审计功能
检查是否对登录进行记录
系统服务检查是否启用ntalk/talk服务
检查是否启用sendmail服务
检查是否启用ftp服务
检查是否启用telnet服务
访问控制登录超时检查系统登录和ssh登录超时时间
检查ssh协议是否使用ssh2
检查是否允许root账户远程ssh连接
检查是否允许所有ip访问主机
检查是否允许所有ip使用ssh登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值