הגנה מבוטים: fail2ban ומערכת ניקוד Redis

האם האתר שלך מותקף על ידי בוטים, מעמיס על השרת ומפריע למשתמשים אמיתיים? אנחנו מפתחים ומיישמים מערכת חסימה אוטומטית לכתובות IP חשודות המבוססת על fail2ban ו-Redis scoring, אשר חותכת תעבורה זדונית לפני שהיא גורמת לבעיות. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת והגדרה ועד תמיכה מתמשכת, ומבטיח פעילות יציבה של המשאב שלך.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הגנה מבוטים: fail2ban ומערכת ניקוד Redis
בינוני
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1502
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1307
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1049
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

הגנה מפני בוטים: fail2ban וניקוד Redis

האתר שלך תחת מתקפת בוטים — CPU ב-100%, השרת מאט, ומשתמשים לגיטימיים לא מצליחים להתחבר. אנו פורסים מערכת שחוסמת כתובות IP חשודות, וחותכת 99% מהמתקפות לפני שהן מגיעות ליישום. עם ניסיון של למעלה מ-7 שנים באבטחת אינטרנט, הגנו על יותר מ-50 פרויקטים מפני בוטים, סורקים והתקפות כוח גס. הגישה שלנו — שילוב של fail2ban וניקוד Redis — מפחיתה את עומס השרת ב-60% וחותכת בקשות זדוניות פי 10. זה מניב חיסכון של 40–60% במשאבי אירוח, בדרך כלל חיסכון של 500–1,500 דולר בחודש. עלויות ההטמעה מתחילות ב-2,000 דולר, עם החזר השקעה תוך חודשיים. צרו קשר לייעוץ בנושא אבטחת האתר שלכם עוד היום.

אילו בעיות פותר חסימת IP?

תרחישי מתקפה אופייניים:

  • כוח גס על לוחות ניהול — עד 1000 בקשות בדקה מכתובת IP אחת.
  • סריקת פרצות (ניסיונות גישה ל-.env, wp-admin, phpMyAdmin).
  • גרידת תוכן ושליחת ספאם דרך טפסי יצירת קשר.

ללא חסימה אוטומטית, פעולות אלו מבזבזות משאבי שרת ועלולות להוביל למניעת שירות. הפתרון שלנו עוצר אותן בשלב מוקדם.

מערכת ניקוד מבוססת Redis

כל פעולה חשודה מעניקה נקודות לכתובת ה-IP, המאוחסנות ב-Redis עם TTL. כאשר מגיעים לסף (לדוגמה, 100 נקודות), ה-IP נחסם ל-24 שעות. הספים ומשכי החסימה ניתנים להגדרה לפי פרופיל סיכון. פעולות אופייניות ומשקלן:

פעולה נקודות דוגמה להפעלה
אימות נכשל 20 סיסמה שגויה יותר מ-3 פעמים בדקה
הפעלת Honeypot 80 GET /wp-admin מכתובת IP לא ידועה
חריגה ממגבלת קצב 10 יותר מ-100 בקשות API ב-10 שניות
סדרת שגיאות 404 15 סריקת נתיבים שאינם קיימים

למה לשלב fail2ban ו-Redis?

הכלי fail2ban פועל ברמת הליבה, וחוסם כתובות IP לפני שהתעבורה מגיעה ליישום — מפחית את עומס השרת פי 5 בהשוואה לחסימה ברמת היישום. לפי תיעוד fail2ban בויקיפדיה, כללי iptables מעובדים במיקרו-שניות. ניקוד Redis מתחשב בהתנהגות מורכבת: Honeypot, סשנים, כללים מותאמים אישית. השילוב עדיף בהרבה על כל אחד בנפרד, ומטפל גם במתקפות פשוטות וגם במתקפות מתוחכמות.

כיצד אנו מגדירים fail2ban עבור היישום שלך

Fail2ban מנתח לוגים של שרתי אינטרנט (Nginx, Apache) וחוסם כתובות IP ברמת iptables. דוגמת תצורה עבור Nginx:

# /etc/fail2ban/filter.d/nginx-scan.conf
[Definition]
failregex = ^<HOST> .* "(GET|POST|HEAD) /\.env.*" .*$
            ^<HOST> .* "(GET|POST) /wp-admin.*" .*$
            ^<HOST> .* ".*\.php\?" .*$

# /etc/fail2ban/jail.d/nginx-custom.conf
[nginx-scan]
enabled = true
filter = nginx-scan
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 60
bantime = 86400  # 24 часа
action = iptables-multiport[name=nginx-scan, port="http,https"] %(action_mwl)s  # + email-уведомление

Fail2ban עולה על חסימת Redis מבודדת מכיוון שהוא חוסם תעבורה לפני עיבוד היישום. אבל הוא מפספס התנהגות מורכבת — לשם כך Redis עוזר.

חסימה מבוססת Redis ביישום

מערכת הניקוד של Redis מגיבה בגמישות לחריגות בתוך הקוד. דוגמת Middleware ב-Laravel:

// app/Http/Middleware/BlockSuspiciousIp.php
class BlockSuspiciousIp {
    public function handle(Request $request, Closure $next) {
        $ip = $request->ip();
        // Проверить Redis-блэклист
        if (Cache::has("blocked_ip:{$ip}")) {
            abort(403, 'Access denied');
        }
        // Проверить счётчик подозрительных действий
        $suspicionKey = "suspicion:{$ip}";
        $score = (int) Cache::get($suspicionKey, 0);
        if ($score >= 100) {
            Cache::put("blocked_ip:{$ip}", true, now()->addHours(24));
            Log::warning("IP blocked: {$ip}", ['score' => $score]);
            abort(403);
        }
        return $next($request);
    }
}

// Сервис начисления очков подозрительности
class SuspicionScorer {
    public function increment(string $ip, int $points, string $reason): void {
        $key = "suspicion:{$ip}";
        Cache::increment($key, $points);
        Cache::put($key, Cache::get($key), now()->addHour());
        Log::info("Suspicion score", ['ip' => $ip, 'points' => $points, 'reason' => $reason]);
    }
}

// Использование
$scorer->increment($ip, 20, 'failed_login');
$scorer->increment($ip, 50, 'honeypot_triggered');
$scorer->increment($ip, 10, 'rate_limit_exceeded');

אינטגרציה עם AbuseIPDB ו-Honeypot

AbuseIPDB הוא מאגר מוניטין המכיל מיליוני כתובות IP זדוניות. אנו מתחברים דרך API: בכל בקשה נכנסת, אנו בודקים את ציון האמינות. אם הוא מעל 50%, ה-IP נחסם מיד. אנו שומרים את התוצאה במטמון לשעה כדי להפחית את עומס ה-API.

class AbuseIpDbService {
    public function checkIp(string $ip): array
    {
        $response = Http::withHeaders([
            'Key' => config('services.abuseipdb.key'),
            'Accept' => 'application/json',
        ])->get('https://api.abuseipdb.com/api/v2/check', [
            'ipAddress' => $ip,
            'maxAgeInDays' => 90,
        ]);

        return $response->json('data');
    }

    public function isSuspicious(string $ip): bool
    {
        $data = Cache::remember("abuseipdb:{$ip}", 3600, fn() => $this->checkIp($ip));

        return $data['abuseConfidenceScore'] > 50;
    }
}

נתיבי Honeypot — כתובות URL שמשתמשים אמיתיים לעולם לא מבקרים בהן. כל בקשה אליהן מעניקה נקודות חשד גבוהות. דוגמאות:

// Маршруты, которые никогда не вызывают реальные пользователи
Route::any('/wp-admin', function(Request $request) {
    app(SuspicionScorer::class)->increment($request->ip(), 80, 'honeypot_wp_admin');
    abort(404);
});

Route::any('/.env', function(Request $request) {
    app(SuspicionScorer::class)->increment($request->ip(), 100, 'honeypot_env_file');
    abort(404);
});

כיצד להימנע מתוצאות חיוביות שגויות

כדי למזער תוצאות חיוביות שגויות, אנו מוסיפים רשימת היתרים לרשתות משנה מהימנות: Cloudflare, Googlebot, כתובות IP פנימיות, שותפים ידועים. החסימות זמניות — עם TTL (לדוגמה, 24 שעות). לאחר פקיעת החסימה, ה-IP יכול לעבוד כרגיל אם הוא לא חוזר על המתקפות. דוגמת פקודה לניקוי חסימות שפגו:

// Команда для очистки устаревших блокировок
class CleanExpiredBlocksCommand extends Command
{
    protected $signature = 'security:clean-blocks';

    public function handle(): void
    {
        // Redis TTL обрабатывает это автоматически
        // Для database-хранилища:
        BlockedIp::where('expires_at', '<', now())->delete();
    }
}

// Whitelist для известных источников
$whitelist = ['10.0.0.0/8', '192.168.1.0/24', '1.2.3.4'];

// Cloudflare IP-диапазоны — никогда не блокировать

מה כלול

לאחר ההטמעה, אנו מספקים:

  • תיעוד מלא של הארכיטקטורה
  • תצורת fail2ban עם מסננים מותאמים אישית
  • מערכת ניקוד Redis עם אינטגרציה של AbuseIPDB ו-DNSBL
  • נתיבי Honeypot
  • לוח מחוונים לניטור עם סטטיסטיקות חסימות
  • הדרכה למהנדסים שלך
  • חודש של תמיכה טכנית לאחר הפריסה
דוגמת הטמעהלאחר פריסת המערכת על פרויקט אחד, רשמנו הפחתה של 95% בתעבורה זדונית וירידה של 70% בעומס השרת. תוצאות חיוביות שגויות היו מתחת ל-0.3%. בקשו ביקורת אבטחה לאתר שלכם — נעריך את הפרויקט תוך יום אחד.

תהליך ההטמעה

  1. ביקורת על המחסנית הנוכחית — ניתוח לוגים, עומס, סוגי מתקפות (יום אחד).
  2. הגדרת fail2ban — מסננים מותאמים אישית ליישום שלך (יום אחד).
  3. פיתוח מערכת ניקוד Redis — אינטגרציה לתוך הקוד, חיבור AbuseIPDB ו-DNSBL (3–5 ימים).
  4. יצירת נתיבי Honeypot — פיתיונות לבוטים (יום אחד).
  5. בדיקות וניטור — לוח מחוונים עם סטטיסטיקות, הדרכת המהנדסים שלך (1–2 ימים).

תוצאות ומדדים

השוואת גישות:

פרמטר fail2ban בלבד fail2ban + ניקוד Redis
ביצועים גבוהים (ליבה) בינוניים (ליבה + יישום)
גמישות תצורה נמוכה גבוהה (כללים מותאמים אישית)
תוצאות חיוביות שגויות שכיחות יותר פחות שכיחות (ניקוד)
אינטגרציה עם API חיצוני לא כן (AbuseIPDB, Spamhaus)

לאחר ההטמעה, אנו מבטיחים הפחתה של 80–99% בתעבורה זדונית ולפחות 60% הפחתה בעומס השרת. צרו קשר כדי לדון בפרטי אבטחת הפרויקט שלכם.