Многие «админы» знают эту проблему не понаслышке, особенно это относится к начинающим хостерам которые как ни странно почти все дырявые в прямом смысле этого слова, печально досадно но ладно =(

До недавнего времени существовала уязвимость в nginx связанная с симлинками, странно что столько времени она оставалась не замеченной и не привлекала к себе внимания. К сегодняшнему дню все изменилось nginx наконец то поправили — теперь он умеет не ходить по симлинкам вообще или проверять владельца, линк на новые директивы

http://www.nginx.org/ru/docs/http/ngx_http_core_module.html#disable_symlinks

в первую очередь проблема касалось хостеров т.к nginx как правило работает под 1 юзером www-data или как там у вас, поэтому пользователь мог создать символическую ссылку с названием например 1.css на какой либо интересный файл у своего соседа, перейдя в браузере по данной ссылке nginx прочитает чужой файл и выдаст инфу злоумышленникам  :!:

Казалось бы теперь можно просто отключить симлинки вообще директивой

но в связке isp + nginx статика перестает отдаваться при таком раскладе (кроме bsd) из того что nginx не может сделать листинг в некоторых каталогах которые проверяются по пути до запрашиваемого файла, проблема из за разграничения прав, права которые проставила isp по дефолту на каталоги не подходят, тут на помощь приходит опция  from.

isp решила этот вопрос путем прописывания директории в каждом виртуальном хосте

from=часть
При проверке символических ссылок (параметры on и if_not_owner) обычно проверяются все компоненты пути. Можно не проверять символические ссылки в начальной части пути, указав дополнительно параметр from=часть. В этом случае символические ссылки проверяются лишь начиная с компонента пути, который следует за заданной начальной частью. Если значение не является начальной частью проверяемого пути, путь проверяется целиком, как если бы этот параметр не был указан вовсе. Если значение целиком совпадает с именем файла, символические ссылки не проверяются. В значении параметра можно использовать переменные.

я конечно все понимаю но накой мне в каждый вирт хост еще по записи ведь можно проще сделать, ниже мое решение для связки nginx + isp, если у вас nginx < 1.1.16 то обязательно обновитесь, например с официального репозитория

Найдете сами http://www.nginx.org/en/download.html

1. глобально прописываем

2. меняем chmod на вновь создаваемые директории доменов

3. в крон кладем задание которое будет удалять то что isp в вирт хосты дописывает, анти isp))

Если у вас были старые вирт хосты тоесть боевой сервер то на директории доменов нужно проставить права 755 иначе статика не будет отдаваться, для debian сделал небольшой скрипт который автоматически все настроит и пофиксит (права старых доменов в том числе).

или

Для freebsd достаточно добавить 1 запись в nginx.conf глобально

Удачных вам настроек disable_symlinks, и помните безопасность при выше всего!

 

  2 комментария в “Фикс уязвимости с symlink в nginx ispmanager”

  1. подскажи вот тоже была проблема слили всю базу ка кначал настраивать Nginx

    вот в связке фронтенд Nginx 1.2.1 + бекенд apache2 (Ispmanager)

    тоже есть эта уязвимость? или уже в патче 1,2,1 профиксили?

     

 Оставить комментарий

(обязательно)

(обязательно)

   
Copyright © 2012. Linuxguru.ru