Skip to content

Latest commit

 

History

History
173 lines (165 loc) · 24.2 KB

日志分析.md

File metadata and controls

173 lines (165 loc) · 24.2 KB

一. 日志类型

内核及系统日志
通过查看 /etc/rsyslog.conf ,可查看相关系统日志配置情况

/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该文件获得相关的事件记录信息。
/var/log/cron:记录crond计划任务产生的事件消息。
/varlog/dmesg:记录Linux系统在引导过程中的各种事件信息。
/var/log/maillog:记录进入或发出系统的电子邮件活动。
/var/log/lastlog:最近几次成功登录事件和最后一次不成功登录事件。
/var/log/rpmpkgs:记录系统中安装各rpm包列表信息。
/var/log/secure:记录用户登录认证过程中的事件信息。
/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。
/var/log/utmp:记录当前登录的每个用户的详细信息

二. 日志分析

2.0 中间间日志

weblogic

weblogic在安装结束后默认开启了日志记录功能,默认配置情况下,weblogic会有3种日志,分别是access log, Server log和domain log,WebLogic 8.x 和 9及以后的版本目录结构有所不同。

日志位置
WebLogic 9及以后版本:
access log在 
$MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\access.log
server log在 
$MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\<server_name>.log
domain log在 
$MW_HOME\user_projects\domains\<domain_name>\servers\<adminserver_name>\logs\<domain_name>.log
WebLogic 8.x 版本:
access log路径如下:$MW_HOME\user_projects\domains\<domain_name>\<server_name>\access.log
server log路径如下:$MW_HOME\user_projects\domains\<domain_name>\<server_name>\<server_name>.log
domain log路径如下: 
$MW_HOME\user_projects\domains\<domain_name>\<domain_name>.log
其中:
$MW_HOME是WebLogic的安装目录
<domain_name>是域的实际名称,是在创建域的时候指定的
<server_name>是Server的实际名称,是在创建Server的时候指定的
<adminserver_name>是Admin Server的实际名称,是在创建Admin Server的时候指定的。

access.log日志

主要记录http请求,默认情况下日志记录处于启用状态,服务器将http请求保存在单独的日志文件中,日志格式如下,主要记录了http请求请求ip地址、请求时间、访问页面、响应状态等信息:

server log

主要用于服务器的一般日志记录,比如weblogic的启动、关闭、部署应用等相关记录,日志格式:依次为时间戳,严重程度,子系统,计算机名,服务器名,线程ID。其后消息正文中的行仅表示记录的一次例外并显示该例外的堆栈跟踪式如下

domain log

主要记录了一个domain的运行情况,一个domain中的各个weblogic server 可以把它们的一些信息(如:严重错误)发送到AdminServer上,AdminServer把这些信息传递到domain.log上

tomcat

日志路径

tomcat日志默认路径:在安装目录下的logs文件夹下:

如果在安装中默认修改了日志存储位置,可在 conf/logging.properties文件中查看

tomcat日志一般分为catalina.out、localhost、manager、localhost_access_log4种格式日志。

catalina.out

运行中的日志,主要记录运行中产生的一些信息,尤其是一些异常错误日志信息,内容如下:

catalina.Y-M-D.log

是tomcat自己运行的一些日志,这些日志还会输出到catalina.out,
但是应用向console输出的日志不会输出到catalina.{yyyy-MM-dd}.log

localhost.Y-M-D.log

程序异常没有被捕获的时候抛出的地方,
Tomcat下内部代码丢出的日志(jsp页面内部错误的异常,org.apache.jasper.runtime.HttpJspBase.service类丢出的,日志信息就在该文件!)
应用初始化(listener, filter, servlet)未处理的异常最后被tomcat捕获而输出的日志,而这些未处理异常最终会导致应用无法启动。

manager.Y-M-D.log

管理日志
主要记录访问日志信息,记录访问的的时间、ip地址等信息,也是应急中经常用到的日志信息

此部分日志可通过查看server.xml文件的如下内容,来确定是否启用了访问日志记录

apache

日志路径

apache日志一般分为access_log和error_log两种,通过查看httpd.conf文件查看apache日志路径:
grep -i "CustomLog" /etc/httpd/conf/httpd.conf

grep -i "ErrorLog" /etc/httpd/conf/httpd.conf

access_log

访问日志,记录所有对apache服务器进行请求的访问

error_log

错误日志,记录下任何错误的处理请求,通常服务器出现什么错误,可对该日志进行查看

nginx

日志路径

nginx的日志主要分为access.log、error.log两种,可通过查看nginx.conf文件来查找相关日志路径

access.log

主要记录访问日志,记录访问客户端ip地址、访问时间、访问页面等信息

error.log,主要记录一些错误信息。

iis

查看日志文件位置


打开文件夹下其中一个名为ex170910.log,日志内容具体如下,包括访问域名时间、ip、访问url等信息。

mysql

status:查看当前数据库状态

mysql的日志主要分为以下几种:
Error Log:记录Mysql运行过程中的Error、Warning、Note等信息,系统出错或者某条记录出问题可以查看Error日志;
Genaral Query Log:记录mysql的日常日志,包括查询、修改、更新等的每条sql;
Binary Log :二进制日志,包含一些事件,这些事件描述了数据库的改动,如建表、数据改动等,主要用于备份恢复、回滚操作等;

Slow Query Log*:记录Mysql 慢查询的日志;
show variables like 'log_%';

image.png
可见mysql默认只是开启了错误日志,错误日志内容如下:

通过开启日志,来记录所有查询和执行的sql语句:

GLOBAL general_log='ON';
SHOW VARIABLES LIKE 'general%';

general_log:日志功能是否开启,默认关闭OFF
general_log_file:日志文件保存位置

sqlserver

SQL Server日志记录了完整的SQL Server数据库运行的状态信息,并以消息的形式记录系统级、应用级操作。
可以使用 SQL Server Management Studio 中的日志文件查看器来访问有关在以下日志中捕获的错误和事件的信息:
SQL Server Management Studio连接sqlserver数据库,查看与常规 SQL Server 活动相关的日志。

  1. 在对象资源管理器中,展开 “管理” 。
  2. 执行下列任一操作:
  • 1.右键单击“SQL Server 日志” ,指向“查看” ,然后单击“SQL Server 日志” 或“SQL Server 和 Windows 日志” 。
  • 2.展开“SQL Server 日志” ,右键单击任何日志文件,然后单击“查看 SQL Server 日志” 。 还可以双击任何日志文件,日志格式如下:

查询最近一次启动sqlserver时间:

历史sql记录查询:SQL Server并没有这样的实现,只有sys.dm_exec_query_stats缓存了一部分 (sql server服务开启后执行的语句,某些不被缓存执行计划的语句并不记录)。
这个视图主要是对执行计划的统计,包含消耗成本,运行次数等等,并没有session,user,每次被执行的时间等信息:
启动sql server 审计功能,会记录所有的操作记录,可以通过查看   Audits来查看日志的存储路径

Sqlserver开启日志审计功能可参考:https://blog.51cto.com/gaowenlong/1908381

oracle

Oracle日志文件分为两种:重做日志文件(redo log file)、归档日志文件,其中重做日志文件主要记录了数据库的操作过程,可以在进行数据库恢复时,将重做日志文件在还原的数据库上进行执行,以达到数据库的最新状态。
Oracle数据库默认只是对数据库的登录情况记录,但是不对数据库的查询记录统计,可通过show parameter audit,查看审计功能是否开启,若audit_sys_operations值为DB。

None:是默认值,不做审计;
DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;
audit_file_dest为存放的日志路径,可查看adump下相关文件,内容如下:

DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;
OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;
开启审计功能:

alter system set audit_sys_operations=TRUE scope=spfile;
alter system set audit_trail=db,extended scope=spfile;

重启实例即可

开启后会把审计内容记录到sys 库的AUD$表中

修改将日志文件记录在操作系统中: alter system set audit_trail='OS' scope=spfile;

Audit_file_dest即为日志保存的具体路径。
关于日志的详细配置可以参考:http://blog.itpub.net/31397003/viewspace-2145164/

2.1 常用及程序日志

web常见的日志目录
名字一般以时间戳命名打包

  1. apache的日志路径一般配置在httpd.conf的目录下或者位于/var/log/http
  2. IIS的日志默认在系统目录下的Logfiles下的目录当中
  3. tomcat 一般位于tomcat安装目录下的一个logs文件夹下面
  4. Nginx日志一般配置在nginx.conf或者vhost的conf文件中

系统常见的日志目录

  1. /var/log/auth.log 包含系统授权信息,包括用户登录和使用的权限机制等信息
  2. /var/log/lastlog 记录登录的用户,可以使用命令lastlog查看
  3. /var/log/secure 记录大多数应用输入的账号与密码,登录成功与否
    日志一般信息量巨大,根据自己的环境索引相关的有效的 信息
  4. /var/log/cron 记录crontab命令是否被正确的执行

关注Accepted、Failed password 、invalid特殊关键字

2.2 内核及系统日志

messages日志
一般内核及大多数系统消息都被记录到公共日志文件"/var/log/messages"中,而其他一些程序消息被记录到不同的文件中,日志消息还能够记录到特定的存储设备中,或者直接向用户发送。具体根据rsyslog配置而定,日志如下

secure日志
是应急中最常用的文件,主要记录系统存取数据的文件,如POP3、ssh、telnet、ftp等相关记录,从日志中可看出系统服务是否遭受到安全威胁,从如下日志中可看到ftp服务一直在被破解。
定位有多少IP在爆破主机的 root 帐号

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

定位有哪些 IP 在爆破

grep "Failed password" /var/log/secure|grep -E -o 
"(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c

爆破用户名字典

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

登录成功的 IP 有哪些

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

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

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

增加用户

grep "useradd" /var/log/secure# 删除用户
grep "userdel" /var/log/secure

2.3 用户日志

wtmp日志
记录了用户的登录、退出、重启等情况,可以查看系统是否存在异常用户登录,判断攻击者是否已经登录服务器,由于wtmp日志为二进制文件,所以利用用last命令查看,可查看这个时间之前的日志。

last -t 20210510123030


清除wtmp日志命令如下:# echo > /var/log/wtmp
utmp日志
记录当前用户的一些信息,由于utmp日志文件同样为二进制文件,可通过w、who命令查看
lastlog命令,用于显示系统中所有用户最近一次登录信息。

三. windows日志

查看windows日志方法:开始->运行->输入eventvwr

https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/event-4625
https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/default.aspx?i=j
http://www.eventid.net/display.asp?eventid=8193&source=
之前也已经有大牛写过关于windows日志查看内容,可参考如下链接:
https://www.freebuf.com/vuls/175560.html

四. 分析工具

Apache Logs Viwers
web-log-parser
https://github.com/JeffXue/web-log-parser

腾讯
https://security.tencent.com/index.php/opensource/detail/15
商业项目
360 >> 360星图
Splunk >> 机器数据引擎
赛克蓝德 >> SeciLog
优特捷信息技术 >> 日志易
HanSight瀚思 >> 安全易
百泉众合数据科技 >>LogInsight
江南天安 >> 彩虹WEB攻击溯源平台