Задать вопрос

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

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


Имеется 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 или прямое приведение к типу
  • Вопрос задан
  • 4257 просмотров
Подписаться 11 Оценить Комментировать
Ответ пользователя Виктор К ответам на вопрос (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 или подобную он не сможет навредить.
Ответ написан