ログファイルのIPをマスクする anonipコマンドを使う

はじめに

ApachenginxなどのログのIPアドレスをマスクしてレポート化したいケースがあった。
今回は、anonipコマンドを利用してログファイル内のIPアドレスをマスクすることをやってみる。
https://packages.ubuntu.com/noble/admin/anonip

環境

Windows 11 Professional
WSL2 Ubuntu 24.04LTS

準備

サンプルのログを取得

下記のGitHubリポジトリに各アプリケーションのサンプルがあるのでこれを利用する。
https://github.com/elastic/examples

今回はApacheのログを利用してみる。
https://github.com/elastic/examples/blob/master/Common%20Data%20Formats/apache_logs/apache_logs

anonipのインストール

sudo apt-get install anonip
ログ
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
  python-anonip-doc
The following NEW packages will be installed:
  anonip
0 upgraded, 1 newly installed, 0 to remove and 26 not upgraded.
Need to get 14.4 kB of archives.
After this operation, 52.2 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu noble/universe amd64 anonip all 1.1.0-2 [14.4 kB]
Fetched 14.4 kB in 1s (28.2 kB/s)
Selecting previously unselected package anonip.
(Reading database ... 49973 files and directories currently installed.)
Preparing to unpack .../anonip_1.1.0-2_all.deb ...
Unpacking anonip (1.1.0-2) ...
Setting up anonip (1.1.0-2) ...
Processing triggers for man-db (2.12.0-4build2) ...

anonipを使う

書式

python3 -m anonip < [入力ファイル] >> [出力ファイル]

or

python3 -m anonip --input [入力ファイル] --output [出力ファイル]

python3 -m anonip < access.log >> mask.log

python3のモジュールとして、anonipを使い、入力にaccess.log、出力に mask.logを指定している。

出力の確認

maskする前↓

access.log
83.149.9.216 - - [17/May/2015:10:05:03 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-search.png HTTP/1.1" 200 203023 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
mask.log
83.149.0.0 - - [17/May/2015:10:05:03 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-search.png HTTP/1.1" 200 203023 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"

maskするビット数の変更

maskするビット数を変更したい場合は下記のオプションを利用する。

  -4 INTEGER, --ipv4mask INTEGER
                        truncate the last n bits (default: 12)

なので、24ビット隠す場合は以下とする。

python3 -m anonip --ipv4mask 24 < access.log >> mask.log

とすると、mask.logのIPアドレスは83.0.0.0と、24ビットが隠された形になる。

オプション

anonip のオプションを日本語で表形式にまとめました。

オプション説明デフォルト値
-h, --helpヘルプメッセージを表示して終了-
-4 INTEGER, --ipv4mask INTEGERIPv4アドレスの最後のnビットを切り捨てる(デフォルト: 12)12
-6 INTEGER, --ipv6mask INTEGERIPv6アドレスの最後のnビットを切り捨てる(デフォルト: 84)84
-i INTEGER, --increment INTEGERIPアドレスをnだけインクリメント(増加)する(デフォルト: 0)0
-o FILE, --output FILE結果を出力するファイルを指定-
--input FILE読み込むファイルまたはFIFOを指定(デフォルト: 標準入力)標準入力
-c INTEGER [INTEGER ...], --column INTEGER [INTEGER ...]IPアドレスがある列番号を指定(1始まりのインデックス、デフォルト: 1)1
-l STRING, --delimiter STRINGログの区切り文字を指定(デフォルト: スペース " "" "
--regex STRING [STRING ...]IPアドレスを検出するための正規表現を指定(オプション、-c の代わりに使用)-
-r STRING, --replace STRINGIPアドレスの解析に失敗した場合の置き換え文字列を指定(例: 0.0.0.0-
-p, --skip-privateプライベートレンジのアドレスをマスクしない。IANAの特別用途アドレスレジストリ参照False
-d, --debugデバッグメッセージを表示-
-v, --versionプログラムのバージョン番号を表示して終了-

参考

おわりに

IPアドレスを匿名化するツールについて調べた。
anonip以外にもありそうなので、今後とも調べてみる。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。