Это старая версия документа.
Содержание
Управление пользователями
Управление пользователями является важной частью безопасности системы. Неэффективные пользователи и управление привилегиями часто приводят множество систем к компрометации. Поэтому важно чтобы вы понимали как защитить ваш сервер с помощью простых и эффективных методик управления пользовательскими учетными записями.
Где суперпользователь?
Разработчики Ubuntu приняли сознательное решение заблокировать административную корневую учетную запись (root) по умолчанию во всех установках Ubuntu. Это не означает, что учетная запись root удалена или к ней нет доступа. Ей просто присвоен пароль, который не совпадает ни с одним возможным шифрованным значением, соответственно, ее невозможно использовать для входа напрямую.
Вместо этого поощряется применение пользователями инструмента с именем sudo для переноса административных обязанностей. Sudo позволяет авторизованным пользователям временно повышать их привилегии, используя их собственный пароль вместо знания пароля, присвоенного суперпользователю. Эта простая и к тому же эффективная методика обеспечивает ответственность для всех действий пользователей и дает административный раздельный контроль над тем, какие действия может выполнять пользователь с указанными привилегиями.
1. Если по какой-то причине вы хотите разрешить учетную запись суперпользователя, просто установите ей пароль:
sudo passwd
Sudo запросит ваш пароль, а затем предложит установить новый пароль для root как показано ниже:
[sudo] password for username: (вводите свой собственный пароль) Enter new UNIX password: (вводите новый пароль суперпользователя) Retype new UNIX password: (повторяете новый пароль суперпользователя) passwd: password updated successfully
2. Для блокирования учетной записи root используйте следующий синтаксис passwd:
sudo passwd -l root
3. Вы можете прочитать больше по sudo вызвав ее man страницу:
man sudo
По умолчанию изначальный пользователь, созданный установщиком Ubuntu является членом группы "admin", которая добавлена в файл /etc/sudoers как авторизованные sudo пользователи. Если вы желаете разрешить другой учетной записи полный доступ суперпользователя через sudo, просто добавьте ее в группу admin.
Добавление и удаление пользователей
Процесс управления локальными пользователями и группами простой и мало отличается от большинства других операционных систем GNU/Linux. Ubuntu и другие дистрибутивы на основе Debian поощряют использование пакета "adduser" для управления учетными записями.
1. Для добавления учетной записи пользователя используйте следующий синтаксис и следуйте подсказкам для указания пароля и опознавательных характеристик таких как полное имя, телефон и пр.:
sudo adduser username
2. Для удаления пользователя и его первичной группы используйте следующий синтаксис:
sudo deluser username
Удаление пользователя не удаляет связанный с ним домашний каталог. Оставлено на ваше усмотрение хотите ли вы удалить каталог вручную или оставите его в соответствии с вашими политиками хранения.
Помните, что любой пользователь, добавленный позднее с теми же UID/GID, как и предыдущий, получит доступ к этому каталогу если вы не предпримете необходимых мер предосторожности.
Вы можете захотеть изменить эти значения UID/GID каталога на что-то более подходящее, как, например, значения суперпользователя и, возможно, переместить каталог для предотвращения будущих конфликтов:
sudo chown -R root:root /home/username/ sudo mkdir /home/archived_users/ sudo mv /home/username /home/archived_users/
3. Для временного блокирования или разблокирования используйте следующий синтаксис:
sudo passwd -l username sudo passwd -u username
4. Для добавления или удаления персональной группы используйте, соответственно, следующий синтаксис:
sudo addgroup groupname sudo delgroup groupname
5. Для добавления пользователя в группу, используйте:
sudo adduser username groupname
Безопасность профиля пользователя
Когда создается новый пользователь, утилита adduser создает, соответственно, новый именной каталог /home/username. Профиль по умолчанию формируется по содержимому, находящемуся в каталоге /etc/skel, который включает все основы для формирования профилей.
Если ваш сервер является домашним для множества пользователей, вы должны уделять пристальное внимание правам доступа на пользовательские домашние каталоги для поддержания конфиденциальности. По умолчанию пользовательские домашние каталоги создаются с правами чтения/выполнения для всех. Это означает, что все пользователи просматривать и получать доступ к содержимому других домашних каталогов. Это может не подходить для вашего окружения.
1. Для проверки прав доступа на домашние каталоги существующих пользователей используйте такой синтаксис:
ls -ld /home/username
Следующий вывод показывает, что каталог /home/username имеет доступ на чтение для всех:
drwxr-xr-x 2 username username 4096 2007-10-02 20:03 username
2. Вы можете удалить права чтения для всех, используя следующий синтаксис:
sudo chmod 0750 /home/username
Более эффективный подход к данному вопросу будет в изменении глобальных прав доступа по умолчанию для adduser при создании домашних каталогов. Просто отредактируйте файл /etc/adduser.conf, изменив переменную DIR_MODE на что-то более подходящее, после чего все новые домашние каталоги будут получать корректные права доступа.
DIR_MODE=0750
3. После исправления прав доступа к каталогам, используя любую из ранее упоминавшихся методик, проверьте результаты используя следующую команду:
ls -ld /home/username
Результат ниже показывет, что права на чтение для всех удалены:
drwxr-x--- 2 username username 4096 2007-10-02 20:03 username
Политика паролей
A strong password policy is one of the most important aspects of your security posture. Many successful security breaches involve simple brute force and dictionary attacks against weak passwords. If you intend to offer any form of remote access involving your local password system, make sure you adequately address minimum password complexity requirements, maximum password lifetimes, and frequent audits of your authentication systems.
Minimum Password Length
By default, Ubuntu requires a minimum password length of 6 characters, as well as some basic entropy checks. These values are controlled in the file /etc/pam.d/common-password, which is outlined below.
password [success=2 default=ignore] pam_unix.so obscure sha512
If you would like to adjust the minimum length to 8 characters, change the appropriate variable to min=8. The modification is outlined below.
password [success=2 default=ignore] pam_unix.so obscure sha512 min=8
Basic password entropy checks and minimum length rules do not apply to the administrator using sudo level commands to setup a new user.
Password Expiration
When creating user accounts, you should make it a policy to have a minimum and maximum password age forcing users to change their passwords when they expire.
To easily view the current status of a user account, use the following syntax:
sudo chage -l username
The output below shows interesting facts about the user account, namely that there are no policies applied:
Last password change : Jan 20, 2008 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
To set any of these values, simply use the following syntax, and follow the interactive prompts:
sudo chage username
The following is also an example of how you can manually change the explicit expiration date (-E) to 01/31/2008, minimum password age (-m) of 5 days, maximum password age (-M) of 90 days, inactivity period (-I) of 5 days after password expiration, and a warning time period (-W) of 14 days before password expiration.
sudo chage -E 01/31/2011 -m 5 -M 90 -I 30 -W 14 username
To verify changes, use the same syntax as mentioned previously:
sudo chage -l username
The output below shows the new policies that have been established for the account:
Last password change : Jan 20, 2008 Password expires : Apr 19, 2008 Password inactive : May 19, 2008 Account expires : Jan 31, 2008 Minimum number of days between password change : 5 Maximum number of days between password change : 90 Number of days of warning before password expires : 14
Иные соображения безопасности
Many applications use alternate authentication mechanisms that can be easily overlooked by even experienced system administrators. Therefore, it is important to understand and control how users authenticate and gain access to services and applications on your server.
SSH Access by Disabled Users
Simply disabling/locking a user account will not prevent a user from logging into your server remotely if they have previously set up RSA public key authentication. They will still be able to gain shell access to the server, without the need for any password. Remember to check the users home directory for files that will allow for this type of authenticated SSH access. e.g. /home/username/.ssh/authorized_keys.
Remove or rename the directory .ssh/ in the user's home folder to prevent further SSH authentication capabilities.
Be sure to check for any established SSH connections by the disabled user, as it is possible they may have existing inbound or outbound connections. Kill any that are found.
Restrict SSH access to only user accounts that should have it. For example, you may create a group called «sshlogin» and add the group name as the value associated with the AllowGroups variable located in the file /etc/ssh/sshd_config.
AllowGroups sshlogin
Then add your permitted SSH users to the group «sshlogin», and restart the SSH service.
sudo adduser username sshlogin sudo service ssh restart
External User Database Authentication
Most enterprise networks require centralized authentication and access controls for all system resources. If you have configured your server to authenticate users against external databases, be sure to disable the user accounts both externally and locally, this way you ensure that local fallback authentication is not possible.