百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

知了堂|Linux系统入侵后的排查过程

nanshan 2024-10-24 11:42 17 浏览 0 评论

1、准备工作

尽可能物理接触到可疑的系统,防止黑客远程窃听你在检测
硬盘做实体备份,如有需要,断开所有与可以机器的网络连接
需要一台电脑专门对检查过程进行入侵检测结果的记录
找到维护此服务器的人员来配合你

2、步骤


检测项1:常用程序是否被替换
        通常被替换的程序有login、ls、ps、ifconfig、du、find、netstat
        执行相关程序参数,查看是否被替换
            ls -alh
            netstat -anp
        检查md5sum和文件大小
            md5sum /bin/netstat
            【注】linux prelink预链接会对md5sum的值产生影响,建议禁用预链接
        上传chkrootkit和rkhunter两个工具,检查是否有rootkit
        使用开源防病毒引擎clamav antivirus检查bin
            freshclam
            clamscan -r PATH
    检测项2:查看隐藏目录和文件
        find / -name '...'
        find / -name '..'
        find / -name '.'
        find / -name ' '
    检测项3:检测近期系统登录
        last命令
    检测项4:检测系统用户
        less /etc/passwd 查看是否有新增用户
        grep ': 0' /etc/passwd 查看是否有特权用户
        stat /etc/passwd 查看passwd最后修改时间
        awk-F: 'length($2)**0 print{$1}' /etc/shadow 查看是否存在空口令用户
    检测项5:查看进程
        ps -aux 查看有无以./xxx开头的进程,使用kil -9 pid 杀死该进程,再运行ps -aux,若此类进程又出现了,则证明系统被放置了自动启动脚本,故使用find / -name 进程名 -print
        lsof -p pid 查看进程所打开的端口及文件
        检查隐藏进程
            ps -ef | awk 'print($2)' | sort -n | uniq >1
            ls /proc | sort -n | uniq>2
            diff 1 2
    检查项6:检查网络连接和监听端口
        ip link |grep PROMISC 检查是否可能存在嗅探
        netstat -lntp 查看监听端口
        nestat -antp 查看所有已建立的外部链接,注意本机主动连接到外部地址的连接,可能意味着反弹shell
        arp -an 查看arp记录是否正常
    检查项7:计划任务
        crontab -u root -l 查看root用户的计划任务
        cat /etc/crontab 查看是否有异常条目
        ls /var/spool/corn 查看是否有异常条目
        ls -l /etc/cron.* 查看cron详细文件变化
    检查项8:开机启动项
        查看 /etc/rc.local文件的内容
        systemctl 或 chkconfig检查开机启动项
    检查项9:日志中的异常
        建议先做好日志备份
        日志类型
            系统:message、secure、cron、mail等
            应用程序:Apache、Nginx、FTP、Mysql、Oracle等
            程序开发日志
            bash_history
            其他安全事件日志
        分析异常
            用户在非正常时间登陆
            残缺的日志文件
            登陆系统的ip和以往不同
            失败的日志记录
            非法使用或不正当使用su命令
            非法或无故重启网络服务内容
    检测项10:webshell检测
        检查web目录
        使用D盾或者LMD、安全狗等工具

3、检测注意项

若此机器的业务很重要,无法切断网络连接,则一定要备份所有重要的资料
若此机器的业务不重要,建议切断网络做物理隔离,将硬盘进行外置存储,可使用包括dd等工具
尝试找到黑客活动的证据
    取证工具寻找攻击者使用过的文件
    查找是否有远控或后门
    修复攻击者利用的漏洞

4、修复

用原始工具重新安装系统,并安装所有补丁
对web服务器按照安全标准配置目录权限和配置文件
改变所有系统相关账号(包括数据库连接字符串)的密码
尝试检查、恢复被攻击者篡改的文件

5、出具检测报告

包含
    检测概要步骤
    初步检测结果
    XX地方可能出现了问题
    入侵事件对业务的影响
    改进建议

6、防止服务器被入侵

在计算机安全技术上,我们可以从4个方面来着手分析服务器存在的风险,以及防范措施。

1、物理环境安全

物理环境就是指我们服务器存放的位置,我们需要分析它是否存在如下风险:

如果是自有服务器,你必须要有相对隔离的专用空间,并配上门禁和视频监控控制出入。因为如果服务器人人都可以触碰到它,那它没有任何安全可言。因为只要物理上可以接触到,那就有可能会被恶意的人盗走服务器,然后再慢慢破解服务器,获取服务器的信息。如果服务器是托管,你必须要求托管方有上面提到的门禁、视频监控等。不过,一般都会有。如果是云服务器,也就是虚拟机,那你要求云服务商的物理服务器必须在国内,同样有上面提到的基本物理安全。

2、通讯网络安全

通讯网络就是服务器需要对外提供服务使用的网络系统。这一块是我们比较熟悉的。我们需要做如下措施来保障安全:

出口必须有防火墙,(有条件用双机)通过防火墙的的规则,可以屏蔽不需要开放的端口。使得黑客们的攻击面变窄。服务器和桌面终端不能在同一个区域,至少需要划分VLAN隔离。对外服务的访问尽量采用加密访问,比如:web服务就尽量采用HTTPS来提供;有分支结构访问的,采用加密IPsec VPN或者SSL VPN来访问。服务器本身需要有 TPM 芯片(现在一般都有),该芯片是可信计算模块,可以帮助我们的服务器对内部的计算信息进行加密。确保不会在计算过程中因为信息被窃取而出现安全问题。

3、区域边界安全

不同的区域之间虽然有前面提到的VLAN隔离,但是我们还需要部署防火墙系统,让低安全等级的区域不能随意进入高安全等级区域。出口的边界区域,除了前面提到需要出口防火墙外,还可以配备入侵防御系统IPS、来防范攻击。因为防火墙只是收窄了攻击面。相当于只是一个小区保安帮忙过滤了一下进出人员。但无法防范伪冒正常流量的攻击。所以需要配备IPS,来对入侵进行防御。服务器必须配备防病毒系统。如果服务器众多,可以配备防病毒网关。服务器就1-2台,那就在服务器上安全企业杀毒软件,防止病毒入侵。

4、计算安全

系统要加固,也就是操作系统要及时打补丁,尤其是安全补丁。如果服务器众多,可以考虑上服务器加固系统。身份安全:也就是服务器的密码必须复杂口令、并且定时更换。有条件的可以采用动态密码和静态密码结合的双因子认证。定期要进行漏洞扫描,防止服务器在使用过程中出现漏洞。一旦扫描发现漏洞,需要立即进行修复。服务器日志要集中收集,运维人员定时分析日志。发现异常入侵行为日志,应该立即预警,并作出防御行动。最后,为了防止内部人员恶意入侵,我们还需要一套堡垒机,通过堡垒机来控制所有的运维人员对服务器的操作。确保其权限始终,并且操作行为可被追踪。

7、排查步骤实例

7.1、入侵者可能会删除机器的日志信息,可以查看日志信息是否还存在或者是否被清空,相关命令示例:

[root@hlmcen69n3 ~]# ll -h /var/log/*
-rw-------. 1 root root 2.6K Jul  7 18:31 /var/log/anaconda.ifcfg.log
-rw-------. 1 root root  23K Jul  7 18:31 /var/log/anaconda.log
-rw-------. 1 root root  26K Jul  7 18:31 /var/log/anaconda.program.log
-rw-------. 1 root root  63K Jul  7 18:31 /var/log/anaconda.storage.log
 
[root@hlmcen69n3 ~]# du -sh /var/log/*
8.0K /var/log/anaconda
4.0K /var/log/anaconda.ifcfg.log
24K  /var/log/anaconda.log
28K  /var/log/anaconda.program.log
64K  /var/log/anaconda.storage.log

7.2、入侵者可能创建一个新的存放用户名及密码文件,可以查看/etc/passwd及/etc/shadow文件,相关命令示例:

[root@hlmcen69n3 ~]# ll /etc/pass*
 
-rw-r--r--. 1 root root 1373 Sep 15 11:36 /etc/passwd
 
-rw-r--r--. 1 root root 1373 Sep 15 11:36 /etc/passwd-
 
 
[root@hlmcen69n3 ~]# ll /etc/sha*
 
----------. 1 root root 816 Sep 15 11:36 /etc/shadow
 
----------. 1 root root 718 Sep 15 11:36 /etc/shadow-

7.3、入侵者可能修改用户名及密码文件,可以查看/etc/passwd及/etc/shadow文件内容进行鉴别,相关命令示例:

[root@hlmcen69n3 ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
 
[root@hlmcen69n3 ~]# more /etc/shadow
root:*LOCK*:14600::::::
bin:*:17246:0:99999:7:::
daemon:*:17246:0:99999:7:::

7.4、查看机器最近成功登录的事件和最后一次不成功地登录事件,对应日志"/var/og/lastlog",相关命令示例:

[root@hlmcen69n3 ~]# lastlog
Username         Port     From             Latest
root                                       **Never logged in**
bin                                        **Never logged in**
daemon                                     **Never logged in**

7.5、查看机器当前登录的全部用户,对应日志文件"/var/run/utmp",相关命令示例:

[root@hlmcen69n3 ~]# who
stone    pts/0        2017-09-20 16:17 (X.X.X.X)
test01   pts/2        2017-09-20 16:47 (X.X.X.X)

7.6、查看机器创建以来登录过的用户,对应日志文件"/var/log/wtmp",相关命令示例:

[root@hlmcen69n3 ~]# last
 
test01   pts/1        X.X.X.X   Wed Sep 20 16:50   still logged in  
 
test01   pts/2        X.X.X.X   Wed Sep 20 16:47 - 16:49  (00:02)   
 
stone    pts/1        X.X.X.X   Wed Sep 20 16:46 - 16:47  (00:01)   
 
stone    pts/0        X.X.X.X   Wed Sep 20 16:17   still logged in

7.7、查看机器所有用户的连接时间(小时),对应文件日志"/var/log/wtmp",相关命令示例:

[root@hlmcen69n3 ~]# ac -dp
         stone                               11.98
Sep 15      total       11.98
         stone                               67.06
Sep 18      total       67.06
         stone                                1.27
         test01                               0.24
Today        total        1.50

7.8、如果发现机器产生了异常流量,可以使用命令"tcpdump"抓取网络包查看流量情况或者使用工具"iperf"查看流量情况

7.9、可以查看/var/log/secure日志文件,尝试发现入侵者的信息,相关命令示例:


相关推荐

0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)

文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...

ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes

为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...

生产环境starrocks 3.1存算一体集群部署

集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...

在CentOS上添加swap虚拟内存并设置优先级

现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...

国产深度(deepin)操作系统优化指南

1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...

postgresql-15.4 多节点主从(读写分离)

1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...

Docker 容器 Java 服务内存与 GC 优化实施方案

一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...

虚拟内存设置、解决linux内存不够问题

虚拟内存设置(解决linux内存不够情况)背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...

Elasticsearch性能调优(5):服务器配置选择

在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...

Es如何落地

一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...

MySQL进阶之性能优化

概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...

Linux Cgroups(Control Groups)原理

LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...

linux 常用性能优化参数及理解

1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

取消回复欢迎 发表评论: