Безопасность в nginx

Discussion in 'Безопасность и Анонимность' started by OMG!!, 28 Jan 2010.

  1. OMG!!

    OMG!! Elder - Старейшина

    Joined:
    25 Feb 2008
    Messages:
    231
    Likes Received:
    70
    Reputations:
    -3
    Добрый вечер, ситуация такая.. есть сервер. каталоги

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

    ++Norton++ Elder - Старейшина

    Joined:
    20 Nov 2006
    Messages:
    168
    Likes Received:
    39
    Reputations:
    0
    Мне кажется лучше и проще всего будет сделать так, чтобы стало невозможно залить шелл.
    К примеру, если на sitename3 используется форма загрузки файлов на сервер, то можно запретить загружать файлы с расширениями *.php и подобными. Либо с помощью .htaccess сделать чтобы файл php и пр. открывался как текстовый, например, так (файл .htaccess):
    Code:
    RemoveType application/x-httpd-php .php .php5 .phtml .php3 .php4 .phps
    
     
  3. Zedobat

    Zedobat Elder - Старейшина

    Joined:
    24 Jul 2007
    Messages:
    145
    Likes Received:
    34
    Reputations:
    10
    %)
    OMG!!, используй open_basedir.
     
  4. undef

    undef New Member

    Joined:
    23 Sep 2009
    Messages:
    19
    Likes Received:
    4
    Reputations:
    5
    Лучше бы прочитали название топика, чем отвечать не думая.
    .htaccess тут вообще не причем, его не nginx не существует, open_basedir установить для каждого хоста отдельно, не используя апач и директивы mod_php, также проблемно.

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

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

    ghostwizard Member

    Joined:
    4 Dec 2005
    Messages:
    127
    Likes Received:
    36
    Reputations:
    21
    Решал в свое время эту проблему. Вобщем есть два пути:
    1) fastcgi+suexec
    2) mkpm-itk

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

    Но вроде как в новом апаче, они переделают mpm (worker), так что mkpm-itk станет не нужен. Правда, не известно сколько ждать. Анонс можно поискать, было это месяц-полтора назад.
     
    #5 ghostwizard, 4 Mar 2010
    Last edited: 4 Mar 2010
  6. freelsd

    freelsd Elder - Старейшина

    Joined:
    25 Oct 2007
    Messages:
    119
    Likes Received:
    25
    Reputations:
    10
    Задача решается созданием 3-x пользователей. Папа работает от рута, детки от юзеров. PROFIT.

    chroot - еще лучше.
     
Loading...