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

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


Имеется 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 или прямое приведение к типу
  • Вопрос задан
  • 4193 просмотра
Пригласить эксперта
Ответы на вопрос 4
@Levhav
Контакты: скайп Levhav, почта Levhav@ya.ru
Я на своём 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
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Zelo Москва
от 130 000 руб.
Amigoweb Магнитогорск
от 40 000 до 60 000 руб.
АКМЭ сервис Санкт-Петербург
от 110 000 руб.