サーバのufwログをPythonでIPからgeoipで緯度経度を割り出しマップ表示させてみた。

Programming Python

さて、今度はufwログ関連ネタ。
Pythonの勉強を兼ねてログからGeoipで国名や国別に集計したあと、緯度経度情報を元にマップに紐付けしてみました。
ちなみに一番多くブロックしているのはオランダ からのIPです。
きっと踏み台サーバが多いんでしょうね。

maxmind社のGeoIPデータの緯度経度情報は都市レベルまでですね。
まぁ都市別の統計データに補足として地図があるとイメージしやすいよねってレベルくらいには使えるかもというレベルですね。追跡まではムリ。

上記ページは当サーバ上にあるので興味ある方は動作を確認してみてください。
https://osmaniax.1banzaka.com/pythonlabo/ufw.html
(※尚、15分毎に更新しています。)

今回の緯度経度情報からのマップ化にはpipのfoliumを使用しました。

pip install folium

使い方は以下。
map位置の指定とマーカー設定とファイル出力を以下のようにしています。

response = gipcity.city(ip_addr)
map = folium.Map(location=[response.location.latitude,response.location.longitude],zoom_start=12)
folium.Marker(location=[response.location.latitude,response.location.longitude],popup=response.continent.names['ja'],tooltip=tooltip).add_to(map)
map.save(mappath+ip_addr+".html")

ufw関係でやれることはここまでで一旦完了かな。
どなたかの参考になれば幸いです。