PDA

Просмотр полной версии : Безопасность в nginx


OMG!!
29.01.2010, 00:56
Добрый вечер, ситуация такая.. есть сервер. каталоги

home/www-date/sitename1
home/www-date/sitename2
home/www-date/sitename3
....
Задача такая.. дело в том, что на всех сайтах разные скрипты.. каждые скрипты по своему могут стать уязвимостью - проникновением.. если залить шелл допустим в каталог сайта sitename3 то МОЖНО подняться по каталогу вверх.. и зайти в 2 других сайта.. так вот, каким образом избежать возможности просмотра других сайтов? т.е. если уже взлом состоялся, но не дать хакеру залезть на другие проекты. Спасибо!

++Norton++
29.01.2010, 10:58
Мне кажется лучше и проще всего будет сделать так, чтобы стало невозможно залить шелл.
К примеру, если на sitename3 используется форма загрузки файлов на сервер, то можно запретить загружать файлы с расширениями *.php и подобными. Либо с помощью .htaccess сделать чтобы файл php и пр. открывался как текстовый, например, так (файл .htaccess):

RemoveType application/x-httpd-php .php .php5 .phtml .php3 .php4 .phps

Zedobat
29.01.2010, 12:15
Безопасность в nginx
с помощью .htaccess
%)
OMG!!, используй open_basedir.

undef
26.02.2010, 01:23
Лучше бы прочитали название топика, чем отвечать не думая.
.htaccess тут вообще не причем, его не nginx не существует, open_basedir установить для каждого хоста отдельно, не используя апач и директивы mod_php, также проблемно.

Раз в данном случае разговор идет про nginx и только про него, подразумевается, что php работает посредством fastcgi.
Правильное и красивое решение, хоть и более сложное в реализации - расставлять права на директории и запускать fastcgi процессы от разных пользователей.

Если же автор противоречит заголовку, и за nginx'ом у него бекендом стоит апач с mod_php, то да, простейшим решением будет вынести в конфигурацию виртуального хоста что-то наподобие php_admin_value open_basedir /hosting/site.com/www или использовать safe_mode.

ghostwizard
04.03.2010, 11:55
если залить шелл допустим в каталог сайта sitename3 то МОЖНО подняться по каталогу вверх.. и зайти в 2 других сайта.. так вот, каким образом избежать возможности просмотра других сайтов? т.е. если уже взлом состоялся, но не дать хакеру залезть на другие проекты. Спасибо!

Решал в свое время эту проблему. Вобщем есть два пути:
1) fastcgi+suexec
2) mkpm-itk

Я делал со вторым. У меня получалось сделать, что все директории имеют права 700 и собственного пользователя. Но т.к. тогда я все это делал для сайтов под битрикс, этот вариант уступал в производительности на процентов 5-20%. И наработки в этом направление пришлось свернуть.

Но вроде как в новом апаче, они переделают mpm (worker), так что mkpm-itk станет не нужен. Правда, не известно сколько ждать. Анонс можно поискать, было это месяц-полтора назад.

freelsd
05.03.2010, 04:59
Задача решается созданием 3-x пользователей. Папа работает от рута, детки от юзеров. PROFIT.

chroot - еще лучше.