Повторите подпункт В пункта 1.2 из практической работы 1 "Права на использование файла".
Для изменения прав доступа используется команда
%chmod [-R] права файл_или_каталог [файл2 ...]
Необязательный ключ -R распространяет действие команды рекурсивно на содержимое каталогов, если таковые обнаружатся в списке файлов, переданном в командной строке.
Права указываются в одной из двух нотаций: числовой и символьной.
Набор прав разбивается на 4 тройки:
sst rwx rwx rwxи рассматривается в виде битового поля: бит установлен, если соответствующее право имеется. Каждая тройка бит записывается десятичным числом.
Примеры
--- rwx rwx rwx | 0777 |
--- rwx r-x r-x | 0755 |
--- rw- r-- --- | 0640 |
ss- rwx r-x r-x | 6755 |
--t rwx r-x r-- | 1754 |
Лидирующий ноль можно опускать.
В отличие от числовой нотации символьная нотация указывает не права, а изменения прав. Нотация состоит из 3 элементов, указанных в следующей последовательности: чьи права изменять, каким образом, и какие именно права.
Чьи права изменять | Каким образом | Какие именно права |
u (владельца) g (группы) o (всех остальных) a (всех трех категорий) |
+ (добавить) - (убрать) |
r w x |
= (сделать такими же) | u (как у владельца) g (как у группы) o (как у всех остальных) | |
u g |
+ - |
s (SUID или SGID) |
u | + - |
t (Sticky bit) |
Примеры:
Добавить группе право на запись:
%chmod g+w file
Убрать у прочих права на запись и исполнение:
%chmod o-wx file
Добавить владельцу и группе права на чтение и запись:
%chmod ug+rw file
Установить права прочих такими же, как у группы
%chmod o=g file
Установить права прочих и группы такими же, как у владельца
%chmod og=u file
Несколько изменений можно перечислять через запятую:
Добавить вдалеьцу право на исполнение, а у группы и прочих убрать право на запись:
%chmod u+x,go-w file
Во второй консоли зарегистрируйтесь от имени пользователя test, созданного вами на прошлой лабораторной работе и выполните следующие упражнения.
Каждый вновь создаваемый файл или директория получают установленные по умолчанию права доступа. Вы можете сами установить эти права командой umask.
Замечания по команде umask:
-------------------------------------------------------------------------------------
Упражнения (выполняются, как и в п. 4.1 от пользователя test):
-------------------------------------------------------------------------------------
Каждый файл или директория имеют хозина и группу хозяина, соответствующую первичной группе создателя файла. Вы можете переназначить их используя команды chown и chgrp. Самостоятельно изучите эти команды (man chown и man chgrp).
Замечания по командам chown и chgrp:
Сразу после выполнения этих команд вы теряете права на файлы, как их первоначальный владелец.
-------------------------------------------------------------------------------------
Упражнения (выполняются, как и в п. 4.1 от пользователя test):
-------------------------------------------------------------------------------------
Непосредственно после установки ОС tripwire, используя правила, определенные политикой безопасности (policy file), создает базу данных, содержащую информацию о всех "существенных" файлах в системе - размер, контрольная сумма и т.д. Затем эта база данных ежедневно сравнивается с текущим состоянием файловой системы, позволяя обнаружить добавленные, измененные и удаленные файлы. Получаемые при этом отчеты могут быть просмотрены с различной степенью детализации.
Файлы конфигурации и полиси защищаются от записи общим ключом, а БД и отчеты - локальным ключом. Для чтения достаточно доступного публичного ключа, для записи требуется частный ключ, защищаемый парольной фразой. Обольщаться не надо - если уж взломщик получил права суперпользователя, необходимые для модификации БД, то он также может переустановить все файлы tripwire заново и вы будете получать по почте сообщения, что все в порядке, пока не обнаружите, что ваша парольная фраза не позволяет изменить БД или полиси!
Для измененных файлов создаются резервные копии с суффиксом .bak.
Установка и настройка
В состав Linux входит пакет tripwire-2.3.1-2, включающий программы в /usr/sbin: siggen, tripwire, twadmin, twprint (собранных безо всяких глупостей типа разделяемых библиотек и имеющих размер более 2 МБ каждая); файлы конфигурации: twcfg.txt, twpol.txt, twinstall.sh (в /etc/tripwire); файл конфигурации для cron: /etc/cron.daily/tripwire-check; документация: /usr/share/doc/tripwire-2.3.0/, twconfig.4.gz, twpolicy.4.gz, twfiles.5.gz, siggen.8.gz, tripwire.8.gz, twadmin.8.gz, twintro.8.gz, twprint.8.gz; БД и отчеты: /var/lib/tripwire.
Первым делом надо отредактировать стандартные (из комплекта поставки) файлы конфигурации (/etc/tripwire/twcfg.txt) и полиси (/etc/tripwire/twpol.txt). Полиси из поставки можно рассматривать только как пример. Каждая конкретная система требует своего полиси, иначе не все важные именно для данной системы файлы будут проверяться, а также будут выдаваться излишние предупреждения.
Запустить /etc/tripwire/twinstall.sh, который запрашивает парольную фразу и создает файлы ключей (/etc/tripwire/site.key и /etc/tripwire/host-local.key), создает из текстовых файлов и подписывает файл конфигурации и полиси.
Инициализировать БД (спрашивает локальную парольную фразу, могут быть сообщения
об ошибках т.к. полиси рассчитан на полную установку):
tripwire --init [--no-encription]
Выполнить пробную проверку (эта же команда выполняется из /etc/cron.daily/tripwire-check;
все сообщения об ошибках повторяются; д.б. по крайней мере одно изменение -
добавился файл с БД):
tripwire --check
Налюбовавшись на сообщения об отсутствующих файлах (twpol.txt из комплекта
поставки рассчитан на полную установку), поменяйте /etc/tripwire/twpol.txt и
запустите
tripwire --update-policy --secure-mode low /etc/tripwire/twpol.txt
Может быть придется повторить процедуру несколько раз, пока не сойдется, после
чего надо зафиксировать состояние системы:
tripwire --check --interactive
Проверка работоспособности почтовой системы:
tripwire --test --email адрес
Дальнейшие проверки будут происходить ежедневно в автоматическом режиме. А если вы указали GLOBALEMAIL в конфигурационном файле и добавили ключ --email-report к команде запуска tripwire в /etc/cron.daily/tripwire-check, то отчеты будут посылаться по почте.
Общие ключи к программам
При вызове программ можно использовать дополнительные ключи:
-?
--help
--help all
--help режим
--version
--verbose (или -v)
--quiet (или -s)
--polfile полиси-файл
--cfgfile файл-конфигурации
--site-keyfile файл-общего-ключа
--local-keyfile файл-локального-ключа
--dbfile файл-БД
--local-passphrase парольная фраза (не советую использовать, т.к. ее могут увидеть
с помощью команды ps)
--site-passphrase парольная фраза (не советую использовать, т.к. ее могут увидеть
с помощью команды ps)
Мониторинг и разборка отчетов
Проверка целостности системы (текстовый отчет выводится на stdout, если не
задан ключ --no-tty-output; создается файл с отчетом, который шифруется, если
задан ключ --signed-report; БД не изменяется):
tripwire --check [--twrfile имя-файла-с-отчетом] [--email-report [--email-report-level
уровень]] {объект }
Ограничить список проверок можно следующими ключами:
--severity уровень (проверять только правила с указанным уровнем серьезности
или выше)
--rule-name имя (только указанное правило)
--ignore список-свойств (через запятую)
Коды возврата (могут комбинироваться):
1 - был добавлен файл(ы)
2 - был удален файл(ы)
4 - был изменен файл(ы)
8 - не удалось записать отчет
Ключ --interactive позволяет изменить БД в диалоговом режиме. Запускается текстовый редактор (ключ --visual имя-редактора, переменная EDITOR в конфигурационном файле или переменные окружения VISUAL или EDITOR) и предоставляется возможность отредактировать форму изменения БД, в которой каждый "подтвержденный" файл надо отметить крестиком в секции Object Summary. Запрашивается парольная фраза.
Просмотр файла с отчетом:
twprint --print-report --twrfile имя-файла-с-отчетом [--report-level уровень]
Просмотр БД или отдельных объектов:
twprint --print-dbfile {объект}
Изменение БД с целью отразить существующее состояние вещей в интерактивном
режиме (то же самое, что и tripwire --check --interactive):
tripwire ---update --twrfile имя-файла-с-отчетом
Изменение БД с целью отразить существующее состояние вещей в автоматическом
режиме:
tripwire ---update -a --twrfile имя-файла-с-отчетом
Конфигурационный файл
Конфигурационный файл: /etc/tripwire/tw.cfg, хранится в кодированной и подписанной форме. Преобразовать его в текстовый формат можно командой:
twadmin --print-cfgfile > /etc/tripwire/twcfg.txt
после чего отредактировать любым текстовым редактором, закодировать и подписать
командой
twadmin --create-cfgfile [--no-encription] /etc/tripwire/twcfg.txt
а текстовый файл немедленно удалить.
Формат файла:
строки, начинающиеся с #, являются комментариями
значения переменным присваиваются командами
имя_переменной = значение
в правой части могут быть использованы ранее определенные переменные:
$(имя_переменной)
предопределена переменная HOSTNAME - простое имя хоста
предопределена переменная DATE - 20011210-113512
Обязательные переменные:
POLFILE = /etc/tripwire/tw.pol (имя файла с полиси)
DBFILE = /var/lib/tripwire/$(HOSTNAME).twd (имя файла с БД)
REPORTFILE = /var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr (имена файлов
с отчетами)
SITEKEYFILE = /etc/tripwire/site.key (общий ключ)
LOCALKEYFILE = /etc/tripwire/$(HOSTNAME)-local.key (локальный ключ)
Необязательные переменные:
EDITOR = /bin/vi (имя текстового редактора)
TEMPDIRECTORY = /tmp (лучше поменять на директорию с нормальными правами доступа)
LATEPROMPTING = false (откладывать запрос парольной фразы до последнего)
SYSLOGREPORTING = true (выдавать на syslog - user,notice - сообщения о создании
БД, проверках, изменениях БД и полиси, уровень подробности - 0)
LOOSEDIRECTORYCHECKING = false (не выдавать излишние сообщения о изменениях
atime и mtime для директории, в которой добавлен или удален контролируемый файл;
эквивалентно добавлению -snacmblCMSH для всех директорий)
REPORTLEVEL = 3 (уровень подробности отчета по умолчанию для twprint)
GLOBALEMAIL = (добавить этот список адресов к получателям отчетов по почте)
MAILMETHOD = SMTP (или SENDMAIL)
SMTPHOST =
SMTPPORT = 25
MAILPROGRAM = /usr/sbin/sendmail -oi -t (если MAILMETHOD установлен в SENDMAIL)
EMAILREPORTLEVEL = 3 (уровень подробности отчета для почтовых извещений)
MAILNOVIOLATIONS = false (посылать ли письма при отсутствии нарушений полиси)
Полиси
Полиси: /etc/tripwire/tw.pol, хранится в кодированной и подписанной форме. Преобразовать его в текстовый формат можно командой:
twadmin --print-polfile > /etc/tripwire/twpol.txt
после чего отредактировать любым текстовым редактором, закодировать и подписать
командой
twadmin --create-polfile [--no-encription] /etc/tripwire/twpol.txt
а текстовый файл немедленно удалить. После этого требуется создать БД заново.
Если полиси изменяется для уже существующей БД, то чтобы преобразовать базу данных и полиси за один шаг необходимо вместо twadmin запустить
tripware --update-policy [--secure-mode {high | low}] /etc/tripwire/twpol.txt
При этом собирается информация о текущем состоянии файловой системы и в режиме
безопасности high при наличии нарушений старых правил, которые одновременно
являются нарушениями новых правил выводится их список (на stderr), а БД не изменяется.
Текст за символом # до конца строки является комментарием.
Базовым элементом полиси являются правила (rule), которые задают для системных объектов (файлов или директорий, файлы внутри директории наследуют указанное правило, однако, рекурсия не пересекает границу файловой системы) наборы отслеживаемых свойств (не более одного правила для объекта):
полное-имя-объекта -> маска-свойств [(атрибуты)];
!полное-имя-игнорируемого-объекта;
Именем объекта является полное имя файла (директории). Пробелы игнорируются,
если не заключить имя в кавычки. Кавычка игнорируется, если не заключена в кавычки
и ей не предшествует обратная косая черта. Всякие специальные символы (!{}>(),;=$#|\+'
и \n, \t) также надо заключать в кавычки.
Маска свойств задает, какие свойства объекта будут проверяться. Каждому свойству соответствует буква. Маска не может быть пустой. Знак плюс перед буквой включает проверку, знак минус - выключает. Если знака перед буквой нет, то подразумевается предыдущий в данном правиле знак или знак плюс, если знаков не было совсем. Если буква свойства отсутствует, то проверка свойства выключена. Если буква свойства встречается несколько раз, то используется последнее вхождение. Обрабатываются следующие свойства:
p - права доступа
i - inode
n - число жестких ссылок
u - uid
g - gid
t - тип файла
s - размер
d - номер устройства диска, на котором хранится соответствующий inode
r - для файлов устройств номер устройства
b - число блоков
m - время модификации
c - время создания/модификации inode
l - ожидается, что файл будет расти; если он уменьшился, то это нарушение
a - время доступа (несовместим с CMSH, т.к. для вычисления суммы необходимо
прочитать файл; доступ к содержимому директории меняет время доступа к ней)
C - контрольная сумма CRC-32, POSIX 1003.2
M - контрольная сумма MD5
S - контрольная сумма SHA
H - контрольная сумма HAVAL
Атрибуты модифицируют действие правила, записываются в виде списка имя = значение через запятую и могут применяться к отдельному правилу или группе правил. Группа правил заключается в фигурные скобки. Список атрибутов для группы правил записывается в скобках перед ней. Индивидуальные атрибуты имеют больший приоритет, чем групповые, за исключением атрибута emailto - в этом случае атрибут добавляется. Обрабатываются следуюшие атрибуты:
rulename - по умолчанию, простое имя файла; используется в отчетах, для группировки
правил, для проверки только части правил
emailto - чтобы указать несколько адресов, надо перечислить их через точку с
запятой и заключить в кавычки
severity - от 0 до миллиона, по умолчанию - 0; чем больше, тем серьезнее; проверку
можно запускать только для правил указанного уровня или выше; в командной строке
могут использоваться ключи high - уровень 100, medium - уровень 66, low - уровень
33
recurse - рекурсивная проверка директорий, true (-1) по умолчанию, false (0)
или натуральное число (максимальный уровень вложенности)
Директивы группируют правила и обеспечивают условное выполнение. Имя директивы не может быть получено подстановкой значения переменной. Список директив:
@@section имя - для Unix обрабатываются только правила в первой секции с именем
FS; если секций нет, то обрабатываются все правила; в секции GLOBAL определяются
глобальные переменные
@@ifhost имя-хоста { || имя-хоста } - использовать правила только для указанного
хоста (хостов); условия могут быть вложенными
@@else
@@endif
@@print строка в кавычках - вывод на stdout
@@error строка в кавычках - вывод на stdout и завершение со статусом 1
@@end - любой дальнейший текст в файле игнорируется; не может использоваться
внутри группы или условного блока
Переменные делятся на глобальные и локальные для данной секции. Локальные имеют
больший приоритет. Значение переменной присваивается командой
имя_переменной = значение;
Имя переменной может включать буквы (регистр имеет значение), цифры и знаки:
"_+-@:&%^.". Если значение содержит пробел или управляющие сиволы,
то оно должно быть заключено в кавычки. Подстановка переменных допускается в
любом месте, где по синтаксису полагается строка (в т.ч. как часть левой части
правила) и выражается так:
$(имя_переменной)
Предопределенные переменные (не могут быть переопределены):
ReadOnly = +pinugsmtdbCM-raclSH (предполагается, что содержимое файлов не изменяется)
Dynamic = +pinugtd-rsacmblCMHS (предполагается частое изменение содержимого
файлов, например /home)
Growing = +pinugtdl-rsacmbCMSH (например, журналы)
IgnoreAll = -pinusgamctdrblCMSH (проверять лишь наличие или отсутствие файла)
IgnoreNone = +pinusgamctdrbCMSH-l (используется для дальнейшего конструирования
собственной маски: $(IGnoreNone)-ar)
Device = +pugsdr-intlbamcCMSH (для файлов, которые нельзя открывать)
Уровни подробности распечатки отчета
Уровень 0: отчет одной строкой. Появляется также в syslog и в заголовке Subject:
каждого отчета, посылаемого по почте.
TWReport имя-хоста дата-и-время V:число-нарушений S:макс-уровень A:добавлено
R:удалено C:изменено
Уровень 1: список имен поврежденных файлов в виде, легко разбираемом программой восстановления и т.п. Каждая строка состоит из ключевого слова (Added, Modified), двоеточия и имени файла.
Уровень 2: суммарный отчет, список нарушений с указанием имен правил, список добавленных, измененных и удаленных файлов.
Уровень 3: суммарный отчет, список нарушений с указанием имен правил, список добавленных и удаленных файлов, ожидаемые и реальные свойства измененных файлов.
Уровень 4: суммарный отчет, список нарушений с указанием имен правил, список добавленных, измененных и удаленных файлов, детальный отчет по каждому добавленному файлу (все свойства), каждому измененному файлу (все проверяемые ожидаемые и реальные свойства), каждому удаленному файлу (все проверяемые ожидаемые свойства).
Шифровка и парольная фраза
Парольная фраза меняется только одновременно со сменой ключей, поэтому чтобы сменить парольную фразу, надо дешифровать все файлы, сгенерировать новые ключи, затем зашифровать файлы. Если вы забудете парольную фразу или удалите/повредите/измените файлы с ключами, то зашифрованные файлы (конфигурация, полиси, БД (и может быть отчеты) станут недоступны). Кстати, шифровка не помешает хакеру удалить любой файл, включая БД tripwire, так что использование tripwire не отменяет обязательности резервного копирования.
Узнать какой ключ использован для шифровки файла (и использован ли вообще):
twadmin --examine имя-файла
Убрать шифровку (запрашивается парольная фраза, файл остается в двоичном формате):
twadmin --remove-encryption имя-файла
Создание нового ключа:
twadmin --generate-keys --local-keyfile имя-файла-ключей
или
twadmin --generate-keys --site-keyfile имя-файла-ключей
Шифрование файла:
twadmin --encrypt --local-keyfile имя-файла-ключей имя-файла
или
twadmin --encrypt --site-keyfile имя-файла-ключей имя-файла
Программа siggen
Вспомогательная программа, вычисляющая контрольную сумму методами CRC-32, MD5, HAVAL и SHA в реализации tripwire, что позволяет сравнить производительность различных методов. Самый быстрый (но нестойкий к подделке) - CRC32. Из устойчивых алгоритмов у меня (Pentium !!!) самым быстрым оказался HAVAL, затем SHA и самый медленный - MD5.
Ссылки
Открытый код (документация в разделе files, 119 страниц) http://sourceforge.net/projects/tripwire/
-------------------------------------------------------------------------------------
Упражнения (выполняются от имени пользователя root):
-------------------------------------------------------------------------------------