Linux Security HOWTO: Локальная безопасность

Next Previous Contents

## 4. Локальная безопасность

Следующим пунктом рассматриваемым в безопасности вашей системы является защита от атак со стороны локальных пользователей. Сказали ли мы `локальные` пользователи? Вы не ослышались - ДА.

Получение доступа как локальный пользователь - это один из первых шагов, которые попытается сделать взломщик на пути к получению счета администратора. При небрежной локальной безопасности он - взломщик - может затем "перерегистрировать" свой счет с рядового пользователя на администратора используя различные ошибки (bugs) и неправильно настроенные локальные сервисы. Если вы обеспечите достаточный уровень вашей локальной безопасности, то взломщик будет иметь еще один барьер для проникновения.

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

## 4.1 Создание новых счетов

Вы должны быть уверены, что предоставляете пользователям счета с минимальными допусками, необходимыми для выполняемых ими задач. Если вы даете счет вашему сыну (возраста 10 лет), то вы можете позволить ему доступ к текстовому процессору или графической программе, но не к удалению данных, которые ему не принадлежат.

Существует несколько неписанных правил, которых необходимо придерживаться при предоставлении законного доступа к вашей Linux машине:

- Предоставляйте минимальное количество привилегий.
- Отслеживайте когда/откуда происходит регистрация или ведите журнал.
- Не забудьте удалить счет, если он больше не используется.

Большинство счетов локальных пользователей, которые используются для прорыва системы безопасности, являются счетами, которые не использовались месяцы, а то и годы. Поскольку никто их не использует, они являются идеальным атакующим транспортом.

## 4.2 Безопасность администратора

Наиболее искомым счетом на вашей машине является счет суперпользователя - администратора (root). Этот счет имеет доступ ко всем ресурсам машины, который также может включать доступ к другим машинам в сети. Помните, что вы должны использовать счет администратора только для очень ограниченного набора определенных задач, а в большинстве случаев должны регистрироваться как обычный пользователь. Работать все время как администратор является ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ ПЛОХОЙ ИДЕЕЙ.

Несколько приемов, чтобы избежать последствий из-за путаницы в счетах, с которыми вы работаете:

- Когда выполняете некоторую комплексную команду, попытайтесь сначала запустить ее в неразрушающем виде ... особенно команды, содержащие заменители (wildmarks): например, вы собираетесь сделать "rm foo*.bak", а вместо этого сначала сделайте "ls foo*.bak" и убедитесь, что вы собираетесь удалить действительно то, что думаете. Также помогает использование подтверждений при выполнении таких команд.
- Некоторые находят полезным делать "touch /-i" в их системах. Это заставит команды типа "rm -rf *" спрашивать вас, действительно ли вы хотите удалить все файлы. (Это происходит таким образом, что ваш shell сначала распознает "-i", и передает ее как опцию для rm). Однако это не поможет для rm команд без * в теле. ;(
- Регистрируйтесь как администратор только для выполнения одиночных специфических задач. Если вы вдруг поймаете себя на том, что вы пытаетесь выяснить как что-то работает или как что-то сделать,- сейчас же перерегистрируйтесь как обычный пользователь и не возвращайтесь к счету администратора пока вы действительно не будете уверены, что нужно сделать администратору.
- Очень важными являются _пути_по_умолчанию_ администратора. Путь по умолчанию, или переменная окружения PATH, определяет то место, где shell ищет программы. Попытайтесь ограничить пути по умолчанию администратора насколько это возможно и никогда не используйте '.', обозначающую "текущай каталог", в ваших установках PATH. Кроме этого никогда не разрешайте запись в каталоги, прописанные в переменной PATH, поскольку это может позволить взломщику модифицировать существующие или записать новые программы в этих каталогах, разрешив им таким образом запустить эту программу администратору в тот момент, когда ему понадобиться выполнить данную программу.
- Никогда не используйте набор утилит rlogin/rsh/rexec (называемых r-утилитами) будучи администратором. Они являются предметом интереса многих типов взломщиков и являются прямой опасностью при запуске администратором. Никогда не создавайте файл .rhosts будучи администратором.
- Файл /etc/securetty содержит список терминалов, с которых может зарегистрироваться администратор. По умолчанию (в Red Hat Linux) все установлено только на локальные виртуальные консоли (vtys). Будьте очень осторожны добавляя что-либо еще в этот файл. Вы можете зарегистрироваться удаленно как обычный пользователь, а затем использовать 'su', если вам действительно это нужно (полезно через ssh или другой зашифрованный канал), таким образом нет необходимости прямо регистрироваться как администратор.
- Никогда не спешите и обдумывайте каждый шаг работая администратором. Ваши действия могут затронуть многие вещи. Думайте (!!!) прежде чем что-либо выполнить.

Если вам абсолютно положительно необходимо разрешить кому-либо (обычно очень доверенному) иметь доступ как администратор к вашей машине, существует несколько инструментов, которые могут помочь. Sudo позволяет пользователям использовать их пароли для получения доступа к ограниченному набору команд администратора. Это позволит вам, например, разрешить пользователям менять и монтировать сменные диски в вашей системе, но не даст других привилегий. Sudo также ведет журнал всех удачных и неудачных запусков, позволяя вам отслеживать кто и для чего использовал эту команду. Поэтому sudo работает хорошо даже в тех местах, где несколько человек имеют права администратора, - используя возможности sudo, вы можете отследить, какие были сделаны изменения.

Хотя sudo может использоваться для предоставления определенным пользователям определенных привилегий для специфических задач, эта утилита имеет несколько недостатков. Она должна использоваться только для ограниченного набора задач, подобных перезагрузке сервера, или добавления новых пользователей. Любая программа, которая предоставляет возможность выхода из shell, дает пользователю права администратора. Например, это свойственно многим редакторам. Также такие безобидные программы как /bin/cat могут использоваться для перезаписи файлов, которые могут позволить эксплуатировать счет администратора. Рассматривайте sudo как средство учета, и не ожидайте, что заменив им суперпользователя, вы будете в безопасности.

Next Previous Contents