6820
Контроль целостности файловой системы Linux с помощью утилиты Tripwire
Лабораторная работа
Информатика, кибернетика и программирование
Контроль целостности файловой системы Linux с помощью утилиты Tripwire Путем вычисления контрольной суммы можно не только определить подлинность дистрибутива перед установкой, но и регулярно проверять целостность системных файлов в процессе работы в...
Русский
2013-01-08
122.5 KB
5 чел.
Контроль целостности файловой системы Linux с помощью утилиты Tripwire
Путем вычисления контрольной суммы можно не только определить подлинность дистрибутива перед установкой, но и регулярно проверять целостность системных файлов в процессе работы во избежание несанкционированного проникновения в сеть
Хотя лицензия Linux/Free BSD позволяет использовать дистрибутив, купленный на радиорынке, с тем же успехом, что и приобретенный у официального дистрибьютора, но доверять веб-сервер стоимостью свыше тысячи у. е. диску за несколько десятков гривен лично я бы не рискнул.
Конечно, этот диск это, скорее всего, просто «слитый» с сайта и записанный на болванку ISO-образ. Но гарантировать этого никто не может что мешает заменить некоторые пакеты на доработанные под свои нужды с «трояном» внутри? Причем самому и выдумывать-то ничего не надо, все давно есть в Сети.
Если же другого выхода нет или просто нужно установить программу, не входящую в основной дистрибутив, то всегда нужно проверить его на совпадение контрольной суммы.
В большинстве FTP-архивов вместе с файлом можно найти информацию о контрольной сумме. Эта информация находится либо в отдельном файле вроде CHECKSUM.MD5, либо непосредственно на веб-странице. Такая проверка по алгоритму MD5 по возможности гарантирует, что в файле нет изменений и перед вами действительно оригинал.
Узнать контрольную сумму скачанного файла очень просто:
$ md5sum mysql-max-3.23.55-unknown-freebsd4.7-i386.tar.gz 9b543fbel2c2980c66d365ca68e819b0
Сравнив оба значения контрольных сумм, можно сделать вывод о подлинности файла. Проверка контрольной суммы должна войти в привычку при каждой установке программного обеспечения. По этой же причине никогда не стоит брать файл с первого попавшегося сервера. Лучше всего зайти либо на домашнюю страницу, либо на специальные сайты вроде http://rpmfind.net/ и http://www.freshports.org/.
С помощью контрольной суммы можно не только проверить устанавливаемые программы. Если злоумышленник проникнет в сеть, то первым его действием, скорее всего, будет установка или изменение некоторых программ. Например, он может заменить стандартную и довольно часто используемую программу ps на другую, с «трояном» внутри, а команда ls может не заметить созданных им каталогов.
Чтобы избежать этого и иметь инструмент, позволяющий проконтролировать целостность системных файлов, применяются утилиты, которые автоматически проверяют значения контрольных сумм файлов и каталогов и заносят их в свою базу данных. Впоследствии системный администратор может в автоматическом режиме сверить оригинальную, созданную при установке базу данных с имеющимися в системе файлами и при расхождении контрольных сумм выдать предупреждение по электронной почте. Это позволит сразу же узнать о вторжении и оценить ущерб.
Следует отметить, что все эти средства не отменяют, а, скорее, дополняют другие методы защиты. Причем средства, контролирующие состояние файлов, имеют некоторое преимущество перед программами, выявляющими вторжение по наличию определенных сигнатур, хотя ничто не мешает использовать комплексный подход.
Наиболее популярное средство для решения этой задачи - утилита Tripwire. Она доступна как OpenSource (www.tripwire.org) и как 30-дневная ознакомительная версия (www.tripwire.com). Скачать ее вместе с документацией (tripwire-docs можно с http: //download.sourceforg..net /tripwire/.
По окончании установки необходимо выполнить первоначальную инициализацию базы данных. Но для того чтобы не пришлось делать это дважды, лучше сразу отредактировать файлы конфигурации и политик.
Для этого в каталоге /etc/tripwire (в FreeBSD /usr/local/etc/tripwire) имеются два шаблона в виде текстовых файлов. В файле twcfg.txt содержится информация о размещении файлов базы данных (ее конкретное содержание зависит от системы), а также используемый по умолчанию редактор, почтовый клиент и его параметры.
В файле twpol.txt содержится политика, состоящая из серии правил, за выполнением которых следит Tripwire, данные для объектов контроля, важность контролируемого объекта и для каждой группы контроля адрес электронной почты (emailto=), на который высылается уведомление о нарушении. При необходимости можно указать сразу несколько адресов через запятую.
Здесь же желательно заменить TEMPDIRECTORY= /tmp на каталог с нормальными правами доступа (в /tmp для всех rwx). Во избежание несанкционированного изменения все важные файлы Tripwire хранятся на диске в закодированной и подписанной форме. Сама база данных, политики, конфигурация и иногда файл отчета защищены асимметричной криптографией El Gamal с 1024-разрядной сигнатурой. El Gamal использует шифрование с одним открытым и одним закрытым ключом. В криптографической системе Tripwire. Эта пара ключей хранится в двух файлах.
Файлы конфигурации и политики защищены от записи открытым ключом, а база данных и отчеты локальным ключом. Для чтения достаточно открытого ключа, но для записи требуется закрытый ключ, защищенный паролем. Поэтому после их редактирования в соответствии с настройками системы необходимо запустить скрипт twinstall.sh, находящийся в этом же каталоге. После этого программа запросит фразы site и local (желательно, не менее 8-ми символов) для генерации соответствующих ключевых пар. Затем в каталоге образуются зашифрованные файлы конфигурации и пополитики tw.cfg и tw.pol, а также файлы ключей /etc/tripwire/site.key и /etc/tripwire/host-local.key. В целях безопасности рекомендуется по окончании инсталляции удалить файлы шаблонов из данного каталога.
Проведем начальную настройку и инициируем базу данных:
#/etc/tripwire/twinstall.sh
#/usr/sbin/tripwire --init
После запроса локального пароля программа создает «отпечаток» важных системных файлов (размер, контрольная сумма, права, время доступа и т. п.) и записывает ее в файл
в каталоге /var/lib/tripwire/$(HOSTNAME).twd. При создании базы данных обратите внимание на сообщения об ошибках, например:
### Filename: /bin/bash ### No such file or directory ### Continuing...
### Warning: File system error.
### Filename: /bin/ash.static ### No such file or directory ### Continuing...
Это означает, что в конфигурационный файл занесена лишняя информация. Желательно тут же внести исправления иначе эти сообщения в дальнейшем постоянно будут вас преследовать и перегружать лог-файл.
Полученная база данных ежедневно сравнивается с текущим состоянием файловой системы. При этом выдаются довольно подробные отчеты. Это позволяет обнаружить добавленные, измененные и удаленные файлы. Такое расположение файла удобно при проверке согласованности файловой системы с помощью демона cron, позволяющего полностью автоматизировать данный процесс, включая информирование по указанному электронному адресу о результатах проверки.
Но потенциальный злоумышленник, обнаружив присутствие утилиты, при получении определенных прав может заменить (обновить) базу данных или полностью переустановить Tripwire (что гораздо проще). После такой модификации утилита проверки не заметит подвоха и вы будете получать по почте сообщения о том, что с системой все нормально, пока в один прекрасный день не обнаружите несовпадение парольных фраз. Такой вариант также предусмотрен разработчиками. Во избежание его необходимо поместить в дисковод отформатированную дискету и присвоить переменной TRIPWIRE_FLOPPY=YES значение с командой тaке install
$make install TRIPWIRE_FLOPPY= YES
Или просто создать резервную базу данных:
$make floppy
В результате на дискету будет скопировано все, что необходимо для восстановления системы и автономной работы утилит: копия начальной базы данных системы, утилиты Tripwire, Twcheck и Gunzip и копия файлов настройки tripwire.
Конечно, все это может не поместиться на 1,44 Мб даже после архивирования. К сожалению, единственный выход в этом случае уменьшить количество объектов базы данных. Как бы то ни было, на всякий случай желательно резервировать всю систему вместе с Tripwire и периодически сверять оригинальную и рабочую базы данных.
Для проверки системы запускается tripwire -- check. Можно явно указать имя файла создаваемого отчета:
$tripwire --check r имя_файла_отчета.twr
Tripwire сравнивает текущее состояние системы с сохраненным в базе данных и при несоответствии выдает сообщение. Программа замечает даже такие мелочи, как изменение времени модификации. Аналогично выполняет ежедневную проверку демон cron посредством /etc/cron.daily /tripwire-check.
Если вам недосуг ждать, пока система все проверит, можно указать опцию
--email-report:
$tripwire --check --email-report
Тогда сообщение будет послано всем получателям, указанным в файле политики, в формате, определенном в EMAIL-REPORTLEVEL. Но перед началом эксплуатации желательно проверить работу электронной почты с помощью команды:
$tripwire --test --email user@domain.com
Если нужно проверить не всю систему, а только отдельные ее объекты, их можно сразу указать так:
$tripwire --check objectl object2 object3
Системные файлы разбиты по группам важности, что позволяет более гибко строить отчеты. Благодаря этому для сокращения отчета можно проигнорировать некритичные для системы. Для того чтобы проверить файлы, начиная со средней степени важности и выше, можно ввести такую команду:
#tripwire --check --severity 66
Или использовать поверку правил по имени, которые прописаны в файле tw.pol,--rule-name. Для проверки системных файлов используется команда:
#tripwire --check --rule-name "File System and Disk Administraton Programs"
При необходимости частых проверок определенного типа замените длинные имена по умолчанию на более короткие.
Ключ --interactive позволяет изменить БД в диалоговом режиме. Можно также отредактировать форму изменения БД, в которой каждый заносимый файл отмечается крестиком в секции Object Summary, в текстовом редакторе, который запускается при помощи команды --visual <имя-peдактора> или прописывается в конфигурационном файле с помощью переменной EDITOR или переменных окружения VISUAL или EDITOR. Для такого редактирования БД нужно знать пароль.
В процессе работы некоторые утилиты обновляются или заменяются другими. Поэтому базу данных приходится обновлять с помощью опции --update. Для обновления всей системы используется команда:
$tripwire update r имя_файла_отчета.twr
(обновление состоит в актуализации базы данных согласно состоянию, зафиксированному в файле отчета).
Если же нужно обновить только сведения об определенной программе, то:
$tripwire --update /usr/sbin/sshd
После всех проверок создается отчет. По умолчанию это файл /var/lib/tripwire/report/(HOSTNAME)-$(DATE).twr .
Сразу после создания он называется примерно так: localhost-20030327-071039.twr. Но при помощи команды
#tripwire --check --twrfile /var/lib/report/myreport.twr
можно задать другое имя, которое удобнее использовать в скриптах.
По умолчанию, при генерации отчетов используется REPORT-LEVEL = 3 (Concise Report), выводящий довольно подробную информацию, в том числе и об ожидаемых и наблюдаемых значениях. Этот режим можно изменить в файле tw.cfg. Tripwire позволяет гибко задавать параметры отчетов, зависимо от потребности в той или иной информации. Для этого по ходу работы изменяется report-level в пределах от 0 до 4:
#twprint --print-report --report-level 1 --twr-file /var/lib/report/report.twr
Если понадобится внести глобальные изменения, можно получить расшифрованную копию конфигурационного файла при помощи команды:
#twadmin -print-cfgfile > /etc/tripwire/twcfg.txt
После внесения и сохранения изменений зашифрованный файл создается командой:
#twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt
По мере добавления новых файлов, которые вы желаете контролировать, а также по мере изменения уровня значимости и удаления старых файлов, изменения адресов электронной почты и засорения файла отчетов ложными сообщениями файл политик начинает нуждаться в изменениях. Прежде чем что-либо менять, нужно создать копию файла политик с помощью команды:
#twadmin --print-polfile > /etc/tripwire/twpol.txt
После внесения изменений модифицируем политики следующим образом:
#tripwire --update-policy /etc/tripwire/twpol.txt
Ключевые файлы site и lосаl образуются во время первого запуска, но иногда возникает необходимость в их полной замене. Пароль меняется только при смене ключей, поэтому, для того чтобы изменить его, надо предварительно дешифровать все файлы, сгенерировать новые ключи, а затем зашифровать файлы с новыми ключевыми данными.
Если при этом вы забудете пароль или удалите файлы с ключами, то все зашифрованные файлы: конфигурация, политики, база данных и отчеты после шифрования станут недоступны. Лучшим выходом из такой ситуации представляется переустановка всей системы.
Кстати, отметим: шифрование не помешает хакеру, если тот получит определенные права, попросту удалить любой файл, включая саму базу данных Tripwire. Поэтому использование Tripwire не отменяет обязательного резервного копирования.
Узнать, какой ключ был использован (и был ли использован вообще) для шифрования файла, можно при помощи такой команды:
#twadmin --examine filel file2
Шифрование отменяется (при этом запрашивается пароль, сам файл остается в двоичном формате) так:
#twadmin --remove-encryption filel file2
Затем создаем новый ключ:
#twadmin --generate-keys --local-keyfile /etc/tripwire/localkey.key
или
#twadmin --generate-keys --site-keyfile /etc/tripwire/sitekey.key
и шифруем файл:
#twadmin --encrypt --local-keyfile /etc/tripwire/
localkey.keyfilel file2
или:
#twadmin --encrypt --site-keyfile /etc/tripwire/sitekey.key filel file2
База данных хранится в закодированном двоичном формате. Для распечатки ее в виде текстового файла можно воспользоваться дополнительной утилитой, входящей в комплект Twprint. При использовании базы данных по умолчанию команда выглядит так:
#twprint --print-dbfile > db.txt
А для произвольной базы данных так:
#twprint --print-dbfile dbfile otherfile.twd > db.txt
Аналогично поступаем в случае файла с отчетом:
#twprint --print-report --twrfile имя_файла_с_отчетом
В комплект пакета входит вспомогательная программа, вычисляющая контрольную сумму методами CRC-32, MD5, HAVAL и SHA в реализации Tripwire, что позволяет сравнить производительность различных методов.
При необходимости повторить установку Tripwire, удалите в каталоге /etc/tripwire все файлы, кроме twcfg.txt, twinstall.sh и twpol.txt, а также файлы базы данных (.twd) и отчетов (.twr) в каталогах /var/lib/tripwire и /var/lib/tripwire/report.
Конечно, Tripwire далеко не панацея. Но использование этой утилиты существенно усложнит жизнь желающим покопаться в чужом компьютере. Она вовремя предупредит администратора о том, что происходит.
Конфигурационный файл настроек /etc/tripwire/tw.cfg (twcfg.txt) содержит пути к вспомогательным программам, адрес электронной почты и каталоги для размещения конфигурационных файлов Tripwire. Файл структурирован как список пар имя_переменной = значение. Все строки, которые начинаются с символа #, считаются комментариями.
К некоторым переменным можно обращаться как $(имя_переменной). Две переменные имеют стандартные значения, которые нельзя изменять. Это HOSTNAME (простое имя хоста) и DATE (представление времени в формате 20030427-111033). Обязательными переменными являются следующие:
Помимо обязательных, есть и дополнительные переменные:
Параметры сообщения, отправляемого по электронной почте, определяются следующими переменными:
Конфигурационный файл политик /etc/tnpwire/tw.pol (twpol.txt) состоит из серии правил, определяющих для каждого объекта, какой реквизит должен быть собран и сохранен в файле базы данных. Каждый объект в файле политик связан с маской свойства, которая определяет, что именно должна контролировать утилита Tripwire. Настраивая различные параметры файла политик, администратор системы может гибко определить способы проверки целостности системы с помощью Tripwire.
Основным компонентом файла политик являются правила (rules), в которых определяются проверяемые свойства для каждого объекта. Файлы, расположенные в дочерних каталогах, наследуют правила родительского каталога при условии, что внутренние каталоги находятся на одном и том же дисковом устройстве. В противном случае правила определяются отдельно.
Как и в конфигурационном файле, в файле политик возможно использование комментариев и переменных. Кроме проверяемых объектов, могут дополнительно указываться игнорируемые, что позволяет исключить "лишние" файлы, например:
object name -> property mask [attribute=value ...];
object name;
Пробелы в имени объекта игнорируются. Чтобы обойти это давило, имена с пробелами заключают в кавычки. То же касается и самих символов кавычек, а также остальных специальных символов, используемых в C++ в качестве управляющих. Это !{}>(),;=$# | \+ . Их заменяют на \n, \t, \v, \b, ' ' \f, \a, \\, \?, V, \”, а также числа, заданные в восьмеричной и шестнадцатеричной форме, например /te\x73t2.
Проверяемые свойства задаются маской, где каждому свойству соответствует определенная буква. При отсутствии заданных свойств объект не проверяется. Если перед буквой стоит "минус", свойство игнорируется, если "плюс" - проверяется. Если знака перед буквой нет, подразумевается предыдущий заданном правиле знак или, при отсутствии знаков -"плюс".
Проверяются следующие свойства (формат [+-]*[pinugtsldbamcrCMSH]):
Рекомендуется использовать свойства С, М, S, Н для файлов парами - а не все четыре сразу, так как определение всех четырех существенно снизит производительность.
Атрибуты правил определяют поведение объектов и предоставляют дополнительную информацию о них. Атрибуты записываются в виде списка, каждый элемент которого имеет вид имя = значение и отделен от других элементов запятыми. Атрибуты могут применяться как к отдельному правилу, так и к группе правил. Атрибут для отдельного правила записывается так:
/usr/lib -> $(Readonly) ( emailto = admin@foo.com );
Группа правил заключается в фигурные скобки. Список атрибутов для группы правил записывается в скобках перед ней:
(attribute = value) {rulel; rule2; ... }
Индивидуальные атрибуты имеют больший приоритет, чем групповые, за исключением атрибута emailto в этом случае атрибут добавляется к предыдущим, например:
(emailto = adminl@foo.com, severity = 90) { /etc/dog-> +pingus (severity = 75); /etc/cat-> $(Dynamic) (emailto = admin2@foo.com); }
Могут использоваться следующие атрибуты:
Tripwire поддерживает небольшой набор preprocessor-подобных директив, которые группируют правила, обеспечивают условное выполнение, выполняют простейшую диагностику и отладку. Первичное назначение этого механизма состоит в обеспечении совместного использования файла политики несколькими машинами. Директивы имеют следующий синтаксис: @@directive [arguments]. При этом сама директива не может быть получена как значение переменной, но переменные могут использоваться в качестве параметров. Обрабатываются следующие директивы:
В файле политики применяются два типа переменных. Область действия глобальных переменных распространяется на весь файл политики: область действия локальных переменных, определенных в разделе UNIX, ограничена только этим разделом. Если глобальная и локальная переменные имеют одинаковые имена, локальная переменная получает больший приоритет в своем разделе, временно маскируя глобальную переменную. Значение переменной присваивается командой имя_переменной = значение, подстановка значения осуществляется конструкцией $(variable). Существуют следующие предопределенные переменные:
Уровни отчетов:
Задание по лабораторной работе:
А также другие работы, которые могут Вас заинтересовать | |||
83841. | Трепанация черепа. Показания, техника выполнения, осложнения. Схема кранио-церебральной топографии Кренлейна | 93.22 KB | |
Локализация разрезов и костного дефекта определяется локализацией патологического процесса Показания: оперативный доступ при вмешательствах по поводу операбельных опухолей головного мозга мозговых грыж водянки мозга кисты мозга и пр Техника выполнения: 1. Осложнения: Кровотечение; Инфекция; Отек головного мозга; Повреждение мозга после чего может возникнуть: Изменения в памяти поведении мышлении речи; Проблемы со зрением; Проблемы с балансом; Проблемы кишечника и мочевого пузыря; Судороги; Паралич или слабость; Реакция... | |||
83842. | Первичная хирургическая обработка ран головы | 48.42 KB | |
При осмотре пациента с раной головы необходимо определить: 1 ее глубину 2 наличие в ране поврежденных артериальных сосудов 3 наличие или отсутствие повреждения костей свода черепа. Наличие или отсутствие костных повреждений необходимо уточнять не только при осмотре раны но и с использованием рентгенографии черепа и компьютерной томографии головы. | |||
83843. | Хирургическая анатомия лицевого и тройничного нерва. Разрез при гнойном паротите | 50.26 KB | |
Хирургическая анатомия лицевого нерва Лицевой нерв смешанный. Двигательная часть начинается от ядра лицевого нерва в Варолиевом мосту. У клеток двигательного ядра имеются многочисленные чувствительные коллатерали идущие из чувствительных ядер тройничного нерва. | |||
83844. | Кровеносные сосуды лица | 50.02 KB | |
Артерии Верхнечелюстная артерия является одной из двухконечных ветвей наружной сонной артерии. В первом отделе следующие ветви: 1 глубокая ушная артерия разветвляется в коже наружного слухового прохода в барабанной перепонке и в капсуле височно нижнечелюстного сустава; 2 передняя барабанная артерия проникает через каменисто барабанную щель к слизистой оболочке барабанной полости; 3 нижняя альвеолярная артерия вхожи в канал нижней челюсти и отдаёт ветви к зубам и десне нижней челюсти; её конечная ветвь подбородочная артерия... | |||
83845. | Клетчаточные пространства лица. Хирургическая тактика при флегмонах лица | 52.56 KB | |
выше линии соединяющей углы рта. VI Клетчаточные пространства под слизистой оболочкой мышцами и органами дна полости рта: Боковые клетчаточные пространства между языком и нижней челюстью В них окруженные клетчаткой располагаются подъязычные слюнные железы с большими выводными протоками. Гнойные процессы возникающие в межмышечных клетчаточных пространствах дна полости рта могут распространятся в пределах дна полости рта. Височноязычный промежуток сообщается с жировым телом щеки крылонебной ямкой а через круглое отверстие с полостью... | |||
83846. | Хирургическая тактика при флегмонах лица | 54.42 KB | |
Раскрытие и дренирование флегмон скуловой области. Раскрытие и дренирование флегмон височной области. В указанной области возможно возникновение поверхностной межапоневротической подапоневротической глубокой и разлитой флегмон. Поверхностная флегмона височной области образуется между кожей и собственной височной фасцией. | |||
83847. | Подчелюстная область, треугольник Пирогова. Перевязка язычной артерии, показания, техника выполнения | 48.93 KB | |
В пределах подчелюстной области залегают: подчелюстная слюнная железа лицевые артерия и вена подподбородочные артерия и вена подъязычный и челюстноподъязычный нервы лимфатические узлы и клетчатка окружающая эти образования. Последняя сообщается с клетчаткой подъязычной области крыловидночелюстного окологлоточного пространств боковой области лица и шеи. Подчелюстные лимфатические узлы являются регионарными узлами челюстнолицевой области полости рта. Треугольник Пирогова Треугольное пространство в боковой части надподъязычной... | |||
83848. | Коникотомия. Показания, техника выполнения, осложнения, их профилактика | 116.46 KB | |
Врач встав справа от больного указательным пальцем левой руки нащупывает бугорок перстневидного хряща и углубление между ним и нижним краем щитовидного хряща соответствующее расположению конической связки. Большим и средним пальцами левой руки фиксируют щитовидный хрящ натягивая кожу над хрящами гортани и смещая кзади грудиноключичнососцевидные мышцы с расположенными под ними шейными сосудистыми пучками второй палец находится между дугой перстневидного и нижним краем щитовидного хряща. Скальпелем проводят горизонтальный поперечный разрез... | |||
83849. | Трахеостомия. Верхняя и нижняя трахеостомия. Показания, техника операции. Осложнения и их профилактика | 53.71 KB | |
Трахеостомия это операция формирования искусственного наружного свища трахеи трахеостомы после вскрытия ее просвета. Рассечение стенки трахеи называется трахеотомией и она является этапом выполнения трахеостомии. Показания: Механическая асфиксия: инородные тела дыхательных путей при невозможности удалить их при прямой ларингоскопии и трахе обронхоскопии; нарушение проходимости дыхательных путей при ранениях и закрытых травмах гортани и трахеи; стенозы гортани: при инфекционных заболеваниях дифтерия грипп коклюш при... | |||