С обеспечением безопасности?

Здравствуйте.


Имеется VPS на котором размещены несколько десятков проектов, как на системе собственной разработки, так и на DLE и Wordpress


После обнаружения залитого бэкдора на одном из сайтов всерёз занялся безопасностью. Пока что на уровне конфигурации скриптов, php и apache


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

В системе:

— Поставил на папки chmod 700, на файлы 600

— Особо важные проекты перенёс, каждый под отдельного пользователя, в панели управления (ispmanager)

— Для каждого хоста в vhosts апача параметр open_basedir настроил на папку данного сайта, а не на всю папку пользователя.

— Запретил в php.ini через disable_functions следующие функции (выбирал те, которые обходят ограничение open_basedir апача):

exec

system

shell_exec

passthru

popen

proc_open

(не стал запрещать те что читают конфигурации и код (ini_get, php_uname, show_source, ...) и те что исполняют php код (eval, preg_replace, ...))

В скриптах (уже было реализовано ранее):

— запретил прямое обращение к загружаемым пользователем файлам (изображения).

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

— эскейпирование запросов к бд и строгая фильтрация ввода

— проход jevix-ом по всем данным форм, где доступен html-воод. в остальных использование strip_tags или прямое приведение к типу
  • Вопрос задан
  • 4256 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Levhav
Возьмусь за разработку проектов любой сложности.
Я на своём vds разделяю сайты ещё модулем apache2-mpm-itk (http://wiki.hasanov.ru/ubuntu/apache_multi_users).

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

В итоге на одного пользователя в ос один виртуальный хост в его домашней папке.
В конфиг виртуального хоста добавляю:

  <IfModule mpm_itk_module>
    AssignUserId user1 user1
  </IfModule>


Таким образом если всё правильно то при запуске диспетчера задачь можно наблюдать что для каждого сайта php скрипты выполняются от имени определённого пользователя ОС что гарантирует что даже в через функцию exec или подобную он не сможет навредить.
Ответ написан
stan_jeremy
@stan_jeremy
Вы же не можете гарантировать что вы все ВЕЗДЕ заэскейпили, все везде фильтруете и тд, если это конечно не проект с парой мест ввода юзерских данных)
Ответ написан
VasiliyIsaichkin
@VasiliyIsaichkin
Web front/back-end (JS-full stack) app developer
Используете публичные большие скрипты — всегда есть вероятность что мало-/не- известная уязвимость в них будет использована во зло. IMHO надо всегда считать что конкретный сайт можно взломать с точки зрения уязвимости кода, необходимо не дать захватить остальное.
Максимально изолируйте сайты друг от друга (разные юзеры, разные права, разыне хоумдиры и т.п.), механизмы разделения типа jail, виртуализация и т.д.
Хватит ли указанных вами мер сказать сложно, ввиду того что много зависит от используемой ОС и ПО, их настройки, особенностей приложений.
Ответ написан
Комментировать
ANUFRiY
@ANUFRiY Автор вопроса
image

Это через top, но думаю то же самое.

В данном случае запрос на сайт smarty-crafty.ru обрабатывается пользователем smartycrafty
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы