Системное администрирование ОС Solaris 10

Ролевое управление доступом (RBAC). Вопросы безопасности

Разбить на страницы
Показывать лекцию целиком

Зачем нужно ролевое управление доступом

Слабым местом систем UNIX с давних пор была невозможность делегировать часть полномочий системного администратора другим пользователям. Мы хорошо знаем, как передаются полномочия в системах Windows: существуют предопределенные группы, которым дано право выполнять некоторые определенные администраторские действия (Printer Operator, Backup Operator и т.п.) В UNIX для делегирования части администраторских прав в свое время использовалась программа sudo. Второй выход был в том, чтобы установить в правах доступа к некоей административной программе типа useradd бит SUID и доверенный пользователь мог бы запустить ее от имени владельца, т.е. пользователя root.

Оба этих решения не являются совершенными: некоторые виды операций трудно выполнить, имея право запуска отдельных программ. Например, управление учетными записями пользователей не ограничивается их добавлением, и разрешения запускать useradd недостаточно для доверенного пользователя, чтобы помогать системному администратору во всем, что связано с управлением пользователями.

В Solaris начиная с версии 8 была введена новая для UNIX система управления доступом – RBAC (role-based access control). Основанное на ролях управление доступом имеет такую же функциональность, как разнообразие групп с некоторыми административными правами в Windows. Смысл ролей в том, что любому пользователю может быть назначена роль. Ответственность и право выполнения части администраторских функций делегированы роли, и пользователь имеет право ее играть.

Что такое роль

Физически роль представляет собой учетную запись специального типа, пользователь не может зайти в систему, указав имя роли, но может "переключиться в роль", дав команду

su имя_роли

Можно сказать, что роль – это псевдопользователь, который обладает правами, большими, чем обычный пользователь, но меньшими, чем root. Каждой роли могут быть делегированы те или иные права путем назначения ей профилей прав или авторизаций (наборов прав).

Компоненты RBAC

Рассмотрим все компоненты RBAC последовательно, начиная с пользователей и ролей.

Всего существует пять компонент: пользователи, роли, профили, авторизации, команды.

Пользователи

Пользователи – это те самые обычные пользователи. Они имеют самые обычные учетные записи. Пользователям может быть дано право играть ту или иную роль, согласно записям в файле /etc/user_attr.

Роли

Роли могут быть назначены пользователям. Предопределенных ролей не существует, но можно легко создать новые роли, назначив им один из трех предопределенных профилей. Предполагается, что системный администратор будет самостоятельно создавать роли и назначать их, по мере необходимости, тем или иным пользователям. Соответствие ролей и пользователей (т.е. разрешение конкретному пользователю играть ту или иную роль) описывается файлом /etc/user_attr:

# Copyright (c) 1999-2001 by Sun Microsystems, Inc. All rights reserved.
#
# /etc/user_attr
#
# user attributes. see user_attr(4)
#
#pragma ident "@(#)user_attr 1.5 01/12/11 SMI"
#
root::::auths=solaris.*,solaris.grant;profiles=All
lp::::profiles=Printer Management
adm::::profiles=Log Management
printmgr::::type=role;profiles=All

Значащих полей в этом файле всего два: имя пользователя (или роли) и атрибуты. Среди атрибутов выделяется атрибут type: он имеет значение role для записи о роли и normal – о пользователе. По умолчанию подразумевается запись о пользователе.

Формат записей в /etc/user_attr следующий:

user:qualifier:res1:res2:attr

где:

  • user – имя пользователя, такое, как в /etc/passwd ;
  • qualifier – зарезервировано на будущее;
  • res1 – зарезервировано на будущее;
  • res2 – зарезервировано на будущее;
  • attr – атрибуты, разделенные точкой с запятой, вида имя=значение ; допустимые атрибуты – это auths, profiles, roles, type, and project.
  • Атрибут auths предназначен для перечисления предопределенных прав (authorizations), в том числе и групп прав, где значение "все возможные" представляется символом "звездочка" ( * ), например,

    auths=solaris.printer.*

    обозначает все возможные права набора прав solaris.printer.

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

    roles=printmgrs, useradmin

    Атрибут type служит для определения того, относится ли текущая запись к обычному пользователю или описывает роль. Для обычного пользователя следует указывать атрибут

    type=normal

    и для роли

    type=role

    Аналогичным образом может быть назначен проект ( project ) и профиль прав ( profiles ) для пользователя или роли.

    Профили прав

    Профиль в данном контексте – это набор свойств, который можно назначить той или иной роли. В англоязычной литературе профиль, используемый в RBAC, называется профилем прав (Rights Profile). Профиль прав объединяет различные авторизации, чтобы можно было назначить той или иной роли логически связанный набор авторизаций (например, профиль Operator может быть назначен роли, которая нужна для выполнения простых задач администрирования: выполнения резервных копий, управления доступом к принтеру и свойствами принтера). Информация о профилях хранится в файле /etc/security/prof_attr, поля в котором имеют следующие значения:

    profname:res1:res2:desc:attr
  • profname – это имя профиля; регистр букв в имени имеет значение;
  • res1, res2 – зарезервированные поля;
  • desc – описание профиля, в котором указывается смысл данного профиля; это описание должно быть пригодно в качестве пояснения назначения профиля для пользователей приложений высокого уровня (типа Solaris Management Console);
  • attr – атрибуты в таком же виде, как и в других файлах RBAC, допустимые атрибуты – это auths и help. Атрибут auths предполагает указание в качестве его значения списка наборов прав (авторизаций) из числа определенных в файле /etc/security/auth_attr. Атрибут help требует указания страницы в формате HTML, содержащей справку по данному профилю.
  • В нижеследующем примере файла /etc/security/prof_attr опущены некоторые строки, каждый профиль прав описан отдельным абзацем, поскольку в реальном файле он описывается одной длинной строкой, которая не умещается на книжной странице:

    #
    # Copyright (c) 1999-2001 by Sun Microsystems, Inc. All rights reserved.
    #
    # /etc/security/prof_attr
    #
    # profiles attributes. see prof_attr(4)
    #
    #ident "@(#)prof_attr 1.1 01/10/23 SMI"
    #
    iPlanet Directory Management:::Manage the iPlanet directory
    server:help=RtiDSMngmnt.html
    Media Restore:::Restore files and file systems from backups:help=RtMediaRestore.
    html
    Name Service Security:::Security related name service scripts/commands:help=RtNameS
    erviceSecure.html
    Device Management:::Control Access to Removable Media:auths=solaris.
    device.*,solaris.admin.serialmgr.*;help=RtDeviceMngmnt.html
    Media Backup:::Backup files and file systems:help=RtMediaBkup.html
    User Security:::Manage passwords, clearances:auths=solaris.role.*,solaris.
    profmgr.*,solaris.admin.usermgr.*;help=RtUserSecurity.html
    Audit Control:::Configure BSM auditing:auths=solaris.audit.config,solaris.jobs.
    admin,solaris.admin.logsvc.purge,solaris.admin.logsvc.read;help=RtAuditCtrl.html
    User Management:::Manage users, groups, home directory:auths=solaris.profmgr.
    read,solaris.admin.usermgr.write,solaris.admin.usermgr.read;help=RtUserMngmnt.html
    Mail Management:::Manage sendmail  queues:help=RtMailMngmnt.html
    Printer Management:::Manage printers, daemons, spooling:help=RtPrntAdmin.
    html;auths=solaris.admin.printer.read,solaris.admin.printer.modify,solaris.admin.
    printer.delete
    Log Management:::Manage log files:help=RtLogMngmnt.html
    Audit Review:::Review BSM auditing logs:auths=solaris.audit.
    read;help=RtAuditReview.html
    Software Installation:::Add application software to the
    system:help=RtSoftwareInstall.html;auths=solaris.admin.prodreg.read,solaris.admin.
    prodreg.modify,solaris.admin.prodreg.delete,solaris.admin.dcmgr.admin,solaris.admin.
    dcmgr.read,solaris.admin.patchmgr.*
    Network Security:::Manage network and host security:help=RtNetSecure.
    html;auths=solaris.network.*
    Operator:::Can perform simple administrative tasks:profiles=Printer
    Management,Media Backup,All;help=RtOperator.html
    FTP Management:::Manage the FTP server:help=RtFTPMngmnt.html
    Project Management:::Manage Solaris projects:auths=solaris.project.read,solaris.
    project.write;help=RtProjManagement.html
    DHCP Management:::Manage the DHCP service:auths=solaris.
    dhcpmgr.*;help=RtDHCPMngmnt.html
    System Administrator:::Can perform most non-security administrative
    tasks:profiles=Audit Review,Printer Management,Cron Management,Device
    Management,File System Management,Mail Management,Maintenance and Repair,Media
    Backup,Media Restore,Name Service Management,Network Management,Object
    Access Management,Process Management,Software Installation,User
    Management,All;help=RtSysAdmin.html
    Basic Solaris User:::Automatically assigned rights:auths=solaris.profmgr.
    read,solaris.jobs.users,solaris.mail.mailq,solaris.admin.usermgr.read,solaris.admin.
    logsvc.read,solaris.admin.fsmgr.read,solaris.admin.serialmgr.read,solaris.admin.
    diskmgr.read,solaris.admin.procmgr.user,solaris.compsys.read,solaris.admin.printer.
    read,solaris.admin.prodreg.read,solaris.admin.dcmgr.read,solaris.snmp.read,solaris.
    project.read,solaris.admin.patchmgr.read,,solaris.network.hosts.read,solaris.admin.
    volmgr.read;profiles=All;help=RtDefault.html

    Полномочия

    Полномочие (в предыдущем издании этой книги мы использовали термин "авторизация", но "полномочие" – более понятный термин, да и по-русски так лучше) представляет собой право, включенное в профиль или данное пользователю, выполнять определенные действия в системе. В Solaris доступны только предопределенные полномочия, добавить новое нельзя. Список полномочий хранится в файле /etc/security/auth_attr:

    #
    # Copyright (c) 2001 by Sun Microsystems, Inc. All rights reserved.
    #
    # /etc/security/auth_attr
    #
    # authorization attributes. see auth_attr(4)
    #
    #pragma ident "@(#)auth_attr 1.1 01/03/19 SMI"
    #
    solaris.admin.volmgr.:::Logical Volume Manager::
    solaris.admin.volmgr.write:::Manage Logical Volumes::help=AuthVolmgrWrite.html
    solaris.admin.volmgr.read:::View Logical Volumes::help=AuthVolmgrRead.html
    solaris.admin.printer.modify:::Update Printer Information::help=AuthPrinter
    Modify.html
    solaris.admin.serialmgr.read:::View Serial Ports::help=AuthSerialmgrRead.html
    solaris.admin.logsvc.:::Log Viewer::help=AuthLogsvcHeader.html
    solaris.admin.procmgr.user:::Manage Owned Processes::help=AuthProcmgrUser.html
    solaris.admin.usermgr.read:::View Users and Roles::help=AuthUsermgrRead.html
    solaris.profmgr.:::Rights::help=ProfmgrHeader.html
    solaris.admin.procmgr.admin:::Manage All Processes::help=AuthProcmgrAdmin.html
    solaris.admin.logsvc.write:::Manage Log Settings::help=AuthLogsvcWrite.html
    solaris.admin.serialmgr.:::Serial Port Manager::help=AuthSerialmgrHeader.html
    solaris.admin.fsmgr.write:::Mount and Share Files::help=AuthFsmgrWrite.html
    solaris.admin.dcmgr.read:::View OS Services, Patches and Diskless Clients::
    help=AuthDcmgrRead.html
    solaris.device.cdrw:::CD-R/RW Recording Authorizations::help=DevCDRW.html
    solaris.admin.usermgr.:::User Accounts::help=AuthUsermgrHeader.html
    solaris.role.delegate:::Assign Owned Roles::help=AuthRoleDelegate.html
    solaris.admin.patchmgr.read:::View Patches::help=AuthPatchmgrRead.html
    solaris.project.read:::View Projects::help=AuthProjmgrRead.html
    solaris.profmgr.write:::Manage Rights::help=AuthProfmgrWrite.html
    solaris.system.shutdown:::Shutdown the System::help=SysShutdown.html
    solaris.device.grant:::Delegate Device Administration::help=DevGrant.html
    solaris.:::All Solaris Authorizations::help=AllSolAuthsHeader.html
    solaris.project.write:::Manage Projects::help=AuthProjmgrWrite.html
    solaris.admin.serialmgr.modify:::Manage Serial
    Ports::help=AuthSerialmgrModify.html
    solaris.admin.patchmgr.:::Patch Manager::
    solaris.admin.diskmgr.write:::Manage Disks::help=AuthDiskmgrWrite.html
    solaris.device.revoke:::Revoke or Reclaim Device::help=DevRevoke.html
    solaris.jobs.grant:::Delegate Cron  At Administration::help=JobsGrant.html
    solaris.dhcpmgr.write:::Modify DHCP Service Configuration::help=DhcpmgrWrite.
    html
    solaris.network.hosts.write:::Manage Computers and Networks::help=Network
    HostsWrite.html
    solaris.mail.mailq:::Mail Queue::help=MailQueue.html
    solaris.admin.dcmgr.clients:::Manage Diskless
    Clients::help=AuthDcmgrClients.html
    solaris.project.:::Solaris Projects::
    solaris.admin.logsvc.read:::View Log Files::help=AuthLogsvcRead.html
    solaris.admin.fsmgr.read:::View Mounts and Shares::help=AuthFsmgrRead.html
    solaris.admin.fsmgr.:::Mounts and Shares::help=AuthFsmgrHeader.html
    solaris.jobs.user:::Manage Owned Jobs::help=AuthJobsUser.html
    solaris.role.assign:::Assign All Roles::help=AuthRoleAssign.html
    solaris.network.hosts.:::Computers and Networks::help=NetworkHostsHeader.html
    solaris.admin.usermgr.write:::Manage Users::help=AuthUsermgrWrite.html
    solaris.compsys.read:::View Computer System Information::help=AuthCompSys
    Read.html
    solaris.audit.:::Audit Management::help=AuditHeader.html
    solaris.profmgr.read:::View Rights::help=AuthProfmgrRead.html
    solaris.device.config:::Configure Device Attributes::help=DevConfig.html
    solaris.profmgr.delegate:::Assign Owned Rights::help=AuthProfmgrDelegate.html
    solaris.admin.printer.delete:::Delete Printer Information::help=AuthPrinter
    Delete.html
    solaris.admin.dcmgr.admin:::Manage OS Services and
    Patches::help=AuthDcmgrAdmin.html
    solaris.admin.printer.:::Printer Information::help=AuthPrinterHeader.html
    solaris.admin.diskmgr.:::Disk Manager::help=AuthDiskmgrHeader.html
    solaris.role.write:::Manage Roles::help=AuthRoleWrite.html
    solaris.role.:::Roles::help=RoleHeader.html
    solaris.admin.patchmgr.write:::Add and Remove
    Patches::help=AuthPatchmgrWrite.html
    solaris.mail.:::Mail::help=MailHeader.html
    solaris.admin.procmgr.:::Process Manager::help=AuthProcmgrHeader.html
    solaris.device.allocate:::Allocate Device::help=DevAllocate.html
    solaris.system.:::Machine Administration::help=SysHeader.html
    solaris.compsys.write:::Manage Computer System Information::help=AuthCompSys
    Write.html
    solaris.compsys.:::Computer System Information::help=AuthCompSysHeader.html
    solaris.network.hosts.read:::View Computers and
    Networks::help=NetworkHostsRead.html
    solaris.device.:::Device Allocation::help=DevAllocHeader.html
    solaris.snmp.:::SNMP Management::help=AuthSnmpHeader.html
    solaris.admin.dcmgr.:::OS Server Manager::help=AuthDcmgrHeader.html
    solaris.dhcpmgr.:::DHCP Service Management::help=DhcpmgrHeader.html
    solaris.login.enable:::Enable Logins::help=LoginEnable.html
    solaris.admin.logsvc.purge:::Remove Log Files::help=AuthLogsvcPurge.html
    solaris.audit.read:::Read Audit Trail::help=AuditRead.html
    solaris.login.remote:::Remote Login::help=LoginRemote.html
    solaris.system.date:::Set Date  Time::help=SysDate.html
    solaris.admin.serialmgr.delete:::Delete Serial
    Ports::help=AuthSerialmgrDelete.html
    solaris.audit.config:::Configure Auditing::help=AuditConfig.html
    solaris.jobs.admin:::Manage All Jobs::help=AuthJobsAdmin.html
    solaris.grant:::Grant All Solaris Authorizations::help=PriAdmin.html
    solaris.jobs.:::Job Scheduler::help=JobHeader.html
    solaris.profmgr.execattr.write:::Manage Commands::help=AuthProfmgrExecattr
    Write.html
    solaris.admin.usermgr.pswd:::Change Password::help=AuthUserMgrPswd.html
    solaris.login.:::Login Control::help=LoginHeader.html
    solaris.snmp.write:::Set SNMP Information::help=AuthSnmpWrite.html
    solaris.admin.printer.read:::View Printer Information::help=AuthPrinterRead.
    html
    solaris.profmgr.assign:::Assign All Rights::help=AuthProfmgrAssign.html
    solaris.snmp.read:::Get SNMP Information::help=AuthSnmpRead.html
    solaris.admin.diskmgr.read:::View Disks::help=AuthDiskmgrRead.html

    Значения полей в этом файле таковы:

    name:res1:res2:short_desc:long_desc:attr

    name – обязательное поле, имя набора прав (полномочия). Это уникальное имя, которое получается из комбинации префикса и суффикса, где префикс – это часть имени до самой правой точки.

    Префикс наборов прав, придуманных компанией Sun, всегда начинается со слова .)

    Суффикс – это слово, определяющее детальный смысл авторизации. Слово grant предполагает право собладающего этой авторизацией пользователя делегировать свои наборы прав (авторизации) другим.

    Команды

    Файл /etc/security/exec_attr представляет собой базу данных атрибутов запуска программ, ассоциированных с тем или иным профилем (из prof_attr ).

    # execution attributes for profiles. see exec_attr(4)
    #
    #pragma ident "@(#)exec_attr 1.1 01/10/23 SMI"
    #
    #
    iPlanet Directory Management:suser:cmd:::/usr/sbin/
    directoryserver:uid=0
    Software Installation:suser:cmd:::/usr/bin/pkgparam:uid=0
    Network Management:suser:cmd:::/usr/sbin/in.named:uid=0
    File System Management:suser:cmd:::/usr/sbin/mount:uid=0
    FTP Management:suser:cmd:::/usr/sbin/ftprestart:euid=0
    Software Installation:suser:cmd:::/usr/bin/pkgtrans:uid=0
    Name Service Security:suser:cmd:::/usr/bin/nisaddcred:euid=0
    Mail Management:suser:cmd:::/usr/sbin/makemap:euid=0
    Software Installation:suser:cmd:::/usr/sbin/install:euid=0
    Process Management:suser:cmd:::/usr/bin/crontab:euid=0
    Audit Review:suser:cmd:::/usr/sbin/praudit:euid=0
    Name Service Security:suser:cmd:::/usr/sbin/ldapclient:uid=0
    Media Backup:suser:cmd:::/usr/bin/mt:euid=0

    Формат записей в файле /etc/security/exec_attr предполагает обязательное указание имени профиля прав, жестко установленных значений полей policy и cmd, идентификатора и, при необходимости, атрибутов.

    name:policy:type:res1:res2:id:attr
  • name – имя профиля прав (помните, регистр букв в имени важен!).
  • policy – политика, ассоциированная с профилем прав; единственное допустимое значение этого поля в настоящее время – suser.
  • тype – тип объекта, определенного в данной записи; единственное допустимое значение этого поля в настоящее время – cmd.
  • id – строка, которая является уникальным идентификатором объекта, описанного в данной записи; для типа cmd этот идентификатор, кроме того, является полным именем файла выполняемой программы или символом звездочка ( * ), который разрешает запустить любую команду. Можно указывать звездочку в конце полного имени файла, что будет означать любую программу в соответствующем каталоге.
  • аttr – атрибуты вида имя=значение, разделенные точкой с запятой; допустимые варианты атрибутоов: euid, uid, egid, and gid.
  • Все компоненты RBAC могут быть использованы как в виде файлов, так и в виде карт NIS или таблиц NIS+. Соответственно, в файле /etc/nsswitch.conf понадобится указать порядок обращения к различным источникам.

    Итак, схема назначений прав в системе ролей следующая: определенные программы могут быть запущены не только пользователем root, что традиционно, но и другими пользователями. Для этого существуют полномочия ( authorizations ), которые могут быть даны напрямую пользователям (что нежелательно с организационной точки зрения) или профилям прав. Профиль прав, представляющий собой набор определенных прав, назначается роли. Пользователь может претендовать на то, что он будет играть ту или иную роль, если он знает пароль этой роли и может "перевоплотиться" в нее с помощью команды su. Рис. 9.1 иллюстрирует взаимоотношения компонент RBAC между собой.

    (рис 9.1) Отношения между компонентами RBAC

    Команды, поддерживающие роли

    Следующие команды проверяют права (authorizations) пользователя, который пытается их выполнить, и поддерживают систему RBAC. Это значит, что выполнить эти команды может не только root, но и другие пользователи, которые начали играть определенную роль, "переключившись" в нее.

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

  • все программы, запускаемые внутри Solaris Management Console;
  • программы запланированного запуска at, atq, batch, crontab ;
  • команды, связанные с работой физических устройств – allocate, deallocate, list_devices, cdrw.
  • Команды управления ролями

    Управление ролями производится путем редактирования файлов в каталоге /etc/security или посредством программ roleadd, rolemod и roledel. Кроме того, управлять ролями и назначением прав в RBAC можно с помощью Solaris Management Console.

    Можно, например, добавить роль printmgr с назначением прав по умолчанию:

    roleadd printmgr

    а с помощью команды

    roleadd –D

    эти самые права по умолчанию можно увидеть воочию:

    roleadd –D
    group=other,1 project=default,3 basedir=/home
    skel=/etc/skel shell=/bin/pfsh inactive=0
    expire= auths= profiles=All

    Для выполнения команд, предполагающих использование ролей, следует воспользоваться специальными командными процессорами, в которых реализована работа с ролями. Имеется набор таких командных процессоров, функционально эквивалентных своим "безролевым" аналогам: /bin/pfsh, /bin/pfcsh, or /bin/pfksh. Эти командные процессоры следует назначать в качестве login shell для ролей.

    Управление ролями в Solaris Management Console

    В Solaris Management Console возможно управление ролями (пункт Administrative Roles) в графическом интерфейсе. Для управления потребуется ввести имя и пароль роли, которая имеет право на такое администрирование (часто это пользователь root ).

    Рис. 9.2 иллюстрирует сказанное: в главном меню Solaris Management Console следует выбрать Users, а для администрирования ролей в открывшемся окне справа – Administrative Roles.

    (рис 9.2) Управдение ролями в Solaris Management Console

    Дополнительные средства обеспечения безопасности

    Аудит файлов (BART)

    Одним из самых простых и эффективных средств наблюдения за системой является инструмент bart (Basic Audit and Reporting Tool). С помощью этой программы вы сможете создавать информационную базу контрольных сумм важных файлов. Ежедневное сравнение контрольных сумм файлов поможет обнаружить неожиданную модификацию настроек злоумышленником или ошибочно работающим приложением. Определите периодичность проверок сами, лавируя между чрезмерными накладными расходами на безопасность и приемлемым временем реакции на вторжение в систему – можно запускать проверку даже ежеминутно.

    Программа bart проверяет целостность файлов по нескольким параметрам:

  • uid, gid, права доступа, содержимое;
  • время модификации, размер, тип;
  • проводит сравнение файлов созданных в разное время.
  • Предположим, файл rules в текущем каталоге содержит инструкции программе bart, какие каталоги следует проверять при запуске:

    cat ./rules
    /etc
    CHECK all

    Запустим bart первый раз – для создания начальной информационной базы, которую будем хранить в файле oldManifest (логично выполнить эту команду после установки и начальной настройки системы, а затем повторять после внесения изменений в настройки – т.е. в файлы, которые находятся в /etc ):

    find /etc | bart create -I > oldManifest

    Теперь, по прошествии некоторого времени, запустим создание новой информационной базы и сравнение – и тут нам пригодится файл rules с инструкциями, который мы заранее создали:

    find /etc | bart create -I > newManifest
    bart compare -r ./rules ./oldManifest ./newManifest

    Оказывается, за это время что-то изменилось:

    /etc/user_attr:
    size control:28268 test:23520
    acl control:user::rw-,group::rw-,mask:r-x,other:r—
    test:user::rw-,group::rw-,mask:r-x,other:rwcontents
    control:28dd3a3af2fcc103f422993de5b162f3
    test:28893a3af2fcc103f422993de5b162f3

    Теперь нам остается выяснить, было ли это изменение санкционированным, или оно произошло по чьей-то злой воле.

    Более подробно об автоматизации проверки целостности файлов с помощью bart можно прочесть в документе по адресу http://www.sun. com/blueprints/0305/819-2259.pdf.

    Изучение файлов протоколов

    Solaris приспособлен сообщать системному администратору обо всех проблемах, которые возникают при работе системы. Основной источник информации – это файлы протоколов. Во всех версиях Solaris следует наблюдать за сообщениями в файле /var/adm/messages (это аналог /var/log/messages в Linux и FreeBSD) и в файле /var/log/syslog. Кроме этого, в файле /etc/syslog.conf можно определить и другие файлы для протоколирования событий в системе и приложениях.

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

    Вручную

    Изучение файлов протоколов можно выполнять вручную (т.е. с помощью вывода этих файлов на экран – для этого пригодны команды more, less, pg или любой текстовый редактор).

    Скриптом

    Для анализа файлов протоколов можно приспособить скрипт на том языке, на котором вам комфортнее обрабатывать тексты. Я предпочитаю использовать perl (поставляется в дистрибутиве Solaris 10), но можно использовать также awk, php или любой другой.

    Инструменты графического режима

    В графической среде GNOME для просмотра файлов протоколов можно использовать инструмент gnome-system-log, легко вызываемый из меню All Applications->System Tools (рис. 9.3).

    (рис 9.3) Программа просмотра файлов протоколов в GNOME

    Объявления об уязвимостях

    Хорошим стилем администрирования является не только своевременное обновление системы и установка требуемых заплаток, но и отслеживание новостей, связанных с безопасностью. Уже многие годы в этом помогают рассылки и новости, на которые можно подписаться на специализированных веб-сайтах, например, http://www.cert.org и http://sans.org.

    Страницы:

    Зачем нужно ролевое управление доступом

    Слабым местом систем UNIX с давних пор была невозможность делегировать часть полномочий системного администратора другим пользователям. Мы хорошо знаем, как передаются полномочия в системах Windows: существуют предопределенные группы, которым дано право выполнять некоторые определенные администраторские действия (Printer Operator, Backup Operator и т.п.) В UNIX для делегирования части администраторских прав в свое время использовалась программа sudo. Второй выход был в том, чтобы установить в правах доступа к некоей административной программе типа useradd бит SUID и доверенный пользователь мог бы запустить ее от имени владельца, т.е. пользователя root.

    Оба этих решения не являются совершенными: некоторые виды операций трудно выполнить, имея право запуска отдельных программ. Например, управление учетными записями пользователей не ограничивается их добавлением, и разрешения запускать useradd недостаточно для доверенного пользователя, чтобы помогать системному администратору во всем, что связано с управлением пользователями.

    В Solaris начиная с версии 8 была введена новая для UNIX система управления доступом – RBAC (role-based access control). Основанное на ролях управление доступом имеет такую же функциональность, как разнообразие групп с некоторыми административными правами в Windows. Смысл ролей в том, что любому пользователю может быть назначена роль. Ответственность и право выполнения части администраторских функций делегированы роли, и пользователь имеет право ее играть.

    Что такое роль

    Физически роль представляет собой учетную запись специального типа, пользователь не может зайти в систему, указав имя роли, но может "переключиться в роль", дав команду

    su имя_роли

    Можно сказать, что роль – это псевдопользователь, который обладает правами, большими, чем обычный пользователь, но меньшими, чем root. Каждой роли могут быть делегированы те или иные права путем назначения ей профилей прав или авторизаций (наборов прав).

    Компоненты RBAC

    Рассмотрим все компоненты RBAC последовательно, начиная с пользователей и ролей.

    Всего существует пять компонент: пользователи, роли, профили, авторизации, команды.

    Пользователи

    Пользователи – это те самые обычные пользователи. Они имеют самые обычные учетные записи. Пользователям может быть дано право играть ту или иную роль, согласно записям в файле /etc/user_attr.

    Роли

    Роли могут быть назначены пользователям. Предопределенных ролей не существует, но можно легко создать новые роли, назначив им один из трех предопределенных профилей. Предполагается, что системный администратор будет самостоятельно создавать роли и назначать их, по мере необходимости, тем или иным пользователям. Соответствие ролей и пользователей (т.е. разрешение конкретному пользователю играть ту или иную роль) описывается файлом /etc/user_attr:

    # Copyright (c) 1999-2001 by Sun Microsystems, Inc. All rights reserved.
    #
    # /etc/user_attr
    #
    # user attributes. see user_attr(4)
    #
    #pragma ident "@(#)user_attr 1.5 01/12/11 SMI"
    #
    root::::auths=solaris.*,solaris.grant;profiles=All
    lp::::profiles=Printer Management
    adm::::profiles=Log Management
    printmgr::::type=role;profiles=All

    Значащих полей в этом файле всего два: имя пользователя (или роли) и атрибуты. Среди атрибутов выделяется атрибут type: он имеет значение role для записи о роли и normal – о пользователе. По умолчанию подразумевается запись о пользователе.

    Формат записей в /etc/user_attr следующий:

    user:qualifier:res1:res2:attr

    где:

  • user – имя пользователя, такое, как в /etc/passwd ;
  • qualifier – зарезервировано на будущее;
  • res1 – зарезервировано на будущее;
  • res2 – зарезервировано на будущее;
  • attr – атрибуты, разделенные точкой с запятой, вида имя=значение ; допустимые атрибуты – это auths, profiles, roles, type, and project.
  • Атрибут auths предназначен для перечисления предопределенных прав (authorizations), в том числе и групп прав, где значение "все возможные" представляется символом "звездочка" ( * ), например,

    auths=solaris.printer.*

    обозначает все возможные права набора прав solaris.printer.

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

    roles=printmgrs, useradmin

    Атрибут type служит для определения того, относится ли текущая запись к обычному пользователю или описывает роль. Для обычного пользователя следует указывать атрибут

    type=normal

    и для роли

    type=role

    Аналогичным образом может быть назначен проект ( project ) и профиль прав ( profiles ) для пользователя или роли.

    Профили прав

    Профиль в данном контексте – это набор свойств, который можно назначить той или иной роли. В англоязычной литературе профиль, используемый в RBAC, называется профилем прав (Rights Profile). Профиль прав объединяет различные авторизации, чтобы можно было назначить той или иной роли логически связанный набор авторизаций (например, профиль Operator может быть назначен роли, которая нужна для выполнения простых задач администрирования: выполнения резервных копий, управления доступом к принтеру и свойствами принтера). Информация о профилях хранится в файле /etc/security/prof_attr, поля в котором имеют следующие значения:

    profname:res1:res2:desc:attr
  • profname – это имя профиля; регистр букв в имени имеет значение;
  • res1, res2 – зарезервированные поля;
  • desc – описание профиля, в котором указывается смысл данного профиля; это описание должно быть пригодно в качестве пояснения назначения профиля для пользователей приложений высокого уровня (типа Solaris Management Console);
  • attr – атрибуты в таком же виде, как и в других файлах RBAC, допустимые атрибуты – это auths и help. Атрибут auths предполагает указание в качестве его значения списка наборов прав (авторизаций) из числа определенных в файле /etc/security/auth_attr. Атрибут help требует указания страницы в формате HTML, содержащей справку по данному профилю.
  • В нижеследующем примере файла /etc/security/prof_attr опущены некоторые строки, каждый профиль прав описан отдельным абзацем, поскольку в реальном файле он описывается одной длинной строкой, которая не умещается на книжной странице:

    #
    # Copyright (c) 1999-2001 by Sun Microsystems, Inc. All rights reserved.
    #
    # /etc/security/prof_attr
    #
    # profiles attributes. see prof_attr(4)
    #
    #ident "@(#)prof_attr 1.1 01/10/23 SMI"
    #
    iPlanet Directory Management:::Manage the iPlanet directory
    server:help=RtiDSMngmnt.html
    Media Restore:::Restore files and file systems from backups:help=RtMediaRestore.
    html
    Name Service Security:::Security related name service scripts/commands:help=RtNameS
    erviceSecure.html
    Device Management:::Control Access to Removable Media:auths=solaris.
    device.*,solaris.admin.serialmgr.*;help=RtDeviceMngmnt.html
    Media Backup:::Backup files and file systems:help=RtMediaBkup.html
    User Security:::Manage passwords, clearances:auths=solaris.role.*,solaris.
    profmgr.*,solaris.admin.usermgr.*;help=RtUserSecurity.html
    Audit Control:::Configure BSM auditing:auths=solaris.audit.config,solaris.jobs.
    admin,solaris.admin.logsvc.purge,solaris.admin.logsvc.read;help=RtAuditCtrl.html
    User Management:::Manage users, groups, home directory:auths=solaris.profmgr.
    read,solaris.admin.usermgr.write,solaris.admin.usermgr.read;help=RtUserMngmnt.html
    Mail Management:::Manage sendmail  queues:help=RtMailMngmnt.html
    Printer Management:::Manage printers, daemons, spooling:help=RtPrntAdmin.
    html;auths=solaris.admin.printer.read,solaris.admin.printer.modify,solaris.admin.
    printer.delete
    Log Management:::Manage log files:help=RtLogMngmnt.html
    Audit Review:::Review BSM auditing logs:auths=solaris.audit.
    read;help=RtAuditReview.html
    Software Installation:::Add application software to the
    system:help=RtSoftwareInstall.html;auths=solaris.admin.prodreg.read,solaris.admin.
    prodreg.modify,solaris.admin.prodreg.delete,solaris.admin.dcmgr.admin,solaris.admin.
    dcmgr.read,solaris.admin.patchmgr.*
    Network Security:::Manage network and host security:help=RtNetSecure.
    html;auths=solaris.network.*
    Operator:::Can perform simple administrative tasks:profiles=Printer
    Management,Media Backup,All;help=RtOperator.html
    FTP Management:::Manage the FTP server:help=RtFTPMngmnt.html
    Project Management:::Manage Solaris projects:auths=solaris.project.read,solaris.
    project.write;help=RtProjManagement.html
    DHCP Management:::Manage the DHCP service:auths=solaris.
    dhcpmgr.*;help=RtDHCPMngmnt.html
    System Administrator:::Can perform most non-security administrative
    tasks:profiles=Audit Review,Printer Management,Cron Management,Device
    Management,File System Management,Mail Management,Maintenance and Repair,Media
    Backup,Media Restore,Name Service Management,Network Management,Object
    Access Management,Process Management,Software Installation,User
    Management,All;help=RtSysAdmin.html
    Basic Solaris User:::Automatically assigned rights:auths=solaris.profmgr.
    read,solaris.jobs.users,solaris.mail.mailq,solaris.admin.usermgr.read,solaris.admin.
    logsvc.read,solaris.admin.fsmgr.read,solaris.admin.serialmgr.read,solaris.admin.
    diskmgr.read,solaris.admin.procmgr.user,solaris.compsys.read,solaris.admin.printer.
    read,solaris.admin.prodreg.read,solaris.admin.dcmgr.read,solaris.snmp.read,solaris.
    project.read,solaris.admin.patchmgr.read,,solaris.network.hosts.read,solaris.admin.
    volmgr.read;profiles=All;help=RtDefault.html

    Полномочия

    Полномочие (в предыдущем издании этой книги мы использовали термин "авторизация", но "полномочие" – более понятный термин, да и по-русски так лучше) представляет собой право, включенное в профиль или данное пользователю, выполнять определенные действия в системе. В Solaris доступны только предопределенные полномочия, добавить новое нельзя. Список полномочий хранится в файле /etc/security/auth_attr:

    #
    # Copyright (c) 2001 by Sun Microsystems, Inc. All rights reserved.
    #
    # /etc/security/auth_attr
    #
    # authorization attributes. see auth_attr(4)
    #
    #pragma ident "@(#)auth_attr 1.1 01/03/19 SMI"
    #
    solaris.admin.volmgr.:::Logical Volume Manager::
    solaris.admin.volmgr.write:::Manage Logical Volumes::help=AuthVolmgrWrite.html
    solaris.admin.volmgr.read:::View Logical Volumes::help=AuthVolmgrRead.html
    solaris.admin.printer.modify:::Update Printer Information::help=AuthPrinter
    Modify.html
    solaris.admin.serialmgr.read:::View Serial Ports::help=AuthSerialmgrRead.html
    solaris.admin.logsvc.:::Log Viewer::help=AuthLogsvcHeader.html
    solaris.admin.procmgr.user:::Manage Owned Processes::help=AuthProcmgrUser.html
    solaris.admin.usermgr.read:::View Users and Roles::help=AuthUsermgrRead.html
    solaris.profmgr.:::Rights::help=ProfmgrHeader.html
    solaris.admin.procmgr.admin:::Manage All Processes::help=AuthProcmgrAdmin.html
    solaris.admin.logsvc.write:::Manage Log Settings::help=AuthLogsvcWrite.html
    solaris.admin.serialmgr.:::Serial Port Manager::help=AuthSerialmgrHeader.html
    solaris.admin.fsmgr.write:::Mount and Share Files::help=AuthFsmgrWrite.html
    solaris.admin.dcmgr.read:::View OS Services, Patches and Diskless Clients::
    help=AuthDcmgrRead.html
    solaris.device.cdrw:::CD-R/RW Recording Authorizations::help=DevCDRW.html
    solaris.admin.usermgr.:::User Accounts::help=AuthUsermgrHeader.html
    solaris.role.delegate:::Assign Owned Roles::help=AuthRoleDelegate.html
    solaris.admin.patchmgr.read:::View Patches::help=AuthPatchmgrRead.html
    solaris.project.read:::View Projects::help=AuthProjmgrRead.html
    solaris.profmgr.write:::Manage Rights::help=AuthProfmgrWrite.html
    solaris.system.shutdown:::Shutdown the System::help=SysShutdown.html
    solaris.device.grant:::Delegate Device Administration::help=DevGrant.html
    solaris.:::All Solaris Authorizations::help=AllSolAuthsHeader.html
    solaris.project.write:::Manage Projects::help=AuthProjmgrWrite.html
    solaris.admin.serialmgr.modify:::Manage Serial
    Ports::help=AuthSerialmgrModify.html
    solaris.admin.patchmgr.:::Patch Manager::
    solaris.admin.diskmgr.write:::Manage Disks::help=AuthDiskmgrWrite.html
    solaris.device.revoke:::Revoke or Reclaim Device::help=DevRevoke.html
    solaris.jobs.grant:::Delegate Cron  At Administration::help=JobsGrant.html
    solaris.dhcpmgr.write:::Modify DHCP Service Configuration::help=DhcpmgrWrite.
    html
    solaris.network.hosts.write:::Manage Computers and Networks::help=Network
    HostsWrite.html
    solaris.mail.mailq:::Mail Queue::help=MailQueue.html
    solaris.admin.dcmgr.clients:::Manage Diskless
    Clients::help=AuthDcmgrClients.html
    solaris.project.:::Solaris Projects::
    solaris.admin.logsvc.read:::View Log Files::help=AuthLogsvcRead.html
    solaris.admin.fsmgr.read:::View Mounts and Shares::help=AuthFsmgrRead.html
    solaris.admin.fsmgr.:::Mounts and Shares::help=AuthFsmgrHeader.html
    solaris.jobs.user:::Manage Owned Jobs::help=AuthJobsUser.html
    solaris.role.assign:::Assign All Roles::help=AuthRoleAssign.html
    solaris.network.hosts.:::Computers and Networks::help=NetworkHostsHeader.html
    solaris.admin.usermgr.write:::Manage Users::help=AuthUsermgrWrite.html
    solaris.compsys.read:::View Computer System Information::help=AuthCompSys
    Read.html
    solaris.audit.:::Audit Management::help=AuditHeader.html
    solaris.profmgr.read:::View Rights::help=AuthProfmgrRead.html
    solaris.device.config:::Configure Device Attributes::help=DevConfig.html
    solaris.profmgr.delegate:::Assign Owned Rights::help=AuthProfmgrDelegate.html
    solaris.admin.printer.delete:::Delete Printer Information::help=AuthPrinter
    Delete.html
    solaris.admin.dcmgr.admin:::Manage OS Services and
    Patches::help=AuthDcmgrAdmin.html
    solaris.admin.printer.:::Printer Information::help=AuthPrinterHeader.html
    solaris.admin.diskmgr.:::Disk Manager::help=AuthDiskmgrHeader.html
    solaris.role.write:::Manage Roles::help=AuthRoleWrite.html
    solaris.role.:::Roles::help=RoleHeader.html
    solaris.admin.patchmgr.write:::Add and Remove
    Patches::help=AuthPatchmgrWrite.html
    solaris.mail.:::Mail::help=MailHeader.html
    solaris.admin.procmgr.:::Process Manager::help=AuthProcmgrHeader.html
    solaris.device.allocate:::Allocate Device::help=DevAllocate.html
    solaris.system.:::Machine Administration::help=SysHeader.html
    solaris.compsys.write:::Manage Computer System Information::help=AuthCompSys
    Write.html
    solaris.compsys.:::Computer System Information::help=AuthCompSysHeader.html
    solaris.network.hosts.read:::View Computers and
    Networks::help=NetworkHostsRead.html
    solaris.device.:::Device Allocation::help=DevAllocHeader.html
    solaris.snmp.:::SNMP Management::help=AuthSnmpHeader.html
    solaris.admin.dcmgr.:::OS Server Manager::help=AuthDcmgrHeader.html
    solaris.dhcpmgr.:::DHCP Service Management::help=DhcpmgrHeader.html
    solaris.login.enable:::Enable Logins::help=LoginEnable.html
    solaris.admin.logsvc.purge:::Remove Log Files::help=AuthLogsvcPurge.html
    solaris.audit.read:::Read Audit Trail::help=AuditRead.html
    solaris.login.remote:::Remote Login::help=LoginRemote.html
    solaris.system.date:::Set Date  Time::help=SysDate.html
    solaris.admin.serialmgr.delete:::Delete Serial
    Ports::help=AuthSerialmgrDelete.html
    solaris.audit.config:::Configure Auditing::help=AuditConfig.html
    solaris.jobs.admin:::Manage All Jobs::help=AuthJobsAdmin.html
    solaris.grant:::Grant All Solaris Authorizations::help=PriAdmin.html
    solaris.jobs.:::Job Scheduler::help=JobHeader.html
    solaris.profmgr.execattr.write:::Manage Commands::help=AuthProfmgrExecattr
    Write.html
    solaris.admin.usermgr.pswd:::Change Password::help=AuthUserMgrPswd.html
    solaris.login.:::Login Control::help=LoginHeader.html
    solaris.snmp.write:::Set SNMP Information::help=AuthSnmpWrite.html
    solaris.admin.printer.read:::View Printer Information::help=AuthPrinterRead.
    html
    solaris.profmgr.assign:::Assign All Rights::help=AuthProfmgrAssign.html
    solaris.snmp.read:::Get SNMP Information::help=AuthSnmpRead.html
    solaris.admin.diskmgr.read:::View Disks::help=AuthDiskmgrRead.html

    Значения полей в этом файле таковы:

    name:res1:res2:short_desc:long_desc:attr

    name – обязательное поле, имя набора прав (полномочия). Это уникальное имя, которое получается из комбинации префикса и суффикса, где префикс – это часть имени до самой правой точки.

    Префикс наборов прав, придуманных компанией Sun, всегда начинается со слова .)

    Суффикс – это слово, определяющее детальный смысл авторизации. Слово grant предполагает право собладающего этой авторизацией пользователя делегировать свои наборы прав (авторизации) другим.

    Команды

    Файл /etc/security/exec_attr представляет собой базу данных атрибутов запуска программ, ассоциированных с тем или иным профилем (из prof_attr ).

    # execution attributes for profiles. see exec_attr(4)
    #
    #pragma ident "@(#)exec_attr 1.1 01/10/23 SMI"
    #
    #
    iPlanet Directory Management:suser:cmd:::/usr/sbin/
    directoryserver:uid=0
    Software Installation:suser:cmd:::/usr/bin/pkgparam:uid=0
    Network Management:suser:cmd:::/usr/sbin/in.named:uid=0
    File System Management:suser:cmd:::/usr/sbin/mount:uid=0
    FTP Management:suser:cmd:::/usr/sbin/ftprestart:euid=0
    Software Installation:suser:cmd:::/usr/bin/pkgtrans:uid=0
    Name Service Security:suser:cmd:::/usr/bin/nisaddcred:euid=0
    Mail Management:suser:cmd:::/usr/sbin/makemap:euid=0
    Software Installation:suser:cmd:::/usr/sbin/install:euid=0
    Process Management:suser:cmd:::/usr/bin/crontab:euid=0
    Audit Review:suser:cmd:::/usr/sbin/praudit:euid=0
    Name Service Security:suser:cmd:::/usr/sbin/ldapclient:uid=0
    Media Backup:suser:cmd:::/usr/bin/mt:euid=0

    Формат записей в файле /etc/security/exec_attr предполагает обязательное указание имени профиля прав, жестко установленных значений полей policy и cmd, идентификатора и, при необходимости, атрибутов.

    name:policy:type:res1:res2:id:attr
  • name – имя профиля прав (помните, регистр букв в имени важен!).
  • policy – политика, ассоциированная с профилем прав; единственное допустимое значение этого поля в настоящее время – suser.
  • тype – тип объекта, определенного в данной записи; единственное допустимое значение этого поля в настоящее время – cmd.
  • id – строка, которая является уникальным идентификатором объекта, описанного в данной записи; для типа cmd этот идентификатор, кроме того, является полным именем файла выполняемой программы или символом звездочка ( * ), который разрешает запустить любую команду. Можно указывать звездочку в конце полного имени файла, что будет означать любую программу в соответствующем каталоге.
  • аttr – атрибуты вида имя=значение, разделенные точкой с запятой; допустимые варианты атрибутоов: euid, uid, egid, and gid.
  • Все компоненты RBAC могут быть использованы как в виде файлов, так и в виде карт NIS или таблиц NIS+. Соответственно, в файле /etc/nsswitch.conf понадобится указать порядок обращения к различным источникам.

    Итак, схема назначений прав в системе ролей следующая: определенные программы могут быть запущены не только пользователем root, что традиционно, но и другими пользователями. Для этого существуют полномочия ( authorizations ), которые могут быть даны напрямую пользователям (что нежелательно с организационной точки зрения) или профилям прав. Профиль прав, представляющий собой набор определенных прав, назначается роли. Пользователь может претендовать на то, что он будет играть ту или иную роль, если он знает пароль этой роли и может "перевоплотиться" в нее с помощью команды su. Рис. 9.1 иллюстрирует взаимоотношения компонент RBAC между собой.

    (рис 9.1) Отношения между компонентами RBAC

    Команды, поддерживающие роли

    Следующие команды проверяют права (authorizations) пользователя, который пытается их выполнить, и поддерживают систему RBAC. Это значит, что выполнить эти команды может не только root, но и другие пользователи, которые начали играть определенную роль, "переключившись" в нее.

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

  • все программы, запускаемые внутри Solaris Management Console;
  • программы запланированного запуска at, atq, batch, crontab ;
  • команды, связанные с работой физических устройств – allocate, deallocate, list_devices, cdrw.
  • Команды управления ролями

    Управление ролями производится путем редактирования файлов в каталоге /etc/security или посредством программ roleadd, rolemod и roledel. Кроме того, управлять ролями и назначением прав в RBAC можно с помощью Solaris Management Console.

    Можно, например, добавить роль printmgr с назначением прав по умолчанию:

    roleadd printmgr

    а с помощью команды

    roleadd –D

    эти самые права по умолчанию можно увидеть воочию:

    roleadd –D
    group=other,1 project=default,3 basedir=/home
    skel=/etc/skel shell=/bin/pfsh inactive=0
    expire= auths= profiles=All

    Для выполнения команд, предполагающих использование ролей, следует воспользоваться специальными командными процессорами, в которых реализована работа с ролями. Имеется набор таких командных процессоров, функционально эквивалентных своим "безролевым" аналогам: /bin/pfsh, /bin/pfcsh, or /bin/pfksh. Эти командные процессоры следует назначать в качестве login shell для ролей.

    Управление ролями в Solaris Management Console

    В Solaris Management Console возможно управление ролями (пункт Administrative Roles) в графическом интерфейсе. Для управления потребуется ввести имя и пароль роли, которая имеет право на такое администрирование (часто это пользователь root ).

    Рис. 9.2 иллюстрирует сказанное: в главном меню Solaris Management Console следует выбрать Users, а для администрирования ролей в открывшемся окне справа – Administrative Roles.

    (рис 9.2) Управдение ролями в Solaris Management Console

    Дополнительные средства обеспечения безопасности

    Аудит файлов (BART)

    Одним из самых простых и эффективных средств наблюдения за системой является инструмент bart (Basic Audit and Reporting Tool). С помощью этой программы вы сможете создавать информационную базу контрольных сумм важных файлов. Ежедневное сравнение контрольных сумм файлов поможет обнаружить неожиданную модификацию настроек злоумышленником или ошибочно работающим приложением. Определите периодичность проверок сами, лавируя между чрезмерными накладными расходами на безопасность и приемлемым временем реакции на вторжение в систему – можно запускать проверку даже ежеминутно.

    Программа bart проверяет целостность файлов по нескольким параметрам:

  • uid, gid, права доступа, содержимое;
  • время модификации, размер, тип;
  • проводит сравнение файлов созданных в разное время.
  • Предположим, файл rules в текущем каталоге содержит инструкции программе bart, какие каталоги следует проверять при запуске:

    cat ./rules
    /etc
    CHECK all

    Запустим bart первый раз – для создания начальной информационной базы, которую будем хранить в файле oldManifest (логично выполнить эту команду после установки и начальной настройки системы, а затем повторять после внесения изменений в настройки – т.е. в файлы, которые находятся в /etc ):

    find /etc | bart create -I > oldManifest

    Теперь, по прошествии некоторого времени, запустим создание новой информационной базы и сравнение – и тут нам пригодится файл rules с инструкциями, который мы заранее создали:

    find /etc | bart create -I > newManifest
    bart compare -r ./rules ./oldManifest ./newManifest

    Оказывается, за это время что-то изменилось:

    /etc/user_attr:
    size control:28268 test:23520
    acl control:user::rw-,group::rw-,mask:r-x,other:r—
    test:user::rw-,group::rw-,mask:r-x,other:rwcontents
    control:28dd3a3af2fcc103f422993de5b162f3
    test:28893a3af2fcc103f422993de5b162f3

    Теперь нам остается выяснить, было ли это изменение санкционированным, или оно произошло по чьей-то злой воле.

    Более подробно об автоматизации проверки целостности файлов с помощью bart можно прочесть в документе по адресу http://www.sun. com/blueprints/0305/819-2259.pdf.

    Изучение файлов протоколов

    Solaris приспособлен сообщать системному администратору обо всех проблемах, которые возникают при работе системы. Основной источник информации – это файлы протоколов. Во всех версиях Solaris следует наблюдать за сообщениями в файле /var/adm/messages (это аналог /var/log/messages в Linux и FreeBSD) и в файле /var/log/syslog. Кроме этого, в файле /etc/syslog.conf можно определить и другие файлы для протоколирования событий в системе и приложениях.

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

    Вручную

    Изучение файлов протоколов можно выполнять вручную (т.е. с помощью вывода этих файлов на экран – для этого пригодны команды more, less, pg или любой текстовый редактор).

    Скриптом

    Для анализа файлов протоколов можно приспособить скрипт на том языке, на котором вам комфортнее обрабатывать тексты. Я предпочитаю использовать perl (поставляется в дистрибутиве Solaris 10), но можно использовать также awk, php или любой другой.

    Инструменты графического режима

    В графической среде GNOME для просмотра файлов протоколов можно использовать инструмент gnome-system-log, легко вызываемый из меню All Applications->System Tools (рис. 9.3).

    (рис 9.3) Программа просмотра файлов протоколов в GNOME

    Объявления об уязвимостях

    Хорошим стилем администрирования является не только своевременное обновление системы и установка требуемых заплаток, но и отслеживание новостей, связанных с безопасностью. Уже многие годы в этом помогают рассылки и новости, на которые можно подписаться на специализированных веб-сайтах, например, http://www.cert.org и http://sans.org.

    Вернуться к учебному плану