Перейти к содержимому


Toggle shoutbox Флудилко Open the Shoutbox in a popup

@  Wings1klg : (11 Ноябрь 2020 - 00:26 )

Привет товарищИ ,локальщики

@  Алинa : (24 Сентябрь 2020 - 01:16 )

да ладно, живой!

@  -TimON- : (22 Сентябрь 2020 - 09:09 )

Ping

@  -TimON- : (05 Ноябрь 2019 - 01:01 )

Эх...

@  Anonymous : (31 Август 2019 - 20:45 )

Довольно экспансивно. Буду тешить себя мыслью, что тебя не взломали (во всех смыслах, которых нынче поневоле приходится иметь ввиду).

@  Роваторин : (28 Август 2019 - 00:54 )

вот что такое ДСА

@  Роваторин : (28 Август 2019 - 00:54 )

а ДСА - это место, где собираются земляне, а инопланетянам там не место

@  Роваторин : (28 Август 2019 - 00:54 )

... и кто инопланетянин, кто землянин - уже не разберешь

@  Роваторин : (28 Август 2019 - 00:54 )

теперь, несчастные земляне отплясывают вприпрыжку, кричат непонятные им же слова, буквы, крики и визги

@  Роваторин : (28 Август 2019 - 00:53 )

в мозгах и желудках счастливых (тогда еще) землян

@  Роваторин : (28 Август 2019 - 00:52 )

взяли инопланетяне и прилетели через "чего куда и как не знают сами" - на Землю, и начали размножаться

@  Роваторин : (28 Август 2019 - 00:51 )

Давным-давно,
в далекой-далекой галактике...

@  Роваторин : (28 Август 2019 - 00:50 )

Эх

@  ArcKain : (24 Июнь 2019 - 18:52 )

:)

@  Anonymous : (09 Июнь 2019 - 21:47 )

Роваторин, что такое дса?

@  Triton 6 : (08 Июнь 2019 - 12:50 )

сколько здесь истории...

@  Triton 6 : (08 Июнь 2019 - 12:44 )

+1 на страже области)

@  Роваторин : (01 Июнь 2019 - 21:27 )

и вопрос дса стоит как нельзя ОСТРО! кто и где и как? перекличка... началась ))

@  Роваторин : (01 Июнь 2019 - 21:26 )

конечно живы

@  Ventor : (08 Май 2019 - 16:59 )

Фигассе. Остатки жизни еще теплятся тут.

@  S Kardnal : (04 Апрель 2019 - 22:32 )

Где вы народ? на каком вы сервере? Кае Сима Ксандер отзавитесь

@  Orion : (31 Март 2019 - 23:54 )

Ух ты, A_Max,Master!... Чуваки, спасибо тебе за тех. Поддержку, всегда на форуме благодаря вас можно было решить тех.проблемы с инетом)

@  Роваторин : (03 Март 2019 - 06:34 )

рад, цуко, бот

@  Роваторин : (03 Март 2019 - 06:33 )

живые - есть, периодически

@  Anonymous : (17 Февраль 2019 - 22:42 )

У кого есть что сказать, пишите в ЛС этого форума, надеюсь, найду время

@  Anonymous : (17 Февраль 2019 - 22:40 )

Разрешите представиться, ваш Снеговик, постивший в калужской Локалке в 2008-2009 под никами temp[1-4], svcghost и, конечно же, crysis2652.

@  Lex : (16 Январь 2019 - 13:13 )

И живые есть?

@  Алинa : (06 Январь 2019 - 21:37 )

Как в сказке: чем дальше, тем страшнее.

@  Be$... : (24 Декабрь 2018 - 15:41 )

как жизнь?)))

@  BENDER-08 : (15 Декабрь 2018 - 21:59 )

Привет))






- - - - -

PHP в темницу - Nginx + FastCGI + Jail

Автор: justify, 09 Ноябрь 2007 · 307 Просмотров

Цель: Нередко местом атак на сервер являются PHP-скрипты, SQL-инъекции и просто непродуманные конструкции и переменные в PHP-коде ведут к тому, что опытный злоумышленник получает контроль над вашим скриптом. А дальше дело техники, в считанные минуты можно узнать многе, от структуры папок и файлов, до файлов типа /etc/passwd. Скорее всего из PHP нельзя поднять привилегии до суперпользователя и снести систему, но снести скажем базу картинок, которые загружают ваши посетители через PHP можно.

Так что во избежание подобных ситуаций следует принимать ряд мер, и одно из первых - chroot. Суть в том, что любому скрипту доступна на чтение файловая система, и это уже дыра в безопасности. Ведь умея читать - прочесть можно многое. Необходимо поместить PHP в темницу, где файловая система будет не реальная а своя.

Темницу мы создадим через инструмент Jail который я описывал ранее, далее перенесу туда PHP и запущу его оттуда как FastCGI. В качестве веб сервера я выбрал nginx, так как для него fastcgi - стандарт де факто.

Ставим и настраиваем Jail (темницу)

Все действия я произвожу в Gentoo Linux поэтому некоторые вещи специфичны именно для этой ОС, например установка пакетов я делаю командой emerge.

Код
emerge -av jail
mkdir -p /jail/php
mkjailenv /jail/php
mkdir /jail/php/{bin,lib,proc}
addjailsw /jail/php
cp -d /lib/ld-*.so* /jail/php/lib/


Нашей новой системе нужен /proc

Код
mount -t proc none /jail/php/proc/


Добавляем bash, куда же без него, хотя и необязательно

Код
addjailsw /jail/php -P /bin/bash "-c exit"
ln -s bash /jail/php/bin/sh


Незнаю почему jail не сделал нам /dev/random но он нужен, php без него не захотел работать.

Код
mknod /jail/php/dev/random  c  1 8


Создадим нового пользователя и группу - php, пускай все скрипты бегают из-под этого пользователя.

Код
groupadd php
useradd -d /jail/php -s /usr/bin/jail -g php -G php php
chown root:php /jail/php
chmod 0750 /jail/php


Ставим PHP

Код
USE="cgi" emerge php


И переносим его в темницу

Код
addjailsw /jail/php -P /usr/bin/php-cgi "--version"
cp -r /usr/lib/php5 /jail/php/usr/lib/


Ставим Lighttpd

Код
USE="-mysql -ssl -pcre fastcgi" emerge -v lighttpd


Нам нужет не сам Lighttpd а тулза, которая идёт вместе с ним — spawn-fcgi. У него много полезных фенек.

Запускаем PHP как FastCGI сервер

открываем конфиг, /etc/conf.d/spawn-fcgi

Правим строки:
Код
USERID=php
GROUPID=php
SPAWNFCGI="/usr/bin/spawn/spawn-fcgi -c /jail/php"


Параметр “” указывает что надо сделать chroot в папку /jail/php

Если у нас fast-cgi сервер является локальный а не удалённый, то лучше перейти с TCP-сокетов на UNIX-сокеты. У меня это хорошо повысило производительность.

Для этого поправим

Код
FCGIPORT="/var/run/spawn/spawn-fcgi.sock"


Сделаем папку для unix-socket`ов

Код
mkdir /jail/php/var/run/spawn
chown root:php /jail/php/var/run/spawn
chmod 0770 /jail/php/var/run


Почемуто скрипты запуска достаночно скудные и не предусматривают, что могут использоваться unix-сокеты, поэтому подправим немного файл /etc/init.d/spwn-fcgi

там где запуск, вместо "-p ${FCGIPORT}" пишем "-s ${FCGIPORT}"

Запускаем FastCGI демон

Код
/etc/init.d/spwn-fcgi start


Устанавливаем Nginx

Код
USE="fastcgi status -perl -imap" emerge -v nginx


Я посчитал, что perl мне ненужен, ведь я не пишу на нём, а imap прокси в nginx`е мне тоже не нужен, зато нужен fastcgi и собрать nginx нужно с поддержкой этого самого fastcgi.

Настраиваем Nginx

Правим файл /etc/nginx/nginx.conf

Код
user php php;

location ~ \.php {
fastcgi_pass unix:/var/run/spawn/spawn-fcgi.sock;
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME <PATH>/htdocs$fastcgi_script_name;
}


где <PATH> — путь до ваших файлов

Ещё кое что

Это конечно не всё, не стоит забывать что у PHP много модулей, например GD, а ведь поддержка этого модуля реализуется внешней unix-библиотекой. И её надо перенести в вашу темницу, всё это делается утилитой addjailsw. Так же не стоит набывать, например про mysql. Дело в том, что соединение между PHP и MySql у меня идёт через unix-сокеты и поэтому нам нужен доступ до /var/run/mysql. Возможно нам ещё чтонибудь пригодиться, например конект до memcached, поэтому мы смаунтим /var/run в /jail/php/var/run

Код
mount --bind /var/run /jail/php/var/run


Конечно после перезагрузки сервера (не дай бог) надо заного перемаунтить /jail/php/proc и /jail/php/var/run , поэтому лучше их прописать в /etc/fstab

Запускаем Nginx

Код
/etc/init.d/nginx start


Вот и всё

Попробуйте в PHP написать скрипт, который выведет список папок корня на экран. Что вы увидете? Увы для взломщика — он увидет дерево папки /jail/php и не более.

http://www.webnext.r...gi-in-jail.html




Политика конфиденциальности

Регистрация доменов RU, SU, COM, NET и др. от R01.RU Яндекс цитирования