Как обезопасить PBN от взлома? Практические рекомендации
1. Как обезопасить PBN от
взлома? Практические
рекомендации
Дмитрий Сандомирский
2. Есть ли проблема?! Для кого
актуально ?
● Если у вас больше 5 PBN
● Если у вас конкурентная тематика
● Если у PBN есть хорошие позиции
● Если у вас нет времени постоянно
проверять ваши PBN
3. Кому будет интересна инфа?
● Кто имеет небольшие сетки до 300 сайтов
● Кто планирует делать PBN для себя
● Кто имеет свой сайт
Не подойдет для компаний которые делают PBN на потоке!
Они и так все знают ;)
5. Основные методы взлома
● XML RPC - возможность передавать данные, с HTTP
выступающим в качестве транспорта и XML – для
кодирования
● Брутфорс - подбор имени и пароля методом перебора
● Небезопасные темы и плагины
● Известные уязвимости в устаревшем ПО
● Уязвимости в ПО хостинга
● бэкдоры, фишинг, xss-атаки, sql-инъекции и тд
6. Отключаем XML RPC
● Wp-config.php
add_filter('xmlrpc_enabled', '__return_false');
● .htaccess
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
7. Брутфорс - азы!
● Логин
Плохой: admin, название сайта, тематика, имя, имя
автора
Хороший: слова без ассоциаций вместе с цифрами и
символами
Пример хорошого: bnB#BH324hJkj
● Пароль
Плохой: password, название сайта, тематика, имя,
просто текст или цифры, короткий
Пример хорошого: bh*YF^VIV&^YVIY7v8uyv&Fv
● Не ставить один логин и пароль на разные сайты!
8. Программные методы
● Меняем урл админки
● Ставим капчу
● Двойная авторизация через .htpass
● Ограничение количество попиток входа плагином,
например Login LockDown
● Подключаем cloudflare
● Убрать подсказку о неверном введение пароля
function no_wordpress_errors(){ return 'Может хватит ломать админку?' ;}
add_filter( 'login_errors' , 'no_wordpress_errors' );
9. Небезопасные темы и плагины
● Nulled themes
● Nulled plugins
Риски
1. Бекдори
2. Явные линки и закодированные в Base64
Заключение: только проверенные источники!
11. Wordpress уязвимость в ее версии!
1. Версия указана в метатеге generator и в тегах <link>
remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'wlwmanifest_link' );
2. в файле readme.html
Удаляем или запрещаем доступ с помощью .htaccess
3. в файле ru_RU.po по адресу /wp-content/languages/
Запрещаем доступ с помощью .htaccess
Всегда обновляемся до последней версии!
12. Старые версии плагинов и тем
1. Обновляем все!
2. Удаляем то что не используем Скрываем файлы тем и
плагинов от индексации inurl:/wp-content/- раскроет данние о ваших
плагинах и темах
User-Agent: *
Disallow: /cgi-bin
Disallow: /wp-login.php
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/
Disallow: /wp-content/
plugins/
Disallow: /wp-content/
themes/
Disallow: /?author=*
Allow: /
в файле robots.txt не рекомендуется размещать ссылки на директории,
которые были созданы специально для хранения чувствительной
информации
13. .htaccess - полезные функции
1. RewriteCond %{QUERY_STRING} base64_encode[^(]*([^)]*) [OR] - заблокирует ссылки,
содержащие кодировку Base64
2. RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR] - Избавиться от
ссылок, содержащих тег <script>
3. RewriteCond %{QUERY_STRING} GLOBALS (=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST (=|[|%[0-9A-Z]{0,2}) - противодействует скриптам,
пытающимся установить глобальные переменные или изменить переменную _REQUEST
через URL
4. RewriteCond %{query_string} concat.*( [NC,OR]
RewriteCond %{query_string} union.*select.*( [NC,OR]
RewriteCond %{query_string} union.*all.*select [NC]
RewriteRule ^(.*)$ index.php [F,L] - Для противодействия SQL-инъекциям блокируем
запросы к URL, содержащие определенные ключевые слова
14. .htaccess - полезные функции
5. SetEnvIf user-agent «Indy Library» stayout=1
SetEnvIf user-agent «libwww-perl» stayout=1
SetEnvIf user-agent «Wget» stayout=1
deny from env=stayout - блокирует определенные user-agent популярных хакерских
програм
6. Options -Indexes - закрывает список файлов и папок
7. <files .htaccess>
order allow,deny
deny from all
</files> - закрываем доступ к файлу htaccess. Таким же методом закрываем доступ к
уязвимы файлам
wp-config.php, содержит имя БД, имя пользователя, пароль и префикс таблиц;
readme.html и ru_RU.po, которые содержат версию WordPress;
install.php.
15. Разрешаем доступ для конкретных ip
создаем файл .htaccess в папке wp-admin
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Access Control"
AuthType Basic
order deny,allow
deny from all
allow from 178.178.178.178 # IP 1
allow from 248.248.248.248 # IP 2
16. Перенос сайта на html
Подходит не всем, но достаточно эффективный метод защиты
+ Минимум кода, нечего ломать
+ Бистрие сайти
+ Меньше весят
+ Стабильная работа
- Сложно следить
- Сложно заливать новий контент
- Много манипуляций для простановки простой ссылки, если
переделываем WP сайты
17. Общие рекомендации
1. Не сохраняйте пароли в браузере
2. Не используйте гугл докс для паролей
3. Используйте хороший хостинг (в идеале хороший сервер +
проксирование)
4. Если плохой хостинг, частично поможет cloudflare
(осторожно футпринт)