Защита сайта от взлома


site-security-small

На выходные экспериментировал с SQL иньекциями сайтов двух производителей сайтов в Новосибирске (не буду говорить кто именно — почему, поймёте чуть позже), результатами своих изысканий был сильно удивлён — не имея какой то специальной подготовки, обладая практически нулевыми знаниями в этой области, я в течение дня, с помощью только гугла взломал 45 сайтов.

Взломал — конечно сильно сказано, но хэши админских учёток от бэкофиса этих CMS в данный момент проходят процесс дешифрации (8 штук уже готовы).

Началось всё с телефонного звонка — мой друг, порекомендовал меня в качестве SEO оптимизатора одной производственной фирме — встретились, обговорили условия — хлопнули по рукам. Далее интереснее — ознакомился я с движком сайта, и пришел в полнейший ужас — в общем ЭТО движком у меня язык не поднимался назвать. Стиль программирования вообще пугающий — «группа школьников экспериментирующая на поприще создания сайтов», почитал договор — улыбнуло… Узнав сколько было выложено денег за этот «сайт» — сильно удивился !

В общем решили с заказчиком, что прежде, чем заниматься какой либо поисковой оптимизацией —

необходимо привести в порядок сам сайт — буквально на той неделе закончил перенос данных на новый самописный движек на codeigniter.

Далее я решил проверить бывший «движек» на предмет уязвимостей — зашел на сайт фирмы, ваяющей на таком «движке» — портфолио оказалось довольно внушающее, сграбил линки, открыл статейку по SQL Injections и начал эксперименировать … В конце рабоче дня 45 хэшей было запущено на декодирование 🙂

Вот думаю — может стоит выйти на владельцев сайта — предупредить, или предложить свои услуги, или в своих корыстных целях заюзать — например замаскированными ссылочками напичкать (а вот это уже

Сегодня уже чуть более профессиональным взглядом провел аудит безопасности ещё одного местного производителя сайтов, как оказалось с не менее сильным и убедительным портфолио — результат плачевен: прошли «на ура» элементарные SQL иньекции. Сильно заморачиваться со взломом не стал — т.к. таких целей не преследую, но факт меня удивил. Эксклюзивные, дорогие сайты с отличным уникальным дизайном оказались уязвимы к простейшему взлому.

Кстати — побывав в роли хакера, сейчас очень хорошо понимаю как именно и от чего нужно защищаться!
С удовольствием поделюсь некоторыми элементарными правилами, которые сильно затруднят хакеру возможность взлома Вашего сайта (и не только).

1. В за конченом проекте рекомендую вырубить все служебные сообщения (ошибки, предупреждения) — хороший источник служебной информации облегчающий взлом (например с помощью них легко выкупается абсолютный путь проекта на серваке).
2. Взять за правило проверять ВСЕ «входящие» переменные — цифровые сразу переводить в нужный тип intval(), (int), floatval(), (float), строковые фильтровать — такая педантичность практически исключает возможность иньекций.
3. Переменные в MYSQL запросов помещать в кавычки, «id=’$id’». Cтроковые переменные предварительно обрабатывать функцией mysql_real_escape().
4. Отдельное внимание уделить вопросам безопасности через .htaccess — запрет просмотра папок, по возможности доступ к админке с определенных IP адресов / областей.
5. Так же не помешает взять за правило во все папки бросать пустой index.html (если нет не пустого).
6. Не оставляйте «мусор» в доступных местах — старые php файлики, чего хуже — переименованные в какие нибудь .bak, .old и т.д.)
7. НИКОГДА и НИГДЕ не храните пароли в открытом виде — как минимум md5() хэширование ! А лучше перед md5() добавьте свою изюминку 🙂 например побитный XOR или тупо: прибавить по единичке к коду символа, добавить пару символов — хакер, потратив несколько дней на раскодировку md5 хэша, сильно удивиться когда раскодированный пароль не подойдёт.
8. Не используйте тривиальные названия таблиц/полей. Напр. табличка users с полями login и password сильно облегчат жизнь хакеру 🙂
9. Аккуратно используйте права на файлы, папки. Право на запись — потенциальное уязвимое место для того же php шелла — папки 755, фалы 644 !
10. Не менее аккуратно используйте права юзеров СУБД. Например привилегия работы с файлами file_priv несомненно ускорит взлом. (в 99% случаев такие привилегии абсолютно не нужны), ну и не ленитесь для каждого сайта создавать своего юзера с соответствующими правами.
11. Внимательно изучите настройки сервера по умолчанию (magic_quotes и прочие не помешают).
Ну и напоследок пару банальных:
12. НИГДЕ не используйте лёгких паролей (ftp, ssh, и т.д. и т.п.) — добавьте в пароль хотя бы один спец.символ, циферку и буковку, ну и выдерживайте длину хотя бы 6-8 символов.

13. Используйте резервные копии (как БД, так и файловые) — желательно ежедневно, автоматически и конечно же куда нибудь на географически удалённый источник.

// добавлено после взлома моего сайта

14. Скидываете ежедневные полные логи доступа на сторонний сервер (например на мыло, либо на другой сервак по ftp) — имхо лучше на мыло, т.к. даже в случае взлома злоумышенник получит только почтовый адрес.

15. Поставьте в крон скрипт, контролирующий изменения файлов — сверяющий контрольные суммы (md5) всех файлов (за исключением заданной маски) и отправляющий отчёт на мыло в случае нахождения изменений (не нашел готового — на днях сваяю). Так же можно поставить скриптик поиска веб-шеллов (но ИМХО уже перебор т.к. первого скрипта вполне достаточно).

16. Используйте кодирование своих исходных php файлов — злоумышленнику будет труднее внедрить свою инъекцию.

Так же «в догонку» могу порекомендовать пару скриптиков, которые запихиваются в крон и постоянно «палят» и в случае чего кричат «алярм» на мыло или SMS кидают. (имхо должны быть уже готовые варианты не знаю — можно погуглить на эту тему. В принципе, не трудно написать с нуля):
1. Анализ логов на предмет попыток взлома (напр. операторы select, union и т.д)
2. Изменение контрольных сумм в файловой структуре, а так же таблиц БД

Надеюсь ничего не пропустил…
Какие будут ваши рекомендации/пожелания ?

P.S.

Выкладываю некоторые ИМХО интересные ссылочки по теме, найденные мной в процессе:

и кое что из того, что давно искал и встретил на ачате

P.S.S.

Кому интересно — могу провести аудит на предмет информационной безопасности Вашего сайта. Выходите на связь — договоримся.


28 комментариев на «“Защита сайта от взлома”»

  1. из своего могу сказать, что после доведения движка до ума, обязательно включаю отображение всех ошибок при травлю на сайт xspider.
    если имеется закрытая зона, то временно открываю, чтобы xspider мог проверить все формы и урлы.
    попробуй =) возможно и у тебя что-то найдет.

  2. Реально нужная вещь. Когда. доведут до ума, залатают все дырки, обязательно возьму в работу. Имел от странных ребят, пару неприятных моментов, связанных со взломом.

  3. Ничего не поможет!
    Если знающим людям нужно будет тебя взломать, то так и будет! А незнающие и так не взломают.

  4. «Вот думаю — может стоит выйти на владельцев сайта — предупредить» — конечно стоит.
    «не имея какой то специальной подготовки» — все-таки подготовка у вас была, и не маленькая. Так проанализировать сайты — это довольно большая работа.

  5. У меня есть знакомый сеошник, который ломает сайты и напихивает ссылками, а сколько человек ломает приличные сайты и пихает на них сапу

  6. Мы все под колпаком у Мюллера 🙂
    Идея предложить владельцам сайтов защиту — верная.
    Эту тему вообще можно сделать основной.
    Спрос, уверен, будет.

  7. Ребя объясните мне зачем взламывать ресурс — т.е. зачем этим занимаются — конкуренты что ли или шутники неродивые — что это им дает

  8. Автор, ты ещё не сделал крон скрипт, контролирующий изменения файлов — сверяющий контрольные суммы (md5) всех файлов (за исключением заданной маски) и отправляющий отчёт на мыло в случае нахождения изменений?
    если сделал, то скинь,plz, на мыло: andrewkp@mail.ru или по аське: 251064379
    Заранее спасибо.

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

  10. Недавно открылся сервис мониторинга от взлома nazamok.com Поможет за сутки обнаружить на сайте размешение ссылок, скриптов и ифреймов с рекламой или вирусом. Крайне полезная вещь для всех вебмастеров и оптимизаторов.

  11. В общем, советы по защите всё те же, только теперь вам стоит немного потратиться на человека, который за деньги проверит ваш сайт на наличие уязвимостей и сообщит вам результаты.
    Хочу предложить Вам в помощь сайт для проверки защиты вашего ресурса — по сути фриланс биржа для людей обладающих умением взлома. От вас требуется разместить проект, указать тип уязвимости и бюджет. Дальше просто — ждать предложения выполнить проект от экспертов взлома. Проект молодой и ждёт своих клиентов!
    =================== http://hackmysite.ru/ ===================

  12. «скрипт, контролирующий изменения файлов — сверяющий контрольные суммы (md5) файлов и отправляющий отчёт на мыло» — Для тех, кто не хочет / не может возиться с настройкой/отладкой/поддержкой такого скрипта, есть сервис: http://filesafe.anek.ws/ который предлагает сделать это за весьма умеренную плату.

  13. Спасибо, узнал много нового!

    «скрипт, контролирующий изменения файлов — сверяющий контрольные суммы (md5) файлов и отправляющий отчёт на мыло»
    Скажите пожалуйста, в каком случае это может сработать? Каковы примерно действия (намерения) хакера?

  14. Как пару лет юзаю двигатель SLAED, проблем с безопасностью не возникало. Кенты хакеры пробовали пробить за баблос, неделю мучились, так и не смогли. Кричат что там всё серьёзно, на уровне системы не пробить. Рылись в дырах сервера, пока не нашли. Спасибо за статью, будем защищаться!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *