windows服务器应急溯源提取日志

本文介绍了如何使用批处理脚本从Windows系统、IIS、Apache/Tomcat/Nginx、数据库(如MySQL、SQLServer、Oracle)以及审计日志中提取和复制日志文件,包括系统日志、访问日志、数据库操作记录等,提供了一种自动化管理和监控IT环境的方法。
摘要由CSDN通过智能技术生成

windows提取日志:

系统日志。
中间件访问日志,错误日志。
数据库访问日志。
数据库网站数据库用户表日志。

1.  提取windows系统日志
windowslog.bat

@echo off  
set "LOG_FOLDER=D:\getlogs\windows\"  
  
REM 创建日志文件夹(如果不存在)  
if not exist "%LOG_FOLDER%" mkdir "%LOG_FOLDER%"  
  
REM 导出应用程序日志  
wevtutil epl Application "%LOG_FOLDER%\Application.evtx"  
  
REM 导出系统日志  
wevtutil epl System "%LOG_FOLDER%\System.evtx"  
  
REM 导出安全日志(可能需要管理员权限)  
wevtutil epl Security "%LOG_FOLDER%\Security.evtx"  

REM 导出转发日志(可能需要管理员权限)  
wevtutil epl Security "%LOG_FOLDER%\ForwardedEvents.evtx"  

REM  导出安装日志
wevtutil epl Setup "%LOG_FOLDER%\Setup.evtx"  

  
REM 你还可以继续添加其他类型的日志导出命令,例如:  
REM wevtutil epl Setup "%LOG_FOLDER%\Setup.evtx"  
REM ...等等  
  
echo All available logs have been exported to %LOG_FOLDER%  
pause

2.  提取iis访问日志
iislog.bat

@echo off  
set "SOURCE_DIR=C:\inetpub\logs\LogFiles"  
set "DEST_DIR=D:\getlogs\iis\"  
  
REM 创建目标文件夹(如果不存在)  
if not exist "%DEST_DIR%" mkdir "%DEST_DIR%"  
  
REM 递归复制所有.log文件到目标文件夹  
xcopy /s /i /y "%SOURCE_DIR%*.log" "%DEST_DIR%\"  
  
if %errorlevel% eq 0 (  
    echo IIS日志已成功导出到 %DEST_DIR%  
) else (  
    echo IIS日志导出过程中发生错误。  
)  
  
pause

3. 获取iisweb路径和log路径
iisweb.bat

@echo off  

mkdir  D:\getlogs\iisweb\
set "IIS_BIN_PATH=%windir%\system32\inetsrv\appcmd.exe"  
set "OUTPUT_FILE=D:\getlogs\iisweb\web.txt"  
  
REM 清除之前的输出文件  
if exist "%OUTPUT_FILE%" del "%OUTPUT_FILE%"  
  
REM 列出所有网站及其绑定,并将输出保存到iisweb.txt文件中  
echo Listing IIS websites and their bindings...  
%IIS_BIN_PATH% list site /xml > "%OUTPUT_FILE%"  
  
REM 显示输出文件的路径  
echo IIS configuration information has been saved to %OUTPUT_FILE%.  
  
REM 可以选择在这里添加其他命令来进一步处理输出文件  
  
pause

4. apache_tomcat_nignx_log.bat  
提取系统中包含apache_tomcat_nignx_logs字样的文件夹目录(当然也可以log)

@echo off  
setlocal enabledelayedexpansion  
  
REM 定义搜索的盘符列表  
set "drives=C D E F"  
  
REM 获取批处理文件所在的目录  
set "batchDir=%~dp0"  
  
REM 定义输出文件路径,使用相对路径(相对于批处理文件)  
set "outputFile=%batchDir%logsdir.txt"  
  
REM 如果输出文件已存在,则删除它  
if exist "%outputFile%" del "%outputFile%"  
  
REM 遍历盘符列表  
for %%d in (%drives%) do (  
    REM 检查盘符是否存在  
    if exist "%%d:\" (  
        echo Searching on drive %%d:>> "%outputFile%"  
          
        REM 切换到盘符根目录  
        pushd %%d:\  
          
        REM 递归搜索当前盘符及其子目录中的文件夹  
        for /r %%f in (.) do (  
            set "folderPath=%%~ff"  
            set "folderName=%%~nxf"  
              
            REM 检查文件夹名称是否包含关键字  
            if "!folderName:apache=!" neq "!folderName!" (  
                echo !folderPath!>> "%outputFile%"  
            ) else if "!folderName:tomcat=!" neq "!folderName!" (  
                echo !folderPath!>> "%outputFile%"  
            ) else if "!folderName:nginx=!" neq "!folderName!" (  
                echo !folderPath!>> "%outputFile%"  
            ) else if "!folderName:logs=!" neq "!folderName!" (  
                echo !folderPath!>> "%outputFile%"  
            )  
        )  
          
        REM 返回到原始目录  
        popd  
    ) else (  
        echo Drive %%d: does not exist.>> "%outputFile%"  
    )  
)  
  
echo Search completed. Results have been saved to %outputFile%.  
type "%outputFile%"  
pause

5. copylog.bat


logsdir.txt 里面只保存log或者logs结尾的路径记得加上\

D:\EmpireServer\php\apache2.2\logs\
D:\Soft\FileLocator\FileLocator\logs\
D:\t00ls\Crack\superCrack\logs\

@echo off  
setlocal enabledelayedexpansion  
  
REM 设置目标根目录  
set "targetRootDir=D:\getlogs\logall"  
set "counter=1"  
  
REM 读取源路径文件并处理每个路径  
for /f "tokens=*" %%a in (logsdir.txt) do (  
    call :ProcessPath "%%a"  
)  
  
echo 处理完成。  
pause  
goto :eof  
  
:ProcessPath  
set "sourcePath=%~1"  
set "targetName=log!counter!"  
set "targetPath=!targetRootDir!\!targetName!"  
  
REM 创建目标文件夹  
if not exist "!targetPath!" mkdir "!targetPath!"  
if !errorlevel! neq 0 (  
    echo 创建目录 !targetPath! 失败。  
    exit /b 1  
) else (  
    echo 创建目录 !targetPath! 成功。  
)  
  
REM 复制文件和目录结构到目标路径(包括子目录和文件),不复制空目录  
xcopy /s /e /i /y "!sourcePath!*" "!targetPath!\"  
if !errorlevel! neq 0 (  
    echo 复制 !sourcePath! 到 !targetPath! 时发生错误。  
) else (  
    echo !sourcePath! 已成功复制到 !targetPath!  
)  
  
REM 递增计数器以准备下一次迭代  
set /a "counter+=1"  
  
goto :eof


批量保存结构复制日志文件。

6. 数据库用户表日志

mssql &  mysql

SELECT TABLE_NAME   FROM INFORMATION_SCHEMA.TABLES   WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME LIKE '%log%';  全行匹配

SELECT TABLE_NAME   FROM INFORMATION_SCHEMA.TABLES   WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME LIKE '%log';    右侧匹配

oracle 当然可以考虑右侧匹配去掉右边的%
查询当前用户log

SELECT TABLE_NAME   FROM USER_TABLES   WHERE TABLE_NAME LIKE '%log%';


查询所有用户log

SELECT OWNER, TABLE_NAME   FROM DBA_TABLES   WHERE TABLE_NAME LIKE '%log%';


查询拥有权限log

SELECT TABLE_NAME   FROM ALL_TABLES   WHERE TABLE_NAME LIKE '%log%';


7. 数据库日志

mssql
数据库日志。
数据库网站数据库用户表登录或操作或访问日志。

sqlserver  用户登录成功或者失败 日志位置:

打开 SSMS 并连接到目标 SQL Server 实例。
在“对象资源管理器”中,展开目标 SQL Server 实例节点。展开“管理”节点,然后找到并双击“SQL Server 日志”。这将打开一个新的窗口,显示日志文件的内容。在日志文件中,你可以搜索特定的登录尝试事件。
事件查看器来访问这些日志,并筛选出与 SQL Server 相关的登录事件,包括 SQL Server 用户的登录尝试。
错误日志 (Error Log) 搜索与登录尝试相关的条目。这些条目通常会包含登录尝试的时间、用户名和结果(成功或失败)。
SQL Server 的审核功能来记录数据库活动,那么用户登录成功或失败的信息也会被记录在审核日志中。

SQL Server 登录相关的事件ID示例:
登录成功:事件ID 528 或 18453:通常表示一个用户账户成功地登录到了系统。
登录失败:事件ID 529 或 18456:表示登录失败。这可能是因为提供了错误的用户名或密码,或者账户被锁定等原因。

想查看某个时间段都有谁登录了SqlServer数据库
    SELECT (sd.Name)'数据库',sp.* FROM 
    [Master].[dbo].[SYSPROCESSES] sp,[Master].[dbo].[SYSDATABASES] sd
    order by login_time desc


1. 事务日志 (Transaction Log):事务日志是 SQL Server 中最重要的日志之一,它记录了数据库中所有修改操作的详细信息,包括 INSERT、UPDATE、DELETE 等操作。通过对事务日志的分析,可以追溯数据的变更历史,了解数据在何时被谁修改以及修改的内容。
sql语句:USE [你的数据库名];  GO  SELECT name, physical_name, type_desc  FROM sys.master_files  WHERE database_id = DB_ID(N'你的数据库名');
type_desc 列值为 LOG 的行将显示事务日志文件的名称和路径。 然后copy出来。


2. 错误日志 (Error Log):错误日志记录了 SQL Server 实例中发生的所有错误和警告信息,包括数据库引擎错误、服务启动和停止信息、备份和还原操作的结果等。
通过分析错误日志,可以追踪和排查数据库中的问题,了解故障发生的原因和时间。
1. 使用 SQL Server Management Studio (SSMS)
打开 SSMS 并连接到你的 SQL Server 实例。
在“对象资源管理器”窗口中,展开“管理”文件夹。
点击“SQL Server 日志”以查看错误日志、SQL Server Agent 日志等。
在右侧的窗口中,你可以浏览错误日志的内容。你可以使用“筛选”功能来查找特定的错误或警告。
2. 直接访问错误日志文件
错误日志文件通常位于 SQL Server 数据目录的 LOG 文件夹内。你可以通过文件资源管理器直接访问这些文件。
打开文件资源管理器。
导航到 SQL Server 的数据目录。默认情况下,这通常是 C:\Program Files\Microsoft SQL Server\MSSQL<版本号>.<实例名>\MSSQL\LOG,但具体位置可能因安装和配置而异。
在该目录中,查找名为 ERRORLOG 或类似名称的文件。这些文件包含错误日志的内容。
使用文本编辑器(如记事本)打开这些文件以查看内容。


3. 审核日志 (Audit Log):如果启用了 SQL Server 的审核功能,可以配置审核策略来捕获和记录特定的数据库活动。审核日志可以记录用户登录、对象访问、数据修改等敏感操作,为溯源提供详细的信息。
使用 SQL Server Management Studio (SSMS):
打开 SSMS 并连接到你的 SQL Server 实例。
在“对象资源管理器”中,展开“安全性”文件夹。
展开“审核”文件夹。
如果存在审核日志文件,那么审核功能已经开启。你可以右键单击这些审核日志,选择“查看审核日志”来查看其内容。


4. 安全日志:如果 SQL Server 与 Windows 集成身份验证结合使用,Windows 的安全日志也可能包含与 SQL Server 相关的溯源信息。Windows 安全日志可以记录用户登录、身份验证尝试等与安全相关的活动


mysql:
默认情况下,MySQL只会启动错误日志文件,其他日志文件需要手动启动才可以被激活。
查看 my.cnf 或 my.ini 配置文件。


mysql查看当前登录的连接用户信息

SHOW PROCESSLIST;

SHOW FULL PROCESSLIST;

SHOW STATUS LIKE 'Threads_connected';

SELECT * FROM performance_schema.threads WHERE TYPE = 'FOREGROUND';

SELECT * FROM information_schema.PROCESSLIST;


mysql查看历史登录的连接用户信息
1. 使用通用查询日志 (General Query Log) 没有开启就没有:

SHOW VARIABLES LIKE 'general_log_file';


开启了General Query Log,过滤出登陆的日志

SELECT * from general_log  where command_type='Connect';/

查看历史连接

SELECT event_time,user_host,command_type,argument FROM mysq1.general_log WHERE command_type ='Connect'


mysql 查询最近登录次数最多的地址ip:
登录日志获取如下:

select * from operate_log where USER_ID = 100 and OPERATE_TYPE = 'LOGIN' ORDER BY CREATE_TIME DESC LIMIT 11;

select a.IP from (select * from operate_log where USER_ID = 100 and OPERATE_TYPE = 'LOGIN' ORDER BY CREATE_TIME DESC LIMIT 11) a GROUP BY a.IP ORDER BY count(a.IP)  desc LIMIT 1

错误日志 (Error Log): 记录MySQL服务器在启动、运行或停止时出现的问题,包括警告信息。这对于诊断和解决问题非常有用,例如数据库启动失败、查询执行错误等情况。

SHOW VARIABLES LIKE 'log_error';

查询日志 (Query Log): 记录MySQL服务器接收到的所有查询语句,包括SELECT、INSERT、UPDATE、DELETE等操作。查询日志可以用于分析数据库的性能问题、优化慢查询以及审计数据库操作等。

SHOW VARIABLES LIKE 'general_log_file';

慢查询日志 (Slow Query Log): 记录执行时间超过预定义阈值的SQL查询语句。管理员可以根据自己的需求设置慢查询日志的阈值,以便于找出需要优化的查询语句,并对其进行性能调优。

SHOW VARIABLES LIKE 'slow_query_log_file';

二进制日志 (Binary Log): 记录所有修改数据库数据的操作,如INSERT、UPDATE、DELETE等。二进制日志主要用于数据备份、恢复和复制。
SHOW MASTER STATUS;  查看当前正在使用的二进制日志文件和位置。
SHOW BINARY LOGS;     列出所有二进制日志文件

事务日志 (Transaction Log): 记录InnoDB等支持事务的存储引擎执行事务时产生的日志。它确保数据库的一致性和持久性,通常随机I/O转换为顺序I/O。
在 MySQL 的配置文件中,你可以查找 datadir 指令来确定数据目录的位置

中继日志 (Relay Log): 在复制过程中,中继日志用于记录从主服务器的二进制日志文件中复制而来的事件。它与二进制日志几乎相同。
SHOW SLAVE STATUS


Undo日志 (Undo Log): 记录正在进行的事务对数据库的修改操作。它用于回滚事务或实现MVCC(多版本并发控制)。
事件日志 (Event Logs): 记录数据库中的重要事件,例如表结构的更改、索引的创建和删除等。这对于数据库管理员来说非常有用,因为它能够记录数据库的变更历史。
检查 MySQL 的配置文件(如 my.cnf 或 my.ini),查找与 Undo 日志相关的配置选项。
使用 SHOW VARIABLES 语句查询与 Undo 日志相关的系统变量。

SHOW ENGINE INNODB STATUS


oracle:

1. 检查审计功能是否开启

SQLPLUS> connect / AS SYSDBA
SQLPLUS> select * from sys.aud$; --没有记录返回
SQLPLUS> select * from dba_audit_trail; - 没有记录返回

SELECT VALUE FROM V$PARAMETER WHERE NAME = 'audit_trail';

查询 AUD$表就可以查看到审计结果了
SQL>

select sessionid, to_char(timestamp#,'DD-MON-YY:HH24:MI:SS') \
login,userid, to_char(logoff$time,'DD-MON-YY:HH24:MI:SS') logoff \
from sys.aud$ where userid='USERNAME';

这将显示数据库的审计配置参数,

SELECT * FROM dba_audit_mgmt_config_params

包括审计功能的启用状态和审计日志的存储位置。
所有用户的登录会话信息

SELECT * FROM dba_audit_session

,包括用户名、登录时间、登录IP地址等。这些信息对于跟踪用户活动、识别潜在的安全威胁或进行合规性审计非常有用。


检查审计功能是否启用:执行以下SQL查询来检查审计功能是否已启用:
sql:

SELECT * FROM V$PARAMETER WHERE NAME = 'audit_trail'


查询用户登录日志:一旦审计功能启用并配置为记录登录事件,您可以使用以下查询来检索历史用户登录日志:
sql: 

SELECT username, timestamp, action_name, os_username, terminal, host_address  
FROM dba_audit_session   WHERE action_name = 'LOGON'   ORDER BY timestamp DESC;

Linux web服务器应急响应靶场是一个模拟真实环境下的紧急事件响应练习场所。该靶场旨在提供一个具有高度仿真度的网络环境,以帮助安全人员提升对Linux web服务器应急响应能力。 首先,靶场会模拟真实的攻击场景,包括常见的漏洞利用和攻击技术,如SQL注入、跨站脚本攻击、远程命令执行等等。通过对这些攻击进行实践,安全人员能够学习并理解攻击者的手段和思路,从而更好地应对和防范类似攻击。 其次,靶场提供了一系列实际的应急响应演练,可以让安全人员在真实环境中应对各种紧急事件。比如,在被攻击后的服务器恢复和修复、日志分析和溯源等方面进行演练。通过这些实践,安全人员能够锻炼应急响应的技能,提升对应急事件的处理能力。 此外,靶场还提供了一些工具和资源,用于监控和检测攻击行为,以及收集和分析攻击相关的数据。通过这些工具的使用,安全人员可以更好地掌握攻击者的行为特征,及时发现异常情况并采取相应措施。同时,还能够积累更多的经验,为今后的实际工作提供更好的应对手段和方法。 总之,Linux web服务器应急响应靶场是一个非常有益的训练和实践场所,可以帮助安全人员提升Linux web服务器应急响应的能力和技巧。通过参与靶场的训练,可以提高应对紧急事件的速度和准确性,从而更好地保护服务器和网站的安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值