[ЗАКРЫТО] разобраться с NginX

Несколько вопросов, в которых хотелось бы разобраться, очень хочется настроить защищенный сервер, ибо "враги не дремлют".
На VDS будет крутиться несколько интернет магазинов, от 2 до 4, Archlinux+nginx+php-fpm+MariaDB, у себя на локалке все виртуальные хосты я положил в хомяк, права чтение-запись для текущего пользователя (группа users):

1. Где должны лежать виртуальные хосты? Как правильно настроить права?

в вике идет упоминание /srv/http, т.е. подразумевается что там должны распологаться виртуальные хосты? правильно ли я понял?
потому как если они лежат в хомяке, то права (на чтение и запись) даны текущему пользователю, а для /srv/http права даны root? или это не критично?

в вике идет упоминание группы http и в русскоязычной в самом конце упоминается
Во избежания "несчастных случаев" настоятельно рекомендую создать группу и пользователя c именем "www" и права на запись /srv/http/nginx/ этому пользователю
Объясните боту (т.е. мне) как оно должно быть правильно?

2. Мои пробелы в понимании линукса не дают мне представление об этой главе вики Installation in a chroot, линуксойды объясните в 2ух словах что это и для чего это?

п.с. сильно не пинайте, мне и так уже страшно.
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
palpalych
2. Мои пробелы в понимании линукса не дают мне представление об этой главе вики Installation in a chroot, линуксойды объясните в 2ух словах что это и для чего это?
установка в чрут. Установленная система (программа) будет разве что только подозревать о том, что она на самом деле запущена из под другой системы. Да и то, весьма смутно. Как следствие - из такой системы (чрута) можно смело тестировать rm -rf /, не боясь за свою систему. Плюшка в сервере - теоретически, увеличивает безопасность системы (т.к. к реальной - материнской - системе доступа из чрута то нету).
Я плохо представляю, как там устроено, потому не могу дать более детального ответа.
PGP 0x31361F01
arcanisrepo
chroot /folder program_name запустит программу program_name. но программа и все ее потомки будут считать что корень находится в папке /folder.
с помощью этой команды очень удобно реанимировать систему из того что есть под руками. можно сделать иначе. вы кидаете куда нибудь nginx, php, php-fpm и все необходимые им библиотеки, делаете симлинк или mount bind папки с виртуальными хостами. а потом запускаете в чруте

виртуальные хосты должны лежать там где вы их положите. никаких религиозных запретов или обрядов нет. Единственное условие - корень виртуального хоста должен быть прописан в конфиге веб сервера чтобы программа знала где его искать. ну и права доступа надо поставить так чтобы веб сервер мог прочитать файлы.
Да пребудет с вами знание ip адреса

Где должны лежать виртуальные хосты? Как правильно настроить права?
Где угодно они могут лежать – просто укажите в конфиге правильный путь для хоста.
Права надо настроить так, чтобы рабочие процессы nginx, запускающиеся под юзером http, имели к файлам и каталогам хоста доступ на чтение. Самый простой способ – сделать всем файлам хоста атрибуты не ниже 644, каталогам хоста не ниже 755, а каталогам по пути ДО хоста (в которые он вложен) не ниже 111.

При чём тут чрут вообще непонятно, если идёт речь об nginx, рабочие процессы которого и так работают под бесправным юзером, и им достаточно прав на чтение.

Но если вы о чруте для хостов php-fpm, то да, в php-fpm предусмотрена возможность запуска рабочих процессов каждого хоста не только под отдельным юзером, но и в отдельном чруте. Это действительно работает, но сразу предупреждаю – настраивать и обновлять такую конфигурацию очень неудобно, из-за необходимости биндить или копировать внутрь чрута некоторые конфиги из /etc, а также каталоги с локалями, таймзонами и ещё чем-то.
а зачем чруты с одним единственным пользователем/администратором сервера?
оно действительно нужно когда на сервере несколько пользователей которым доверять нельзя.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
а зачем чруты с одним единственным пользователем/администратором сервера?
оно действительно нужно когда на сервере несколько пользователей которым доверять нельзя.
Низачем. Чрут для веб-сервера или php это параноидальная мера безопасности, которая имеет смысл только на настоящем сервере, который будут пытаться взломать извне. Цель – чтобы если кто-то заставит скрипты пхп писать файлы в ФС, они не могли выйти за пределы каталога своего хоста.
Natrio
настраивать и обновлять такую конфигурацию очень неудобно
исчерпывающе, спасибо.

Natrio
чтобы рабочие процессы nginx, запускающиеся под юзером http
я немножко запутался в связке юзер-группа, т.е. помимо текущего пользователя нужно создать пользователя http и группу http? или все-таки имелось в виду -текущий пользователь (любой, не root) и группа http?

у меня щас так
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
palpalych, загляните в файлы /etc/passwd и /etc/group
По моим данным, у вас там УЖЕ ЕСТЬ пользователь http и группа http, оба с ID=33
По крайней мере, они входят в дефолтные версии этих файлов в пакете filesystem, который не обновлялся с 31 мая прошлого года:
/etc/passwd
/etc/group
Natrio
palpalych, загляните в файлы /etc/passwd и /etc/group
По моим данным, у вас там УЖЕ ЕСТЬ пользователь http и группа http, оба с ID=33
По крайней мере, они входят в дефолтные версии этих файлов в пакете filesystem, который не обновлялся с 31 мая прошлого года:
/etc/passwd
/etc/group
да есть
Natrio
Права надо настроить так, чтобы рабочие процессы nginx, запускающиеся под юзером http, имели к файлам и каталогам хоста доступ на чтение.
рабочие процессы nginx по умолчанию запускаются под юзером http? или это как-то нужно настроить?
Арчи ~]$ ...as always want ready-made solutions that would make even tastier
http://nginx.org/ru/docs/ngx_core_module.html#user
 
Зарегистрироваться или войдите чтобы оставить сообщение.