Analyze auth.log
Project description
sshaa
Linuxサーバの一つであるUbuntu OSにおいてsshアクセスが記録されるauth.logを読み込み、不正ログインを分析する。 sshによるログイン試行のうち、ログイン失敗が記録されたものについて、IPアドレスの所属国と出現回数を分析し、視覚化する。
Outputs
Graph
Top 5 Countries of IPs Where SSH Login Attempts Failed
Top 10 IPs Where SSH Login Attempts Failed
CSV
,country,count
113.88.13.132,CN,14883
61.177.172.13,CN,1625
221.181.185.153,KR,1264
222.187.232.205,CN,1235
221.181.185.198,AU,1212
221.181.185.159,KR,1187
221.131.165.56,CN,1072
221.181.185.135,KR,1043
221.181.185.220,CN,1037
222.187.239.109,China,966
install
pip install -U sshaa
uninstall
pip uninstall -y sshaa
Options
log(またはaddr)
auth.logファイルの場所を指定。初期値は"/var/log/auth.log"
show_top
解析結果のグラフ表示の際、アクセス元上位何カ国を表示するか指定。初期値は5。
ignore_less
同一IPからのアクセスが指定回数以下の場合カウントから除外する。初期値は50。
expire_whois
WHOIS で取得した値を保持する期間(秒)。期限が過ぎた参照値は取得し直す。デフォルト値は2592000(30日)。
whois_url
IPアドレスからアクセス元の国名を取得する際に参照するAPIのアドレス。"whois_url=auto"を指定するとプリセットリストから正しく取得できるものを巡回する。 正しく取得できない原因としてはWhois APIのアクセス数制限等が考えられる。
Whoisの取得先を直接指定する場合、正しく取得できる条件は、現状下記1パターンのみ。
- アクセス先のURLにWHOISを行うIPアドレスを入力でき、json形式でレスポンスを取得できる
https://*****.com/1.2.3.4/json など
この場合、IPアドレスの入力箇所を'{ip}'として
whois_url="https://*****.com/{ip}/json"
と入力する。
ip_dict
WHOIS APIで判明した国名を保存し、次回以降キャッシュを利用することで高速化をはかる。デフォルトはキャッシュONでファイル名は"ip_whois_history.pkl"
キャッシュを利用しない場合は
ip_dict=None
と入力する。
group_by_ip
分析内容を変更するフラグ。このフラグが存在する場合、国別の集計を行わなわず、アクセス元IPアドレスと所属国および攻撃数を表示する。
show_country_name
国名の表示方法を変更するフラグ。このフラグが存在する場合、国名がフルネームで表示される。show_ja_country_nameフラグが存在する場合、show_ja_country_nameフラグが優先される。
show_ja_country_name
国名の表示方法を変更するフラグ。このフラグが存在する場合、国名が日本語フルネームで表示される。
export_graph_name
分析内容(デフォルトではsshでのログイン試行のうち、ログインに失敗したパターンにおけるアクセス元IPアドレスの所属国分析)を示すグラフのファイル名を変更する。デフォルトは"sshanalysis_result.png"
export_csv_name
グラフの示す数値がリスト形式で出力される。本設定で出力されるCSVファイル名を指定できる。デフォルトは"sshanalysis_result.csv"
export_all_ip:
ログファイル内に存在するすべてのIPアドレスと出現回数のリストを出力するフラグ。出力先は"export_iplist_name"で指定する。
export_iplist_name
"export_all_ip"オプションを指定した場合、ログファイル内のすべてのIPアドレスと出現回数のリストをCSV形式で保存する。本設定で出力されるCSVファイル名を指定できる。 デフォルトは"sshanalysis_ip_countlist.csv"
dont_show_gui_graph
グラフを画面表示しないフラグ。グラフのファイル出力はフラグによらず行われる。
mask_ip
IPアドレスを***.***.***で表示する。
Example
sshaa log='./auth.log' show_top=6 ignore_less=100 whois_url="http://ipwhois.app/json/{ip}" ip_dict="dict.pkl" export_graph_name="result.png" export_all_ip
python3 src/sshaa.py log='./auth.log' show_top=6 ignore_less=100 whois_url="http://ipwhois.app/json/{ip}" ip_dict="dict.pkl" export_graph_name="result.png" export_all_ip
Appendix
Countries.csv
Quoted by National Diet Library(Oct. 28, 2021)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.