SSHの不正ログインIPを弾く

以前投稿した不正ログインの対策としてログインエラー数が多いipアドレスからのアクセスを遮断する

10回以上ログインに失敗しているipは不正と定義し、ipを抽出してみる
pythonの方が書きやすかったのでpythonで実装
https://github.com/yu00sasaki/toolbox_public/blob/main/python/adhoc/make_nglist.py

import subprocess
from subprocess import PIPE
from collections import Counter

proc = subprocess.run("lastb -i | head --lines=-2 | awk '{print $3}'", shell=True, stdout=PIPE, stderr=PIPE, text=True)

ip_list = proc.stdout.split("\n")
#ipアドレスの頻度
ip_count = Counter(ip_list)
#不正なフォーマットを削除かつ10以上のログインエラーでngリスト
ng_list = [k for k, v in ip_count.items() if len(k.split("."))==4 and v > 10]

with open('nglist.txt', 'w') as f:
    for ngip in ng_list:
        f.write(f"{ngip}\n")

その後firewall-cmdでnglistを定義し、登録

firewall-cmd --permanent --new-ipset=nglist --type=hash:net
firewall-cmd --permanent --ipset=nglist --add-entries-from-file=nglist.txt
firewall-cmd --reload

コメント

タイトルとURLをコピーしました