Работа с правами. Добавление и удаление пользователя. Настройка безопасности сервера
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
ЛЕКЦИЯ
РАБОТА С ПРАВАМИ. ДОБАВЛЕНИЕ И УДАЛЕНИЕ
ПОЛЬЗОВАТЕЛЯ. НАСТРОЙКА БЕЗОПАСНОСТИ СЕРВЕРА
Работа с правами. Добавление и удаление пользователя. Настройка
безопасности сервера. Отключаем ненужные сервисы в Linux.
1
1 РАБОТА С ПРАВАМИ
В Linux может быть любое количество пользователей. Все они
выполняют разнообразные задачи и имеют различные права в системе. И
только один из них получает над операционной системой полную власть. Его
имя - root, или суперпользователь. Прежде чем начинать разговор о
суперпользователе,
хотелось
бы
уточнить
понятие
"пользователь"
применительно к UNIX вообще и Linux в частности. Количество строк в
файле
/etc/passwd
свежеустановленной
системы
всегда
существенно
превышает то количество аккаунтов, которые были непосредственно созданы
в процессе установки. Точный их список зависит как от системы, так и от
установленных в ней компонентов. Среди пользователей, присутствующих в
/etc/passwd, есть и такие, которым не соответствуют реальные люди. Это так
называемые демоны - владельцы программ и системных процессов. Являясь
по сути своей такими же пользователями, как vaisa или prtia, они выполняют
важные функции на уровне обеспечения нормального функционирования
системы. То есть, такие их параметры, как домашняя директория и shell, тоже
могут быть изменены.
В Вашем /etc/passwd может и не быть httpd или uucp, но пользователь
с UID (U - user, ID - цифровой идентификатор пользователя) равным нулю
должен присутствовать обязательно. Как правило, его зовут root. Это скорее
традиция: от перемены имени свойства самого root не меняются. Впрочем, из
этого
не
следует,
что
его
действительно
стоит
переименовать.
Переименовывая его, нужно отдавать себе, отчет в том, что последствия
могут обнаружиться в самых неожиданных местах.
У суперпользователя, как и у любого другого пользователя системы,
должна присутствовать домашняя директория. Как правило, это /root. He
стоит ее никуда переносить, пытаясь "навести порядок" в расположении
домашних каталогов. В случае серьезного повреждения системы, когда /usr
2
окажется недоступен, сожаления по поводу педантизма будут несколько
запоздалыми: работы по восстановлению системы сильно усложнятся. Что
могу? Короли..., Известная поговорка гласит "Have trouble with Windows reboot, have trouble with UNIX - be root!".
На самом же деле привилегии root в недостаточно аккуратных руках
могут создать гораздо больше проблем, нежели решений. Заметьте, речь не
идет о взломах, атаках и прочих посягательствах на вашу машину из
внешнего мира - сами пользователи иногда оказываются едва ли не
эффективнее хакеров.
Дело в том, что файлы (а устройства с точки зрения системы тоже
являются файлами, она обращается к устройствам посредством этих файлов)
защищены от постороннего вмешательства правами доступа. Собственно,
права доступа реализованы следующим образом: каждый файл может быть
доступен для чтения (г - Read), записи (w - Write) и исполнения (х - eXecute).
Также у каждого файла есть владелец-пользователь и владелец-группа. Права
выставляются при помощи определения доступных действий для: а)
пользователя, б) группы, в) всех остальных. Для просмотра используйте
команду Is -l. Первый столбец, состоящий из смеси минусов с уже
упоминавшимися буквами, покажет, что именно разрешено делать с данным
файлом, а два следующих выведут информацию о его владельцах. Так,
$ Is -I book
-rw-rw-r-- тагу editor 248229 Map 30 22:54
book
означает, что файл book размером примерно 250 Кбайт принадлежит
пользователю тагу и группе editor (при этом сама тагу может и не входить в
данную группу). Редактировать его может не только тагу, но и редакторы, а
читать могут все. Права доступа к файлу может менять только его владелец.
То есть, в нашем случае именно тагу может определить, кому именно файл
3
будет доступен на чтение и запись (а в случае со скриптами и программами и на исполнение). Кроме владельца права на файл может менять только один
пользователь. Как нетрудно догадаться - root. Кроме того, в некоторых
системах только он может менять значение атрибута "владелец файла", то
есть пользователи даже не могут "отдавать" друг другу свои файлы.
Очевидно,
что
при
таких
привилегиях
"защититься"
от
суперпользователя выставлением на свой файл прав вида rw не возможно: он
может не только прочитать его, но и при желании стереть все следы об
ращения к этому файлу. В случае же, когда пароль root известен более чем
одному человеку, то выяснить, кто именно в конкретный момент им
воспользовался, будет невозможно. Более того, вспомнив о способности
суперпользователя править Log-файлы, приходится признать, что даже ответ
на вопрос "когда?" не всегда доступен.
Чтобы избежать попыток выяснить, кто и откуда вчера между тремя и
пятью часами ночи удалил весь/home, для начала нужно определить, с каких
терминалов будет разрешено заходить с правами администратора. Для начала
отредактируйте файл /etc/securetty, в нем содержится список консолей, на
которые разрешены администраторские логины. Не имея возможности
входить в систему непосредственно с правами root, пользователи смогут
воспользоваться командой su. Запущенная без дополнительных параметров,
она
попытается
запустить
командный
интерпретатор
с
правами
администратора. Проблем, которые возникнут в процессе, может быть две.
Во-первых, команда su спрашивает пароль того пользователя, от имени
которого должен будет запуститься интерпретатор, а не того, кто запустил su.
Во-вторых, в большинстве систем su могут использовать только члены
группы wheel.
Куда
более
гибкой
системой
распределения
прав
является
использование команды sudo. Чтобы настроить ее лимиты, необходимо
4
(разумеется, суперпользователем) выполнить команду visudo. В файле
/etc/sudoers описывается, кому из пользователей (или групп) разрешено
выполнять те или иные команды. Столь популярная конструкция вида:
%wheel ALL=(ALL) NOPASSWD: ALL весьма удобна, но не всегда
безопасна Дело даже не в том, что основной "рабочий" аккаунт вовсе не
обязан входить в группу wheel. Просто у пользователей при таких довольно
мягких
ограничениях
быстро
возникает
условный
рефлекс
-
к
отказывающейся выполняться команде спереди приписывается магическое
слово sudo, после чего все волшебным образом запускается. Проблема в том,
что запускается процесс в таком случае с правами root, и последствия могут
быть фатальными. Необходимость вводить пароль каждый раз перед
запуском sudo хотя и не вызвана соображениями безопасности, но
поддерживает некоторую собранность и чувство ответственности за свои
действия. Следующим "рубежом обороны" является проверка допустимости
действия непосредственно ядром. С его точки зрения пользователи делятся
на root и всех остальных, причем на этом уровне проверяется уже не
допустимость запуска файла программы, а допустимость выполнения
системного вызова.
На практике это оборачивается тем, что никто кроме администратора
не может открыть raw-socket, смонтировать/размонтировать файловую
систему, загрузить или выгрузить модуль ядра.
Кроме того, как и в случае с файлами, только root может уничтожить
процесс, принадлежащий другому пользователю, и, разумеется, никто кроме
него не сможет терминировать процесс, запущенный суперпользователем.
К стати сказать в Ubuntu по умолчанию root аккаунт отключен и
пароля у root просто нет. Все административные задачи выполняются через
sudo. По умолчанию право на выполнение sudo предоставлено первому
5
пользователю, созданному при установке дистрибутива. Все остальные по
умолчанию - обычные пользователи.
Проиллюстрируем Как использовать SUDO на нескольких наглядных
примерах:
1)
в консоли/терминале:
$sudo <команда>
(запуск команды с правами суперпользователя). Последует запрос на
ввод пароля, введите свой пользовательский пароль.
Система какое-то время (man sudo) помнит введённый пароль
(сохраняет открытой sudo-сессию). И поэтому возможна ситуация, когда
запрос на ввод пользовательского пароля не последует. Если вдруг захочется
гарантированно прервать sudo-сессию Вы можете выполнить команду:
$sudo -K
2)
при использовании "Alt+F2":
gksudo <команда>
(запуск графических приложений с правами суперпользователя). На
запрос введите свой пользовательский пароль.
Обратите внимание что в Кубунту вместо gksudo используйте
команду kdesu <имя программы>
Вы можете получить права администратора в терминале, чтобы не
вводить каждый раз sudo?
$sudo -s -H
(не забыть "-") Терминал с правами root. Пароль пользователя при
этом ввести нужно лишь один раз. Последующие команды можно запускать с
правами root без необходимости добавлять sudo. Терминал переводится в
/root папку. $sudo -s или sudo su
Терминал с правами root. Как и предыдущая команда, но оставляет
терминал в домашней папке (/home/your_name)
6
Если Вы захотите больше узнать о любой из этих команд вам
достаточно будет ввести в терминале имя команды --help, например sudo -help.
Прочтя выше изложенный материал либо в силу сложившихся
привычек Вы захотите изменить sudo на традиционный root, то вам для этого
потребуется.
Установка пароля рута: $sudo passwd root.
Ликвидация пароля рута: $sudo passwd -l root.
Вы
также
можете
запретить использование
sudo
вообще, и
использовать только пароль root.
Установить пароль root: $sudo passwd root.
Запретить sudo выполнение любых команд под root`ом в /etc/sudoers.
При установке Ubuntu в экспертном режиме можно самостоятельно
ввести пароль root. Однако тогда обычный пользователь не сможет
воспользоваться командой sudo. Чтобы это исправить, достаточно установить
пакет sudo и сконфигурировать /etc/sudoers, а также добавить пользователя в
группу wheel.
В случае возникновения проблем можно загрузиться в single mode
(для этого выбираем в grub при загрузке режим recovery mode) и всё
исправить.
7
2 ДОБАВЛЕНИЕ И УДАЛЕНИЕ ПОЛЬЗОВАТЕЛЯ
При создании сервера на Linux, добавление и удаление пользователей
- одна из первых задач, с которой вам придется столкнуться. При первом
запуске вы получаете только пользователя под именем root. Конечно он
открывает вам полный доступ к системе, но использование такого
пользователя всегда - не самая разумная идея, так как этот пользователь
намного больше подвержен к атакам по безопасности, чем любой другой
пользователь. Причиной тому является тот факт, что в таком случае все
команды исполняются с правами администратора.
Хорошей практикой считается создание пользователя с ограниченным
набором прав. Для
каждого
нового
пользователя лучше
создавать
дополнительный аккаунт на вашем сервере, таким образом вы сможете легко
отслеживать действия каждого пользователя. Тем не менее каждому
пользователю вы можете открыть права администратора, которые будут
доступны для него через команду sudo.
Добавление пользователей
Если вы находитесь в системе под пользователем root, то создать
нового пользователя можно следующей командой:
adduser username
Если же вы авторизованны как другой пользователь, имеющий sudo
права, то тогда используйте следующую команду:
sudo adduser username
Теперь следует назначить пользователю пароль:
passwd username
не забывайте добавлять sudo перед командой, если вы находитесь не
под пользователем root.
8
Вы должны будете дважды ввести пароль. Новый пользователь создан
и готов к использованию. Вы можете теперь войти под новым пользователем
при помощи только что созданного пароля.
Добавление sudo прав пользователю
Если вашему пользователю необходимо выполнять команды с
администраторскими правами, то ему необходимо открыть доступ к команде
sudo.
Можно добавить пользователя в группу wheel (каждый её член
автоматически получает доступ к sudo) при помощи команды gpasswd. Такой
подход является самым безопасным и простым для управления доступа к
sudo.
Наберите следующую команду если находитесь под пользователем
root:
gpasswd -a username wheel
Если вы под другим пользователем, то выполните следующее:
sudo gpasswd -a username wheel
Теперь новому пользователю открыт доступ к sudo и он может
выполнять команды от роли администратора. Для этого просто добавьте sudo
перед командой:
sudo some_command
Вам потребуется ввести пароль к вашему обычному аккаунту.
Команда будет выполнена с правами администратора как только пароль
будет введен.
Управление пользователями с правами sudo
Команда gpasswd позволяет вам добавлять и удалять пользователей из
групп (например, wheel), но она не покажет вам членов определенной
группы. Чтобы получить список пользователей, принадлежащих к группе
9
wheel (то есть увидеть пользователей с правами sudo), вам понадобится
команда lid. По-умолчанию, эта команда выводит список групп, к которым
принадлежит пользователь, но при помощи ключа -g вы можете увидеть
список членов какой-либо группы.
sudo lid -g wheel
Вы
получите
имена
пользователей
и
соответствующие
UID
пользователей группы wheel. Таким образом вы легко сможете проверить
были ли предыдущие команды выполнены успешно и получил лм ваш новый
пользователь необходимые права.
Удаление пользователей
Если у вас есть ненужные пользователи, то их аккаунты следует
удалить. Вы можете это сделать несколькими способами, выбор которого,
конечно, зависит от текущей ситуации на вашем сервере.
Если вы хотите удалить пользователя, оставив нетронутыми его
файлы, выполните следующую команду под пользователем root:
userdel username
Если вам необходимо удалить и пользователя, и созданные им файлы
в его домашней директории, то воспользуйтесь следующей командой:
userdel - r username
не забывайте добавлять sudo перед командой если вы находитесь под
отличным от root пользователем с правами администратора.
Обе команды автоматически удаляют пользователя из всех групп, к
которым он принадлежал, включая группу wheel. Если в дальнейшем вы
создадите одноименного пользователя, то его снова придется добавить
вгруппу wheel, чтобы тот получил sudoправа.
10
3 НАСТРОЙКА БЕЗОПАСНОСТИ СЕРВЕРА
Безусловно, можно сказать, что Linux более безопасен (защищен), чем
Windows. Безопасность в Linux встроенная, а не прикрученная где то сбоку,
как это реализовано в Windows. Безопасность системы Linux охватывает
область от ядра до рабочего стола, но есть шансы для хакеров навредить
вашему домашнему каталогу (/home).
Ваши байты с фотографиями, домашним видео, документами и
данными кредитных карточек или кошельков – самая дорогая часть
информации, содержащаяся на компьютере. Конечно, Linux не восприимчив
ко всяким там интернет – червям и вирусам для Windows. Но
злоумышленники могут найти способ для доступа к вашим данным на
домашнем каталоге.
Подготовив свой старенький компьютер или жесткий диск перед
продажей форматированием, вы думаете будет достаточно? Найдется куча
современных инструментов для восстановления данных. Хакер с легкостью
восстановит ваши данные с жесткого диска, не взирая на ОС, в которой вы
работали.
На эту тему вспоминается опыт одной компании по перекупке
подержанных компьютеров и дисков. По ходу своей деятельности они
вынесли вердикт, что 90% прежних хозяев своего компьютера перед
продажей не позаботились должным образом об очистке своих носителей
информации. И они извлекали очень щепетильные байты данных. Даже и
представить страшно, что где – то в закромах вашего жесткого диска
найдется информация для входа в ваш интернет банк или он – лайн кошелек.
В этой рубрике, серии статей, я попытаюсь подробно описать
инструменты от хакеров для вашей установленной Linux.
Шагнем к основам (отключим ненужные сервисы в linux), которые
подойдут почти к любым дистрибутивам Linux.
11
Зашифруем файловую систему в Linux для более полной безопасности
Linux
Пользовательские пароли не решат проблему, если вы хотите чтобы
действительно никто не смог прочитать ваш домашний каталог (/home) или
определенный размер байтов. Можно зашифровать его так, чтобы даже
пользователь с высшими привилегиями root не сможет сунуть свой нос.
Удаляйте щепетильные файлы так, чтобы их больше никто не
восстановил
Если вы решили продать или подарить свой компьютер или носитель
информации, не думайте, что простое форматирование безвозвратно удалит
ваши файлы. Можно на ваш Linux установить инструмент secure-delete
(набор утилит для надёжного удаления данных), в который входит утилита
srm, предназначенная для безопасного удаления файлов.
Установите графический интерфейс для настройки брандмауэра Linux
Также не стоит забывать об имеющемся в ядре Linux брандмауэре. В
состав всех дистрибутивов Linux входит lptables, которая является частью
ядра. Lptables позволяет фильтровать сетевые пакеты. Конечно же, в
терминале можно настроить эту утилиту. Но этот способ непосилен многим,
в том числе и мне. Поэтому я устанавливаю, графический клиент для
настройки брандмауэра, и произвожу настройку, с такой легкостью как будто
играю в игру.
Как и все операционные системы, Linux склонен к накоплению
всякого хлама при работе различных приложений. И это не его вина Linux,
так как различные приложения, например, браузеры текстовые редакторы и
даже видео плееры, работают не на уровне ядра и накапливают временные
файлы. Можно установить утилиту BleachBit по универсальному удалению
мусора.
12
4 ОТКЛЮЧАЕМ НЕНУЖНЫЕ СЕРВИСЫ В LINUX
В некоторых дистрибутивах по умолчанию сами монтируются диски
USB и CD-приводы. Конечно, это удобно, но, по – моему неправильно.
Любой может подойти к вашему компьютеру, подключить внешний USB и
скопировать все ваши данные.
Я долго не мог решить эту проблему в KDE, но в итоге нашел
отличное решение через polkit. Я назову её отличной штукой, в которой
можно создать свою политику через механизм паролей для различных
действий
пользователя.
Другими
словами
мы
можем
запрещать
пользователям, что-то производить в системе. В нашем случае подключать
usb-flash (флешку) без пароля. Итак, приступим.
Первым делом я отправился по файловой системе в /etc/polkit1/localauthority/, там я обнаружил ещё несколько каталогов под названиями:
10-vendor.d
20-org.d
30-site.d
50-local.d
90-mandatory.d
Я выбрал 20-org.d (вроде для организаций). На самом деле неважно,
какой каталог вы выберете.
Далее создал файл внутри каталога /20-org.d под названием 10-flashmounting-policy.pkla
touch /etc/polkit-1/localauthority/20-org.d/10-flash-mounting-policy.pkla
и наполнил его таким содержимым:
[Disable mounting removable disks to all] Identity=unix-group:*
Action=org.freedesktop.udisks.filesystem-mount
ResultAny=no
ResultInactive=no
13
ResultActive=no
[Enable mounting removable disks to some users]
Identity=unix-user:pavel
Action=org.freedesktop.udisks.filesystem-mount
ResultAny=no
ResultInactive=no
ResultActive=auth_self
Теперь на моём компьютере может подключать флешки только
пользователь pavel (то есть я) и то, только после ввода пользовательского
пароля.
В Gnome 2 отключить автомонтирование usb флешки можно
средствами
рабочего
стола.
Для
этого
заходим
в
Система
>
Административные > Пользователи и группы и имя вашего пользователя.
Переходим на вкладку Advanced Settings > User Privileges, убираем галочки
напротив опции Access External Storage Devices Automatically, Mount
Userspace Filesystems и Use CD-ROM Driver. При таких настройках в gnome
2, тоже не получится подключить устройство без ввода пароля.
14