ОсновноеRadiotalkПользовательское
Webserv24 - Панель управления хостингом
10   •   Посмотреть все темы

Безопасность сайтов: защита от взлома и вредоносного ПО

 

6600
Александр @admiral
Тема предназначена для обсуждения безопасности сайтов и защиты от взломов, в общем делимся своими рецептами безопасности, поиску зловредного кода и устранению уязвимостей.


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

Далее при регистрации желательно указывать свои действительные данные, чтобы в случае взлома, можно было доказать что это действительно ваш аккаунт, зарегистрированный на ваше имя:
ФИО владельца и дату рождения нельзя изменить даже заполучив доступ к аккаунту биллинга третьим лицом, а доказать свое владение вы всегда сможете отправив скан копию или фото паспорта на почту support@webhost1.ru
Дальше мы регистрируем хостинг аккаунты или домены все в той же биллинг-панели, после регистрации хостинга вам на почту высылаются данные доступа к аккаунту хостинга, ссылки в хостинговую часть панели так же безопасны и защищены сертификатами, например для сервера s1 эта ссылка будет:
https:_//s1.webhost1.ru/

где красным отмечен номер сервера, а синим то что ссылка безопасная.
Хорошо, зарегистрировались, заказали, начали устанавливать свой сайт, все вро де неплохо, но тут так же нужно думать о том на чем мы собираем свой сайт, если конечно не пишем для этого свою систему, и тут есть несколько советов:
- лучше всегда скачивать последние версии дистрибутивов с официальных сайтов разработчиков
- не пользоваться нуллеными скриптами кмс, еще и скаченных с подозрительных сайтов
- не устанавливать не проверенных и подозрительных дополнительных модулей и плагинов
- аккуратнее необходимо подходить и к шаблонам для сайта, лучше сделать свой, скачать с официального сайта, если шаблон выложен автором бесплатно или заказать у веб мастера или студии работу (тут то же еще надо выбрать у кого заказывать, почитать отзывы о работе и т.д.)
Далее приведу еще некоторые советы по безопасности:
- желательно использовать сложные и не одинаковые пароли от биллинга, хостинга, сайтов, почты и т.д. (везде разные и не простые, пароли в виде номера своего домашнего или сотового телефона или 123456-подобные лучше не использовать если не хотите получить в итоге взломанный аккаунт, сайт или почту)
- не сохранять пароли и в браузерах, фтп клиентах и вообще по возможности их постоянно вводить в ручную, да может быть и сложно, но безопасность же важнее, а стащить пароли с того же тотал командера например вполне реально, я к примеру даже не понимаю как им кто-то пользуется как фтп клиентом, он же не полноценный фтп клиент, а соединение по фтп в нем лишь как дополнительная функция
- по мере выхода обновлений скриптов, плагинов, модулей и т.д. старайтесь обновлять их, так как в новых версиях разработчики не только исправляют ошибки допущенные в предыдущих версиях, но и закрывают найденые уязвимости своих скриптов
- так же хочу отметить что панель хостинга дает еще и возможность просматривать логи доступа к панели хостинга: в панели хостинга - Логи панели, а так же есть возможность контролировать действия на своих сайтах включением логов по доменам все там же в панели хостинга - Домены, напротив домена имеется ссылка - настройки, где можно указать сколько дней сохранять логи доступа в папке /logs вашего аккаунта
Вот впринципе основные советы, которые желательно взять за правила, если занимаетесь сайтами и следите за безопасностью своей и своих сайтов, но и это не всегда останавливает взломщика, все совершенствуется и ничего не стоит на месте, появляются новые уязвимости, новые способы взломов и т.д., поэтому следите за выходом обновлений к своим скриптам если не пишите их сами, будьте в курсе появления новых уязвимостей, проверяйте свои сайты с помощью таких сервисов как например:
1. ********** - McAfee и программы SiteAdvisor
2. ********** - DrWeb
3. **********google.com - Google Safe Browsing, где за место синего можно подставить свой домен для проверки

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

363
Максим @Максим
так же для DLE есть антивирус.
делает снимок всех файлов на хостинге и периодически проверяет этот список, появились ли новые файлы и какие.
но его в работе не пробовал.
**********

44
Белоглазов_СВ @Белоглазов_СВ
Очень интересными ссылками поделился admiral.
Проверил все свои сайты на данном хостинге (ну вроде никого не забыл). А вот сайт, размещенный на другом хостинге проверки не выдержал и выдало вот такое:
"На 0 из 1 страниц сайта, протестированных нами за последние 90 дней, происходила загрузка и установка вредоносного ПО без согласия пользователя. Последнее посещение этого сайта системой Google произошло 2012-05-30; за последние 90 дней на этом сайте не был обнаружен подозрительный контент.
Сетей, в которых размещался этот сайт: 1 (в том числе AS32475 (SINGLEHOP))."

Для меня осталось непонятным, как понимать на "0 из 1" страниц? ПО было в итоге установлено или нет? Сейчас есть вредносный код или нет?

И еще вопрос, каким фтп клиентом лучше всего пользоваться из принципа безопасности?

363
Максим @Максим
ну тут уже по большей части вопрос не к нам "0 из 1", можете загрузить сайт к нам, потом написать мне, пробегу сканером поиска сигнатур вирусов, может что найдет.

по поводу фтп, мне нравится winscp

44
Белоглазов_СВ @Белоглазов_СВ
Спасибо, Максим, за желание помочь, буду иметь ввиду, пока что не буду с этим вопросом озадачивать, просто думал, может быть Вы в курсе. Но в любом случае полагаю, что увидев подобные пометки стоит забить тревогу.

По фтп учту, перейду на него (если он бесплатный конечно же). А насколько безопасно использовать встроенный фтп хостинга непосредственно из браузера?

363
Максим @Максим
[quote=Белоглазов С.В.]По фтп учту, перейду на него (если он бесплатный конечно же). А насколько безопасно использовать встроенный фтп хостинга непосредственно из браузера?[/quote]
так же как и вообще панелькой. Мы стараемся делать все максимально безопасно. Но тут уже идет от сохранения паролей для входа в хостинг панель, нельзя тыкать кнопочку СОХРАНИТЬ пароль в браузере, что бы мол автоматом прописывался.

6600
Александр @admiral
Под фильр безопасности google не обязательно что сайт может попасть из за какого то вредоносного кода в самих файлах, это могут быть и ссылки на сторонние ресурсы (картинки, скрипты и т.д.), где может быть установлен этот вредоносный код.
Если используете сторонние скрипты, то лучше их хранить у себя, а не ставить на них ссылки, так же можно попасть под фильтр и с рекламой, тут уже выбирать вам с какой партнеркой работать.
Интересно ********** глюк поисковой системы это или может какой их кусков js помечен как вредоносный?)
На счет фтп, есть платные типа cuteftp или smartftp, они хоть за это деньги берут и не думаю что могут подкинуть что то, только учтите что cuteftp так толком и не научился работать с файлами в utf-8 кодировке, поэтому лучше редактировать их отдельно а не в его встроеном редакторе, а с smartftp аккуратней с кодировкой, по умолчанию он открывает файлы с системной кодировкой и надо потом выбирать в какой кодировке открыть файл.
С бесплатных filezilla или winscp, это уже на любителя, главное не тотал, если не хотите ковыряться в файле его настроек, о причине я уже писал выше.
Кстате если постоянно уводят пароли и есть подозрение что их могут уводить через фтп клиент, как вариант можно временно использовать встроенный в панель вебфтп, перед этим естественно сменив пароли, если это прекратится, тогда уже проверять сам фтп клиент и компьютер на возможные вирусы

6600
Александр @admiral
********** - несколько советов от Google

363
Максим @Максим
Недавно мы реализовали в хостинг панели функцию сканирования файлов на совпадение кода по сигнатуре.

Эта функция может помочь найти шелл вирусы, спамеры, флудеры и прочие подозрительные и вредоносные файлы.
Сканер находится в - хостинг панель - Антивирус.


а так же, для любителей joomla.

В последнее время участились случаи со спамом и шелл файлами. Чаще всего мы их находим спрятаны как модуль "mod_sys" проверьте свои сайты.

363
Максим @Максим
убираем хотя бы банальные недочеты разработчика JOOMLA, видимо им просто лень было сделать.

1. устанавливаем права для папок Joomla

И так ставлю права для папок с помощью программы filezilla (мне он больше нравится для работы с сайтом, чем тотал коммандер и прочие...)

на папку tmp 705
на папку logs 705
на файлы в корневой директории 444
templates 555
на все остальные папки 755 а на файлы внутри них 644

дополнительно:

images/stories 777 если будем загружать рисунки с помощью джумлы
administrator/backups/ - chmod 777 иногда требуется для различных компонентов

2. переименуем файл htaccess.txt в .htaccess

добавим:


########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}( 😑 \%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS( 😑 \[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} tp(=1) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST( 😑 \[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
########## END

<Filesmatch ".(php)$">
order deny,allow
deny from all
</Filesmatch>

<Filesmatch "^index.php">
order allow,deny
allow from all
</Filesmatch>

<Filesmatch "^index2.php">
order deny,allow
allow from all
</Filesmatch>



Эти строки указывают серверу, что необходимо запретить выполнение каких-либо скриптов в корне, кроме файла index.php. И если хакеру удастся загрузить в корень сайта какой-нибудь бэкдор, он все равно не сможет его выполнить на сервере.

4. В каждую директорию положить пустой файл index.html

5. В папку /administrator (если она доступна на запись!!!) записывается пустой файл .htaccess

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

7. В Джумле в самом верху кода вы найдёте такую строчку

<meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />




8. И так как скрыть ярлык что наш сайт работает на Джумле, для этого нам надо отредактировать файл head.php который даёт именно этот выхлоп в шаблон джумлы, он находиться /libraries/joomla/document/html/renderer/head.php
Открыв его находим код (район 83 строки)

$strHtml .= $tab.'<meta name="generator" content="'.$document->getGenerator().'" />'.$lnEnd;


и удаляем его от греха подальше.

9. За эту операцию отвечает файл reset.php который находиться в данной директории /components/com_user/models
Что бы исключить эту возможность за получение административной учётки хакерами я предлагаю этой файл удалить ,ну это на тот случай если на фронтенде сайта нету сервиса авторизации , ну бывает же много сайтов визиток где нет авторизации и регистрации а удаление этого файла самый верный способ сократить шансы на взлом.


10. Добавьте в файл .htaccess в корне сайта следующее:

<Filesmatch ".(php)$">
order deny,allow
deny from all
</Filesmatch>

<Filesmatch "^index.php">
order allow,deny
allow from all
</Filesmatch>

<Filesmatch "^index2.php">
order deny,allow
allow from all
</Filesmatch>



Эти строки указывают серверу, что необходимо запретить выполнение каких-либо скриптов в корне, кроме файла index.php. И если хакеру удастся загрузить в корень сайта какой-нибудь бэкдор, он все равно не сможет его выполнить на сервере.


11. Однако, хакер может попытаться загрузить бэкдор с именем index.php в какой-нибудь подкаталог в корне сервера, где он будет успешно выполняться. Поэтому во все подкаталоги первого уровня от корня необходимо поместить файл .htaccess следующего содержания:

<Files ~ ".(php)$">
Deny from all
</Files>



Данная мера позволит запретить запуск php-скриптов напрямую.

В каталоге "administrator" необходимо поместить файл .htaccess следующего содержания:

<Filesmatch ".(php)$">
order deny,allow
deny from all
</Filesmatch>

<Files index.php>
order deny,allow
deny from all
allow from 11.11.11.11
allow from 22.22.22.22
allow from 33.33.33.33
</Files>

<Files index2.php>
order deny,allow
deny from all
allow from 11.11.11.11
allow from 22.22.22.22
allow from 33.33.33.33
</Files>

<Files index3.php>
order deny,allow
deny from all
allow from 11.11.11.11
allow from 22.22.22.22
allow from 33.33.33.33
</Files>




Где IP-адреса вида 11.22.33.44 -- это IP-адреса, с которых вы администрируете J!. Эта мера поможет, когда хакер каким-то образом смог получить пароль администратора. В этом случае он все равно не сможет залогиниться в административной панели.

12. при установке J! указываем префикс для таблиц в БД отличный от стандартного jos_, например, что-то типа chren_tebe_

13. меняем ID супер-администратора

14.


########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}( 😑 \%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS( 😑 \[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} tp(=1) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST( 😑 \[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
########## END

91
Александр @SANhist
Сейчас многие поисковые системы внедряют свои средства диагностики)
Сайт можно проверить и в Яндекс.Вебмастер - **********
Только... Вы должны подтвердить, что владелец именно вы)

И еще один неплохой сервис, который советуют некоторые вебмастера - **********
Насколько он надежен - не знаю. Проверил, например, несколько чатов сервиса. Он пишет, что там вредоносный код из-за iframe, который ссылается на вирусные сайты. Впрочем, многие знают, что некоторые рекламные сети плохо влияют на этот показатель. Так что пусть будет на совести админов)

Отредактировано SANhist - 01.02.2013
363
Максим @Максим
Работа с WordPress

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

Часто брут производится по базе сайтов ботами по заранее установленной схеме.
Делаем работу брута сложнее. Меняем стандартный файл авторизации пользователя на сайте, а точнее изменяем название файла wp-login.php на любой другой.

Как это сделать:

1 - изменяем название файла wp-login.php на набор из букв и цифр (пример: 12а456.php)
2 - копируем новое название, открываем файл 12а456.php и с помощью текстового редактора заменяем все "старые" слова wp-login.php на 12а456.php.
3 - открываем wp-includes/general-template.php и в нем также производим замену всех слов wp-login.php на 12а456.php

После этого адресная строка в браузере входа в админку изменится с ********** на **********

Затем надо удалить виджет "Мета", так как в нем при наведении курсора мышки на строку "Войти" виден url страницы для ввода логина и пароля. Страницу с новой адресной строкой добавить в закладки.

--------
Отключение отображения версии WP

Для повышения безопасности блога, часто рекомендуют отключить отображение версии WordPress. Инструкций как это сделать, огромное множество и все они могут использовать разные методы для отключения отображения версии, но самый просто и правильный вариант, это добавить в файл functions.php который находится в папке шаблона вашего блога, следующую строчку:

remove_action('wp_head', 'wp_generator');

Для упрощения Render написал скриптик.
Распаковываете архив в корне сайта, запускаете domein.ru/name.php
вводите в полях старое название файла и новой.
Скрипте делает поиск старого названия и меняет его на новое
**********

3445
Андрей @VitrOn
Максим пишет:

Работа с WordPress

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

Часто брут производится по базе сайтов ботами по заранее установленной схеме.
Делаем работу брута сложнее. Меняем стандартный файл авторизации пользователя на сайте, а точнее изменяем название файла wp-login.php на любой другой.

Как это сделать:

1 - изменяем название файла wp-login.php на набор из букв и цифр (пример: 12а456.php)
2 - копируем новое название, открываем файл 12а456.php и с помощью текстового редактора заменяем все "старые" слова wp-login.php на 12а456.php.
3 - открываем wp-includes/general-template.php и в нем также производим замену всех слов wp-login.php на 12а456.php

После этого адресная строка в браузере входа в админку изменится с ********** на **********

Затем надо удалить виджет "Мета", так как в нем при наведении курсора мышки на строку "Войти" виден url страницы для ввода логина и пароля. Страницу с новой адресной строкой добавить в закладки.

--------
Отключение отображения версии WP

Для повышения безопасности блога, часто рекомендуют отключить отображение версии WordPress. Инструкций как это сделать, огромное множество и все они могут использовать разные методы для отключения отображения версии, но самый просто и правильный вариант, это добавить в файл functions.php который находится в папке шаблона вашего блога, следующую строчку:

remove_action('wp_head', 'wp_generator');

Для упрощения Render написал скриптик.
Распаковываете архив в корне сайта, запускаете domein.ru/name.php
вводите в полях старое название файла и новой.
Скрипте делает поиск старого названия и меняет его на новое

Если не хотите, чтобы узнали версию движка, советую удалить из корня сайта этот файл - readme.html
Как пример - www.cubicleninjas.com/readme.html
www.quasarsoft.net/readme.html

20089
Dimitry @Dimitry
WP бездумно версию палит, не хорошо)

1
shpakov @shpakov
Максим пишет:

Работа с WordPress

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

Часто брут производится по базе сайтов ботами по заранее установленной схеме.
Делаем работу брута сложнее. Меняем стандартный файл авторизации пользователя на сайте, а точнее изменяем название файла wp-login.php на любой другой....

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

Дело в том, что даже совершив все эти изменения в адресной строке все равно видно на что был изменен путь доступа в админку сайта. Т.е. при вводе в адресную строку ********** ты попадаешь на страницу входя в админку (логин, пароль) и в адресной строке уже видно новый (измененный) путь до бывшего wp-login.php

И тут хоть удаляй "мета" хоть нет все одно. Пишу это только по тому, что при установке вордпресса через админку хостинга дается эта рекомендация (по изменению wp-login.php).