Есть ли способ заблокировать доступ пользователя ко всему сайту, а не только к wp-login.php - PullRequest
0 голосов
/ 24 января 2019

Я использую код из этой статьи , работал отлично, но я хочу заблокировать доступ для всего сайта, а не только для одной страницы, есть ли доступный метод?

Использование Ubuntu, php7, mod-security2.

Код:

<Locationmatch "/wp-login.php">
# Setup brute force detection.
# React if block flag has been set.
SecRule user:bf_block "@gt 0" "deny,status:401,log,id:5000135,msg:'ip address blocked for 5 minutes, more than 10 login attempts in 3 minutes.'"
# Setup Tracking. On a successful login, a 302 redirect is performed, a 200 indicates login failed.
SecRule RESPONSE_STATUS "^302" "phase:5,t:none,nolog,pass,setvar:ip.bf_counter=0,id:5000136"
SecRule RESPONSE_STATUS "^200" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:5000137"
SecRule ip:bf_counter "@gt 10" "t:none,setvar:user.bf_block=1,expirevar:user.bf_block=300,setvar:ip.bf_counter=0"
</Locationmatch>

Когда любой пользователь сайта пытается войти в систему 10 раз за 3 минуты с неправильными учетными данными, mod-security блокирует доступ для этого пользователя (по IP) и только для этой страницы (sitename / wp-login.php), но мне нужно бан для всего сайта. Есть ли способ сделать это через это правило и модсек без db / .htaccess и других функций?

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 24 января 2019

Вы можете использовать плагин, например, ограничить попытки входа в систему, который будет обрабатывать отслеживание неудачных входов в систему и управлять заблокированными IP-адресами. Но поскольку плагин будет блокировать только будущие входы в систему, вы можете добавить базовую функцию, которая использует плагин для блокировки доступа к интерфейсу.

Например, с установленным плагином Limit Login Attempts добавьте приведенный ниже код в functions.php - и внесите любые необходимые изменения.

add_action('template_redirect', 'checkIfLockedOut');
function checkIfLockedOut(){
  if(function_exists('is_limit_login_ok')){
    $isNotLockedOut = is_limit_login_ok();
    if(!$isNotLockedOut){
      // you could wp_redirect here,
      // or do what you'd like.
      die('Sorry, you cannot access the site, you are locked out!');
    }
  }
}

https://wordpress.org/plugins/limit-login-attempts/

...