با یک اسکریپت خیلی سبک میشه توی لاگها گشت و IPهایی که تعداد زیادی Login Fail دارن رو پیدا کرد و بعداً اونها رو توی firewall بلاک یا محدود کرد (مثلاً با iptables یا UFW یا حتی Fail2ban).
نمونهکد زیر روی لاگ پیشفرض Debian/Ubuntu یعنی
/var/log/auth.log کار میکنه و IPهایی که بیشتر از ۵ بار لاگین ناموفق داشتن رو چاپ میکنه:#!/usr/bin/env python3
import re
from collections import Counter
LOG_FILE = "/var/log/auth.log"
FAILED_THRESHOLD = 5
pattern = re.compile(r"Failed password for .* from (\d+\.\d+\.\d+\.\d+)")
ips = []
with open(LOG_FILE, "r", encoding="utf-8", errors="ignore") as f:
for line in f:
match = pattern.search(line)
if match:
ips.append(match.group(1))
counts = Counter(ips)
for ip, c in counts.items():
if c >= FAILED_THRESHOLD:
print(f"{ip} - failed logins: {c}")
👨💻 چند نکته کاربردی:
• این اسکریپت رو با کران (cron) زمانبندی میشه دورهای اجرا کرد و خروجی رو لاگ یا برای ادمین ایمیل کرد.
• روی توزیعهایی مثل CentOS/RHEL مسیر لاگ ssh معمولاً
/var/log/secure هست، فقط همون رو عوض کن.• بعد از شناسایی IP مشکوک، میشه بهصورت خودکار ruleهای firewall تولید کرد یا این منطق رو به ابزارهایی مثل Fail2ban سپرد تا به شکل استاندارد و امن Ban انجام بشه.
این رویکرد کمک میکنه رفتار مهاجم قبل از موفق شدن شناسایی بشه و در کنار تنظیمات درست ssh (مثل غیرفعال کردن Login با پسورد و استفاده از Key) یک لایه دفاعی مهم اضافه میکنه. 🔐
برای مطالعه عمیقتر روی لاگگیری و مانیتور امنیتی روی ssh میشه بخش مربوط به Brute Force در OWASP Cheat Sheet رو دید:
OWASP Authentication Cheat Sheet
🔖 #Security #امنیت #SSH #BruteForce #Logging #Linux #Security #Python
👤 Developix
💎 Channel: @DevelopixNetwork