网站LOGO
静若安然
页面加载中
11月11日
网站LOGO 静若安然
记录个人学习生活和成长历程
菜单
  • 静若安然
    记录个人学习生活和成长历程
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    linux应急响应检测
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。

    linux应急响应检测

    Akria · 原创 ·
    Linux 安全 · Linux安全
    共 4528 字 · 约 4 分钟 · 4602
    本文最后更新于2024年02月15日,已经过了269天没有更新,若内容或图片失效,请留言反馈

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


    检查系统账号

    从攻击者的角度来说,入侵者在入侵成功后,往往会留下后门以便再次访问被入侵的系统,而创建系统账号是一种比较常见的后门方式

    在做入侵排查的时候,用户配置文件/etc/passwd和密码配置文件/etc/shadow需要重点关注

    (1)查询特权用户特权用户(uid 为0)

    bash 代码:
    awk -F: '$3==0{print $1}' /etc/passwd

    (2)查询可以远程登录的帐号信息

    bash 代码:
    awk '/\$1|\$6/{print $1}' /etc/shadow

    (3)除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限

    bash 代码:
    more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

    (4)禁用或删除多余及可疑的帐号

    bash 代码:
    usermod -L user    禁用帐号,帐号无法登录,
    /etc/shadow       第二栏为!开头
    userdel user       删除user用户
    userdel -r user    将删除user用户,并且将/home目录下的user目录一并删除

    (5)当前登录当前系统的用户信息

    bash 代码:
    who     查看当前登录用户(tty本地登陆  pts远程登录)
    w       查看系统信息,想知道某一时刻用户的行为
    uptime  查看登陆多久、多少用户,负载

    检查异常端口

    (1)使用netstat 网络连接命令,分析可疑端口、IP、PID等信息。

    bash 代码:
    netstat -antlp|more

    (2)如发现异常的网络连接需要持续观察,可抓包分析

    bash 代码:
    tcpdump -c 10 -q   //精简模式显示 10个包

    检查可疑进程

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

    bash 代码:
    ps aux / ps -ef

    (2)通过top命令显示系统中各个进程的资源占用状况,如发现资源占用过高

    bash 代码:
    top

    (3)如发现异常,可使用一下命令进一步排查

    bash 代码:
    查看该进程启动的完整命令行: ps eho command -p $PID
    查看该进程启动时候所在的目录: readlink /proc/$PID/cwd
    查看下pid所对应的进程文件路径:ls -l /proc/$PID/exe
    查看该进程启动时的完整环境变量: strings -f /proc/1461/environ | cut -f2 -d ''
    列出该进程所打开的所有文件: lsof -p $PID

    检查系统服务

    Linux系统服务管理,CentOS7使用systemd控制 CentOS6之前使用chkconfig控制

    (1)对于systemd服务管理器来说,可以通过下述方式查看开机自启的服务

    bash 代码:
    systemctl list-unit-files --type=service | grep "enabled"

    (2)chkconfig就是CentOS6以前用来控制系统服务的工具,查看服务自启动状态

    bash 代码:
    chkconfig  --list  
    chkconfig --list | grep "3:on\|5:on"

    检查开机启动项

    (1)检查启动项脚本

    bash 代码:
    more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/

    (2)例子:当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软链接即可

    bash 代码:
    more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/

    此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭的

    检查计划任务

    利用计划任务进行权限维持,可作为一种持久性机制被入侵者利用。检查异常的计划任务,需要重点关注以下目录中是否存在恶意脚本

    bash 代码:
    /var/spool/cron/* 
    /etc/crontab
    /etc/cron.d/*
    /etc/cron.daily/* 
    /etc/cron.hourly/* 
    /etc/cron.monthly/*
    /etc/cron.weekly/
    /etc/anacrontab
    /var/spool/anacron/*

    检查异常文件

    1、查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性

    2、得到发现WEBSHELL、远控木马的创建时间,找出同一时间范围内创建的文件

    bash 代码:
    使用find命令来查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前访问过的文件

    3、针对可疑文件可以使用stat进行创建修改时间

    检查历史命令

    一般而言,入侵者获取shell之后,会执行一些系统命令从而在主机上留下痕迹,我们可以通过history命令查询shell命令的执行历史

    (1)查询某个用户在系统上执行了什么命令

    bash 代码:
    使用root用户登录系统,检查/home目录下的用户主目录的.bash\_history文件

    (2)默认情况下,系统可以保存1000条的历史命令,并不记录命令执行的时间,根据需要进行安全加固

    bash 代码:
    1.保存1万条命令
    sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
    2.在/etc/profile的文件尾部添加如下行数配置信息:
    ######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 ##########
    3.source /etc/profile让配置生效

    检查系统日志

    在Linux上一般跟系统相关的日志默认都会放到/var/log下面,若是一旦出现问题,用户就可以通过查看日志来迅速定位,及时解决问题。常用日志文件如下

    bash 代码:
    /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授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

    一般,我们需要重点去关注secure安全日志,检查系统错误登陆日志,统计IP重试次数,成功登录的时间、用户名和ip,确认账号是否存在暴力破解或异常登录的情况

    bash 代码:
    1、定位有多少IP在爆破主机的root帐号:
    grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
    
    定位有哪些IP在爆破
    grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
    
    爆破用户名字典是什么
     grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
    
    2、登录成功的IP有哪些:
    grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
    
    登录成功的日期、用户名、IP:
    grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
    声明:本文由 Akria(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    我要发表评论 我要发表评论
    博客logo 静若安然 记录个人学习生活和成长历程 51统计 百度统计
    ICP 蜀ICP备2023037012号-1

    💻️ Akria 昨天 17:15 在线

    🕛

    本站已运行 7 年 77 天 18 小时 56 分
    静若安然. © 2017 ~ 2024.
    网站logo

    静若安然 记录个人学习生活和成长历程