FTP服务器日志解析
转至:https://blog.csdn.net/weixin_34320724/article/details/92045244
FTP是老牌的文件传输协议,在网络中应用非常广泛。本节就Vsftp服务器的日志进行重点讨论,在本书的FTP多级跳案例中就会涉及到本节学到的知识。在Redhat Linux系统下Vsftp的配置文件在/etc/vsftp/vsftp.conf文件中。默认情况下,Vsftp不单独记录日志,也就是说不会输出到一个单独的文件中存储,而是统一存放到/var/log/messages文件中。Vsftp日志实例显示如图1所示。
图1 Vsftp日志实例
通过在messages过滤得方法可以看到Vsftp的客户机连接日至,但这段日志里只反映了少量信息,如果需要查看更详细的信息如何操作?下面我们来编辑/etc/vsftp/vsftp.conf配置文件。
如何将Vsftp服务器的日志文件单独输出到某个文件下呢?这里需要三个步骤:
下面对重要语句做一些解释:
标识A: 启用xferlog_enable=YES,它表示将客户机登录服务器后上传或下载的文件具体信息记录。
标识B:启用xferlog_file=/var/log/vsftpd.log,它表示将上传下载写到指定文件,也就是/var/log/xferlog文件。
标识C:启用dual_log_enable=YES,它表示启用双份日志,一份日志由xferlog记录,同时vsftpd.log也记录另一份日志,注意他们两儿可不是互为备份,其内容不同,但各有千秋。
接下来还得解释一下/usr/bin/xferstats这个工具,它是日志统计工具,用于计算传输了多少文件并创建日志文件。
注意:在您的Linux系统中一定安装xferstats的包,才能对他进行操作,如果发现找不到xferstats没有命令就要安装这个包。
1.3.1 分析vsftpd.log和xferlog
Vsftpd.log和xferlog是Vsftp服务器记录日志的来源,下面重点对着两种日志文件的格式做一下分析。
(1)vsftpd.log实例分析首先打开vsftpd.log.1文件,看看它的日志结构。如图2示。
图2 ftpd分离后的日志结构
在图1-9中日志仅反映了部分Ftp登录情况:例如登录IP地址、用户名。但下载软件内容不会记录下来,有时网管恰好关心这一段日志信息,这时我们需要同时参考xferlog日志,还记得上面说过的xferstats工具吗?
(2)Xferlog日志实例分析
xferlog日志会记录FTP会话详细信息,它能够显示客户机向FTP Server上传/下载的文件路径及名称认证方式等信息,下面我们看看这个文件的具体内容, xferlog日志格式见表1-4所示。
Xferlog日志格式解析:
注意:这里指的认证是结合PAM(一种可插入的安全验证模块)的方式,主要是为了保证安全,在企业中常会用到Vsftp+Pam+Postgresql的架构,在这种架构中我们可以设置为用MD5工具来验证密码,这样客户机在远程要用MD5加密过密码的用户登录才能成功获取文件,有关PAM的应用在本书的第九章SSH加固中也会提到。
1.3.2 中文对Vsftp日志的影响
大家在使用RHEL5系统中的Vsftp(2.05版)时有时会遇到下面中文日志的显示问题,我们看看下面的例子。如果客户机上传的文件中含有中文名那么日志将显示乱码,例如新建一个带中文的文件夹,发现在其日志(/var/log/xferlog和/var/log/vsftpd.log)中就会产生如下日志(不能正常的显示中文):
Sat Jan 12 00:26:18 2013 [pid 6853][ftp] FAIL MKDIR: Client “192.168.150.1”, “/pub/???????????”
当日志中出现乱码,怎么办呢?
Ø 将系统安装成为默认为中文;
Ø 调整字符集,将系统的字符集改成zh_CN.gb;或者将字符集修改为GB2312
Ø 修改vsftpd.conf,加入syslog_enable=yes参数,编辑vsftpd.conf,再重启vsftpd;
经过笔者尝试,以上三种方法都不能解决中文日志的输出问题。其实,并不是设置问题,是Vsftpd本生问题(当然修改源码然后编译安装是可以解决的),要解决就要将日志输出到/var/log/messages,可这样做和我们当初想法将他分离相违背, 有兴趣的读者也可采用Proftp,见图2示。它的主要优点是,不但可以完整的记录中文的文件名在日志汇总,还可以日志分离,查看起来比较方便。
图2Proftp中文日志显示
1.3.2 用Logparser分析FTP日志
在分析了Vsftp服务器日志后,在实际工作中Windows系统下的FTP服务器应用的也不少, 微软的IIS服务器常常会成为入侵的对象。微软LogParser工具是Windows系统下功能非常的强大的日志分析工具,它可以分析IIS日志这种基于文本的日志格式,操作系统事件日志还能分析CSV和XML这类的文件格式,尤其对于上百兆甚至是上GB的日志文件都可以快速分析,利用LoParser能轻松查出你需要的数据,而且还能以图表的形式输出结果。下面就用这款工具来筛选FTP日志中的异常连接。主要分为了收集Ftp日志、导入数据库、日志数据筛选和异常数据分离四个步骤:
步骤一: FTP日志的采集
微软IIS服务器的FTP日志文件默认位置为%systemroot%\system32\LogFiles\MSFTPSVC1\,对于绝大多数系统而言则是C:\WINDOWS\system32\LogFiles\MSFTPSVC1(如果安装系统时定义了系统存放目录则根据实际情况修改),系统默认每天自动生成一个日志文件。日志文件的名称格式是: ex + 年份的末两位数字+月份+日期,如2006 年3月19日的FTP日志文件是ex060319.log,这是个文本文件,可以用任何编辑器打开,例如记事本程序。
为了详细地分析采集来的FTP日志,下面我们先来看看常见的命令有: USER 〈用户名〉、PASS〈密码〉、DELE <文件名>、QUIT 等,由于命令较多本节中就不一一列出了。对于常见的响应提示信息,如表2所示(与Apache的类似)。
表2 FTP 响应信息含义
状态代码 |
含 义 |
2XX开头 |
成功 |
3XX开头 |
权限问题 |
4XX开头 |
文件问题 |
5XX开头 |
服务器故障 |
FTP 命令加上响应号才具有实际意义,例如:USER stu 331 表示用户试图登录, PASS - 230 表示登录成功。
步骤二:FTP日志导入MS SQL数据库
把Ftp日志导入到SQL Server数据库,首先在需要安装好LogParser 2.2+SQL Server环境;然后在待分析机器上装好SQL Server 环境,然后新建数据库名为iis;最后将IIS日志拷贝到本机。准备工作完成后输入如下命令:
logparser.exe "select * from C:\WINDOWS\system32\LogFiles\MSFTPSVC1\ex*.log to iisftplog_table" -o:sql -server:127.0.0.1 -driver:"sql server" -database:iis -username:sa -password:123456 -createtable:on
命令执行和输出效果见图3所示
图3 Logparser命令执行和输出效果
在执行上面命令时,一定要指定日志文件的完整路径,否则将出现找不到日志的提示。 当Logparser程序正确输出后,就可以打开数据库检查了,如图4、图5所示。
图4 在企业管理器中打开iislog_table 表
图5 查看iisftplog_table表
步骤三:FTP日志数据的筛选
IIS的FTP日志包括5 个域: time、c-ip、cs-method、cs-uri-stem 和sc-status。
下面选取了FTP服务器某日白天的日志, 一共1万多条条记录
#Software: Microsoft Internet Information Services 5.2
#Version: 1.0
#Date: 2010-05-08 08:30:23
#Fields: time c-ip cs-method es-uri-strem sc-status
08:30:23 192.168.3.62 [1]USER stu 331
08:30:23 192.168.3.62 [1]PASS - 530
08:30:28 192.168.3.62 [2]USER stu 331
08:30:29 192.168.3.62 [2]PASS - 530
... ...
09:10:23 192.168.3.135 [15]USER anonymous 331
09:10:23 192.168.3.135 [15]PASS IEUser@ 230
09:10:37 10.10.1.200 [16]USER px 331
09:10:37 10.10.1.200 [16]PASS - 530
... ...
21:44:21 63.103.87.197 [1163]USER anonymous 331
21:44:21 63.103.87.197 [1163]PASS yourname@yourcompany.com 230
21:44:40 63.103.87.197 [1163]sent /mp3.ape 550
将FTP日志文件导入MS SQL 数据库后,字段名保留日志文件中的名字,下面就可以通过脚本对FTP进行深度处理。
步骤四:分离正常与异常数据源
FTP日志文件导入至MS SQL服务器后,在数据库中用SQL命令将每一天的数据都按cs-method 字段进行升序排序。每天日志中cs-method 字段相同的记录表示该用户这次登录所做的一系列操作,数据库中记录是否出现异常响应,可以根据sc-status 字段的值来判断,例如如果出现登录错误, 即PASS-530,连续出现3 次以上,则认为异常。可以将异常的登录错误信息输出即可,进过这样对FTP日志文件进行的深度挖掘,能非常方便管理人员迅速判断故障,提高了工作效率和准确度。
转载于:https://my.oschina.net/chenguang/blog/375311
FTP服务器日志解析的更多相关文章
- 外网访问内网的FTP服务器-原理解析
1. 背景简介 最近研究如何在内网搭架FTP服务器,同时要保证外网(公网)能访问的到.终成正果,但走了一些弯路,在此记下,以飨后人. 2. 基础知识 FTP 使用 2 个端口,一个数据端口和一个命令端 ...
- [FTP]xferlog日志解析
[root@teacher ~]# cat /var/log/xferlogMon Jan 25 20:41:39 2016 1 10.0.222.156 913268 /sys/sys64/Pack ...
- IIS Web服务器日志、日志服务器分析
IIS Web服务器日志.日志服务器分析 EventLog Analyzer是一款全面的工具,用于审计.管理和跟踪您的Microsoft Internet Information Services(I ...
- FTP服务器中vsftpd主配置文件解析
/etc/vsftpd/vsftpd.conf#################匿名权限控制############### anonymous_enable=YES #是否启用匿名用户no_anon_ ...
- 本地多张图片采用jmeter上传到ftp服务器的方法和获取服务器日志中某些关键字的基本方法
测试需求: 本地图片上传到ftp服务器里和另外两台不同算法比对服务器进行比对,得出漏检和误检结果:这实际属于功能测试范畴. 测试思路: 第一种方法:使用实际场景的摄像机抓拍图片上传到服务器,用录屏软件 ...
- shell脚本实现自动压缩一天前的日志文件 ,并传到ftp服务器上
shell脚本实现自动压缩一天前的日志文件 ,并传到ftp服务器上 naonao_127关注2人评论19401人阅读2012-06-08 11:26:16 生产环境下脚本自动备份脚本是 ...
- 文件服务器:FTP服务器详解
文件服务器:FTP服务器 数据传输原理 功能简介 文件的传输与管理 不同等级的用户身份:user.guest.anonymous 实体用户.权限较完整 匿名用户.下载资源的能力 命令记录与日志文件记录 ...
- DNS服务器全面解析--转
引用地址:http://pangge.blog.51cto.com/6013757/1273087 基础认知篇 DNS服务的概述 DNS是Domain Name System 的缩写,即域名系统.DN ...
- 用PHP实现一个高效安全的ftp服务器(二)
接前文. 1.实现用户类CUser. 用户的存储采用文本形式,将用户数组进行json编码. 用户文件格式: * array( * 'user1' => array( * 'pass'=>' ...
随机推荐
- golang中闭包讲解
1. 非闭包时的结果 package main import "fmt" func main() { var funcSlice []func() for i := 0; i &l ...
- http8种请求方式
根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELE ...
- HTTPS加密证书流程(2)
目录 一:HTTPS加密证书流程 二:证书对比 三:自签证书 1.(lb服务器负载均衡代理) 2.(创建CA证书 创建密码) 3.生成自签证书(公钥),同时去掉私钥的密码(Enter) 四:证书内容解 ...
- db2服务器linux的cache过高原因
在线上db2数据库服务器,使用的linux操作系统(RHEL,centos),当db2数据库运行一段时间之后,操作系统的物理内存就趋近于0,同时系统的cache暴增,但是use却不高,下面是正常使用 ...
- Linux配置 ftp 和 ftp简单介绍
一.ftp概念? /* ftp是一个协议和http协议都是叫协议 tcp和udp也是协议 ftp是文件(以流的形式进行传输)传输协议(针对于文件进行上传和下载) */ 1.如果ftp服务器有多台,服务 ...
- C++智能指针使用说明
导读 STL提供四种智能指针:auto_ptr.unique_ptr.shared_ptr和weak_ptr.其中auto_ptr是C++98提供的解决方案,C++11以后均已摒弃.所有代码在gcc ...
- Markdown学习——Typora入门之常用操作语法及其快捷键
Markdown 学习--Typora入门 Markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档. 由于Markdown的轻 ...
- 通过json动态创建控制器
通过字符串来创建控制器 如果通过字符串来创建控制器 不可以直接通过类型来获取对应的类 因为Swift有命名空间,类前需要加上命名空间的名称 获取命名空间的名称 let executable = NSB ...
- JAVA多线程学习七-线程池
为什么用线程池 1.创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 例如: 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 如果T1+T3> ...
- Swift字符串的介绍
字符串的介绍 字符串在任何的开发中使用都是非常频繁的 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"" ...