logstashで不正アクセスのログを集める

grepでログを確認するのが面倒だ!!

 

そんなときに便利なログ収集ツールlogstashを使ってみました。

fluentdを使う方法もあるそうですが、今回はlogstash+elasticsearch+kibanaで構築します。

f:id:katashiyo515:20140920092736j:plain

サーバ機能名用途
192.168.1.210 logstash elasticsearchにログを送る
192.168.1.212 elasticsearch logstashから送られたログをdbに保存
kibana elasticsearchからログを取得し画面に表示する

 

elasticsearchのインストール(192.168.1.212)

javaのインストール

sudo yum install java-1.7.0-openjdk

elasticsearchのダウンロード
$ curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.tar.gz
$ tar zxvf elasticsearch-1.1.1.tar.gz
$ cd elasticsearch-1.1.1/
elasticsearchの実行

$ ./bin/elasticsearch

kibanaのインストール(192.168.1.212)

アパッチのインストール

$ sudo yum install httpd

kibanaのインストール

$ cd /var/www/html/
$ sudo curl -O https://download.elasticsearch.org/kibana/kibana/kibana-3.1.0.tar.gz
$ sudo tar zxvf kibana-3.1.0.tar.gz

アパッチのリスタート

$ sudo /etc/init.d/httpd restart

kibanaにアクセス

http://192.168.1.212/kibana-3.1.0/

フィルターを作成

termsパネルを追加

f:id:katashiyo515:20140920093633j:plain

logstashのインストール(192.168.1.210)

javaのインストール

$ sudo yum install java-1.7.0-openjdk

logstashのダウンロード

$ wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz --no-check-certificate
$ tar zxvf logstash-1.4.2.tar.gz
$ cd logstash-1.4.2

logstashの設定ファイルの作成

この形式のログを分解しelasticsearchに送ることにします

Sep 18 01:01:01localhosti sshd[1234]: Invalid user oracle from 123.456.789.012

vim mylogstash.conf 

input {
file {
type => "seucure-log"
path => "/var/log/secure"
}
}
filter {
grok {
add_tag => ["testtag"]
match => {
"message" => "%{SYSLOGTIMESTAMP:syslogtimestamp} %{DATA:data}: Invalid user %{NOTSPACE:invaliduser} from %{HOSTNAME:invalidhostname}"
}
}
if "_grokparsefailure" in [tags] { drop {} }
}

output {
elasticsearch {
host => "192.168.1.212"
protocol => http
}
stdout { codec => rubydebug }
}

この辺りを参考にfilterを作る

logstashを起動
$ sudo bin/logstash -f mylogstash.conf -l log.txt

実験

192.168.1.210に不正アクセスをする

ssh hogeq@192.168.1.210

ssh hogeq@192.168.1.210

ssh hog2@192.168.1.210

ssh hog2@192.168.1.210

ssh test@192.168.1.210

kibnaにアクセスして確認

不正アクセスしたユーザをグラフ化できました。

f:id:katashiyo515:20140920092951j:plain

 

実際はoracleとかnagiosとかで接続しに来ることが多いようです

f:id:katashiyo515:20140920093436j:plain

おしまい。

参考

logstash - open source log management