Назад | Перейти на главную страницу

Nginx, uWSGI, Python, пользователи, группы и разрешения. Вопросы по безопасности

Хорошо, вчера я наконец-то получил серверы nginx и uWSGI, работающие на моем компьютере. Файлы конфигурации Nginx и uWSGI, новые пользователи, группы и их привилегии, а также chrootdir для SSH я настроил на основе знаний, доступных в Интернете. К сожалению, я не слишком доверяю ему, поэтому я хотел спросить системных администраторов, не совершил ли я где-то огромную ошибку, из-за чего однажды я попрощаюсь с сервером.

Для HTTP-сервера я использую только каталог / srv, структура и привилегии которого следующие:

drwxr-xr-x 2 root root 4096 2012-02-03 04:16 nginx
    -rw-r--r-- 1 root root 411 2012-02-03 04:25 Site1.conf
    -rw-r--r-- 1 root root 170 2012-02-02 23:59 Site2.conf
drwxrwxr-x 2 root www  4096 2012-02-03 04:25 sockets
    srw-rw---- 1 Site1-www www 0 2012-02-03 04:25 Site1.socket
drwxr-xr-x 2 root root 4096 2012-02-03 04:09 uwsgi
    -rw-r--r-- 1 root root  190 2012-02-03 04:10 DjangoAutoreload.py
    -rw-r--r-- 1 root root 1477 2012-02-03 04:13 Site1.yaml
drwxr-xr-x 5 root root 4096 2012-02-03 03:44 www
    drwxr-xr-x 3 root root 4096 2012-02-03 03:49 Site1
        drwxr-xr-x 11 Site1 www 4096 2012-02-03 03:48 www
            ... all files with Site1 user, sftponly group and rw-r--r--

Папка / srv / nginx в каждом отдельном файле содержит конфигурацию для нового виртуального сервера.
Папка / srv / sockets содержит только файлы сокетов, которые используются uWSGI и nginx, пример файла с привилегиями уже существует.
Папка / srv / uwsgi в каждом отдельном файле содержит конфигурацию для каждого экземпляра сервера uWSGI.

Теперь папка / srv / www. Эта папка содержит подпапки, каждая для каждого пользователя SFTP, в которых есть chrootdir. Каждая из этих папок содержит подпапку www, в которой находятся проекты Django и RoR.

Итак, у меня есть первые вопросы:

  1. Привилегии папок верны?
  2. Nginx работает с uid = www gid = www, а каждый экземпляр uWSGI работает с uid = USER-www и gid = www. У папки сокета и ее файлов правильный владелец, группа и привилегии?
    2.1. Если для записи привилегий для группы установлено значение true, это не создает проблем с безопасностью?
    2.2. Должен ли каждый экземпляр сервера uWSGI работать с одним и тем же uid или друг с другом?
    2.3. Должны ли экземпляры uWSGI работать с тем же uid, что и HTTP-сервер (nginx)?
    2.4. Разве сервер uWSGI не должен записывать файл сокета до потери привилегий? Это ошибка?
  3. Какие права, владелец и группа папки / srv / www / Site1 / www верны?
  4. Как настроить SSH-сервер для пользователей, у которых уже есть chrootdirectory в / srv / www / Site1, чтобы они не видели и не имели доступа через SFTP к другим скрытым папкам в / srv / www / Site1, например, с журналами или статистикой?

Теперь о пользователях и группах. Я создал для сервера потребности следующих пользователей и групп:

uid=1003(www) gid=1003(www) grupy=1003(www)
uid=1005(Site1) gid=1004(sftponly) grupy=1004(sftponly)
uid=1006(Site1-www) gid=100(users) grupy=100(users),1003(www)

Пользовательский www используется Nginx.
Пользователь Site1 используется только для доступа по протоколу SFTP для клиента, каталог chroot с штриховкой в ​​/ srv / www / USER_NAME и / www в файле passwd.
Пользователь Site1-www является «техническим» пользователем, используется только серверами и скриптами, работающими для этого пользователя, например. uWSGI.

Следующие вопросы:

  1. Правильная ли эта конфигурация пользователей и групп, не вызывает ли проблем с безопасностью?
  2. Я должен использовать одного пользователя для соединений SFTP и одного для серверов, скриптов, работающих для этого пользователя (Site1, Site1-www)?

Конфигурация сервера Nginx. Я не вставляю всю конфигурацию, потому что это вопрос не о том, правильно ли настроен сервер, а о его безопасности.

Основная конфигурация находится в папке / etc / nginx, я не вношу никаких изменений в эти файлы. Сервер работает по www uid и группе.
Конфигурация виртуальных серверов находится в каталоге / srv / nginx, который полностью импортирован (включая /srv/nginx/*.conf;).
Основные журналы сервера находятся в папке / var / log / nginx, а журналы пользователей будут в папке / srv / www / USER_NAME / log.

  1. Если эта конфигурация "правильная", то есть пути к папкам и файлам не странные?
  2. Есть идеи там что-то изменить, улучшить? :)

Вот и конец. Конфигурация uWSGI:

Конфигурация каждого экземпляра, один или несколько для каждого клиента (в случае использования нескольких приложений, используются папки /srv/www/USER_NAME/www/App1..App2), находится в папке / srv / uwsgi. Все экземпляры uWSGI работают с uid = USER_NAME-www и gid = www.

В конфигурации uWSGI у меня есть следующие пути python:

chdir: /srv/www/Site1/www
pythonpath: /srv/www/Site/www
  1. Я хочу заблокировать все экземпляры uWSGI с помощью chroot. В какой папке? Что мне делать, чтобы Django, RoR работал правильно?
  2. Ограничивает ли pythonpath на / srv / www / Site / www возможности учетной записи?
  3. Правильно ли использовать одного пользователя и одну папку / www для нескольких проектов?

Вот и все. Спасибо за чтение, и я очень ценю любой ответ. Я знаю, что мой английский не совсем идеален, но надеюсь, что все написано ясно и понятно. На все вопросы отвечаю в комментариях, так что если есть неточности, сразу могу объяснить :)