![Могут ли обычные пользователи навредить моему серверу?](https://rvso.com/image/760638/%D0%9C%D0%BE%D0%B3%D1%83%D1%82%20%D0%BB%D0%B8%20%D0%BE%D0%B1%D1%8B%D1%87%D0%BD%D1%8B%D0%B5%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B8%20%D0%BD%D0%B0%D0%B2%D1%80%D0%B5%D0%B4%D0%B8%D1%82%D1%8C%20%D0%BC%D0%BE%D0%B5%D0%BC%D1%83%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D1%83%3F.png)
у меня естьСтек LEMP (Ubuntu 20.04)который идеально настроен и оптимизирован мной. У него нет никакой веб-панели. Сначала я использовал его только для своих собственных сайтов. Позже я начал добавлять некоторые клиентские сайты на сервер.
Поскольку они запросили доступ по протоколу SFTP для управления файлами веб-сайта, я решил убедиться, что они не смогут получить доступ к конфиденциальным файлам на сервере или редактировать их.
Список изменений, которые я внес, чтобы максимально изолировать использование:
- Создал пользователя sudo (назовем егоадминистратор сервера) для меня и root-доступ был отключен
chmod 700 /home/serveradmin
(без-R
)- Создал обычные учетные записи пользователей для своих клиентов (например, client1, client2...), а затем добавил их всех вадминистратор серверагруппа
- Установите пользователя nginx наадминистратор сервера
- Создан отдельный пул php-fpm для каждого клиента. (напр. владелец: client1 группа: serveradmin, то же самое для слушателей)
- Сделал конфиденциальные файлы веб-сайта недоступными для других (например, файл wp-config.php включает учетные данные базы данных)
chmod -R 700
для папки SSL веб-сайта.- И, конечно же, создал разных пользователей и базы данных MySQL для каждого из клиентов.
Теперь я на 100% уверен, что никто не может получить доступ к чужой папке /home/clientX. По крайней мере, они не могут редактировать или удалять файлы. Однако я не опытный пользователь Linux и не хостинг-провайдер.дело в том, что,Могут ли эти клиенты повредить/нанести вред моему серверу, получив доступ и отредактировав какие-либо системные файлы за пределами папки /home? (например, пути /etc, /var/run, я полагаю, могут быть опасны).
Я не менял разрешения папок/файлов для системных файлов по умолчанию.
Итак, мой сервер не защищен? Нужно ли его еще как-то менять для повышения безопасности или мне вообще не давать им доступ по SFTP?
С уважением.
решение1
По крайней мере пункты 3 и 4 недействительны/ненадежны.
- Создал обычные учетные записи пользователей для своих клиентов (например, client1, client2...), а затем добавил их всех в группу serveradmin.
Какое отношение имеет учетная запись обычного пользователя к администратору сервера? Абсолютно никакого, даже в плане именования. Какой смысл в том, чтобы каждый пользователь сайта принадлежал к serveradmin
группе?
- Установите пользователя nginx на serveradmin
Аналогично. NGINX должен работать под своимсобственныйпользователь, обычно nginx
(дистрибутивы CentOS/RHEL) или www-data
(системы на базе Debian). Это не имеет ничего общего с администрированием сервера.
Я не могу вдаваться в подробности того, почему текущая настройка небезопасна, поскольку для этого требуется гораздо больше подробностей, таких как владение сокетом для PHP, расположение файлов и т. д.
По-настоящему безопасная настройка предполагает максимально возможное разделение пользователей, и это касается сервисов. Поэтому начните с выделения (или использования того, что предоставляется пакетом) отдельного пользователя для NGINX и следуйтебезопасные разрешения для PHP-FPM. Пользователь NGINX должен быть в группе пользователей каждого сайта, а не наоборот:
usermod -a -G client1 nginx
usermod -a -G client2 nginx
...
Теперь nginx
пользователь принадлежит к client1
и client2
группам. Почему, потому что nginx
пользователь действительно должен иметь возможность читать каждый файл веб-сайта.
С другой стороны, пулы PHP-FPM можно привязывать client1:client1
как в режиме выполнения, так и в параметрах прослушивания сокетов.