Linux木马排查与入侵实战案例
前言
在日常繁琐的运维工作中,对 linux 服务器进行安全检查是一个非常重要的环节。这篇整理如何检查 linux 系统是否遭受了入侵,以及几次真实的入侵处置过程。与应急响应手册配合食用更佳。
一、是否入侵检查(排查清单)
1)检查系统日志
|
|
2)检查系统用户
……一位Java开发者,喜欢研究技术,同时也在学习Golang和Python中,对服务器、Linux使用比较熟悉。欢迎添加技术交流QQ群:655158296
在日常繁琐的运维工作中,对 linux 服务器进行安全检查是一个非常重要的环节。这篇整理如何检查 linux 系统是否遭受了入侵,以及几次真实的入侵处置过程。与应急响应手册配合食用更佳。
1)检查系统日志
|
|
2)检查系统用户
……redis 用起来简单,出问题时排查难。这篇从监控指标体系和性能问题分析两个维度整理运维要点,指标是日常巡检的眼睛,排查手段是出事时的手术刀。
redis 的监控指标可以分为五大类。
| Name | Description |
|---|---|
| latency | Redis 响应一个请求的时间 |
| instantaneous_ops_per_sec | 平均每秒处理请求总数 |
| hit rate (calculated) | 缓存命中率(计算出来的) |
| Name | Description |
|---|---|
| used_memory | 已使用内存 |
| mem_fragmentation_ratio | 内存碎片率 |
| evicted_keys | 由于最大内存限制被移除的 key 的数量 |
| blocked_clients | 由于 BLPOP、BRPOP 或 BRPOPLPUPUSH 而被阻塞的客户端 |
| Name | Description |
|---|---|
| connected_clients | 客户端连接数 |
| connected_slaves | slave 数量 |
| master_last_io_seconds_ago | 最近一次主从交互之后的秒数 |
| keyspace | 数据库中的 key 值总数 |
| Name | Description |
|---|---|
| rdb_last_save_time | 最后一次持久化保存磁盘的时间戳 |
| rdb_changes_since_last_save | 自最后一次持久化以来数据库的更改数 |
| Name | Description |
|---|---|
| rejected_connections | 由于达到 maxclient 限制而被拒绝的连接数 |
| keyspace_misses | key 值查找失败(没有命中)次数 |
| master_link_down_since_seconds | 主从断开的持续时间(以秒为单位) |
常用工具:redis-benchmark、redis-stat、redis-faina、redislive、redis-cli、monitor、slowlog。
……最近处理了几起redis不安全的阿里云服务器,总结下一些建议
默认bind 0.0.0.0是默认值,相当于不设防
|
|
默认是不设置密码,相当于不需要密码和鉴权就可以访问
|
|
默认是6937,容易被扫描到
|
|
检查config这2个文件设置的值是否自己设置的值
……无意间找到nginx下的日志切割组件,比以前用脚本每日备份好多了,研究了一番用法
日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题。除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事。
logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。
三个 mysql 日常高频小技巧:给新库整理数据字典、连接多个实例时防止在错误的库上执行 SQL、以及老库字符集不一致导致查询乱码的处理。
接手一个没有文档的数据库时,用 information_schema 可以一键导出数据字典。
1. 查询库下所有表
|
|
2. 查询字段明细
……尝试了下springboot cli和spring cloud cli 命令,整理了下参数和创建项目的介绍
需要核对版本支持的jdk、maven、gradle、springboot版本,不能过于追求最新版本,比如springboot3.0.0.M1就只支持jdk17
……vmstat是virtual memory statistics 的缩写,它是Linux下一个非常有用的监控工具,除了内存之外,还提供 块 IO、CPU 时间 等额外的信息
vmstat 命令的执行不需要特殊的权限,普通用户就可以执行,其语法形式如下
|
|
delay 表示数据更新间隔,单位是秒,如果没有指定此值,表示系统启动以来的平均时间,而且此时只输出一次结果
count 表示输出次数,如果没有指定该值,但是指定了 delay 的值,则表示无限次
1月26日,运维同学收到告警邮件,告诉我某台测试服务器中了挖矿病毒,心想怎么最近挖矿这么猖狂…
仍然下载是busybox
|
|
剩余步骤跟挖矿病毒2-分析和排查思路一样,只是所有的命令前面是 busybox command
不过这次是容器挖矿,ECS 排查步骤仍然走一遍,但是没啥收货,但是恶意进程还是可以找到的
1月23日,公司邮箱收到说阿里云报了挖矿病毒的警告
这次思路改进了些,起初有个只是定时任务没被清理,阿里云通过定时任务关键字"pool.minexmr.com:4444"报了蠕虫病毒,但是根据关键字查看,这像挖矿
然后 top 了半天没看到结果,怀疑是top被篡改了?然后进了/usr/bin/核对下 top 的时间,发现没差异呀,但是本着稳妥起见,还是下载 busybox
对外网开放的后台管理系统,只用静态口令认证有几个先天问题:用户为了好记会选有特征的密码、明文传输时可被截获、内部人员能拿到密码冒用。OTP(One-Time Password,一次性密码/动态口令)是最容易落地的双因素认证增强手段,这篇整理它的原理和一套 java 实现方案。
静态口令从根本上无法确定「现在操作的人就是账户本人」。
……