Skip to main content

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 Figure

Top 10 IPs Where SSH Login Attempts Failed Figure

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パターンのみ。

  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.

Source Distribution

sshaa-2.0.2.tar.gz (7.0 kB view hashes)

Uploaded Source

Built Distribution

sshaa-2.0.2-py3-none-any.whl (7.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page