系统入侵后的排查思路及心得
入侵后的总结 入侵后的总结 昨天发布Linux被入侵及其如何检查,今天这一篇主要是一些排查思路,仅供大家参考。
写在前面
首先,确保系统密码符合密码复杂度要求(长度大于20个字符,包括大小写、数字等;尽量是无规则的,随机的)。如果因为密码简单而被黑客破解,那是不可原谅的。
可疑进程排查
系统存在异常,肯定存在异常的进程,这些进程要么是疯狂地往外面发包,占用我们的带宽,导致不能对外正常提供服务;要么是后门进程,对外保持一个长连接,以便供黑客利用随时进入系统。
一般情况下,黑客为了掩盖自己的进程,会使用定制过的命令替换原有系统正常的命令。当然,我们使用黑客的命令来查看可疑的进程肯定是得不到结果的。可能会被替换的命令为:ps
、netstat
、lsof
、ss
等常用命令。这些命令一般会被黑客放在/usr/bin/dpkg
目录下。如果我们发现存在此目录,基本上可以断定系统被入侵了。
这时,可以把正常的系统上的命令复制一份到被入侵的机器上的某个目录下,然后用这些正常的命令来查看系统中正在运行的进程。如果不清楚那些进程是可疑的进程,可以与运行相同业务且正常的机器的进程进行对比。可以把这些进程列表放到文本文件中,通过vimdiff
或diff
等工具进行比对,找出不同之处。有时可疑进程的名字起的非常巧妙,难以猜测它是否是可疑进程。我见过的可疑进程的名字,如以.开头的进程、如果getty的进程、如3个点的目录(...)
等。这些进程都是难以识别的,如以点开头的进程,它对应的文件在操作系统上是隐藏文件;如getty这样的进程与操作系统中的agetty进程类似;如3个点的目录(...)
又与操作系统中的当前目录(.)
或上一级目录(..)
很像。不管是什么样的可疑进程的名字,我们一定要把它记录下来,在后面的时候会用得到。
如果看到了上述描述的进程,可以毫不犹豫地把它们给kill
掉。kill
掉之后还不算完事,再次检查这些进程是否会自动的启动。一般情况下,这些进程还是会自动启动的。如果不自动启动,那么攻击者就不算是合格的黑客或脚本小子。
定时任务排查
关于可疑进程或文件的自动启动或自动生成。很有可能是由于定时任务被黑客设置了。如果系统重启后,可疑进程照旧还在,那么很有可能是被黑客写到了系统的启动脚本里或者写在了/etc/init.d/
目录下。
在上面已经说过,把可以进程的名字记录下来,这时可以用的上。使用这些进程的名字作为关键字匹配系统的启动脚本,如rc.local
脚本或/etc/init.d/
目录下的脚本。一般情况下,都是找到一些信息的。
定时任务一般不会做什么手脚,关键是系统的启动脚本里动了手脚就不好排查了。
事后总结
事后总结是非常有必要且必须的。总结可以让我们知道我们犯了那些大忌;总结可以让我们知道黑客的惯用手法;总结可以让我们知道我们还有什么地方没有做好等。
找到问题根源,修复或改进,然后就重新安装系统吧!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SAP Spartacus和product相关的标准normalizer
- 【Rust 日报】2020-09-09 引入“auditable”
- 听说MongoDB你很豪横?-------------MongoDB复制集以及管理优化
- 听说Memcache你很豪横?-------------深入剖析Memcache 安装及管理数据库操作
- 听说Memcache你很豪横?-------------深入剖析Memcache+keepalive高可用群集
- 排障集锦:九九八十一难之第十四难!------------- 安装magent时make编译报错
- 【Rust日报】2020-09-06 Evil_DLL 用来测试注入方法的DLL
- 【Rust日报】2020-09-05 微软在c++静态分析工具实现了一些rust的安全规则
- 一起来玩玩WebGL
- 自研网关:多项目的swagger聚合功能
- Prometheus 如何做到“活学活用”,大牛总结的避坑指南
- 文档驱动 —— 表单组件(一):表单元素组件 优点缺点选择文本类的Inputcheck 多选value的类型问题
- Vue3.0源码结构分析
- 【每周一库】- cached - 缓存结构型、辅助函数记忆化
- meta生成器 —— 表单元素组件 meta表单代码meta的模板data变幻