Как обезопасить пользователей системы, которые только запускают процессы приложений?

Я создал системного пользователя с помощью команды adduser для использования в приложении, которое я установил. Предполагается, что этот пользователь запускает процессы, специфичные для приложения, и тому подобное (представьте, что пользователь системы postgres ничего не делает, кроме запуска вещей, связанных с postgres)

Поскольку этот пользователь ничего не делает, кроме как делать ставки приложения, есть ли способ предотвратить вход человека с этим пользователем? Этот пользователь не входит ни в одну из групп (поэтому мне не нужно беспокоиться о входе в систему по протоколу ssh или другой группе разрешений). Я читал, что отсутствие домашней папки поможет предотвратить вход в систему, но мне понадобилась домашняя папка для этого пользователя, потому что именно там я скомпилировал / установил приложение.

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

2
задан 13 July 2013 в 00:36

2 ответа

Существует две вещи, которые необходимо сделать, чтобы препятствовать тому, чтобы люди использовали эту учетную запись пользователя как "реальная человеческая учетная запись пользователя".

Так как никто никогда не должен входить в систему как этот счет ни на какую цель, первая и самая важная вещь, которую необходимо сделать, состоит в том, чтобы гарантировать, что аутентификация по паролю никогда не может успешно выполняться. превосходный ответ guntbert объясняет это подробно. Таким образом, можно работать:

sudo passwd -l user

Отдельно от этого, это - также хорошая идея установить оболочку входа в систему пользователя на что-то, что не выполняет операции и сразу выходит:

sudo chsh -s /bin/false user

Тот путь:

  • При входе в систему, поскольку обычно перестанет работать пользователь, использующий механизм кроме аутентификации по паролю (такой как основанная на ключе аутентификация) для получения оболочки. Однако для некоторой SSH-связанной функциональности может все еще быть возможно работать.

    Например, если основанная на ключе аутентификация включена для пользователя, кто-то может все еще использовать ее, чтобы аутентифицировать и открыть соединение SSH для scp или sftp или создать зашифрованный туннель, и мог бы возможно получить доступ к другой функциональности.

  • Попытки моделировать оболочку входа в систему обычно перестанут работать. Однако кто-то, кто может запустить программы как корень или у кого есть некоторый non-password-based способ пройти проверку подлинности как пользователь, может все еще часто выполнять оболочку невхода в систему, которая обеспечивает те же возможности как оболочка входа в систему.

    Например, установка userоболочка к /bin/false предотвратит su - user и sudo -i -u user (среди других) от работы, даже если выполненный как root. Но они не предотвратят su user, sudo -s -u user, или sudo -u user bash (среди других) от работы, когда они выполняются как root.

Очевидно, отключение оболочки входа в систему пользователя, который уже не может зарегистрировать на пути аутентификацию по паролю и кому уже не настроили основанную на ключе аутентификацию, не приносит большую пользу безопасности. Так, почему делают это? Поскольку:

  • Это, вероятно, поможет напомнить пользователям, у которых действительно есть полномочия администратора думать дважды перед входом в систему (или моделирование входа в систему) как user.

  • Установка оболочки пользователя к чему-то нефункциональному является удобным и обычно эффективным способом показать любому чтение /etc/passwd то, что пользователь не представляет человека и не предназначается, чтобы быть явленным олицетворением в интерактивном режиме.

    (В Ubuntu и других современных подобных Unix системах /etc/passwd сведения об учетной записи хранилищ, но не фактические хэши пароля - это находится в /etc/shadow. /etc/passwd может быть просмотрен всеми или пользователями наиболее - людьми в системе, включая неадминистраторов.)

  • Если по какой-либо причине аутентификация по паролю повторно включена для пользователя, то оболочка входа в систему пользователя, являющаяся нефункциональным, действительно обычно предоставляет существенное преимущество безопасности.

1
ответ дан 13 July 2013 в 00:36

Просто необходимо заблокировать учетную запись так, чтобы никакой действительный пароль не мог быть введен:

sudo passwd -l username

Теперь войдите в эту учетную запись с паролем, отключен, но вход в систему через su (от процесса, работающего с корневыми полномочиями (такой как sudo -i)) или ssh-ключи (который Вы, вероятно, не включили) все еще было бы возможно. Я не рекомендую отключить учетную запись полностью, потому что программы, для которых Вы нуждаетесь в ней, не могли работать.

Вы могли выполнить почти то же путем редактирования /etc/shadow с командой sudo vipw -s (vipw блокирует файл для предотвращения повреждения и вызывает любимого редактора CLI), и замена строки после первого двоеточия с !.

 mysysuser:!:15819:0:99999:7:::

Если Вы следуете вторым маршрутом, желательно создать резервную копию /etc/shadow (в случае ошибки). Один путь sudo cp /etc/shadow /etc/shadow.old. После того как новая конфигурация работает, удалите резервное копирование (sudo rm /etc/shadow.old), поскольку это может рассматриваться как плохое, чтобы иметь дополнительные ненужные копии хэшей пароля пользователей, лежащих вокруг (после того как пароль изменяется, хеш должен уйти, таким образом, старые хеши не могут быть взломаны для получения доступа к другим системам, где старые пароли могут все еще быть установлены).

1
ответ дан 13 July 2013 в 00:36

Другие вопросы по тегам:

Похожие вопросы: