Всем читателям привет! Я на своем сайте продолжаю избавляться от плагинов, и вот очередь дошла до плагинов защиты сайта. По сегодняшний день защита сайта от взлома была сделана с помощью двух плагинов: это Anti-XSS attack и Login LockDown. Коротко про эти плагины, как они мой сайт защищали и возможно будут защищать и ваш, если решите их установить.
Плагин Anti-XSS attack защищает ваш сайт от XSS атак, если кто то посторонний пытается зайти к вам в админку то плагин выводит сообщение ошибки в виде ссылки, по которой нужно перейти для входа в консоль. Вообще этот плагин не нужен если у вас версия wordpress выше 2.5, он в других версиях не работает, но это только слухи, сам я не уверен.
Плагин Login LockDown ограничивает число попыток подбора вашего пароля в админку злоумышленником. Число попыток вы устанавливаете сами, и после неудачной последней попытки, плагин блокирует доступ к админке на определенное время, которое вы также сами устанавливаете. Это как на примере сим-карты в телефоне, набрал пин-код неправильно три раза и все, нужен уже puk-код, а если набрал неправильно еще и puk-код, то вообще трындец.
Если вам, все же нужны эти плагины, то скачайте их, закиньте в папку с плагинами, активируйте и настройте.
А тем, кто не хочет плагины устанавливать, то читаем дальше.
Защита сайта от взлома без плагина.
Во-первых!
Будьте осторожны и внимательны при внесении изменений на вашем сайте. Сделайте резервные копии.
Пройдите в консоль — общие настройки, и там есть пункт — роль нового пользователя, отключите если включена.
По умолчанию при установки движка wordpress, логин это — admin, и пароль вроде такой же.
Пароль от вашего хостинга, должен быть довольно сложным, если подберут пароль к вашей контрольной панели на хостинге то вообще все потеряно, поэтому придумайте пароль и логин такими сложными, но чтобы вы сами не забыли их.
Далее, для того чтобы поменять пароль и логин у админ-панели, зайдите в контрольную панель вашего хостера и перейдите в раздел — управление MySQL — phpMyAdmin. Откройте базу данных и найдите файл «wp_users», откройте его.
Теперь нажмите на кнопку редактировать, и сначала измените, если нужно user_login и user_nicename (свой логин для входа в двух местах), и user_pass (пароль от входа). Для замены пароля, введите новый сложный включая цифры, буквы и какие нибудь знаки вместо иероглифов, какие там сейчас. После смены пароля в этом же окне в выпадающем меню выберите MD5 и нажмите Ок.
В корне вашего сайта есть такие файлы - license.txt и readme.html, удалите их обязательно. Они там лежат для злоумышленников ;)
Во-вторых. Главная страница вашего сайт возможно показывает версию вашего WordPress, и это нужно исправлять. Проверить это просто: Откройте главную страницу и нажмите сочетание ctrl+u, откроется страница с кодом. Найдите строчку при помощи поиска ctrl+f, и начните вводить начало фразы, совпадения будут подсвечены.
<meta name="generator" content="WordPress 2.7" />
Зайдите через Ftp-клиент на ваш хостинг, и в папке с вашей темой скопируйте на рабочий стол файл header.php. Откройте его с помощью любого текстового редактора, найдите и удалите вот эту строчку:
<meta name="generator" content="WordPress 2.7" />
Возможно эта строка будет немного по другому выглядеть, я показываю лишь пример. Если вы не смогли найти данную строку, то откройте файл functions.php и в самом конце, но перед ?>, вставьте этот код:
remove_action('wp_head', 'wp_generator');
или этот, зависит от шаблона:
add_filter('the_generator', 'wb_remove_version');
После вставки кода, сохраните и перезапишите файл в папку с вашей темой.
Идем дальше.
Закройте возможность обзора отдельных директорий вашего сайта ( http://ваш сайт/wp-content/ и http://ваш сайт/wp-content/plugins). Для этого найдите и откройте в корне вашего сайта файл .htaccess, и пропишите функцию:
Options All -Indexes
Замените этот файл в корне своего сайта и проверьте все ли работает. Если при открытии вашего сайта вылезает ошибка, то удалите строчку, и замените файл обратно. Возможно что ваш шаблон уже поддерживает такую защиту.
Теперь защитим файл wp-config.php. В этом файле находится очень важная информация и никто не должен ее узнать. Для этого в файле .htaccess прописываем следующий код:
<files wp-config.php> order allow,deny deny from all </files>
Код вставьте в конце перед # END WordPress.
Еще добавлю один метод, хотите поставьте его тоже. На странице входа в админку нужно ввести логин и пароль, но когда вы вводите правильный логин и если введете неправильный пароль, то всплывает ошибка о том, что пароль неверный. Для взломщиков эта ошибка поможет, они поймут, что осталось подобрать только пароль.
На этом изображении введен неправильный логин. И ошибка об этом говорит. Злоумышленник теперь знает, что нужно сначала подобрать правильный логин.
На второй картинке введен правильный логин, но неправильный пароль. И также всплывает ошибка и в ней все написано. Понятно, что WordPress хотел как лучше, но взломщикам это только на руку.
Осталось подобрать правильный пароль.
Можно сделать так, чтобы ошибки не показывали, что конкретно неправильно заполнено.
Для этого найдите файл functions.php в папке с вашей темой (ваш сайт/wp-content/themes/ваша тема), либо через FilleZilla или через редактор в консоли. Скопируйте этот файл на рабочий стол и откройте его с помощью текстового редактора Notepad++
В самый конец перед ?> вставьте следующий код:
add_filter('login_errors',create_function('$a', "return null;"));
Сохраните и перезапишите его обратно на хостинг. Теперь, когда вводите логин или пароль неправильные, то ошибка не будет указывать, что именно неправильно. Но, если вы введете правильный логин, то будет видно, что он верный, так как не удалится из поля ввода. И попробуйте разные варианты для входа в админку, если все работает — то хорошо. Если нет, то удалите коды, которые ставили или воспользуйтесь резервной копией вашего сайта, я надеюсь вы ее сделали. Какая никакая, но защита.
В-третьих!
Давайте заменим файл, с помощью которого мы попадаем в админ-панель сайта, это файл wp-login.php, и лежит он в корневой директории вашего сайта. У кого то страница находится в закладках, а кто то вводит адрес в строке браузера, чтобы войти в консоль. Адрес страницы входа в консоль у WordPress обычно выглядит так: ваш сайт/wp-login.php. Если у вас такой адрес, то остается только набрать адрес и подобрать логин с паролем, злоумышленники это знают.
В корневой директории вашего сайта найдите файл wp-login.php и скопируйте его на рабочий стол. Теперь придумайте ему новое название, только на латинском (например konsol bloga). Открываем как обычно, через текстовый редактор. B теперь откройте поиск ctrl+f и введите ваше предыдущее название файла (wp-login). Нажмите на вкладку — заменить. Теперь в поле — заменить на, введите свое новое название и нажмите — заменить все, везде, где встречалось фраза wp-login теперь заменена на вашу новую. Сохраните файл и закиньте его обратно в корневую папку. Старый файл можете удалить, или лучше переместить на рабочий стол на какое то время, чтобы проверить как все работает.
Найдите в папке wp-includes файл general-template, скопируйте его себе и откройте. Делаем все как описано выше, только имя самого файла не меняете. Заменили все фразы на новые, те которые писали в файле wp-login.php и закидываете его обратно в папку с заменой.
Теперь при открытии страницы — ваш сайт/wp-login.php будет открыта страница с 404 ошибкой, которая говорит, что такой страницы не существует. Злоумышленникам ни за что не догадаться какая именно страница ведет в админку. Вход производите по новому адресу, которое вы заменили.
Сделать редирект с wp-login.php очень просто, делается для того чтобы открылась страница, которую вы пропишите. В корневой папке вашего сайта есть файл .htaccess, скопируйте его себе и откройте с помощью Notepad++. Теперь вставьте перед # END WordPress эту строчку:
Redirect 301 /wp-login.php http://любая ваша ссылка
При запросе к wp-login.php будет открыта страница, которую вы указали.
Но, можно попасть в админ панель и по адресу «ваш сайт/wp-admin», чтобы сделать редирект с данной страницы на главную, нужно вставить в файл functions.php вот этот код:
add_action( 'init', 'blockusers_init' ); function blockusers_init() { if ( is_admin() && ! current_user_can( 'administrator' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { wp_redirect( home_url() ); exit; } }
Код ставим в самый низ перед ?>. Файл если кто не знает, находится в папке с вашей темой, или можно добраться до него через консоль — внешний вид — редактор. Не забывайте делать резервные копии. После того как прикрутили код, страница wp-admin будет отправлять вас на главную, а для входа в админку используйте замененный файл wp-login.php.
И последнее. Скачайте и установите плагин Wp-db-backup. Активировав плагин, вы сможете делать резервные копии базы данных вашего сайта. У плагина есть некоторые настройки. Можете настроить отправку базы данных на ваш е-mail или просто скачать на компьютер.
Рекомендую делать обновления сайта и плагинов, так как если у вас старая версия, то у вас появляются дыры в безопасности.
Также делайте резервные копии на самом хостинге, пусть они будут и у них тоже, и вы в любой момент сможете их скачать или сделать запрос в тех поддержку на восстановление сайта задним числом.
Теперь ваш сайт под защитой, и в случае непредвиденных ситуаций,вы всегда сможете восстановить его из резервной копии.
На этом я завершаю статью, надеюсь она была полезной и интересной для вас! Позже будет статья про обновление WordPress, чтобы не пропустить, оставьте свой е-mail.
P.S. Касается изменения файлов wp-login.php, general-template, .htaccess. После обновления WordPress, файлы, которые были изменены, будут восстановлены в исходное состояние !!! Поэтому, запомните, сохраните на компьютере или в закладках эту страницу, чтобы порядок действий был у вас под рукой.
Новый файл для входа в консоль никуда не денется, но вот файлы .htaccess и general-template нужно будет изменить заново, а файл wp-login.php удалить из директории.
Теперь у Вас сделана защита сайта от взлома и можете спокойно публиковать новые материалы не боясь, что, кто взломает сайт и Вы навсегда его потеряете.
Защитите себя и свой сайт!
Сделал, изменил wp-login. Но выйти с админки не получается — ошибка 404. Как быть?
Александр спасибо, напомнил! Я забыл добавить, что нужно еще в файле general-template, находится он в папке wp-includes, заменить wp-login.php на новое имя, и все будет гуд!!! Заменить нужно все сколько есть таких фраз, у меня было 5.
Любопытно, нужно попробовать реализовать, как время появится обязательно займусь!
Я считаю такую важную задачу, как защита. Нужно отдать плагину и лучше выбрать качественный популярный плагин. Но это сугубо мое мнение)
Денис, статья для меня очень актуальна, потому что последнее время на почту приходят такие письма :Alert from WordPress Firewall on konstantinbabiy.ru
WordPress Firewall has detected and blocked a potential attack!
Web Page: konstantinbabiy.ru/
Warning: URL may contain dangerous content!
Offending IP: 134.249.53.85 [ Get IP location ]
Offending Parameter: execute = wp_insert_user
This may be a «WordPress-Specific SQL Injection Attack.»
Click here for more information on this type of attack.
If you suspect this may be a false alarm because of something you recently did, try to confirm by repeating those actions. If so, whitelist it via the «whitelist this variable» link below. This will prevent future false alarms.
Click here to whitelist this variable.
Click here to turn off these emails.
Repeated warnings for similar attacks are currently sent via email, click here to suppress them.
В переводе сказано, что была обнаружена и заблокирована потенциальная атака! И таких писем приходит в день штук по 15!!! Подскажи, пожалуйста,как с этим можно эффективно бороться?
Меняйте защиту своего сайта! Если у Вас стоят плагины, то пробуйте их заменить на другие или воспользуйтесь вариантом без плагинов как в статье описал. У меня не стоят плагины, я использую код, и все просто отлично! Многие вебмастера используют этот метод.
Денис привет! То что ты написал в статье выше, я уже довно сделал, только еще закрыл админ! спасибо! Но теперь не работают закодированные страницы после замены wp-login, поможешь разобраться? если сможешь напиши на электронку тоже)))
Привет Евгений! Про какие закодированные страницы идет речь?
в настройках страницу можно закодировать, посмотрите и там идёт ссылка через wp-login
Если я правильно понял, то в режиме редактирования страницы, в правом углу есть блок с настройками. Там можно поставить пароль, сделать личным. При наведении на ссылку «ИЗМЕНИТЬ» подсвечивается ссылка в которой отображается «wp-admin».
Про это Вы говорите?
Без использования современных плагинов трудно будет все ручками делать, тем более все меняется и средства взлома тоже
Кое-что можно и ручками сделать, например вход в админку сайта можно изменить. А если вы решили подключить какой нибудь мощный функционал, то конечно без плагинов не обойтись, да и по надежнее они будут...