Тут давеча нарвался на проблему из-за собственной жадности.
Вирусная атака на сайты
Не для кого не секрет, что у меня есть несколько своих сайтов, некоторые я «светил» в своих постах. Кажется, я рассказывал о них в статьях про вирусные атаки. Тогда я разнес на разные хостинги сайты и хотел понять: а что же у меня ломают. Сайты на MODX Evolution или на WordPress. Тогда я пришел к выводу, что 1.
На одном аккаунте находится этот блог и сайт о гаражах, где я не очень регулярно (а точнее очень эпизодически) добавляю статьи по основному своему профилю — строительству. И для этого сайта я когда-то скачал платную тему Sahifa. Тема мне очень нравилась. Но она платная. Фактически, я её украл, если называть все своими именами. И когда я искал в прошлые разы источники взлома, я тоже думал на эту тему.
Версия 3.6 мне очень нравилась, но затем ее улучшили до 4 версии, я нашел тоже ломанные версии и вполне нормально прожил с этими темами 2 года. Или три. Обновление темы было довольно сложным, поскольку производитель обрезал некоторый функционал и вынес его в плагины, которые тоже стоят денег (если их покупать отдельно). И даже одно время эта тема стояла на этом блоге тоже.
И вот недавно, я озадачился и нашел себе последнюю версию 5.6 этой темы (короче, 5 ветку). Поставил — работает. Никакой инфы, что она ломанная и нужно купить полную версию не выскакивало. Я и обрадовался. Дурак.
Заодно я экспериментировал на этом сайте с бесплатными темами, запускал еще один проект на WordPress. И наткнулся на несколько хороших статей о том, что совсем не обязательно покупать покупать темы, можно легко обойтись нормальными бесплатными темами, главное прямые руки и фантазия. Платные темы нужно только покупать, иначе получите вирусы и куча головной боли.
Я принял к сведению и начал проект разрабатывать на своем домашнем компьютере с бесплатной темы. Конечно, многих возможностей не хватало, как и гибкости настроек. Но вполне можно действительно обойтись бесплатными темами.
А вот неделю назад я случайно наткнулся на глюк — при некоторых кликах на ссылки выскакивали новые вкладки то с онлайн игрой, то с онлайн казино. Вроде похоже на вирус. Но он то есть, то нет. Причем проверял в нескольких браузерах.
Для начала я удалил весь кеш плагина WP Super Cache. Затем удалил кеш плагина минимизации Autoptimize, где мог каким-то образом попасть вирус. Все нормализовалось.
Однако в пятницу вирус снова вылез. Легкое расследование показало, что часть вируса резалось плагином AdBlock браузера. Причем он еще хитро маскировался тем, что не показывался когда я был в админке.
Пострадали 3 сайта: по гаражам, этот блог и старый сайт, который я писал на заказ много лет назад на MODX Revolution.
Как удалить вирус на сайтах
Все статьи в интернете советуют как можно чаще делать бекап, восстанавливать из него сайта, менять пароли и так далее.
Так вот: все это нихрена не работает! Только школьник сегодня заразил и тут же ломает. Нормальные хакеры ломают, заливают шел и ждут 1-2 месяца, пока логи не пропадут у хостера и их невозможно будет вычислить. А разные даты показывает уже зараженные файлы, но никак не шеллы!
Поэтому бекапы тут не помогут. Нужно лечить.
Самый дельный совет — проверить антивирусом ai-bolit. Вот только он очень много пропускает. И в моем случае показал подозрительные файлы, но явно шелла среди них не было.
Поэтому по опыту старого заражения я принял решение все сносить к чертям и заново ставить. Увы, у меня не настолько хорошая квалификация чтобы вылечить самостоятельно.
В WordPress есть прекрасная функция переноса контента — Инструмент — Экспорт. Файл можно скопировать и легко импортировать через плагин в любой сайт на WordPress. И даже картинки туда же вписываются.
Увы, у меня только импортировались посты, но вот картинки напрочь отказались импортироваться. Папки создались, но вот файлы нет.
Сама процедура импорта-экспорта в WordPress описана на куче сайтов, так что если интересно подробности, то вы их легко найдете в сети.
Заливать просто базу сайта на новый сайт я побоялся — куча левых баз плагинов, вручную найти вредоносный код найти просто нереально. А он может прятаться в статьях и в комментариях. Поэтому не стал.
В итоге, я снес полностью все сайты. Затем снес все базы. Поменял все пароли от хостинга, создал новые базы и поставил новые пароли.
Импортировал статьи и встала проблема — тема и картинки.
С темой я разобрался относительно просто. Поскольку я только запустил новый проект Дом строим сами, мне пришлось пересмотреть кучу тем и я примерно знал что я хочу. Так что за 4 часа я перебрал претенденты и поставил на гараж такую же тему, как и на дом, только настроил чуть по другому.
А с картинками пришлось повозиться!
Картинки в WordPress
Увы, в WordPress картинки загружаются через админку и они не только раскладываются по папкам год/месяц. Но и прописываются в базу данных с описанием и подписью. То есть каждая картинка — это еще и страница с описанием. Такой подход позволяет легко создавать файл sitemap.xml по картинкам. Но очень неудобно, когда картинки просто заливаются по FTP минуя админку.
Второй момент — это то, что картинки режутся на несколько размеров, даже если вы их никогда не будете пользоваться. Итого, из одной картинки выходит до 10 других с разными размерами. 3 размера делает WordPress чисто для себя (контента), остальные размеры добавляют темы. Я менял темы 3 раза, так что куча левых картинок появилось.
Еще меня поразило, что я очень халявно подошел к картинкам: скачал с гугла и вставил, либо с телефона. А то что размеры пляшут, пляшут качество, соотношение сторон и так далее. Получилось этакая каша.
Тема еще на MODX требовала маленьких картинок, а на WordPress на новой темы еще и требовалась в хорошем разрешении 735х360 пикселей.
Так что пришлось руками искать нужные картинки почти ко всем постам и их резать. Заодно прошелся специальными программами по оптимизации jpeg — jpegtran. В общем, оказалось, что если обрезать и сохранить в FastStone ImageViewer (абсолютно бесплатная программа-просмотровщик, которая круче ACDSee).
Поэтому я удалял лишние файлы в папках, пакетным преобразователем уменьшал картинки и сохранял с минимальным качеством, удаляя все метаданные. И затем заливал их на хостинг через FTP.
Картинки в постах подхватились. Но вот картинки постов и галереи пришлось заново заливать и прикреплять.
Хорошо хоть галерей я насоздавал мало, так что мучиться пришлось мало.
Но все это удовольствие на 3 сайта заняло целых 4 дня!
И то, на сайте c MODX Revo я смухлевал и поставив систему, заново залил туда базу. Все заработало.
Заключение
Вот так из-за своей жадности и лени я нашел себе проблему на ровном месте.
Ломанная тема сожрала почти неделю моей жизни и это очень печально. Особенно печально, что вместо золотого времени 3 недели нового проекта я занимался своими старыми сайтами.
Никогда не ставьте себе ломанные («нулленые») темы! Все равно через время ваш проект сломают. Халявы не бывает!
С другой стороны, я получил очень хороший опыт в работе с WordPress, темами и плагинами. Мой взгляд на эту систему очень даже изменился. И заодно есть несколько интересных тем для постов в этом блоге.
Другой интересный момент — это переосмысления этих моих проектов. Сайты получились неплохие, но им очень многого не хватает и я кажется понял что. Но это тоже тема некоторых других постом.