今天最后一次课了,下课之后印度哥们过来跟我说,你们讲的东西很有趣啊。然后给了我一个很大的拥抱,这哥们就因为我上次在他饿了一天之后,借了他3刀,所以后来对我非常的好=_=............
logstash一个分布式日志收集工具。我们今天的演示内容。
虽然不涉及什么编程操作,但是我觉得熟悉这类工具对从事安全分析的人是非常的重要。
因为安全分为攻击型和防御行。日志分析就是防御型中最重要的部分之一,而日志的收集,管理,将会是非常耗时的一件事,尤其是分布式收集。如果以后去给哪个企业管服务器,难说用得上啊。
logstash就是把各个服务器(a,b,c,d,e,f........)上的日志,汇集到一起。假设是接收服务器是X。X可以把收集结果输出到web UI上或者本地文件,因此管理员只需要在一台机器上进行日志分析就行,而且还是自动收集。这东西另一个imba之处就是它无视日志格式,什么格式它都认。
老师说还有一个好处就是免费。。。。
好吧,说说这东西的配置:
分布式的架构分为发送端和接收端。运行logstash很简单,就是一个jar文件,命令在官网都有。主要是配置文件的设置。
发送端的配置如下:
input {
file {
# Wildcards work here :)
path => [ "/var/log/messages", "/var/log/syslog", "/var/log/*.log" ]
file {
type => "apache-access"
path => "/var/log/apache2/access.log"
file {
type => "apache-error"
path => "/var/log/apache2/error.log"
}
} #这里可以写filter
output {
# Output events to stdout for debugging. Feel free to remove
# this output if you don't need it.
# Ship events to the amqp fanout exchange named 'rawlogs"
amqp {
host => "127.0.0.1"
exchange_type => "fanout"
name => "rawlogs"
}
}
简单的来说,就是提取服务器本地的日志(input),经过过滤器的表达式(我没写)的过滤,然后把日志发送到接收端。
接收端的配置如下:
input {
amqp {
# ship logs to the 'rawlogs' fanout queue.
type => "all"
host => "127.0.0.1"
exchange => "rawlogs"
name => "rawlogs_consumer"
}
} output {
#elasticsearch { embedded => true }
file
{
path => "/media/Acer/try.log"
}
}
接收端不同的地方在于:
不止要运行logstash,还要运行一个amqp服务器,这个服务器才是负责接收消息的,然后转给logstash。如果要输出在web UI,就要运行一个叫elasticsearch的服务器。然后logstash的output指向相应IP就行,默认端口9300.以上的例子只是我本地的演示,把结果输出在本地文件(我的elasticsearch似乎有问题)。我们演示的时候用的是两台机器,配置文件几乎是一样的。。接收端是另外一台机器,那台机器上的elasticsearch就没问题,能出结果。
顺便BS一下logstash的官方,官方的分布式教程有问题(启动接收端的时候没说用配置文件。。),卡了我们一段时间。最后还是给我们自己发现和改出来了。
补充一下,一个阿里巴巴工作的朋友读完文档后给了我另外一些提示:
有3种原因会中断发送
内存 硬盘 还有就是发送端发送速度过快