Quantcast
Channel: Библиотека знаний
Viewing all articles
Browse latest Browse all 1318

Ограничение доступа средствами Nginx

$
0
0

Ограничение доступа средствами Nginx

Небольшая заметка о том, как средствами Nginx-а закрыть доступ к файлам/папке по паролю. В nginx-е это решение не менее элегантно, чем в apache, а может и еще лучше, кому как нравится.

В конфигурационном файле, в папке, которую хотим закрыть надо только указать файл, где хранятся пароли. Вот два примера для закрытия папки с файлами:

location ^~ /files/ {
    root   /path/to/server;
    autoindex    on;
    autoindex_exact_size  off;
    auth_basic "Hello, please login";
    auth_basic_user_file /usr/nginx/passwords;
    access_log   /usr/nginx/logs/files.log   download;
}

и админовской части c дополнительным ограничением по IP:

location ^~ /admin/ {
    fastcgi_pass unix:/home/project/server.sock;
    include  conf/fastcgi.conf;
    allow 11.11.0.0/16;
    allow 22.22.22.22;
    deny all;
    auth_basic "Hello, Admin, please login";
    auth_basic_user_file /usr/nginx/adminpassword;
    access_log   /usr/nginx/logs/admin.log  main;
}

Добавить пользователя можно с помощью стандартной утилиты от apache: htpasswd -b passwords NewUser NewPassword В файле запись с зашифрованным паролем имеет вид: NewUser:P47ghZ4kloG78: Your Can Comment Here Защиту от перебора паролей можно организовать одновременно двумя методами, основанными на использовании iptables: Блокирование IP на время, если количество запросов в секунду превышает какое-либо разумное количество Вести лог неудачных попыток подбора пароля и скриптом раз в минуту проверять лог и заносить IP адреса в iptables Для первого варианта достаточно создать правила:

iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW
            -m recent --name bhttp --set
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW
            -m recent --name bhttp --update --seconds 120 
            --hitcount 360 -j DROP
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -j ACCEPT

Можно вместо DROP использовать TARPIT, чтобы усложнить жизнь ломателям :)

Для второго варианта надо добавить в конфиг:

location /401.html {
    root   /usr/nginx;
    access_log   /usr/nginx/logs/denied.log  error401;
}

Формат error401, у меня например такой:

log_format error401  '$remote_addr - $remote_user [$time_local] '
                     '$status "$request"';

Теперь все неправильные попытки будут записываться в отдельный лог, который мы можем обрабатывать по cron-у:

\*/1 * * * * root /usr/nginx/parser401.pl >/dev/null 2>&1

например, таким скриптом: parser401.pl Скрипт проверяет лог, и если обнаруживает больше 4-х попыток неправильного набора пароля, блокирует этот IP. Есть какие-либо идеи, мысли?


Viewing all articles
Browse latest Browse all 1318

Trending Articles


Girasoles para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Tagalog Quotes About Crush – Tagalog Love Quotes


OFW quotes : Pinoy Tagalog Quotes


Long Distance Relationship Tagalog Love Quotes


Tagalog Quotes To Move on and More Love Love Love Quotes


5 Tagalog Relationship Rules


Best Crush Tagalog Quotes And Sayings 2017


Re:Mutton Pies (lleechef)


FORECLOSURE OF REAL ESTATE MORTGAGE


Sapos para colorear


tagalog love Quotes – Tiwala Quotes


Break up Quotes Tagalog Love Quote – Broken Hearted Quotes Tagalog


Patama Quotes : Tagalog Inspirational Quotes


Pamatay na Banat and Mga Patama Love Quotes


Tagalog Long Distance Relationship Love Quotes


BARKADA TAGALOG QUOTES


“BAHAY KUBO HUGOT”


Vimeo 10.7.0 by Vimeo.com, Inc.


Vimeo 10.7.1 by Vimeo.com, Inc.