更新于 

安全加固(Linux加固2)

  • 1.用户默认umask值

    • 修改启动脚本文件
      • /etc/profile
      • /etc/csh.login
      • /etc/csh.cshre
      • /etc/bashrc
    • 在文件末尾加入umask
  • 2.检查是否配置有sudo权限

    • sudo -v
      • 如果系统已经配置了 sudo 权限,则该命令不会提示输入密码并返回成功。
      • 如果系统未配置 sudo 权限,则该命令将提示错误消息。
        image.png
  • 3.检查根账户是否改名

    • grep ^root: /etc/passwd

    image.png

  • 4.检查是否存在UID为0的其他账户

    • 检查哪些账户的UID为0
      awk -F: '($3 == 0) { print $1 }' /etc/passwd
      对 /etc/passwd 文件进行逐行查找,以":"为分隔符对于第三列($3)为0 的行,显示第一列的值(print 0$1),即查找所有UID等于0的账户
  • 5.检查是否有账户位于高权限组

    • grep -v ^# /etc/login.defs |grep "^GID_MIN"|awk “ {print $2} ”
    • awk -F: '$3>500{print $1}' /etc/passwd | xargs -I {} grep {} /etc/group
    • grep -v "/sbin/nologin" /etc/passwd | awk -F : ' {print $1}' | xargs -I {} grep {} /etc/group
  • 6.检查密码生最长使用期限

    • 查看cat /etc/login.defs
    • PASS_MAX_DAYS 90 最长使用期限
    • image.png
  • 7.检查是否开启密码复杂性要求

    • 需要修改密码策略文件vi /etc/security/pwquality.conf
    • dcredit、ucredit、lcredit 和 ocredit 都为1,表示开启
      • 要禁用密码复杂性检查,请将 dcredit、ucredit、lcredit 和 ocredit 的值设置为 -1。
      • 修改后需要使用 wq退出然后 systemctl restart systemd-logind.service重新启动服务
        image.png
  • 8.检查是否设置强制密码历史

    • cat /etc/pam.d/system-auth
      image.png
  • 9.检查是否设置账户登录锁定策略

    • 目的:防止被连续试探密码,降低爆破可能性
    • 实施方法
      • 修改pam认证文件
        • /etc/pam.d/system-auth
        • /etc/pam.d/sshd
        • /etc/pam.d/login
      • 添加 auth required pam_tally2.so deny=6 unlock_time=300 even_deny_root root_unlock_time=60
        image.png
        image.png
  • 10.检查是否禁止普通用户使用su切换根账户

  • 目的:避免任何人使用su切换到root,减少提权风险

  • 实施办法

    • 修改su的配置文件
      • /etc/pam.d/su
      • auth sufficient /lib.security/pam_rootok.so
  • 如果需要su 切换,将用户加入到wheel

    • gpasswd -a username wheel
      image.png
  • 11.检查账户相关文件权限是否过大

    • ls -l 查看相关文件权限
    • sudo find / -type f -o -type d -name ".*" -prune -o -print
      image.png
  • 12.检查配置文件权限是否过大

    • sudo find /etc -type f -name "*.conf" | xargs -I{} ls -lh {}
    • image.png
  • 13.检查是否存在高风险别名

指令:grep -i "alias" .bashrc .bash_profile /etc/profile
效果:image.png
解释:rm -rf,应该被认为是高风险别名。

  • 在 Linux 系统中,可以通过检查 shell 配置文件环境变量来确定是否存在高风险别名。以下是一些可能存在高风险别名的常见配置文件和环境变量:

      1. ~/.bashrc:这是 Bash shell 的启动脚本,它包含了用户定义的别名和其他设置。
      1. ~/.bash_profile:这是 Bash shell 的主要配置文件,它通常会引用 .bashrc 文件并包含一些系统级的设置。
      1. /etc/profile:这是系统级别的配置文件,它包含所有用户的 Bash shell 的默认设置。
  • 14.检查是否存在suid位sgid位
    find / -type f \( -perm -04000 -o -perm -02000 \) -exec ls -lg {} \;
    image.png

  • 15.检查是否正确记录日志审核

    • vi /etc/rsyslog.conf
    • 确认关键日志审计存在
      image.png
  • 16.检查是否配置日志服务器

    • 修改应用服务器日志配置文件
      • vi /etc/rsyslog.conf
      • 开启接收日志功能
        • $ModLoad imudp
        • $UDPServerRun 514
        • $template Remote, "/var/log/%$YEAR%-%$MONTH%-%$DAV%/%fromhost-ip%.log" ` 远程日志路径
    • :fromhost-ip, !isequal, “127.0.0.1°?Remote 本地日志不存储远程服务
      image.png
  • 17.检查日志文件权限是否过大

  • ls -la /var/log/
    image.png

  • 18.检查重要文件底层属性是否加固

    • lsattr /etc/resolv.conf
      image.png
  • 19.检查是否启用telnet进行远程管理

  • 使用命令检查

    • rpm -qa | grep telnet
      image.png
    • 显示状态 systemctl status telnet.socket
  • 20.检查sshd服务是否使用默认端口

    • 修改配置文件
    • vi /etc/ssh/sshd_config
  • 禁止root登录,修改默认端口,开启v2版本

    • PermitRootLogin no
    • Port 20202
    • Protocol 2
  • 重启服务

    • systemctl restart sshd
      image.png
  • 21.检查sshd服务是否禁用根账户登录
    PermitRootLogin yes表示没有禁用
    image.png

  • 22.检查sshd是否配合白名单限制登录

    • 检查是否包含AllowUsersAllowGroups 参数。
      • 包含则表示配置了白名单限制登录
  • 23.检查hosts文件是否写入常用解析

cat /etc/hosts | egrep -v "^#|^$|localhost" | awk '{print $2}' | sort | uniq

没有输出内容

  • 24.检查是否对syn flood攻击进行防御

  • 目的:缓解syn flood攻击

  • 实施方法:

    • 修改系统控制文件
      • `vi /etc/sysctl.conf
      • net.ipv4.tcp_syncookies = 1
    • 配置生效
      • sysctl -p
        image.png
        image.png
  • 25.检查是否响应ICMP协议请求

  • sudo sysctl net.ipv4.icmp_echo_ignore_all

    • 检测net.ipv4.icmp_echo_ignore_all = 0
    • 如果输出结果为“net.ipv4.icmp_echo_ignore_all = 1”,则表示系统已配置为忽略所有ICMP回声请求,即不响应任何ping请求。如果输出结果为“net.ipv4.icmp_echo_ignore_all = 0”,则表示系统未配置为忽略所有ICMP回声请求,即响应所有ping请求
  • 目的:对ICMP请求作出响应,避免泄露信息

  • 修改网络策略布尔值
    echo 1>/proc/sys/net/ipv3/icmp_echo_ignore_all

  • 26.检查是否开启无源路由转发

  • 目的:

    • 防止被无源数据包利用
  • 实施方法

    • 检查是否开启了路由功能
      • sysctl -n net.ipv4.conf.all.accept_source_route
      • echo 0>/proc/sys/net/ipv4/conf/all/accept_source_route
  • 27.检查半连接上限是否过高

    • 目的:修改半连接上线,缓解syn flood攻击
    • 实施方法:
      • 查询当前半连接上限:
        • sysctl net.ipv4.tcp_max_syn_backlog
      • net.ipv4.tcp_max_syn_backlog = 4096
  • 28.检查vsftpd服务是否启用白名单限制

    • 判断字段write_enable 是否启用
    • write_enable=YES
    • local_umask=022
    • anon_umask=022
      image.png
  • 29.检查vsftpd服务是否关闭匿名登录
    1.systemctl status vsftpd
    2.grep anonymous_enable /etc/vsftpd/vsftpd.conf
    ·如果输出结果为 "anonymous_enable=YES",则表示该服务器允许匿名登录。
    image.png

  • 30.检查vsftpd是否配置上传文件的默认权限

    • 查看是否包含 file_open_mode=0666字段
    • 加入local_umask=077字段
      • 设置掩码为077,这意味着新创建的文件将只有vsftpd用户具有读取写入权限。
        image.png
  • 31.检查vsftpd是否配置低风险banner信息

  • 目的:防止泄露服务信息

  • 实施方法

    • 检查主配置文件/etc/vsftpd.conf是否存在如下内容
    • ftpd_banner=” Authorized users only. All activity may be monitored and reported.”

      可以确认没配置
  • 32.检查nfs组件是否存在,且进程启动

  • 目的:防止被外挂文件系统,导致入侵

  • 实施方法

    • 检查是否存在敏感进程
      • ps aux | grep -E "lockd|nfsd|statd|mountd"
        image.png
  • 检查关闭NFS相关服务

    • systemctl list-unit-files | grep nfs
    • systemctl disable nfs-client.target
      image.png
    • 可以看到组件已经存在,且进程启动
  • 33.检查是否安装了多余风险软件
    rpm -qa
    image.png

  • 34.检查是否关闭登录系统时的banner信息

  • cat /etc/issue 检查系统banner信息
    image.png

  • 35.检查是否设置登录空闲超时

  • 未在/etc/profile中设置

    • TMOUT 字段
    • readonly TMOUT
    • export TMOUT
      image.png
  • 36.检查是否保留了过长的命令历史记录

  • 目的:降低之前操作被窃取的风险

  • 实施方法

    • 修改/etc/profile
    • vi /etc/profile
    • 修改信息
      • HISTSIZE=50
    • 生效
      source /etc/profile
      image.png
  • 37.检查grub菜单停留时间是否过长

  • 目的:防止在grup菜单对引导过程进行修改

  • 实施方法

    • 修改grup配置文件
      • vi /boot/grup2/grup.cfg
    • 修改等时
      • set timeout=0
  • 38.检查是否存在ctrl+atl+del重启快捷键

    • 默认是有的,全部都注释掉,防止重启
    • vi /usr/lib/systemd/system/ctrl-alt-del.target
      image.png