系统入侵排查(二) Linux入侵排查


当Linux主机发生安全事件需要进行入侵排查时,一般可以使用常见的shell命令,通过分析主机的异常现象、进程端口、启动方式、可疑文件和日志记录等信息以确认主机是否被入侵。随后找到入侵点,进行修复

账号安全

  1. 查看用户信息文件,检查有无UID为0的用户、有无新增的未知用户

    cat /etc/passwd | grep /bin/bash            #查看可登录用户
    awk -F: ‘$3==0{print $1}’ /etc/passwd    #查看UID=0的用户
    more /etc/sudoers | grep -v “^#\|^$” | grep “ALL=(ALL)”     #查看sudo权限的用户

  2. 查看当前登录用户及登录时长

    #who 命令,查看当前登录系统的所有用户(tty 本地登陆 pts 远程登录)
    #uptime 命令,查看登陆多久、多少用户,负载状态
    #w 命令,显示已经登录系统的所用用户,以及正在执行的指令
    [root@192 ~]# w
    06:48:14 up 8:03, 6 users, load average: 0.00, 0.02, 0.05
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    root tty1 04:17 1:30m 2.28s 2.28s -bash
    root pts/0 192.168.219.1 04:27 2:14m 0.07s 0.00s vi test.py
    root pts/1 192.168.219.1 05:01 1:38m 0.09s 0.09s -bash

  3. 排查用户登录信息

    • 查看最近登录成功的用户及信息

      [root@localhost ~]# last
      root pts/0 192.168.219.1 Tue Feb 15 21:06 still logged in
      root pts/1 192.168.219.1 Tue Feb 15 18:30 - 19:49 (01:18)
      root pts/0 192.168.219.1 Tue Feb 15 15:00 - 17:32 (02:31)
      root tty1 Tue Feb 15 14:41 still logged in
      reboot system boot 3.10.0-1160.el7. Tue Feb 15 14:00 - 21:06 (07:06)
      wtmp begins Tue Feb 15 14:00:13 2022
      # 显示logged in表示用户还在登录
      # pts表示从SSH远程登录
      # tty表示从控制台登录,就是在服务器旁边登录

    • 查看最近登录失败的用户及信息

      [root@localhost ~]# lastb
      root ssh:notty 192.168.219.1 Tue Feb 15 21:13 - 21:13 (00:00)
      root ssh:notty 192.168.219.1 Tue Feb 15 21:13 - 21:13 (00:00)
      root ssh:notty 192.168.219.1 Tue Feb 15 21:13 - 21:13 (00:00)
      root ssh:notty 192.168.219.1 Tue Feb 15 21:13 - 21:13 (00:00)
      root tty1 Tue Feb 15 14:41 - 14:41 (00:00)
      btmp begins Tue Feb 15 14:41:47 2022
      # ssh表示从SSH远程登录
      # tty表示从控制台登录

    • 显示所有用户最近一次登录信息

      [root@localhost ~]# lastlog
      Username           Port            From                       Latest
      root                      pts/2          192.168.219.1         Wed Dec 8 05:17:57 -0500 2021
      bin                                                                          Never logged in
      daemon                                                                  Never logged in
      …            …
      …            …
      postfix                                                                     Never logged in
      chrony                                                                     Never logged in
      mysql                                                                      Never logged in
      zhang                    pts/1                                          Fri Nov 19 13:07:34 -0500 2021

  4. 查看 sudo 用户列表,除root帐号外,其他帐号是否存在sudo权限

    查询sudoers文件中能从任意主机以任意身份执行命令的用户
    more /etc/sudoers | grep -v “^#\|^$” | grep “ALL=(ALL)”

异常端口与进程

  1. 查看端口连接情况,分析可疑端口、IP、PID等信息

    netstat -antlp | more

    在这里插入图片描述

    • Local Address(本地地址)
      • 查看有无重要端口被连接,如 22,3306等
    • Foreign Address(外部地址)
      • 查看有无非常用IP或可疑IP连接
    • IP可以使用在线危险情报平台检索,如微步在线
      • PID/Program name(PID/程序名称)
    • 查看是否有可疑程序,如上面的截图中的bash,可能为bash执行反弹shell
      • 注:若发现有异常连接需要持续观察,可以进行抓包获取流量,而后使用相关工具分析

        将ens33网卡上目的端口为tcp 80端口的流量保存到target.pcap文件中
        tcpdump tcp and dst port 80 -i ens33 -w ./target.pcap

  2. 检查可疑进程

    • 使用 ps 列出系统中当前运行的那些进程,分析异常的进程名、PID,可疑的命令行等

      [root@192 ~]# ps aux
      USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
      root 2 0.0 0.0 0 0 ? S Dec07 0:00 [kthreadd]

      root 7263 0.0 0.1 115548 1932 pts/3 S+ 06:35 0:00 bash -i
      root 7267 0.0 0.1 155452 1864 pts/4 R+ 06:35 0:00 ps aux

      此处PID为7263的进程所执行的 “ bash -i ”是十分可疑的,极有可能为反弹shell执行的命令。 我们可以使用“ kill -9 7263” 强制结束进程

    • 通过top命令显示系统中各个进程的资源占用状况,如发现资源占用过高的进程可以进一步排查

    • 进程排查分析

      查看该进程启动的环境变量与命令行等信息: ps eho command -p $PID
      查看该进程启动时候所在的目录: readlink /proc/$PID/cwd
      查看下pid所对应的进程文件路径:ls -l /proc/$PID/exe

系统服务

  1. 查看自启服务

    #centos7 查看自启服务
    systemctl list-unit-files --type=service | grep “enabled”
    #centos6 查看自启服务
    chkconfig --list
    chkconfig --list | grep “3:on|5:on”

开机启动项

  1. 开机启动配置文件

    /etc/rc.local ,是/etc/rc.d/rc.local的软连接,用于添加开机启动命令
    /etc/rc.d/rc[0~6].d , 各个启动级别的执行程序连接目录,系统的标准的运行级为3(完全多用户模式)

  2. 排查入侵项

    #查看rc.local中有无异常的开机启动命令
    more /etc/rc.local
    #查看 /etc/rc.d/rc[0~6].d
    ls -l /etc/rc.d/rc3.d/ # 查看运行级别为3的执行程序连接目录下有无异常脚本

定时任务

  1. cron相关文件

    /etc/crontab ,配置文件,配置 cron 任务运行环境变量等。
    /var/spool/cron/ ,存放着每个用户的crontab任务,每个任务以创建者的名字命名。
    /etc/cron.d/ ,此目录下存放的是系统级任务的任务文件。
    /etc/anacrontab ,这个文件存着系统级的任务。它主要用来运行每日的(daily),每周的(weekly),每月的(monthly)的任务。一般不在此文件安装自己的任务。
    /etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/等目录存放要在指定时间周期执行的脚本。

  2. 定时任务排查

    #查看当前用户的cron任务
    crontab -l
    #crontab任务编辑
    crontab -e
    #删除当前用户的定时任务
    crontab -r
    #查看以下目录中是否存在恶意脚本
    /etc/cron.d/*
    /etc/cron.daily/*
    /etc/cron.hourly/*
    /etc/cron.monthly/*
    /etc/cron.weekly/
    /var/spool/anacron/*

异常文件

  1. 查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“.”为开头的文件目录
  2. 若能得知远控木马的创建时间的范围,可根据时间查找文件

    #查找最近一天以内修改的文件:
    find / -mtime -1 -ls | more
    #常用参数
    -amin n : 在过去 n 分钟内被读取过
    -atime n : 在过去 n 天内被读取过的文件

历史命令

  1. 查询某个用户在系统上的历史命令
  • 使用root用户登录系统,检查/home目录下该用户主目录的 .bash_history 文件

    [root@192 zhang]# cat .bash_history

系统日志

  1. secure安全日志(var/log/secure)

    检查系统错误登陆日志,统计IP重试次数,成功登录的时间、用户名和ip,确认账号是否存在暴力破解或异常登录的情况

    • 查看有多少IP可能在爆破主机的root帐号

      #统计多少IP登录失败及失败次数
      grep “Failed password for root” /var/log/secure | awk ‘{print $11}’ | sort | uniq -c | sort -nr

    • 登录成功的IP

      grep "Accepted " /var/log/secure | awk ‘{print $11}’ | sort | uniq -c | sort -nr

    • 登录成功的日期、用户名、IP

      grep "Accepted " /var/log/secure | awk ‘{print $1,$2,$3,$9,$11}’

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值