Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Система защиты в операционной системе Linux



Лабораторная работа № 7

Система защиты в операционной системе Linux

(версия Ubuntu)

Цель работы: знакомство со способами и реализующими их средствами защиты информации операционной системы Linux (Ubuntu), приобретение практических навыков их использования.

Часть 1. Права доступа в системе Linux и повышение прав пользователей

Права доступа в системе Linux

Пользователи и группы

Поскольку система Linux с самого начала разрабатывалась как многопользовательская система, в ней предусмотрен такой механизм, как права доступа к файлам и каталогам. Он позволяет разграничить полномочия пользователей, работающих в системе. В частности, права доступа позволяют отдельным пользователям иметь «личные» файлы и каталоги. Например, если пользователь user создал в своѐм домашнем каталоге файлы, то он является владельцем этих файлов и может определить права доступа к ним для себя и остальных пользователей. Он может, например, полностью закрыть доступ к своим файлам для остальных пользователей, или разрешить им читать свои файлы, запретив изменять и исполнять их.

Правильная настройка прав доступа позволяет повысить надѐжность системы, защитив от изменения или удаления важные системные файлы. Наконец, поскольку внешние устройства с точки зрения Linux также являются объектами файловой системы, механизм прав доступа можно применять и для управления доступом к устройствам.

У любого файла в системе есть владелец — один из пользователей. Однако каждый файл одновременно принадлежит и некоторой группе пользователей системы. Каждый пользователь может входить в любое количество групп, и в каждую группу может входить любое количество пользователей из числа определѐнных в системе.

Кроме учѐтных записей, которые используют люди для работы с системой, в Linux предусмотрены учѐтные записи для т. н. системных пользователей: сточки зрения системы это такие же пользователи, которые могут быть владельцами файлов, однако эти учѐтные записи используются только для работы некоторых программ-серверов. Например, стандартный системный пользователь mail используется программами доставки почты.

Когда в системе создаѐтся новый пользователь, он добавляется по крайней
мере в одну группу. В дальнейшем администратор может добавить пользователя к другим группам.

Механизм групп может применяться для организации совместного доступа нескольких пользователей к определѐнным ресурсам. Например, на сервере организации для каждого проекта может быть создана отдельная группа, в которую войдут учѐтные записи (имена пользователей) сотрудников, работающих над этим проектом. При этом файлы, относящиеся к проекту, могут принадлежать этой группе и быть доступными для еѐ членов.


Добавление пользователей

Добавление и удаление пользователей — одни из основных задач, которые необходимо уметь выполнять.

1) Для начала откройте терминал, как вы видите терминал работает под пользователем user1, который не имеет root привелегий для добавления нового пользователя.

 

Рис. 149 Терминал

2) Чтобы пользователь получил привелегии root, необходимо выполнить команду sudosu. После ввода команды вам предлагается ввести пароль от текущего пользователя (введите – 1)

 

Рис. 150 Выполнение команды sudosu

 

3) После ввода пароля вы увидите, что теперь все действия будут выполняться от пользователя root

Рис. 151 Результат выполнения команды sudosu

4) Теперь введите следующую команду

adduser newuser

 

В любом случае система задаст ряд вопросов.

· Нужно установить и подтвердить пароль нового пользователя.

· Затем нужно предоставить дополнительную информацию о новом пользователе. Это совершенно не обязательно, при желании все поля можно оставить незаполненными, нажав Enter.

· В завершение нужно подтвердить подлинность введенной только что информации. Для этого введите Y.

 

Новый пользователь готов к работе! Теперь можно открыть учетную запись нового пользователя, используя установленный ранее пароль.

Удаление пользователей

В случае если пользователь больше не нужен, его аккаунт лучше удалить. Можно удалить самого пользователя, не удаляя его файлов, набрав как root следующее:

dellusernewuser

 

Если текущим является пользователь с привилегиями sudo, наберите:

sudodellusernewuser

 

Чтобы удалить домашний каталог пользователя, когда пользователь удален, выполните как root следующую команду:

Delluser --remove-homenewuser

Если пользователь, которого нужно удалить, имеет привилегии sudo, нужно удалить соответствующую строку из конфигурационного файла, чтобы отнять привилегии:

· для пользователя root

visudo

 

· для пользователя с привилегиями sudo

sudo visudo

 

root   ALL=(ALL:ALL) ALL newuser ALL=(ALL:ALL) ALL # Удалитеэтустрочку

 

Таким образом, если в дальнейшем в системе появится пользователь с таким же именем, он не сможет пользоваться случайно доставшимися привилегиями sudo.

Виды прав доступа


Права доступа определяются по отношению к трѐм типам действий: чтение (r), запись (w) и исполнение (x). Эти права доступа могут быть предоставлены 3-ем классам пользователей: владельцу файла (пользователю), группе, которой принадлежит файл, а также всем остальным пользователям, не входящим в эту группу. Право на чтение даѐт пользователю возможность читать содержимое файла или, если такой доступ разрешен к каталогам, просматривать содержимое каталога (используя команду ls). Право на запись даѐт пользователю возможность записывать или изменять файл, а право на запись для каталога — возможность создавать новые файлы или удалять файлы из этого каталога. Наконец, право на исполнение позволяет пользователю запускать файл как программу или сценарий командной оболочки (разумеется, это действие имеет смысл лишь в том случае, если файл является программой или сценарием). Владение правами на исполнение для каталога позволяет перейти (командой cd) в этот каталог.

 

Чтобы получить информацию о правах доступа, используйте команду ls с ключом -l. При этом будет выведена подробная информация о файлах и каталогах, в которой будут, среди прочего, отражены права доступа. Рассмотрим следующий пример:


$ls –l > ls.txt
$ls -l
-rw—r—r-- user user 430 Ноя 9 11:11 ls.txt


Первое поле в этой строке (-rw-r--r--) отражает права доступа к файлу. Третье поле указывает на владельца файла, четвѐртое поле указывает на группу, которая владеет этим файлом. Последнее поле — это имя файла (ls.txt). Другие поля описаны в документации к команде ls.

Первый символ из этого ряда (-) обозначает тип файла. Символ - означает, что это — обычный файл, который не является каталогом (в этом случае первым символом было бы d) или псевдофайлом устройства. Следующие три символа (rw-) представляют собой права доступа, предоставленные владельцу user. Символ r — сокращение от read (англ. читать), а w —сокращение от write (англ. писать). Таким образом, user имеет право на чтение и запись (изменение) файла.

После символа w мог бы стоять символ x, означающий наличие прав на исполнение (англ. execute, исполнять) файла. Однако символ-, стоящий здесь вместо x, указывает, что user не имеет права на исполнение этого файла. Это разумно, так как файл не является программой. В то же время, пользователь, зарегистрировавшийся в системе как user, при желании может предоставить себе право на исполнение данного файла, поскольку является его владельцем. Для изменения прав доступа к файлу или каталогу используется команда chmod.

Следующие три символа (r--) отражают права доступа группы к файлу. Наконец, последние три символа (это опять r--) отражают собой права доступа к этому файлу всех других пользователей, помимо собственника файла и пользователей из группы. Так как здесь указан только символ r, эти пользователи тоже могут читать файл. Вот ещѐ несколько примеров:


-rwxr-x—x


Пользователь-владелец файла может читать файл, изменять и исполнять его; пользователи, члены группы-владельца могут читать и исполнять файл, но не изменять его; все остальные пользователи могут лишь запускать файл на выполнение.


-rw-------


Только владелец файла может читать и изменять его.


-rwxrwxrwx


Все пользователи могут читать файл, изменять его и запускать на выполнение.


----------

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

 













Основные команды

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


$chmod - Изменение прав доступа к файлу или каталогу.


$chown - Изменение владельца файла.


$chgroup - Изменение группы, которой принадлежит файл.

1.

1.1.

1.1.1.




Изменение прав

Команда chmod используется для изменения прав доступа на файл или директорию. Существует 2 способа, с помощью которых можно задавать права. Если рассматривать настройки прав, как последовательность битов (как их рассматривает компьютер), то все окажется просто, например:

 

rwx rwx rwx = 111 111 111

rw- rw- rw- = 110 110 110

rwx --- --- = 111 000 000

 

Т.е. наличие буквы - это единица, прочерк - ноль. Если эту последовательность перевести в восьмеричную систему исчисления (или если проще, то перевести каждую тройку цифр из двоичной системы в десятичную, например, 111 = 22 + 21 + 20 = 4 + 2 + 1 = 7), то получим:

 

rwx rwx rwx = 777

rw- rw- rw- = 666

rwx --- --- = 700

 

Именно такой формат чаще всего встречается при работе с правами доступа. Например, чтобы установить все права всем:

 

user@snort-ubuntu:~$ chmod 777 some.rar

 

Есть более простой способ закодировать права доступа. Стоит запомнить, что права на чтение - это 4, на запись - 2, на выполнение - 1 и 0 - забрать права. И чтобы установить права для владельца только на чтение и у всех отобрать их, стоит поочередно складывать. Владелец (чтение): 4 + 0 +0 = 4, группа (нет прав): 0 + 0 + 0 = 0, все остальные (нет прав): 0 + 0 + 0 = 0, т.е. в нашем случае получаем 400.

 

Есть другой формат задания прав, который понимает chmod - символьный. Символьная форма позволяет установить выборочные биты кода защиты и имеет вид:

[ugoa] [+ =] [rwxstugo] ,

где

­ u – владелец,

­ g – группа,

­ o – прочие,

­ a – все категории пользователей (по умолчанию),

­ + – разрешить доступ,

­ –  – запретить доступ,

­ = – назначить доступ,

­ r – чтение,

­ w – запись,

­ x – выполнение,

­ s – смена идентификатора пользователя или группы,

­ t – сохранение образа файла в области выгрузки,

­ ugo – оставить текущие значения бита доступа.

Например, добавить права на запись для группы:

 

user@snort-ubuntu:~$ chmod g+w some.rar

 

Убрать права на чтение и запись у всех остальных:

 

user@snort-ubuntu:~$ chmod o-rw some.rar

 

Или убрать права на выполнение для всех:

 

user@snort-ubuntu:~$ chmod a-x some.rar

Более детально об этот формат можно узнать в менуале (man chmod).

 

Для директорий схема прав доступа работает также как и для файлов, за исключением прав на выполнение. Для каталогов установка права на выполнение означает разрешение на просмотр содержимого директории.

Опции

Из самых полезных и часто используемых опций можно выделить одну:

 

§ -R - рекурсивное назначение прав. Т.е. назначить права всем объектам, руководствуясь регулярным выражением.

Например:

§ chmod -R 755 * - Назначение прав всем объектам текущего каталога, включая подкаталоги.

§ chmod -R 700 z* - Назначить полные права для владельца и исключить права для группы и всех остальных для всех объектов, которые начинаются именоваться на z, находящиеся в текущем каталоге и его подкаталогах.

Изменение владельца файла

Для изменения владельца файла используется команда chown. Обычно для изменения владельца нужны права рута, по-этому сначала выполняем команду su

user@snort-ubuntu:~$ sudo suroot@snort-ubuntu:/home/user#chown some_user some.rarroot@snort-ubuntu:/home/user#exit

При помощи команды chown, можно также изменить и группу, указав ее после имени пользователя следующим образом

chown some_user:some_group some.rar

Изменяем группу на файл

Для даной задачи используется команда chgrp. По своей семантике она аналогична команде chown

user@snort-ubuntu:~$ chgrp some_group web.rar

Дополнительные биты доступа

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

 

Бит SUID

Бит suid. Расшифровывается как Set user ID, переводится как "установить идентификатор юзера". Поскольку подходящего русскоязычного термина не существует, его обычно называют "суидный" бит, а файлы, на которых он установлен - "суидными".

Смысл его состоит в том, что если он установлен на файле, который является программой, то при выполнении эта программа автоматически меняет "эффективный userID" на идентификатор того юзера, который является владельцем этого файла. То есть, не зависимо от того - кто запускает эту программу, она при выполнении имеет права хозяина этого файла.

Обычно это делается для того, чтобы юзер мог выполнить действия, которые требуют привилегий root'а (например, поменять свой пароль). Естественно, что для этого владельцем такой программы должен быть юзер root.

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

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

Возвращаясь к разговору о "правах доступа", надо сказать, что у такого файла permissions выглядят как **s****** (если еще и установлен бит x для владельца файла) или как **S****** (если бит x не установлен). Однако, ставить suid бит на неисполняемые файлы обычно не имеет смысла (по крайней мере в FreeBSD). Хотя, мне попадались программы, которые проверяли этот бит даже для текстовых файлов.

Также, это бит не несет никакого смысла если его поставить на директорию, хотя никто не запрещает это сделать.

Бит SGID

Бит sgid. Расшифровывается как Set group ID, переводится как "установить идентификатор группы".

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

Permissions такого файла выглядят как *****s*** (если установлен бит x для группы) или *****S** (если соответствующего бита x нет). Также как и в предыдущем случае, бит sgid для неисполняемых файлов никакого смысла не имеет.

А вот что касается битаsgidна директории. Для FreeBSD (и других ветвей BSD) этот бит, опять же, не оказывает никакого действия. Но в некоторых других Юниксах он означает, что, когда файлы создаются в такой директории, в их атрибутах проставляется группа та же, что и у директории. Другими словами, файлы, создаваемые в такой директории "наследуют" группу от директории.

Бит sticky

Бит sticky. Никак не расшифровывается, переводится как "липкий".
Выглядит в permissions как ********t (если вместе с битом x для "всех остальных") или ********T (если соответствующего бита x нет).

Для директорий его смысл заключается в том, что удалить файл из такой директории (или переименовать) может только владелец файла. Напомню, что в обычном случае (без такого бита) возможность удалять файлы (как и создавать) определяется правом записи (бит w) на директории. То есть, если какой-либо юзер принадлежит к категории, для которой разрешена запись в директорию, он может удалить в ней любой файл, независимо от атрибутов (владельца, группы, permissions) самого файла.

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

Этот бит может ставиться также на исполняемые файлы. В этом случае он означает, что файл, даже после завершения работы, должен оставаться в памяти (конечно, не в ОЗУ, а в swap'е).

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


Порядок выполнения работы

1) Войдите в систему (логин: user1; пароль: 1);

2) Откройте две консоли. В одной из них получите права суперпользователя используя команду sudo su:

3) Используя useradd создайте пользователя «student».

4) Посмотрите какой идентификатор получил пользователь «student», используя команду id:

5) Скопируйте какой-нибудь файл в домашний каталог пользователя «student», используя консоль с правами пользователя «student»:

6) Просмотрите права доступа на домашний каталог пользователя «student», используя команду ls -la:

7) Установите правa 717 в домашний каталог пользователя «student» используя команду chmod:

8) Проверьте сделанные изменения. Сделайте копию экрана для использования в отчете по лабораторной работе.

9) Включите пользователя «student» в группу «root», используя команду usermod -G root student. Команда должна быть выполнена с правами root.

10) Проверьте сделанные изменения при помощи команды id.

11) Удалите пользователя «student» c помощью команды userdel

 

Установка

 

Чтобы начать работать с подсистемой аудита, нужно установить пакет auditd.

sudo apt-getinstallauditd

 

В состав этого пакета входят демон auditd и несколько вспомогательных утилит:

· auditctl — утилита для управления демоном auditd; позволяет получать информацию о текущем состоянии подсистемы аудита, а также добавлять и удалять правила;

· autrace — утилита для аудита событий, порождаемых процессами (работает по тому же принципу, что и strace);

· ausearch — утилита для поиска событий в журнальных файлах;

· aureport — утилита для генерации отчётов о работе системы аудита.

Примечание: данный пакет уже установлен на виртуальной машине, и никаких действий по его установке предпринимать не требуется.

Конфигурирование

 

Прежде чем начать работу с подсистемой аудита, откроем конфигурационный файл etc/audit/auditd.conf. Он содержит в числе прочих следующие параметры:

· log_file — файл, в котором будут храниться логи подсистемы аудита;

· log_format — формат, в котором будет сохранены логи;

· freq — максимальное число записей протокола, которые могут храниться в буфере;

· flush — режим синхронизации буфера с диском (none — ничего не делать, incremental — переносить данные из буфера на диск с частотой, указанной в значении параметра freq; data — синхронизировать немедленно, sync — синхронизировать как данные, так и метаданные файла при записи на диск);

· max_log_file — максимальный размер файла лога в мегабайтах;

· max_log_file_action — действие при превышении максимального размера файла лога;

· space_left — минимум свободного пространства в мегабайтах, по достижении которого должно быть осуществлено действие, указанное в следующем параметре;

· space_left_admin — указывает, что делать, когда на диске недостаточно свободного места (ignore — ничего не делать; syslog — отправлять в syslog, email — отправлять уведомление по почте; suspend — прекратить запись логов на диск; single — перейти в однопользовательский режим; halt — выключить машину);

· disk_full_action — действие, которое нужно осуществить при переполнении диска (этот параметр может принимать те же значения, что и space_left_admin).

Создание правил

Для добавления и настройки правил используется команда auditctl. Вот список её опций:

· -l — вывести список имеющихся правил;

· -а — добавить новое правило;

· -d — удалить правило из списка;

· -D — удалить все имеющиеся правила.

Чтобы создать новое правило, нужно выполнить команду вида:

Auditctl –a<список>, <действие> -S<имя системного вызова> -F<фильтры>

Сначала после опции -а указывается список, в который нужно добавить правило. Всего существует 5 таких списков:

· task — события, связанные с созданием новых процессов;

· entry — события, которые имеют место при входе в системный вызов;

· exit — события, которые имеют место при выходе из системного вызова;

· user — события, использующие параметры пользовательского пространства;

· exclude — используется для исключения событий.

Затем указывается, что нужно делать после наступления события. Здесь возможны два варианта: always (события будут записываться в журнал) и never (не будут).

После опции -S идёт имя системного вызова, при котором событие нужно перехватить (open, close и т.п.).

После опции -F указываются дополнительные параметры фильтрации. Например, если нам требуется вести аудит обращений к файлам из каталога /etc, правило будет выглядеть так:

Auditctl –a exit, always –S open –F path =/etc/

Можно установить и дополнительный фильтр:

Auditctl –a exit,always –S open –F path =/etc/ -F perm = aw

Аббревиатура aw означает следующее: а — изменение атрибута (attribute change), w — запись (write). Формулировка perm = aw указывает, что для директории /etc нужно отслеживать все факты изменения атрибутов (а — attribute change) и w (w — write).

При настройке слежения за отдельными файлами можно опустить опцию -S, например:

Auditctl –a exit,always –F path =/etc/ - F perm = aw

Файлы правил

 

Правила можно не только задавать через командную строку, но и прописывать в файле etc/audit/audit.rules. Начинается этот файл с так называемых метаправил, в которых задаются общие настройки журналирования:

# удаляем все ранее созданные правила-D# задаем количество буферов, в которых будут храниться сообщения-b 320# указываем, что делать в критической ситуации (например, при переполнении буферов ) : 0 – ничего не делать; 1 – отправлять сообщение в dmesg; 2 – отправлять ядро в панику-f 1

 

Далее следуют пользовательские правила. Их синтаксис предельно прост: достаточно просто перечислить соответствующие опции команды auditctl. Рассмотрим пример типового конфигурационного файла:

# отслеживать системные вызовы unlink () и rmdir ()-a exit,always –S unlink –S rmdir# отслеживать системные вызовы open () от пользователя с UID 1001-a exit,always –S open –F loginuid=1001# отслеживать доступ к файлам паролей и групп и попытки их изменения :-w /etc/group –p wa-w /etc/passwd –p wa-w /etc/shadow –p wa-w /etc/sudoers –p wa# отслеживать доступ к следующей директории:-w /etc/my_directory –p r# закрыть доступ к конфигурационному файлу для предотвращения изменений -e 2

 

Изменения конфигурации вступят в силу после перезапуска демона auditd:

sudo service auditd restart

 

Анализ журнальных файлов

Все журнальные файлы сохраняются в директории /var/log/audit в машиночитаемом формате. Их можно сделать человекопонятными c помощью утилиты aureport. Если ввести команду aureport без аргументов, мы увидим общую системную статистику (количество пользователей системы, общее количество системных вызовов, число открытых терминалов и т.п.):

$ sudo aureport

Summary Report

======================

Range of time in logs: 07/31/2015 14:04:23.870 - 08/04/2015 09:37:13.200

Selected time for report: 07/31/2015 14:04:23 - 08/04/2015 09:37:13.200

Number of changes in configuration: 0

Number of changes to accounts, groups, or roles: 3

Number of logins: 0

Number of failed logins: 0

Number of authentications: 0

Number of failed authentications: 61205

Number of users: 2

Number of terminals: 5

Number of host names: 73

Number of executables: 6

Number of files: 0

Number of AVC's: 0

Number of MAC events: 0

Number of failed syscalls: 0

Number of anomaly events: 0

Number of responses to anomaly events: 0

Number of crypto events: 0

Number of keys: 0

Number of process IDs: 17858

Number of events: 61870

Она не имеет особой практической ценности. Гораздо больший интерес представляют специализированные отчёты. Вот так, например, можно просмотреть информацию обо всех системных вызовах:

$ sudo aureport -s

Syscall Report

=======================================

# date time syscall pid comm auid event

=======================================

1. 08/03/2015 15:45:03 313 10285 modprobe -1 52501

2. 08/03/2015 15:45:03 313 10290 modprobe -1 52502

3. 08/03/2015 15:45:03 54 10296 iptables -1 52503

4. 08/03/2015 15:45:03 54 10302 iptables -1 52504

5. 08/03/2015 15:45:03 54 10305 iptables -1 52505

6. 08/03/2015 15:45:03 54 10313 iptables -1 52506

7. 08/03/2015 15:45:03 54 10325 iptables -1 52507

8. 08/03/2015 15:45:03 54 10329 iptables -1 52508

9. 08/03/2015 15:45:03 54 10343 iptables -1 52509

10.08/03/2015 15:45:03 54 10345 iptables -1 52510

11.08/03/2015 15:45:03 54 10349 iptables -1 52511

 

Воспользовавшись опцией -au (или −−auth), можно просмотреть информацию обо всех попытках входа в систему:

$ sudo aureport -au

Authentication Report

============================================

# date time acct host term exe success event

============================================

1. 08/31/2015 18:00:19 ubnt static-166-6-249-80.stalowa.pilicka.pl ssh /usr/sbin/sshd no 333

2. 08/31/2015 18:01:38 root 59.63.188.31 ssh /usr/sbin/sshd no 334

3. 08/31/2015 18:01:41 root 59.63.188.31 ssh /usr/sbin/sshd no 335

4. 08/31/2015 18:01:45 root 59.63.188.31 ssh /usr/sbin/sshd no 336

 

В аureport поддерживается фильтрация по дате и времени:

sudo aureport –s --start 07/31/15 12:00 --end 07/31/15 13:00

Можно указывать как конкретные время и дату, так и специальные человекопонятные конструкции:

· now — текущий момент;

· yesterday — вчерашнее сутки;

· recent — 10 минут назад;

· this-week (или this-month, this-year) — текущаянеделя (месяц, год).

С помощью aureport можно просмотреть информацию о действиях любого пользователя системы. Для этого нужно сначала узнать id этого пользователя:

iduseruid=1000(user) gid=1000(maxim) groups=1000(maxim),27(sudo)

 

и затем выполнить следующую команду:

sudo ausearch –ui 1000 --interpret

 

Анализ процессов

В некоторых случаях бывает полезным получить информацию о событиях, связанных с одним конкретным процессом. Для этой цели можно воспользоваться утилитой autrace. Предположим, нам нужно отследить процесс date и узнать, какие системные вызовы и файлы он использует. Выполним команду:

sudoautrace /bin/date

 

На консоли появится следующий текст:


Waiting to execute: /bin/date

Mon Aug 31 17:06:32 MSK 2015

Cleaning up...

Trace complete. You can locate the records with 'ausearch -i -p 29234'

Trace complete. You can locate the records with 'ausearch -i -p 29234'

Обратим внимание на последнюю строку вывода: в ней указана команда, с помощью которой можно получить более подробную информацию. Выполним эту команду и передадим вывод утилите aureport, которая преобразует его в человекочитаемый формат:

sudo ausearch –p 29215 --raw | aureport –f –i

В результате мы получим вот такой отчёт:

 

File Report

===============================================

# date time file syscall success exe auid event

===============================================

1. 08/31/2015 16:52:16 /bin/date execve yes /bin/date root 25

2. 08/31/2015 16:52:16 /etc/ld.so.nohwcap access no /bin/date root 27

3. 08/31/2015 16:52:16 /etc/ld.so.preload access no /bin/date root 29

4. 08/31/2015 16:52:16 /etc/ld.so.cache open yes /bin/date root 30

5. 08/31/2015 16:52:16 /etc/ld.so.nohwcap access no /bin/date root 34

6. 08/31/2015 16:52:16 /lib/x86_64-linux-gnu/libc.so.6 open yes /bin/date root 35

7. 08/31/2015 16:52:16 /usr/lib/locale/locale-archive open yes /bin/date root 52

8. 08/31/2015 16:52:16 /etc/localtime open yes /bin/date root 56

Trace complete. You can locate the records with 'ausearch -i -p 29234'


Порядок выполнения работы

1) Войдите в систему (логин: user1; пароль: 1);

2) Запустите терминал и создайте правило, как это показано в пункте 1.4;

3) Проанализируйте журнальные файлы введя команду aureport без аргументов;

4) Введите команду aureport с ключом позволяющим увидеть системные вызовы;

5) Введите команду aureport с ключом позволяющим увидеть попытки входа в систему;

6) Введите предыдущие запросы с фильтрацией по дате и времени;

7) Изучите утилиту ausearch (пункт 1.7);

8) Изучите утилиту autrace и получите информацию о событиях произвольного процесса.

 

 

Программа PGP

PGP (Pretty Good Privacy) — компьютерная программа, которая позволяет выполнять операции шифрования/дешифрования и цифровой подписи файлов или сообщений, а также другой информации, представленной в электронном виде, в том числе шифрование данных на запоминающих устройствах.

Рис. 153 Алгоритм шифрования/дешифрования данных

 

Процесс шифрования в PGP проходит в несколько этапов: хеширование, сжатие данных, шифрование с симметричным ключом, и, наконец, шифрованием с открытым ключом. Причём каждый этап может использовать разные алгоритмы. Так симметричное шифрование производится с использованием одного из семи симметричных алгоритмов (AES, Blowfish, 3DES, CAST5, IDEA,Twofish, Camellia) на сеансовом ключе. Сеансовый ключ в свою очередь генерируется с использованием криптографически стойкого генератора псевдослучайных чисел. Он зашифровывается открытым ключом получателя с использованием алгоритмов RSA или Elgamal (в зависимости от исходного открытого ключа получателя).

Изначально PGP разрабатывалась для защиты электронной почты на стороне клиента, но начиная с 2002 года также включает в себя шифрование жёстких дисков, директорий, файлов, сессий программ мгновенного обмена сообщениям, защиту файлов и директорий в сетевых хранилищах, пакетной передачи файлов, а в новых версиях — шифрование HTTP-запросов и ответов на стороне сервера и клиента.

TrueCrypt

TrueCrypt — одна из самых известных программ для шифрования данных «на лету». Позволяет создавать виртуальный зашифрованный логический диск, хранящийся в виде особого файла - криптоконтейнера. С помощью TrueCrypt также можно полностью зашифровать раздел жёсткого диска или любого другого носителя информации, например, USB диск.

В процессе работы данная утилита создает на компьютере специальную защищенную область. Операционная система в свою очередь воспринимает эту область как файл или диск. Отличие между защищенным пространством TrueCrypt и обычным диском, в том, что на обычном диске данные обычно никак не защищены, а TrueCrypt шифрует данные “на лету”, абсолютно незаметно для пользователей, и тем самым обеспечивает надежную защиту информации без специальных манипуляций с ней. Кроме того, в защищенной области TrueCrypt умеет размещать данные, которые будут не просто зашифрованы, но и скрыты от посторонних глаз.

TrueCrypt может создавать зашифрованный виртуальный диск:

· В файловом контейнере, что позволит легко работать с ним — копировать, переносить (в том числе на внешние устройства в виде файла), переименовывать или удалять;

· В виде зашифрованного раздела диска, что сделает работу более удобной и производительной, начиная с версии 5.0 появилась возможность шифровать системный раздел;

· Путём полного шифрования содержимого устройства, такого как USB диск (флоппи-диски перестали поддерживаться с версии 7.0).

В список поддерживаемых TrueCrypt алгоритмов шифрования входят AES, Twofish и Serpent.

Для того, чтобы получит доступ к зашифрованным данным применяется пароль (ключевая фраза), ключевой файл (один или несколько), а также их комбинации. В качестве ключевых файлов можно использовать любые доступные файлы на локальных, съёмных, сетевых дисках (при этом будут использоваться первые 1,048,576 байт) или генерировать свои собственные ключевые файлы.

Одна из интересных возможностей TrueCrypt — обеспечение двух уровней отрицания наличия зашифрованных данных, необходимого в случае вынужденного раскрытия пароля пользователем:

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

· Ни один из томов TrueCrypt не может быть определен (тома TrueCrypt невозможно отличить от случайного набора данных, поэтому файл нельзя связать с TrueCrypt или с программой его создавшей, ни в какой форме и рамках).

У TrueCrypt есть графическиий интерфейс для Linux, но можно управлять шифрованием и из консоли.

· Создать файл ключа <truecrypt –create-keyfile /home/user/test/file> , где file - название файла-ключа. Учтите, что директория /home/user/test должна существовать.

· Создатькриптоконтейнер<sudo truecrypt -k /home/user/test/file -c /dev/sda9>.

· Примонтировать <sudo mount /dev/mapper/truecrypt0 /mnt/crypto> Директория для монтирования (здесь /mnt/crypto) уже должна существовать.

· Размонтировать <truecrypt -d>.

· Чтобы снова получить доступ к информации, подключим контейнер <truecrypt -k /home/user/test/file /dev/sda9 /mnt/crypto>.

LUCKS/dm-crypt

LUKS (Linux Unified Key Setup) — спецификация шифрования диска (или блочного устройства), изначально предложенная для Linux, но сейчас поддерживаемая и в ряде других операционных систем. Основана на стандартной подсистеме шифрования Linux-ядра под названием dm-crypt и следующая рекомендациям TKS1/TKS2.

Особенности:

· В качестве «контейнера» используется файл. Его размер фиксирован. Возможно изменение размера.

· «Внутри» контейнера создается файловая система, любого удобного вам формата.

· При использовании - монтируется, как обычный раздел.

· Данные сохраняются по блокам, как в обычном файле/файловой системе. То есть :

o модификация файла внутри контейнера приводит к перезаписи блоков, занимаемых этим файлом, но не всего контейнера;

o «потеря/порча» одного блока приводит к потере информации «того-что-было-в-этом-блоке», и не более того.

o при синхронизации контейнера «в облако» - как правило, перезаписывается не весь файл, а «модифицированная часть», что требует малого объема трафика.

В отличие от Truecrypt:

· как правило, выше скорость обработки данных (зависит от алгоритма/размера ключа);

· проще работа с ключами;

· нет механизма «двойного дна»;

· возможны проблемы при попытке использования контейнера «из другой ОС»

Порядок выполнения работы

Лабораторная работа № 7

Система защиты в операционной системе Linux

(версия Ubuntu)

Цель работы: знакомство со способами и реализующими их средствами защиты информации операционной системы Linux (Ubuntu), приобретение практических навыков их использования.


Поделиться:



Последнее изменение этой страницы: 2019-06-09; Просмотров: 169; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.22 с.)
Главная | Случайная страница | Обратная связь