1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

特定IPからの通信をログから抽出(grep)する

Last updated at Posted at 2022-08-26

はじめに

apacheやvsftpdのログをgrepして、特定のIPからの通信が発生しているか確かめたい。
grep -wF <IP> logfileが鉄則。

準備

ログのサンプルとして、以下を用意。apacheの/var/log/httpd/access_logを一部改変。

access_log
123.123.123.123 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
123.123.123.111 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
123.123.123.1 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"

特定IPからの通信をgrep

  • 123.123.123.123からの通信をgrep
  • -w:単語単位で検索 が重要。
    • -wをつけ忘れると、123.123.123.111とか123.123.123.123まで引っかかってしまう。
  • -Fで正規表現を無効化。
    • これはつけ忘れてもうまくいってしまうこともある
[ec2-user@ip-xxx-xxx-xxx-xxx log_bk]$ grep -wF 123.123.123.1  access_log
123.123.123.1 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
  • (参考1) : -wをつけ忘れたときの挙動。
    • 123.123.123.1をgrepしたつもりが、余計な123.123.123.111とか123.123.123.123まで引っかかってしまう。
[ec2-user@ip-xxx-xxx-xxx-xxx log_bk]$ grep -F 123.123.123.1  access_log
123.123.123.123 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
123.123.123.111 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
123.123.123.1 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
  • (参考2) : -Fをつけ忘れたときの挙動
    • 実は-Fをつけていなくてもうまく抽出されている・・・ように見えるが、内部的には
      123.123.123.1123(任意一文字)123(任意一文字)123(任意一文字)1と解釈されていることに注意。
      -Fもつけておいた方が無難。
[ec2-user@ip-xxx-xxx-xxx-xxx log_bk]$ grep -w 123.123.123.1  access_log
123.123.123.1 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"

(蛇足)調べたいIPが複数ある時

まず、抽出したいIPアドレスのリストを準備する。

ip.list
123.123.123.123
123.123.123.1

①単にfor文で回す

  • 簡単だが、ip.listの行数 * access_logの行数で検索するので、ip_listの量が多い時は不向き。
[ec2-user@ip-xxx-xxx-xxx-xxx log_bk]$ for i in `cat ip.list`; do grep -wF $i access_log; done
123.123.123.123 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
123.123.123.1 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"

②or条件 でgrepする

  • grep -wF -e 123.123.123.123 -e 123.123.123.1 access_logとする。
  • ①よりは負荷が少ない。
  • ip.listから-e 123.123.123.123 -e 123.123.123.1を生成する方法はいくらでもあるが、無理やりsedでやる場合は以下。
    • sed 's/^/-e /g' で各行頭に-e をつけてから、tr '\n' ' 'で改行を削る。
[ec2-user@ip-xxx-xxx-xxx-xxx log_bk]$ cat ip.list | sed 's/^/-e /g' | tr '\n' ' '
-e 123.123.123.123 -e 123.123.123.1 [ec2-user@ip-xxx-xxx-xxx-xxx log_bk]$ cat ip.list | sed 's/^/-e /g' | tr '\n' ' ' > param
[ec2-user@ip-xxx-xxx-xxx-xxx log_bk]$ grep -wF `cat param` access_log
123.123.123.123 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
123.123.123.1 - - [24/Feb/2022:10:03:34 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "http://999.999.999.999:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?