Linux入侵排查

一、Linux入侵排查思路

1、检测系统的账号安全

查询特权用户

查看UID为0的用户,排查可疑新用户

awk -F: '{if($3==0)print $1}' /etc/passwd

查询可以登录的用户

查看能够登录的用户

cat /etc/passwd |grep bin/bash

查看可以远程登录的账号

awk '/\$1|\$6/{print $1}' /etc/shadow

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

查询除了root账号外,其他账号是否存在sudo权限(如非管理需要,普通账号应删除sudo权限)

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

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

查看系统登录用户,常用命令有:who、w、uptime

who # 查看当前登录用户(tty本地登陆 pts远程登录)

uptime # 查看登陆多久、多少用户,负载状态

w # 显示已经登录系统的所有用户,以及正在执行的命令

查看用户登录信息

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

last

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

lastb

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

lastlog

禁用或删除多余账号

禁用或者删除多余及可疑的账号

usermod -L user # 禁用账号,账号无法登录,/etc/shadow第二栏为!开头

userdel [-r] user # 伤处用户user,参数r表示将/home目录下的用户家目录一并删除

2、检查异常端口或进程

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

netstat -antlp|more

Local Address(本地地址),查看有无重要端口被连接,如:22、3306等。

Foreign Address(外部地址),查看有无常用IP或可疑IP连接,IP可疑使用在线危险情报平台检索,如:微步在线。

PID/Program name(PID/程序名称),查看是否有可疑程序,如:bash可能为执行反弹shell。

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

查看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 重新启动

开机启动配置文件

/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、检查系统自启动服务

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

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命令

crontab -l #列出某个用户cron服务的详细内容

crontab -e #进入crontab任务编辑

crontab -r #删除所有计划任务

anacron命令

Linux系统创建定时任务除了crontab之外,还有一个工具是anacron。anacron是一个异步定时任务调度工具,用来弥补crontab的不足。

入侵排查项

重点关注以下目录是否存在恶意脚本

/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命令来查找,如下命令:

找出 /opt 目录下一天前访问过的文件

find /opt -iname "*" -atime 1 -type f

-atime n # 表示查找文件的访问时间距离当前时间为n*24小时以内的文件

-atime +n # 表示查找文件的访问时间距离当前时间超过n*24小时的文件

-atime -n # 表示查找文件的访问时间距离当前时间不超过n*24小时的文件

针对可疑文件可以使用stat查看创建、修改以及访问时间

stat <文件名>

7、检查历史命令

查看当前用户的历史命令

history

查看其他用户的历史命令

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

cat .bash_history

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

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

清除历史操作命令

该命令并不会清楚保存在文件中的记录,需要手动删除~/.bash_history文件中的记录。

history -c

历史命令优化查看

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

sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile

1

2)增加显示登录的IP和执行命令的时间信息,在/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 ##########

使配置生效: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帐号

grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

攻击者爆破哪些用户名

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

1

登录成功的IP有哪些

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

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

系统添加、删除用户的记录和时间

grep "useradd" /var/log/secure

grep "userdel" /var/log/secure

三、Linux入侵排查工具介绍

1、Rootkit查杀

Chkrootkit:http://www.chkrootkit.org

Rkhunter:http://rkhunter.sourceforge.net

2、病毒查杀

ClamAV:官方下载地址为:http://www.clamav.net/download.html

3、Webshell查杀linux版:

河马Webshell查杀:http://www.shellpub.com

4、linux安全检查脚本

https://github.com/grayddq/GScan

https://github.com/ppabc/security_check

https://github.com/T0xst/linux

四、善用威胁情报

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

微步在线

VirusTotal

安恒威胁分析平台

深信服威胁情报中心

VenusEye威胁情报中心

360威胁情报中心

安天威胁情报中心

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

相关推荐
C++忠实粉丝22 分钟前
Linux环境基础开发工具使用(2)
linux·运维·服务器
康熙38bdc1 小时前
Linux 环境变量
linux·运维·服务器
存储服务专家StorageExpert1 小时前
DELL SC compellent存储的四种访问方式
运维·服务器·存储维护·emc存储
hakesashou2 小时前
python如何比较字符串
linux·开发语言·python
Ljubim.te2 小时前
Linux基于CentOS学习【进程状态】【进程优先级】【调度与切换】【进程挂起】【进程饥饿】
linux·学习·centos
cooldream20092 小时前
Linux性能调优技巧
linux
大G哥2 小时前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
长天一色2 小时前
【ECMAScript 从入门到进阶教程】第三部分:高级主题(高级函数与范式,元编程,正则表达式,性能优化)
服务器·开发语言·前端·javascript·性能优化·ecmascript
醉颜凉2 小时前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统
QMCY_jason3 小时前
Ubuntu 安装RUST
linux·ubuntu·rust