Ограничаване на логин страница само за IP от БГ

Green Bars

Well-Known Member
Нещо много ботове се мъчат да се регистрират и логват,

как да огранича примерно на страниците
site.com/login
site.com/register

да се достъпват само от ип-адреси от България, дори може от още по-тесен рейндж.
 
От: Ограничаване на логин страница само за IP от БГ

Нещо много ботове се мъчат да се регистрират и логват,

как да огранича примерно на страниците
site.com/login
site.com/register

да се достъпват само от ип-адреси от България, дори може от още по-тесен рейндж.

Може да разгледаш статията ми тук ---> http://problogging.eu/защитете-своят-wordpress-от-brute-force-атаки-към-wp-admin.html

Следвайки примера, можеш да забраниш достъпа до конкретните php файлове по този начин, като те ще са достъпни само за България.
 
От: Ограничаване на логин страница само за IP от БГ

Нещо много ботове се мъчат да се регистрират и логват,

как да огранича примерно на страниците
site.com/login
site.com/register

да се достъпват само от ип-адреси от България, дори може от още по-тесен рейндж.


Примерно в .htaccess:

<LIMIT GET POST>
Order allow,deny
Allow from all
</LIMIT>
# This is the whitelisting of static files and specific php files
<FilesMatch "^(login|register)\.php$">
Order allow,deny
Allow from 193.23.39.34 (vivejdash vsi4ki bg ip ta na nov red)
Satisfy any
</FilesMatch>
 
От: Ограничаване на логин страница само за IP от БГ

Има няколко малки подробности - това не е WP (Специално към Virosss) и самите адреси не са физически директории, за да се лимитрат дадени заявки в тях. Това е специфика на Drupal и трябва да се комбинират различни правила свързани с QUERY_STRING, което не винаги работи.
 
От: Ограничаване на логин страница само за IP от БГ

Абе ти нормален ли си ?

Има каде каде по елементарни начини да се направи ако разбираш малко от програмиране. В stackoverflow има много теми по този въпрос. Порови се и ще намериш. Но това да пишеш Allow на всички бг ип-та е просто умопомрачително.
 
От: Ограничаване на логин страница само за IP от БГ

@glndrk Абе ти нормален ли си ?

Има каде каде по елементарни начини да се направи ако разбираш малко от програмиране. В stackoverflow има много теми по този въпрос. Порови се и ще намериш. Но това да пишеш Allow на всички бг ип-та е просто умопомрачително.
 
От: Ограничаване на логин страница само за IP от БГ

Зависи какво искаш да постигнеш като краен резултат - просто да блокираш достъпа или бързодействие. По-бързо е web сървъра да върне веднага header 403, отколкото да вдигнеш php функция за определяне на HTTP_HOST и тя да обработи заявката.
 
От: Ограничаване на логин страница само за IP от БГ

Зависи какво искаш да постигнеш като краен резултат - просто да блокираш достъпа или бързодействие. По-бързо е web сървъра да върне веднага header 403, отколкото да вдигнеш php функция за определяне на HTTP_HOST и тя да обработи заявката.

Да не говорим, че ако сайта е по натоварен и е на споделен хостинг, а за всяка заявка се вика PHP, веднага ще им светне лампичката за CPU time...

А иначе готово правило с allow на БГ адресите най-вероятно може да се намери в нета (не знам само колко ще са актуални адресите) + това не се пише за всяко IP има си маски...
 
От: Ограничаване на логин страница само за IP от БГ

Целта е следната:

до път site.com/user
site.com/user/password

да имат достъп само 2 Ip-та (моето и на другия админ)


И да подчертая, че не става дума за файлове или директории, ами за url

Пробвах няколко варианта от Stackoverflow и други места, но не сработиха.
 
От: Ограничаване на логин страница само за IP от БГ

Целта е следната:

до път site.com/user
site.com/user/password

да имат достъп само 2 Ip-та (моето и на другия админ)


И да подчертая, че не става дума за файлове или директории, ами за url

Пробвах няколко варианта от Stackoverflow и други места, но не сработиха.

Тая система не ми е позната (ако е система) на на втория линк виждам, че password е в директория /user/ вече дали ще сложиш един .htaccess да ограничиш достъпа до IP или ще сложиш една парола в файла е твоя работа....
Отделно каквато и да е системата, няма как да няма готови решения за защита на админ панела и...
 
От: Ограничаване на логин страница само за IP от БГ

Тая система не ми е позната (ако е система) на на втория линк виждам, че password е в директория /user/ вече дали ще сложиш един .htaccess да ограничиш достъпа до IP или ще сложиш една парола в файла е твоя работа....
Отделно каквато и да е системата, няма как да няма готови решения за защита на админ панела и...

Това се опитах да обясня малко по-горе. Това не е физическа директория. Представи си framework, който си прваи вътрешни пренасочвания - виртуални файлове или директории. Както на WP има вритуален robots.txt - не винаги е задължително този файл да съществува. Като уволи HTTP_REQUEST или QUERY_STRING и го обработва, все едно има такъв физически файл.
 
От: Ограничаване на логин страница само за IP от БГ

Всички, които са с разлчини IP-та от изброените ги препраща към 403.html в случай че са отворили адрес site.com/user*
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^1.2.3.4 [OR]
RewriteCond %{REMOTE_ADDR} !^4.3.2.1 [OR]
RewriteCond %{REMOTE_ADDR} !^1.2.4.3
RewriteCond %{QUERY_STRING} user [NC]
RewriteRule ^(.*)$ 403.html [F,L]
 
От: Ограничаване на логин страница само за IP от БГ

@s1yf0x, прав си за виртуалните директории, но идеята ми беше друга. Ако тези правила се отнесат към самите файлове към които се насочва въпросната виртуална директория няма ли да се получи номера? (по спомен, когато задам да връща 403 при запитване към wp-login.php, дори като напишеш wp-admin/ ми връщаше 403).

Относно PHP, вече са коментирали какъв е минуса. Плюса е, че ще можеш да блокираш IP-тата по маски. За пример, ако не се лъжа чрез mod_rewrite, не е възможно блокирането на рендж IP-та например при запитване за специфичен адрес. :(
 
От: Ограничаване на логин страница само за IP от БГ

Защо по-скоро не направиш ограничаване на горните URL-и със парола? Примери из интернета има доста и дори да направиш паролата тип user/test само тези които знаят комбинацията потребител/парола ще могат да влязат във горните линкове.
 
От: Ограничаване на логин страница само за IP от БГ

Пренасочването го прави index.php както и нормланото отваряне на сайта. Ако блокира достъпа до index.php за IP адреси само от България ще си отреже Google клона. Идеята на AMitev е точно в десятката, но ме изпревари :) . Между другото apache различава IP адреси в CIDR формат и можеш да описваш цял рейндж без проблеми.
 
От: Ограничаване на логин страница само за IP от БГ

Пренасочването го прави index.php както и нормланото отваряне на сайта. Ако блокира достъпа до index.php за IP адреси само от България ще си отреже Google клона. Идеята на AMitev е точно в десятката, но ме изпревари :) . Между другото apache различава IP адреси в CIDR формат и можеш да описваш цял рейндж без проблеми.

Ясно... извинявам се, не съм голям фен на Друпал и съответно нямам почти никакъв опит с тази CMS :)
 
От: Ограничаване на логин страница само за IP от БГ

Ето едно просто решение с няколко реда код на PHP и ползването на безплатната geo база данни на geoplugin.net:


$locinfo = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.GetUserIP()));
$cc = $locinfo['geoplugin_countryCode'];
if ($cc == 'BG') {
//ok
}
else {
//block
}



function GetUserIP() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) return $_SERVER['HTTP_X_FORWARDED_FOR'];
else return $_SERVER['REMOTE_ADDR'];
}
 
От: Ограничаване на логин страница само за IP от БГ

Ето едно просто решение с няколко реда код на PHP и ползването на безплатната geo база данни на geoplugin.net:


$locinfo = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.GetUserIP()));
$cc = $locinfo['geoplugin_countryCode'];
if ($cc == 'BG') {
//ok
}
else {
//block
}



function GetUserIP() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) return $_SERVER['HTTP_X_FORWARDED_FOR'];
else return $_SERVER['REMOTE_ADDR'];
}

Решението наистина е доста просто, но ако го налазят едни стабилни ботове и веднага хостинг компанията му ще ревне за процесорно време. Както спомена @s1yf0x, най-доброто решение си остава рязането на ботовете още преди да са стигнали до php-то. Иначе, ако става дума да изолираме обикновените потребители съм съгласен, че е по-лесничко от описването на всички BG мрежи :)
 
От: Ограничаване на логин страница само за IP от БГ

Преди време ползвах това апи и пада често и не работи коректно
Ето едно просто решение с няколко реда код на PHP и ползването на безплатната geo база данни на geoplugin.net:


$locinfo = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.GetUserIP()));
$cc = $locinfo['geoplugin_countryCode'];
if ($cc == 'BG') {
//ok
}
else {
//block
}



function GetUserIP() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) return $_SERVER['HTTP_X_FORWARDED_FOR'];
else return $_SERVER['REMOTE_ADDR'];
}
 
От: Ограничаване на логин страница само за IP от БГ

А когато някое API не върне грешка става забавно - php процеса, който се обръща към него стои активен и се чуди какво става докато не дойде време за timeout. А много потребители използват init_set за да зададат стойност 0 на каквито и да е timeout-и. Лесно решение, но за сметка на производителността.
 

Горе