Ngnix reCAPTCHA Module

Bu makalemizde “Ngnix” software-nin Bot ları engelleme konusundaki en başarılı olan “Ngnix reCAPTCHA Module” nin kurulumunu anlatıcağız. Kurulumdaki adımları takip etmeniz yeterli olucaktır,

Kurulum,

  • Bu modülü kurun
  • Google’dan bir çift recaptcha anahtarı alın
  • Recaptcha şablonunu captcha_html / captcha.html adresinden web dizininize kopyalayın.
  • Recaptcha sayfasındaki genel anahtarı değiştirin.
  • Yapılandırma dosyasındaki özel anahtarı değiştirin.
  • Secure_cookie_md5’in özel anahtarını yapılandırma dosyasında değiştirin.
  • Yourhost.com alan adını gerçek alanınız olarak değiştirin.

Modül’ün sahibine göre ngnix in “0.8.54” sürümünde en stabil çalıştığını belirtmiş olası bir hata olmaması için bu sürüm üzerinden anlatacağım(isteğe bağlı yeni sürüm kullanabilirsiniz).

Not: /path/to/ yazan yerlere alt taraftan alıp indireceğiniz modül dizin olarak belirteceksiniz. (ÖRN: /root/nginx_http_recaptcha_module)

Not2: (Üstüne tıklayarak github-a gidebilirsiniz) reCAPTCHA ve gerekli moduller;

Modüllerin ve Ngnix’in kurulumu,

$ cd /root
$ git clone https://github.com/yaoweibin/nginx_http_recaptcha_module.git
$ git clone https://github.com/yaoweibin/nginx-eval-module.git
$ git clone https://github.com/yaoweibin/nginx_secure_cookie_module.git
$ wget 'http://nginx.org/download/nginx-0.8.54.tar.gz'
$ tar -xzvf nginx-0.8.54.tar.gz
$ cd nginx-0.8.54/

$ ./configure --add-module=/path/to/nginx_http_recaptcha_module \
    --add-module=/path/to/nginx_secure_cookie_module \
    --add-module=/path/to/nginx_eval_module

$ make
$ make install

Örnek Ngnix Conf,

location / {
    secure_cookie $cookie_CAPTCHA_SESSION,$cookie_CAPTCHA_EXPIRES;
    secure_cookie_md5 private_key$binary_remote_addr$cookie_CAPTCHA_EXPIRES;

    if ($cookie_CAPTCHA_SESSION = "") {
        rewrite ^.*$ /captcha.html redirect;
    }

    if ($cookie_CAPTCHA_EXPIRES = "") {
        rewrite ^.*$ /captcha.html redirect;
    }

    if ($secure_cookie = "0") {
        rewrite ^.*$ /captcha.html redirect;
    }

    if ($secure_cookie = "") {
        return 403;
    }

    proxy_pass http://your_backend;
}

location = /captcha.html {
    root html;
}

location = /verify {
    eval_inherit_body on;
    eval_override_content_type 'text/plain';

    eval $verify_content {
        recaptcha_challenge_name $recaptcha_challenge_field;
        recaptcha_response_name $recaptcha_response_field;

        proxy_method POST;
        proxy_set_header  Accept-Encoding  "";
        proxy_set_body "privatekey=your_privatekey_from_google&remoteip=$remote_addr&challenge=$recaptcha_challenge_field&response=$recaptcha_response_field";

        rewrite .* /recaptcha/api/verify break;
        proxy_pass 'http://www.google.com';
    }

    if ($verify_content ~* ^true[\s\R]*(.*)) {
        set $error_code $1;

        rewrite .* /set_secure_cookie last;
    }

    if ($verify_content ~* ^false[\s\R]*(.*)) {
        set $error_code $1;

        return 403;
    }

    return 404;
}

location = /set_secure_cookie {
    internal;
    secure_cookie_expires 1h;
    secure_cookie_md5 private_key$binary_remote_addr$secure_cookie_set_expires_base64;

    add_header Set-Cookie "CAPTCHA_SESSION=$secure_cookie_set_md5; expires=$secure_cookie_set_expires; path=/; domain=.yourhost.com";
    add_header Set-Cookie "CAPTCHA_EXPIRES=$secure_cookie_set_expires_base64; expires=$secure_cookie_set_expires; path=/; domain=.yourhost.com";

    rewrite ^.*$ http://www.yourhost.com redirect;

    return 302;
}

Güvenle Kalın.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir