1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...

Как защитить сайт на DLE от взлома

Пост не совсем в тему на этом блоге, но кому-нибудь он может помочь, поэтому и публикую его тут.

DataLifeEngine (DLE) это популярная CMS, с которой работает довольно много людей. Но у неё есть один небольшой недостаток – за DLE её создатели хотят денег… Поэтому многие пользователи, не имея возможности/желания оплатить лицензию качают нуленные (ломанные) версии движка. И иногда так случается, что в этих архивах спрятаны бекдоры, используя которые, их авторы могут получить полный контроль над вашим сайтом.взлом сайтов на DLE, как защитить сайт на DLE от взлома

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

А начиналось все так – год-два назад на одном своем сайте (догадайтесь, на каком двигле? ;) ), на морде я обнаружил пару внешних ссылок, которых там быть не должно было (ссылки были спрятаны – синий шрифт на синем фоне). Тогда я восстановил сайт из бекапа (ссылки пропали), сменил пароли на админку и ftp и на этом успокоился (сайт не торгует в биржах, поэтому количество внешних ссылок почти никогда не смотрю).

Пару месяцев назад на другом сайте (хостинги у них разные), торгующем в сэйпе, все проданные ссылки упали в error, полез разбираться, смотрю – а у меня в шаблоне main.tpl какой-то лишний тег стоит ({lb} вроде бы). Убрал его, почистил index.php из корня сайта (он тоже был изменен), удалил файл сапы links.db и ссылки снова появились на сайте. После этого сменил пароли и ушел спокойно спать. Но на следующее утро опять та же картина – все ссылки в error`e, индексный файл и файл шаблона опять так же модифицированы… Причем, под одним ftp доступом на этом хостинге был доступен ещё один сайт, торгующий в сэйп, и у него все ссылки были в статусе ок… После пары дней ненапряженных раздумий, переписки с саппортом хостинга и поисков в интернет, был сделан вывод, что для взлома сайта используется бекдор, спрятанный в одном из файлов движка, причем используется он роботом (почти в одинаковое время, как я потом заметил, изменялись файлы сайта). Тогда я был очень занят и сильно морочится этим не было ни времени, ни желания, поэтому я просто раз в день восстанавливал файлы сайта, а поиск бекдора был отложен на неопределенное время…

Прошел месяц, а может и два, и тут на первом сайте из этого поста возникла необходимость смены шаблона, был поставлен новый шаблон, но на следующий день он волшебным образом превратился в старый (то есть, был заменен весь html код в файле main.tpl нового шаблона на код старого, и сайт выглядел просто ужасно)! И опять появились те самые две лишние внешние ссылки на морде.

Именно тогда я решил  заняться решением этой проблемы вплотную. И вот что было выяснено – бекдоры обычно кладут в папку engine движка DLE, они могут быть отдельным файлом, или находится в каком-то файле движка, могут быть в любой папке. Но, что бы воспользоваться бекдором, файлу, в котором он находится, должно быть разрешено выполнять php код по обращению пользователей (как то невнятно объясняю, но я и сам не силен в теории). В DLE уже есть защита от этого (которая, в принципе, легко убирается злоумышленниками ещё до того, как нуленная версия движка ушла в паблик) – если в файле htaccess какой-либо папки есть инструкции:

Order allow,deny
Deny from all

то обращения пользователей к любым файлам из этой папки будут блокироваться, использовать их сможет только ваш сервер/движок. Так же, если в файле DLE есть строки

if (! defined ( ‘DATALIFEENGINE’ )) {
die ( «Hacking attempt!» );
}

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

То есть, в принципе можно довольно легко решить проблему, не вникая как и что сломано – положить в папку  engine htaccess с нужным нам содержимым и всё, враг не пройдет. Но, тогда перестают работать некоторые функции движка (генерация капчи, rss – больше пока не нашел). Значит, нам нужно разрешить прямое обращение к некоторым файлам. В общем, на втором сайте в папке engine я сделал такой файл htaccess:

<FilesMatch «\.(php|php3|php4|php5|php6|phtml|phps)$|^$»>
Order allow,deny
Deny from all
</FilesMatch>

<Files rss.php>
Order allow,deny
allow from all
</Files>

(запретил прямой доступ к файлам, содержащим php код и разрешил доступ к фалу, выдающему rss)

А в папке engine/modules файл получился таким (разрешил доступ к файлу с капчей):

<FilesMatch «\.(php|php3|php4|php5|php6|phtml|phps)$|^$»>
Order allow,deny
Deny from all
</FilesMatch>

<Files antibot.php>
Order allow,deny
allow from all
</Files>

И о чудо! Файлы сайта перестали модифицировать без моего ведома! :)

Воодушевленный успехом, я разместил эти два htaccess`a на первом сайте из этого поста, но там ни капча, ни РСС работать не стали… Видимо, другие настройки сервера, или у меня руки кривоваты… В общем, там пришлось искать бекдор. Оказалось, что он находится в файле initme.php (файл не от движка, в нем много всего закодированного в base64). В итоге, я запретил в htaccess доступ только к этому файлу (если его просто удалить, то выскакивает ошибка, а чистить все файлы, которые могут к нему обращаться, мне просто лень:) ):

<Files initme.php>
Order deny,allow
deny from all
</Files>

Сайт из второго примера пока ещё не прошел проверку временем, возможно, придется ставить дополнительную защиту.

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

А у вас взламывали сайты? Как вы с этим боролись?

UPD 02/12/2011 11:42 В комментах подсказали наилучший выход, о котором я забыл упомянуть – покупайте лицензию, и ставьте оригинальную сборку DLE и будем вам счастье!

 

Спасибо за ретвит этой записи, если вам понравился материал, подпишитесь на обновления блога по RSS или по почте:

Читать в Яндекс.Ленте Добавить в Google Reader
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...

Похожие материалы

  • http://twitter.com/24uzlaru Шириазданов Газинур

    Вот моя статья про взлом dle там причина была иная.
    http://24uzla.ru/24news/3180-massovyy-vzlom-dle-90-i-nizhe.html

    • http://antonblog.ru/ Anton

      у меня на сайте №2 из этого поста тоже самое было, забыл написать про это

  • SeoUm

    Полезная статья. Интерисует обмен ссылками в статьях? http://themesdle.ru/

    • http://antonblog.ru/ Anton

      Спасибо, не интересно

  • http://seogang.ru/ Seogang

    Да, статья полезная) Но проще порекомендовать не ставить левые сборки и тд и все будет ок

    • http://antonblog.ru/ Anton

      Кстати, да, самое очевидно решение, сейчас допишу :)

  • SeoUm

    Ещё можно качать демо версию и потом активировать ключ. Ключи подделывают разные сервисы. Можно нагуглить.

  • http://gadgetall.ru Gesik

    Такая же замута была и с мои сайтом :) Избавился так, нашёл через какую биржу размещаются ссылки, написал саппорту о переносе сайта в мой аккаунт, удалил коды бирж, попросил у биржи данные кошелька злоумышленника который «зарабатывал» на моём сайте (кстати за всё время он поимел 20К р.), саппорт любезно всё предоставил и я накатал жалобу в арбитраж и этого кекса залочили :)

  • Белофф

    Здравствуйте.Как Бог послал на эту статью,пару дней назад создал сайт на движке дле 9.4 финальная версия  и тоже скачал на какомто не очень популярном сайте ,не мог даже и подумать что так может быть.теперь глаз да глаз нужен.а статейку сохраню ,надеюсь не пригодится но если вдург – не помешает) 
    Спасибо большое автору за статью.

  • Nazamok

    Для мониторинга сайтов от взлома есть отличный сервис – http://nazamok.com

  • http://seofaqs.ru SeoFaqs

    Спасибо, очень помогло. Замучался уже сайты из бэкапа восстанавливать после взломов.

  • http://twitter.com/zxerxp Красавин Сергей

    бывало взламывали, пришлось перейти на ucoz 
    http://russia-cinema.ucoz.ru/

  • http://seolost.ru/ SeoLost

    Вот 2-е моих подобных статей про защиту дле (в двух частях) 
    http://seolost.ru/18-kak-zaschitit-sayt-na-dle-ot-vzloma-chast-1-prostye-sposoby-zaschity.html
    http://seolost.ru/19-kak-zaschitit-dle-ot-vzloma-pereimenovivaem-fail-dbconfig.html
    Если всё же кто-то интересуется этим))) Или боится что его взломают))

Подпишись на RSS Следите за обновлениями в Twitter!
ВверхВверх