К содержанию   Вперед   Назад

Приложения

Планирование безопасности

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

Первоначально администратор должен рассмотреть отдельно аспекты защиты:

1. ОС AIX;

2. Сетевая среда;

3. Среда NFS (и NIS, если используется). 

При начальной установке

1. Установите TCB.

2. Установите пароль для root.

3. Установите следующие ограничения пароля в заданной по умолчанию станзе файла /etc/security/user:

pw_restrictions: maxage = 12 (force change after 12 weeks) maxrepeat = 3 (max three repeated characters) minalpha = 1 (at least 1 alpha character) mindiff = 3 (at least 3 different from last time) minother = 1 (at least 1 nonalpha character) maxexpired = 4 (allow logon 4 weeks after expired) histexpire = 26 (prohibit reuse for 26 weeks) histsize = 8 (prohibit reusing last 8 passwords) pwdwarntime = 14 (start warning 14 days before expire)

4. Определите значение блокировки по времени. Поместите его в файл /etc/profile, если значение блокировки по времени должно быть единым для всех пользователей:

TMOUT=1800 (for Korn shell) TIMEOUT=1800 (for Borne shell) export TIMEOUT TMOUT

Значение блокировки по времени выражено в секундах. Например, значение 1800 означает, что оболочка должна блокировка по времени, если не производится никакого действия в течение 30 минут. Установите, и TMOUT и TIMEOUT, если ваши пользователи могут использовать любую оболочку.

5. Модифицируйте подсказку оболочки.

6. Переназначьте вывод skulker и подобных ему отчетов в один файл, например, /tmp/dailyreport - это сделает проще ежедневный контроль действий системы и её состояния.

7. Команда securetcpip отключает некоторые сетевые сервисные демоны. Если не требуется применение команды rlogin и связанных с нею, то используйте эту команду.

8. В директории /var/adm/cron, используйте файлы cron.allow, cron.deny, at.allow, и at.deny для управления доступом к функциям cron.

9. Измените сообщение при входе в систему, которое идентифицирует вашу ОС.

10. Узнайте, как изменить сообщение дня.

11. Назначьте различные пароли root для различных машин. Администратор должен гарантировать, что для различных машин пароли root отличаются друг от друга. Можно позволить обычным пользователям иметь те же самые пароли на различных машинах, но никогда делайте этого для пользователя root.

12. Продумайте план мероприятий чрезвычайных мер. В том случае, когда администратор не сможет быть при аварии, другой уполномоченный человек должен иметь доступ к необходимому паролю. Использование этой процедуры должно регистрироваться и пароль должен быть изменен немедленно после его использования в чрезвычайной ситуации.

13. Рассмотрите необходимость отключения всех удаленных и dial-in терминалов в конце рабочего дня. Разрешите им доступ утром.

14. Тщательно проверьте все в заданных по умолчанию параметрах станзы файла /etc/security/user. Установите соответствующие значения по умолчанию прежде созда-ния пользователей. Это позволит не определять большиноство параметров для вновь создаваемых пользователей.

15. Рассмотрите необходимость отключения возможности входа в систему под именем root на любой системе, на которой более чем один человек знает пароль root. Такое отключение вынудит пользователей входить в систему под их собственным userid и затем выполнять команду su root. Средства аудита и/или записи в файле/var/adm/sulog будут контролировать этих пользователей.

16. Отредактируйте файл mkuser.default.

17. Рассмотрите предоставление SAK для всех терминалов, и разрешения всех пользователей, чтобы использовать доверенную оболочку.

Продолжение действий

1. Делайте копии. Храните архивы. Убедитесь, что ещё кто-то кроме вас знает, как восстановить файлы с самой свежей копии.

2. Остерегайтесь "свободно распространяемого программного обеспечения", "ПО общего пользования" или файлов, полученных с анонимного ftp-сервера. Никогда не запускайте общий файл при работе в системе с полномочиями root, если вы не исследовали этот файл и полностью не доверяете ему.

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

3. Новый пользователь, созданный через SMIT, не способен работать в системе, пока его пароль не создан (с помощью SMIT или командой passwd). Вы можете создавать новых пользователей прежде, чем они необходимы и временно не создавать для них пароли, пока этим пользователям не требуется доступ к системе.

4. При добавлении нового пользователя:

4.1. Убедитесь, что пользователь понимает, как задать приемлемый с точки зрения безопасности пароль, и как изменить его начальный пароль. 
4.2. Объясните вашу стратегию относительно автоматических терминалов и операции блокировки по времени. 
4.3. Дайте новому пользователю письменную копию стратегии безопасности вашей организации. 
4.4. Попросите нового пользователя войти в систему. ОС попросит нового пользователя изменить пароль. Убедитесь, что он изменяет пароль.
4.5. Убедитесь, что пользователь знает где хранить его файлы (например, в директории /u/userid) - и где не хранить их (например в директории /tmp).
4.6. Проинструктируйте его по поводу опасности раскрытия (или дачи "взаймы") его пароля любому другому человеку.

5. Не позволите пользователям совместно использовать userid (совместно используя пароль) или UID (устанавливая несколько счетов с тем же самым UID).

6. При оказании помощи пользователю, не делайте su root из его сеанса. Если вы делаете это, вы используете его среду (с его PATH) и это открывает большое количество дефектов безопасности. Если вы всё же делаете su root из сеанса пользователя, то используйте полные имена пути для всех команд, которые вы используете при выполнении их как root.

7. Остерегайтесь пользователей, которые изменяют IFS (входной разделитель полей) в своих профилях. Не позволяйте им изменять файл /etc/profile. Хорошо осведомленный пользователь может проигрывать много умных приемов терминала с IFS и вызывать бесконечные проблемы.

8. Не поместите текущую директорию в PATH для root. Для отмены заданного по умолчанию PATH в заданном по умолчанию профиле (в файле /etc/profile) вы должны создать файл a.profile для root. a.profile находится в исходном каталоге пользователя.

9. Значение umask должно быть установлено для пользователей. Значение umask по умолчанию - 022, хотя значение 027 (отключает любой доступ "остальным") может быть лучше. Специфические значения umask могут быть помещены в индивидуальные файлы настроек пользователей $HOME/.profile (не забудьте, что пользователь может изменять его собственное значение umask в любое время).

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

11. Используйте tcbck ежедневно или по крайней мере еженедельно.

12. Модифицируйте профиль tcbck, когда важные файлы (из точки зрения защиты) или программы suid добавлены к системе.

13. Проверяйте файл /tmp/dailyreport ежедневно, если он существует.

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

Вторичный опознавательный шаг - метод для управления специфической программой  как часть процесса входа в систему специфического пользователя. (Эта терминология уникальна AIX.)

Вход в систему с двумя паролями

Один общий метод увеличения защиты входа в систему состоит в том, чтобы требовать от пользователя два пароля. Для того чтобы войти в систему должны присутствовать два различных человека (с двумя различными паролями). Два различных пароля связаны с двумя различными счетами.

Не имеется никакого способа, используя стандартные средства, поддерживать два пароля для одного счета. Вы можете определять вход в систему с двумя паролями определенным образом, устанавливая следующие параметры, используя SMIT:

SMIT Security and Users Users Change/Show Characteristics of a User *User NAME [alex] ... PRIMARY Authentication Method [SYSTEM,SYSTEM;serg]

Когда alex регистрируется в системе, в этом примере, его запросят ввести его пароль. Если он отвечает правильно, система запросит затем ввести пароль пользователя serg (конечно, alex мог бы знать оба пароля, но тогда теряется смысл входа в систему с двумя паролями).

Вы должны установить ПЕРВИЧНЫЙ Опознавательный Метод точно как показано выше. Параметр SYSTEM определяет, что должна использоваться обычная программа установления подлинности пароля. По умолчанию, она проверяет пароль регистрирующегося пользователя.

Второй параметр SYSTEM определяет вторую проверку. В этом случае имеется операнд ;serg, и проверяется пароль счета, определенного в этом операнде.

Файлы безопасности

Нижеследующие ASCII файлы содержат атрибуты пользователей и контроля доступа:

· /etc/passwd допустимые пользователи
· /etc/group допустимые группы
· /etc/security директория не доступная обычным пользователям
· /etc/security/passwd пароли пользователей
· /etc/security/user атрибуты пользователей, ограничения на пароли
· /etc/security/limits ограничения пользователей
· /etc/security/environ установки окружения пользователей
· /etc/security/login.cfg установки входа в систему
· /etc/security/group атрибуты групп

Файл /etc/passwd

Файл /etc/passwd является списком пользователей системы и некоторыми их атрибутами. Этот файл должен быть доступен для чтения всеми пользователями. Пример файла (фрагмент):

# catr /etc/passwd root:!:0:0::/:/bin/ksh daemon:!:1:1::/etc: bin:!:2:2::/bin: sys:!:3:3::/usr/sys: adm:!:4:4::/var/adm: uucp:!:5:5::/usr/lib/uucp: guest:!:100:100::/home/guest: nobody:!:4294967294:4294967294::/: lpd:!:104:9::/: alex:!:200:0:X7560 5th floor:/home/alex:/bin/ksh

Поля этого файла, разделяемые символом ":", следующие:

· имя пользователя - до 8-ми алфавитно-цифровых символов.
· пароль - в старых системах UNIX здесь содержался зашифрованный пароль. В AIX это поле содержит символ "!" как ссылка на файл /etc/security/passwd. Другими общими значениями этого поля может быть символ "*", который означает, что идентификатор пользователя неверный и это поле может быть пустым, что означает, что пароля нет.
· идентификатор пользователя - номер идентификатора пользователя.
· индетификатор группы - номер идентификатора группы вышеуказанного пользователя.
· полное имя - любой описательный текст для пользователя.
· директория -директория пользователя при входе в систему и инициирующее значение для переменной $HOME.
· login программа - оболочка пользователя при входе в систему и инициирующее значение для переменной $SHELL.

Файл /etc/security/passwd

Доступ к этому файлу есть только у пользователя root. Изменяется этот файл с помощью команд login, passwd, pwdadm и pwdck, исполняющихся с полномочиями root.

В этом файле хранятся зашифрованные пароли и связанная с ними информация. Этот файл имеет формат станз со станзами на каждого пользователя.

Пример файла (фрагмент):

# cat /etc/security/passwd root: password=92t.mzJBjlfbY lastupdate=668124164 flags= daemon: password=* bin: password=* : alex: password=q/qD6q.ss21x. lastupdate=666293529 flags=ADMCHG,ADMIN,NOCHECK

Допустимые значения:

· password зашифрованный пароль или символ "*" для заблокированных счетов или пустой пароль.
· lastupdate дата и время последнего обновления пароля в секундах начиная с 1 января 1970 года.
· flags ADMCHG - пароль может быть изменен только администратором или пользователем root. ADMIN - пароль пользователя может быть изменен только root. NOCHECK - ограничения пароля не имеют силы для этого пользователя.

Файл /etc/security/user

Пример файла (фрагмент):

#cat /etc/security/user default: admin=false login=true su=true daemon=true rlogin=true sugroups=ALL admgroups= ttys=ALL auth1=SYSTEM auth2=NONE tpath=nosak umask=022 expires=0 SYSTEM="compat" logintimes= pwdwarntime=0 account_locked=false loginretries=0 histexpire=0 histsize=0 minage=0 maxage=0 maxexpired=-1 minalpha=0 minother=0 minlen=0 mindiff=0 maxrepeats=8 dictionlist= pwdchecks=

Описание полей:

admin Определяется административный статус пользователя. Возможные значения true и false.
login Определяется то, может ли пользователь входить в систему. Возможные значения true и false.
su Определяется то, могут ли другие пользователи переключатся на этот счет командой su или нет. Возможные значения true и false.
daemon Определяется то, может ли пользователь исполнять программы пользуясь демоном cron или системным контроллером ресурсов (SRC). Возможные значения true и false.
rlogin Определяется то, можно ли получить доступ к счету пользователя используя удаленный вход в систему. Используется командами telnet и rlogin. Возможные значения true и false.
sugroups Определяются группы которые могут переключатся на этот счет пользователя. Если вы вставите символ "!" перед именем группы, ее пользователи наоборот будет исключены из возможности переключатся на этот счет. Возможные значения: список допустимых групп, разделенных запятыми, значение ALL или символ "*".
admgroups Список групп, которыми управляет пользователь. Значение: список доступных групп, разделенных запятыми.
ttys Определяются терминалы, с которых пользователю возможен доступ. Используя символ "!" перед именем терминала вы запретите использовать его для доступа пользователю. Возможные значения: список полных путей к устройствам, разделенный запятыми, значение ALL или символ "*".
auth1 Определяется первичный метод аутентификации для пользователя, который по умолчанию устанавливается для программы пароля. Этот метод аутентификации будут использовать программы login, telnet, rlogin и su. Для удвоенного входа в систему значением этого поля будет SYSTEM;NAME1,SYSTEM;NAME2.
auth2 Определяет для пользователя вторичный метод аутентификации.
tpath Определяет для пользователя характеристики доверенного пути. Возможные значения: nosak, notsh, always или on.
umask Определяет для пользователя значение переменной umask по умолчанию. Рекомендуется установить в 027.
expires Определяется время действительности счета пользователя. Возможные значения: дата допуска в формате MMDDHHMMYY или 0, если счет не имеет определенного времени допустимости. При значении 0101000070 счет отменен.
SYSTEM Определяются требования к аутентификации версии 4. Это поле используется для определения множественных или альтернативных методов аутентификации которые пользователь должен успешно пройти перед получением доступа к системе. Возможные значения:

files когда возможно только локальным пользователям иметь доступ к системе.
compat когда используется обычная процедура входа в систему и разрешается иметь доступ к системе как локальным пользователям так и пользователям NIS.
DCE используется аутентификация Распределенной Компьютерной Среды (Distributed Computing Enviroment, DCE).

logintimes Определяет время, когда пользователь может входить в систему. Значением является список времен, разделенный запятыми, в следующем формате: [!] [MMdd[-MMdd]]:hhmm-hhmm или [!] [MMdd[-MMdd][:hhmm-hhmm] или [!] [w[-w]]:hhmm-hhmm или [!] w[-w][:hhmm-hhmm] где, MM - номер месяца (00=январь, 11=декабрь), dd - день месяца, hh - часы дня (00-23), mm - минуты часа и w - день недели (0=воскресенье, 6=суббота).
pwdwarntime Количество дней перед сменой пароля когда появляется предупреждение пользователю с информацией о необходимости скорой смены пароля. Возможные значения: положительное целое число или 0 для выключения этой функции.
account_disable Устанавливается в true, если счет по умолчанию заблокирован и не может быть ис-пользован для входа в систему. В обратном случае устанавливается в false.
logintries Количество попыток неправильных входов в систему, после чего пользователь не имеет возможности войти в систему. Возможные значения: положительное целое число или 0 для выключения этой функции.
histexpire Определяет период в неделях в течении которого пользователь не может применить снова свой старый пароль. Возможные значения: целое число от 0 до 260. Рекомендованное значение - 26 (около 6-ти месяцев).
histsize Определяется количество старых паролей, которые не могут быть повторены. Возможные значения: целые числа от 0 до 50.
minage Определяется минимальное количество недель между сменами паролей. По умолчанию=0. Диапазон от 0 до 52. Рекомендуется оставить значение по умолчанию.
maxage Работает совместно с переменной pwdwarntime (см.выше). Определяет максимальное количество недель когда пароль является действующим. По умолчанию=0, что означает неограниченное время использования. Допустимый диапазон значений от 0 до 52.
maxexpired Определяется максимальное количество недель после истечения периода, указанного в переменной maxage, в течении которого пользователю дается возможность изменить свой пароль. По умолчанию=-1, что эквивалентно неограниченному сроку. Допустимый диапазон от -1 до 52.
minalpha Определяется минимальное количество алфавитных символов в пароле. По умолчанию=0. Диапазон - от 0 до 8.
minother Определяется минимальное количество неалфавитных символов в пароле. По умолчанию=0. Диапазон - от 0 до 8. Сумма значений параметров minalpha и minother должна не превышать 8. Если эта сумма больше 8 то значение параметра minother вычисляется как разница между 8 и значением параметра minalpha.
minlen Определяется минимальная длина пароля. По умолчанию=0. Диапазон - от 0 до 8. Минимальная длина пароля берется из значения этого параметра или из суммы значений параметров minalpha+minother, в зависимости от того, какая величина больше.
mindiff Определяется минимальное количество символов в новом пароле, которые не должны совпадать с символами в старом при его смене. По умолчанию=0. Возможные значения - от 0 до 8.
maxrepeats Определяется максимальное количество повторений одного символа в пароле. По умолчанию=8, что эквивалентно неограниченному количеству повторений. Возможные значения - от 0 до 8.
dictionlist Определяет словарь паролей используемый для проверки на "стойкость" нового пароля. Возможные значения: разделенный запятыми список абсолютных путей к файлам словарей. Файл словаря должен содержать по одному слову на строку, причем каждое слово не должно иметь пробелов ни впереди ни сзади. Слова могут содержать только 7-ми битные символы ASCII. Все словари и директории должны быть защищены от за-писи от всех пользователей, кроме root. По умолчанию не используется никакого файла словарей.
pwdchecks Определяется внешний ограничивающий метод используемый для проверки качества пароля. Возможные значения: разделенный запятыми список абсолютных путей методов проверки и/или путь к методу относительно директории /usr/lib. По умолчанию внешний ограничивающий метод проверки пароля не используется.

Файлы /etc/group и /etc/security/group

#more /etc/group system:!:0:root,alex staff:!:1:alex bin:!:2:root,bin sys:!:3:root,bin,sys adm:!:4:bin,adm uucp:!:5:uucp mail:!:6: security:!:7:root nobody:!:4294967294:nobody,lpd usr:!:100:guest accounts:!:200:alex

Поля в файле /etc/group следующие:

· группа до 8 алфавитно-цифровых символов.
· пароль не используется AIX 4-й версии и должен содержать "!" · групповой идентификатор
· члены разделенный запятыми список пользователей, членов группы.

#more /etc/security/group system: admin=true staff: admin=false : accounts: admin=false adms=alex

Файл /etc/security/group построен в формате станз для каждой группы. Возможные параметры:
· admin true или false, в зависимости от того административная группа или нет.
· adms разделенный запятыми список пользователей, которые являются администраторами группы. Если параметр admin=true, то этот параметр игнорируется, так как только root может управлять административной группой.

Файл /etc/security/login.cfg

default:
    :
    herald="\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nThis is the console. Restricted use only.\nlogin:
        logintimes=
        logindisable=0
        logininterval=0
        loginreenable=0
        logindelay=0

Именами станз являются имена портов.

Возможные параметры:

herald Определяется первое сообщение выдаваемое на экран перед приглашением войти в систему. Значением является строка. Если herald явно не определен, то используется herald по умолчанию из директории сообщений ассоциированных с тем языком, который установлен в файле /etc/environment.

logintimes Определяет период в течение которого пользователь может использовать порт для входа в систему.

logindisable Количество неуспешных попыток входа в систему после которых порт будет заблокирован. Используется совместно с параметром logininterval (см.ниже). 

logininterval Число секунд в течении которых порт будет заблокирован при достижении количества неуспешных попыток входа в систему согласно значения, установленного в параметре logindisable.

loginreenable Количество минут после прошествия которых заблокированный порт автоматически разблокируется.

logindelay Время задержки в секундах между попытками неудачного входа в систему. Задержка увеличивается с каждой попыткой на эту величину. То есть если значение у этого параметра - 2, то первая задерка будет 2 секунды, вторая - 4, третья - 6 секунд и так далее.

К содержанию   Вперед   Назад