ОС 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 является списком пользователей системы и некоторыми их атрибутами. Этот файл должен быть доступен для чтения всеми пользователями. Пример файла (фрагмент):
# 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.
Доступ к этому файлу есть только у пользователя 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 - ограничения пароля не имеют силы для
этого пользователя.
Пример файла (фрагмент):
#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. По умолчанию внешний
ограничивающий метод проверки пароля не
используется.
#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 может
управлять административной группой.
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 секунд и так далее.