WordPress için geliştirilmiş bir güvenlik eklentisidir. Adı "Gelişmiş Güvenlik Eklentisi" ve amacı, DDoS ve Brute Force saldırılarına karşı koruma sağlamaktır.
  • Kullanıcılar, sistemde çok fazla hatalı giriş yaparsa veya çok fazla istek gönderirse, sistem bu IP'yi engeller.
  • Bu engellemeler loglanır ve yöneticilere bildirilir.
  • Yönetici, engellenen IP'leri yönetim panelinde görebilir ve gerekirse kaldırabilir.

Güvenlik Özellikleri:

  1. Brute Force Saldırıları: Belirli bir IP adresinin yanlış giriş sayısını izler ve bu sayıya ulaşıldığında engeller.
  2. DDoS Saldırıları: IP başına belirli bir zaman diliminde çok fazla istek yapılmasını engeller.
  3. Engellenmiş IP’lerin Yönetimi: Yönetici, engellenen IP'leri görüntüleyebilir ve gerektiğinde bu IP'leri kaldırabilir.
engellenen ipler ayarlar - Engellenen IP altında listelenir oradan kaldırabilirsiniz.

Site Yedeğinizi almanız her zaman önerimizdir

demo: türkiye Ajans

<?php
/*
Plugin Name: Gelişmiş Güvenlik Eklentisi
Description: DDoS ve Brute Force saldırılarını engeller, saldırı girişimlerini kaydeder ve güvenlik açıklarını kontrol eder.
Version: 1.3
Author: Mustafa Çakar
Web: turkiyeajans.com
*/

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Güvenlik amacıyla doğrudan erişimi engeller
}

// Yönetici mi kontrol et
function bfe_is_admin_user() {
    return is_user_logged_in() && current_user_can('manage_options');
}

// Firewall: Zararlı IP'leri engelle
function bfe_firewall_check() {
    if (bfe_is_admin_user()) {
        return;
    }

    $blocked_ips = get_option('bfe_blocked_ips', []);

    if (in_array($_SERVER['REMOTE_ADDR'], $blocked_ips)) {
        wp_die('Erişiminiz güvenlik nedeniyle engellenmiştir.');
    }
}

add_action('init', 'bfe_firewall_check');

// IP’yi engelleme fonksiyonu
function bfe_block_ip($ip) {
    $blocked_ips = get_option('bfe_blocked_ips', []);
    
    if (!in_array($ip, $blocked_ips)) {
        $blocked_ips[] = $ip;
        update_option('bfe_blocked_ips', $blocked_ips);
    }
}

// IP’yi kaldırma fonksiyonu
function bfe_unblock_ip($ip) {
    $blocked_ips = get_option('bfe_blocked_ips', []);
    
    if (in_array($ip, $blocked_ips)) {
        $blocked_ips = array_diff($blocked_ips, [$ip]);
        update_option('bfe_blocked_ips', $blocked_ips);
    }
}

// Saldırı Günlüğüne Kayıt Ekleme
function bfe_log_attack($type, $ip) {
    $log_file = WP_CONTENT_DIR . '/bfe_security_log.txt';
    $time = date('Y-m-d H:i:s');
    $log_entry = "[$time] $type saldırısı tespit edildi! IP: $ip" . PHP_EOL;
    
    file_put_contents($log_file, $log_entry, FILE_APPEND);
    
    // Yöneticiye e-posta bildirimi gönder
    $admin_email = get_option('admin_email');
    wp_mail($admin_email, "Güvenlik Uyarısı: $type Saldırısı", $log_entry);
}

// Brute Force Engelleme: Hatalı Girişleri Sınırla
function bfe_limit_login_attempts() {
    if (bfe_is_admin_user()) {
        return;
    }

    $ip = $_SERVER['REMOTE_ADDR'];
    $max_attempts = 5;
    $lockout_time = 900; // 15 dakika

    $failed_attempts = get_transient('bfe_failed_attempts_' . $ip);

    if ($failed_attempts >= $max_attempts) {
        bfe_block_ip($ip);
        bfe_log_attack('Brute Force', $ip);
        wp_die('Çok fazla hatalı giriş denemesi! IP’niz engellendi.');
    } else {
        set_transient('bfe_failed_attempts_' . $ip, $failed_attempts + 1, $lockout_time);
    }
}

add_action('wp_login_failed', 'bfe_limit_login_attempts');

// DDoS Koruması: IP Başına İstek Limiti (geliştirilmiş)
function bfe_ip_rate_limit() {
    if (bfe_is_admin_user()) {
        return;
    }

    $ip = $_SERVER['REMOTE_ADDR'];
    $time_limit = 60; // 1 dakika
    $max_requests = 40; // 1 dakikada en fazla 20 istek

    // İstek sayısını al
    $request_count = get_transient('bfe_request_count_' . $ip);

    // DDoS saldırısı tespit edilirse, IP'yi engelle
    if ($request_count && $request_count >= $max_requests) {
        // Mevcut engellemeyi kontrol et
        $current_block_time = get_transient('bfe_blocked_ip_' . $ip);
        
        // Eğer engelleme süresi belirlenmemişse, başla
        if (!$current_block_time) {
            $block_time = 5 * 60; // 5 dakika
            $message = 'İlk kez engellendiniz. 5 dakika süreyle engellendiniz.';
        } else {
            // Engelleme süresini arttır
            if ($current_block_time == 5 * 60) {
                $block_time = 15 * 60; // 15 dakika
                $message = '5 dakikalık engelleme süresi doldu. Şimdi 15 dakika engellendiniz.';
            } elseif ($current_block_time == 15 * 60) {
                $block_time = 30 * 60; // 30 dakika
                $message = '15 dakikalık engelleme süresi doldu. Şimdi 30 dakika engellendiniz.';
            } elseif ($current_block_time == 30 * 60) {
                $block_time = 24 * 60 * 60; // 1 gün
                $message = '30 dakikalık engelleme süresi doldu. Şimdi 1 gün engellendiniz.';
            } else {
                // Eğer 1 günden fazla engellenmişse, mesajı 1 gün olarak göster.
                $block_time = $current_block_time; // 1 gün geçtikten sonra engellemeyi devam ettir
                $message = '1 günlük engelleme süresi sona erdi.';
            }
        }

        // IP'yi engelle
        bfe_block_ip($ip);
        bfe_log_attack('DDoS', $ip);

        // Engellemeyi set et
        set_transient('bfe_blocked_ip_' . $ip, $block_time, $block_time);

        // Engellenen IP'ye süreyi belirten mesajı göster
        wp_die('Aşırı istek nedeniyle IP’niz engellenmiştir. ' . $message);
    } else {
        set_transient('bfe_request_count_' . $ip, ($request_count ?: 0) + 1, $time_limit);
    }
}

add_action('init', 'bfe_ip_rate_limit');

// Yönetici paneline yeni bir sayfa ekleyelim
function bfe_admin_menu() {
    add_options_page(
        'Engellenen IP\'ler',
        'Engellenen IP\'ler',
        'manage_options',
        'bfe-blocked-ips',
        'bfe_blocked_ips_page'
    );
}

add_action('admin_menu', 'bfe_admin_menu');

// Engellenen IP’leri listeleyen ve kaldırma imkanı sunan sayfa
function bfe_blocked_ips_page() {
    if (!current_user_can('manage_options')) {
        wp_die('Bu sayfaya erişim izniniz yok.');
    }

    // Engellenen IP’leri al
    $blocked_ips = get_option('bfe_blocked_ips', []);

    // IP’yi kaldırma işlemi
    if (isset($_POST['unblock_ip'])) {
        $ip_to_remove = sanitize_text_field($_POST['unblock_ip']);
        bfe_unblock_ip($ip_to_remove);
        echo '<div class="updated"><p>' . esc_html($ip_to_remove) . ' adresi engellenen IP listesinden kaldırıldı.</p></div>';
    }

    ?>
    <div class="wrap">
        <h1>Engellenen IP Adresleri</h1>
        <table class="widefat">
            <thead>
                <tr>
                    <th>IP Adresi</th>
                    <th>İşlem</th>
                </tr>
            </thead>
            <tbody>
                <?php if (!empty($blocked_ips)): ?>
                    <?php foreach ($blocked_ips as $ip): ?>
                        <tr>
                            <td><?php echo esc_html($ip); ?></td>
                            <td>
                                <form method="post">
                                    <input type="hidden" name="unblock_ip" value="<?php echo esc_attr($ip); ?>">
                                    <button type="submit" class="button button-primary">Kaldır</button>
                                </form>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                <?php else: ?>
                    <tr>
                        <td colspan="2">Şu anda engellenmiş IP bulunmamaktadır.</td>
                    </tr>
                <?php endif; ?>
            </tbody>
        </table>
    </div>
    <?php
}
?>
kurulum destek için özelden veya whatsaptan ulaşabilirsiniz