Linux入侵排查

一、Linux入侵排查思路

1、检测系统的账号安全

  • 查询特权用户

    shell 复制代码
    # 查看UID为0的用户,排查可疑新用户
    awk -F: '{if($3==0)print $1}' /etc/passwd
  • 查询可以登录的用户

    shell 复制代码
    # 查看能够登录的用户
    cat /etc/passwd |grep bin/bash
    # 查看可以远程登录的账号
    awk '/\$1|\$6/{print $1}' /etc/shadow
  • 查看sudo用户列表,除了root账号外,其他账号是否存在sudo权限

    shell 复制代码
    # 查询除了root账号外,其他账号是否存在sudo权限(如非管理需要,普通账号应删除sudo权限)
    more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL) "
  • 查看当前登录用户及登录时长

    shell 复制代码
    # 查看系统登录用户,常用命令有:who、w、uptime
    who        # 查看当前登录用户(tty本地登陆 pts远程登录)
    uptime     # 查看登陆多久、多少用户,负载状态
    w          # 显示已经登录系统的所有用户,以及正在执行的命令
  • 查看用户登录信息

    shell 复制代码
    # 查看最近登录成功的用户信息
    last
    # 查看最近登录失败的用户信息
    lastb
    # 显示所有用户最近一次登录信息
    lastlog
  • 禁用或删除多余账号

    shell 复制代码
    # 禁用或者删除多余及可疑的账号
    usermod -L user        # 禁用账号,账号无法登录,/etc/shadow第二栏为!开头
    userdel [-r] user      # 伤处用户user,参数r表示将/home目录下的用户家目录一并删除

2、检查异常端口或进程

  • 使用netstat命令查看端口连接情况,分析可疑端口、IPPID等信息

    shell 复制代码
    netstat -antlp|more

    Local Address(本地地址),查看有无重要端口被连接,如:22、3306等。
    Foreign Address(外部地址),查看有无常用IP或可疑IP连接,IP可疑使用在线危险情报平台检索,如:微步在线。
    PID/Program name(PID/程序名称),查看是否有可疑程序,如:bash可能为执行反弹shell。

  • 查看PID所对应的进程文件路径

    shell 复制代码
    # 查看pid所对应的进程文件路径($PID为对应的pid号)
    ls -l | /proc/$PID/exe
    file /proc/$PID/exe
    # 查看启动命令
    ps --ef |grep $PID(效果同 ps aux |grep $PID)
    # 查看pid进程启动的环境变量与命令行等信息
    ps eho command -p $PID
    # 查看pid进程启动时所在的目录
    readlink /proc/$PID/cwd

3、检查启动项

有时木马或者病毒等脚本会隐藏在开机启动中,而Linux的启动项是取决于当前用户的运行级别的,查看运行级别命令:runlevel

运行级别 含义
0 关机
1 单用户模式,可以想象为windows的安全模式,主要用于系统修复
2 不完全的命令行模式,不含NFS服务
3 完全的命令行模式,就是标准字符界面
4 系统保留
5 图形模式
6 重新启动
  • 开机启动配置文件

    shell 复制代码
    /etc/rc.local          # /etc/rc.local是/etc/rc.d/rc.local的软连接
    /etc/rc.d/rc[0~6].d    # 0~6代表运行级别

    当需要开机启动脚本时,将可执行脚本放在/etc/init.d/目录下,接着在/etc/rc.d/rc[0~6].d中建立软链接即可

  • 入侵排查项

    排查启动项文件,排查/etc/init.d/目录下是否存在可以的脚本或者文件,也可以排查原来的脚本是否被篡改(对关键文件做hash,然后进行对比)

4、检查系统自启动服务

查看系统的自启动服务,发现可疑服务,立即关停对应的服务

shell 复制代码
# Centos7 查看自启服务
systemctl list-unit-files --type=service | grep "enabled"
# Centos6 查看自启服务状态
chkconfig --list
# Centos6 查看系统在运行级别为3级和5级下的启动项
chkconfig --list | grep "3:on\|5:on"

5、检查定时任务

入侵系统的黑客一般会使用crontab创建定期任务,如定期下载木马,定期下载挖矿病毒,定期进行内网扫描等等。

  • crontab命令

    shell 复制代码
    crontab -l         #列出某个用户cron服务的详细内容
    crontab -e         #进入crontab任务编辑
    crontab -r         #删除所有计划任务
  • anacron命令
    Linux系统创建定时任务除了crontab之外,还有一个工具是anacronanacron是一个异步定时任务调度工具,用来弥补crontab的不足。

  • 入侵排查项

    shell 复制代码
    # 重点关注以下目录是否存在恶意脚本
    /var/spool/cron/* 
    /etc/crontab
    /etc/cron.d/*         # 此目录下存放的是系统级任务的任务文件
    /etc/anacrontab       # 这个文件存着系统级的任务。它主要用来运行每日的(daily),每周的(weekly),每月的(monthly)的任务。
    /var/spool/anacron/*
    /etc/cron.daily/* 
    /etc/cron.hourly/* 
    /etc/cron.monthly/*
    /etc/cron.weekly/

6、检查异常文件

  • 查看敏感目录

  • 发现Webshell、远控木马的创建时间,可以使用find命令来查找,如下命令:

    shell 复制代码
    # 找出 /opt 目录下一天前访问过的文件
    find /opt -iname "*" -atime 1 -type f 
    -atime n  # 表示查找文件的访问时间距离当前时间为n*24小时以内的文件
    -atime +n # 表示查找文件的访问时间距离当前时间超过n*24小时的文件
    -atime -n # 表示查找文件的访问时间距离当前时间不超过n*24小时的文件
  • 针对可疑文件可以使用stat查看创建、修改以及访问时间

    shell 复制代码
    stat <文件名>

7、检查历史命令

  • 查看当前用户的历史命令

    shell 复制代码
    history
  • 查看其他用户的历史命令

    打开/home各帐号目录下的.bash_history

    shell 复制代码
    cat .bash_history

    如果用户的默认shell 是bash,那么bash会记录用户的默认历史记录

    /.bash_history记录的是上一次登陆系统所执行过的命令,而当前登陆这一次则保存在内存缓存中,当系统关机/重启后会更新到/.bash_history文件中

  • 清除历史操作命令

    shell 复制代码
    # 该命令并不会清楚保存在文件中的记录,需要手动删除~/.bash_history文件中的记录。
    history -c
  • 历史命令优化查看

    1)增加历史命令查看条数,保存1万条命令配置

    shell 复制代码
    sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile

    2)增加显示登录的IP和执行命令的时间信息,在/etc/profile的文件尾部添加如下行数配置信息

    shell 复制代码
    ######jiagu history xianshi#########
    USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
    if [ "$USER_IP" = "" ]
    then
    USER_IP=`hostname`
    fi
    export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
    shopt -s histappend
    export PROMPT_COMMAND="history -a"
    ######### jiagu history xianshi ##########

    使配置生效:source /etc/profile

8、检查系统日志

系统日志默认存放位置:/var/log/

日志文件 说明
/var/log/cron 记录了系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog 记录邮件信息
/var/log/message 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
/var/log/btmp 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
/var/log/utmp 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w、who、users等命令来查询
/var/log/secure 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

二、Linux入侵排查技巧

  • 定位有多少IP在爆破主机的root帐号

    shell 复制代码
    grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
  • 攻击者爆破哪些用户名

    shell 复制代码
    grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
  • 登录成功的IP有哪些

    shell 复制代码
    #登录成功的日期、用户名、IP:
    grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' 
  • 系统添加、删除用户的记录和时间

    shell 复制代码
    grep "useradd" /var/log/secure
    grep "userdel" /var/log/secure

三、Linux入侵排查工具介绍

1、Rootkit查杀

2、病毒查杀

3、Webshell查杀linux版:

4、linux安全检查脚本

四、善用威胁情报

威胁情报是识别和分析网络威胁的过程。威胁情报平台可以查出一些域名和IP地址得信誉度,一旦发现它们存在网络攻击痕迹可以迅速封禁。

参考文档:https://www.cnblogs.com/illusory---/p/15004485.html

相关推荐
计算机毕设定制辅导-无忧学长2 小时前
Nginx 性能优化技巧与实践(二)
运维·nginx·性能优化
烛.照1034 小时前
Nginx部署的前端项目刷新404问题
运维·前端·nginx
安静的做,安静的学4 小时前
网络仿真工具Core环境搭建
linux·网络·网络协议
m0_742155435 小时前
linux ——waitpid介绍及示例
linux·c++·学习方法
华纳云IDC服务商6 小时前
超融合服务器怎么优化数据管理?
运维·服务器
会飞的土拨鼠呀6 小时前
Prometheus监控minio对象存储
运维·prometheus
hy____1236 小时前
动态内存管理
linux·运维·算法
ks胤墨6 小时前
Docker快速部署高效照片管理系统LibrePhotos搭建私有云相册
运维·docker·容器
小度爱学习7 小时前
数据链路层协议
运维·服务器·网络·网络协议·网络安全
龙之叶7 小时前
Android13源码下载和编译过程详解
android·linux·ubuntu