Linux - Алексей Стахнов 18 стр.


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

Охрана жесткого диска

Если на жестком диске хранится информация, которая ни в коем случае не должна попасть в чужие руки, и лучше ее уничтожить, чем допустить пропажу, то для этого необходимо предпринять дополнительные меры. Если у вас небольшой сервер или рабочая станция, имеет смысл жесткий диск, на котором хранится информация, установить в специальную съемную корзину, так называемый Rack Mount. Это позволит по окончании работы извлекать жесткий диск из компьютера и прятать в сейф. Для больших серверов такое сделать несколько затруднительно, но иногда имеет смысл. В случае, если к вам заявляются гости, которым "невозможно отказать", можно практически моментально извлечь жесткий диск и уничтожить его, разбив об пол. (Автору известна фирма, возле сервера которой стоит охранник, в случае попытки прорыва в серверную обязанный выстрелом из пистолета уничтожить жесткие дискию.)

BIOS

BIOS является самым первым звеном, от которого зависят настройки компьютера, и попытка проникновения в BIOS будет произведена взломщиком в 99 % случаев. Практически любая BIOS имеет возможность установить два типа паролей – на вход в систему и на вход в BIOS. Это не дает стопроцентной защиты (установки BIOS могут быть обнулены, если кто-то имеет доступ вовнутрь корпуса), но может быть хорошим сдерживающим фактором. Однако следует помнить, что в случае установки загрузочного пароля на сервере система не сможет загрузиться без вмешательства администратора. (Очень неприятно, когда в три часа ночи вас выдергивают из постели для того, чтобы вы ввели пароль в сервер.)

Загрузочные устройства

Если не установлен пароль в BIOS, велика вероятность, что взломщик попытается загрузить систему с помощью системной дискеты, CD-ROM-диска, Zip-дисковода и тому подобных съемных устройств. Это дает ему полный доступ к жестким дискам компьютера. Поэтому, помимо установки пароля на вход в BIOS, необходимо запретить в BIOS загрузку со всех устройств, кроме жесткого диска. Так же рекомендуется либо отключить в BIOS сервера дисководы съемных устройств, либо (при наличии такой возможности) физически отключить флоппи-, Zip– и тому подобные дисководы и CD-ROM, а иногда даже вообще не устанавливать их в сервер.

Безопасность загрузчика операционной системы

Загрузчики Linux также имеют возможность установки стартового пароля. Это позволяет предотвратить загрузку операционной системы без ввода пароля.

Программы xlock и vlock

Если вы отходите на какое-то время от своего рабочего компьютера и не хотите выключать его, используйте программы xlock и vlock. Эти программы заблокируют доступ к системе, причем как визуально (черный экран или какая-то надпись типа "Консоль заблокирована"), так и с помощью клавиатуры:

• xlock предназначена для X Window. Она "запирает" дисплей и для продолжения работы запрашивает пароль;

• vlock – консольная программа, которая позволяет "запереть" часть или все виртуальные консоли системы.

Конечно, "запирание" консоли не позволит нанести прямой вред работе, однако не помешает перезагрузить машину (кнопку Reset или отключение питания еще никто не отменял).

Определение нарушений физической безопасности

При подозрении на попытку нарушения физической безопасности системы первым делом проверьте, что сразу бросается в глаза – наличие физических повреждений. Второе – определите, была ли произведена перезагрузка системы. Операционная система Linux очень надежна, и непроизвольные перезагрузки по ее вине исключены. Если операционная система непроизвольно перезагружается, причина, скорее всего, в аппаратной части. Известны случаи, когда установленный на столе компьютер перезагружался, если кто-то задевал стол. Причиной была микротрещина в материнской плате. Во всех остальных случаях перезагрузка системы производится администратором (пользователем) или по команде источника бесперебойного питания. Если компьютер перезагружен без вас – это проблема, требующая изучения.

Вот часть того, что следует проверить:

• короткие или незаконченные системные журналы;

• системные журналы, которые содержат неверные права доступа или права собственности;

• системные журналы, в которых присутствуют записи перегрузки или перезапуска сервисов;

• отсутствие системных журналов;

• подключение пользователя с нетипичного для него места или использование программы su пользователем, который никогда этого не делал.

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

Локальная безопасность

Сразу после установки системы необходимо позаботиться о защите от локальных пользователей. Достаточно много методов взлома основано на различных недочетах или ошибках программного обеспечения, доступного только им. Локальный пользователь и сам по себе потенциально опасен. Предоставьте ему чуть больше прав, чем следует и одной простой командой rm он может снести половину операционной системы.

Регистрация новых пользователей

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

• предоставлять минимальное количество привилегий;

• отслеживать, когда и откуда происходит регистрация пользователя;

• не забывать удалить пользователя, если он больше не работает в фирме;

• стараться максимально ограничить количество пользователей, имеющих нестандартную конфигурацию или привилегии.

Безопасность пользователя root

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

• старайтесь избегать использования сложных комплексных комавд или длинных одиночных команд. Велика вероятность того, что вы ошибетесь и выполните не то, что надо;

• используйте потенциально опасные команды (удаление, переименование, перенос файлов) со специальным ключом, который заставляет команду спрашивать, действительно ли вы хотите совершить эту операцию с файлами. Помните, удаленные файлы в операционной системе Linux восстановить невозможно;

• регистрируйтесь в системе как пользователь root только в экстраординарных случаях. Для выполнения отдельных команд вполне можно воспользоваться программами su и sudo;

• исключите из своего и пользовательского обихода r-утилиты – rlogin, rsh, rexec и тому подобные, а также программу telnet. Лучше просто удалите их из всех систем. Эти программы были хороши лет двадцать пять назад. Теперь же каждый второй взломщик пытается ими воспользоваться в корыстных целях. В качестве замены используйте пакет SSH;

• сначала хорошенько подумайте, что собираетесь делать, потом проверьте, правильно ли ввели команду. И только затем нажмите клавишу <Enter>.

Безопасность файлов и файловой системы

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

• ограничьте возможность запуска пользователем специальных команд или файлов. Для разделов, на которые может записывать данные любой пользователь, в файле /etc/fstab поставьте опцию nosuid. Так же можно использовать nodev (запрещает создание символьных и блочных устройств), поехес (запрет выполнения программ) и го (монтировать раздел только для чтения);

• не рекомендуется использовать NFS. Если все же NFS установлена, применяйте максимальные ограничения;

• настройте маску для создания пользователями файлов в максимально ограничивающем режиме. Идеальный вариант – маска 077;

• установите квоты на использование файловой системы для пользователей. Также желательно запретить приложениям пользователя создавать дамп памяти программы на диске;

• старайтесь свести к минимуму количество SUID– и SGID-файлов в системе. Поскольку эти программы предоставляют пользователям, которые их запускают, специальные привилегии, необходимо убедиться, что небезопасные программы не установлены;

• обнаруживайте и удаляйте файлы. rhosts;

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

• периодически проверяйте права доступа ко всем важнейшим файлам системы. Изменение прав доступа к файлам – один из основных признаков взлома системы.

Проверка целостности файлов

Хороший способ обнаружения атаки на операционную систему – проверка целостности файлов. Существует несколько пакетов, с помощью которых можно организовать проверку системы. Простейший случай – программа rpm, с помощью которой можно сверить все файлы установленных в системе пакетов. Однако эта программа не может сверить файлы, попавшие в систему минуя rpm.

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

Особенности безопасности файловой системы Ext2

В файловой системе Ext2 присутствует поддержка дополнительных флагов для файлов, используемых для повышения безопасности системы. Ядро Linux версии 2.4 позволяет работать со следующим набором атрибутов:

• A – Atime. Система не модифицирует access time для данного файла;

• S – Sync. Система фиксирует все изменения, происходящие в данном файле на физическом диске синхронно с приложением, изменяющим данный файл;

• а – append. Система позволяет открывать данный файл с целью его дополнения и не позволяет никаким процессам перезаписывать или усекать его. Если данный атрибут применяется к каталогу – процесс может создавать или модифицировать файлы в этом каталоге, но не удалять их;

• i – immutable. Система запрещает любые изменения данного файла. Если данный атрибут применяется к каталогу – процессы могут модифицировать файлы, уже содержащиеся в данном каталоге, но не могут удалять файлы или создавать новые;

• d – no dump. Программе, создающей дампы системы, дается указание игнорировать данный файл во время создания резервной копии;

• с – compress. Система использует прозрачную компрессию для данного файла;

• s – secure deletion. Удаление такого файла сопровождается записью блоков диска, на которых он располагался, нулями;

• u – undelete. Когда приложение запрашивает файл на удаление, система должна сохранить его блоки на диске, чтобы потом его можно было восстановить.

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

К сожалению, ядро Linux версии 2.4 игнорирует флаги с, s и и.

Флаг A или Atime для определенных файлов может дать некоторую прибавку производительности, т. к. Избавляет систему от необходимости постоянно обновлять поле access time для этих файлов каждый раз, когда их открывают на чтение. Атрибут s или sync увеличивает надежность сохранения данных ценой некоторой потери производительности системы.

Команды для установки и чтения атрибутов в Ext2

Есть две утилиты, специально предназначенные для установки и чтения данных атрибутов: chattr и lsattr.

Команда chattr используется для установки и снятия флагов:

• chattr +Si test. txt – установить флаги sync и immutable для файла test.txt;

• chattr – ai test.txt – убрать флаги append-only и immutable у test.txt;

• chattr =aiA test.txt – установить ограничение на использование только флагов a, i и A.

Команда lsattr выводит список файлов и каталогов с атрибутами и функционально напоминает команду ls.

Команда lsattr -a test*, например, выдаст на экран:

–i– test.conf

–а– test.log

– test.txt

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

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

• leap cap_linux_immutable;

• leap CAP_SYS_RAWIO.

Первый параметр запрещает процессам root изменять флаги а и i, а второй параметр запрещает низкоуровневый доступ к блочным устройствам, таким как диски, чтобы предотвратить изменение флагов, используя прямой доступ к файлам.

Пароли и шифрование

Стандартным атрибутом безопасности системы в наше время является пароль. Наиболее общие рекомендации по выбору паролей приведены ниже:

• длина пароля не должна быть менее, чем 8 символов;

• пароль должен состоять из букв, набираемых в разных регистрах, символов типа # $ @ /. , и цифр;

• не рекомендуется использовать что-либо обозначающие слова;

• желательно периодически изменять пароли.

Семейство Linux для шифрования паролей использует односторонний алгоритм шифрования, называемый DES (Data Encription Standard, стандарт шифрования данных). Хэши паролей затем сохраняются в файле /etc/shadow. Использование одностороннего алгоритма шифрования исключает возможность провести расшифровку /etc/shadow для получения паролей. Однако наличие у взломщика файла /etc/shadow значительно облегчает подбор пароля пользователя программами типа John the Ripper. На современных машинах шестисимвольный пароль подбирается этой программой за пару часов. РАМ-модули (такие как MD5 или подобные) позволяют использовать различные алгоритмы шифрования для паролей.

Протоколы шифрования трафика

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

• SSL – Secure Sockets Layer, метод шифрования, разработанный Netscape для обеспечения безопасности в сети. Он поддерживает несколько различных протоколов шифрования и обеспечивает идентификацию как на уровне клиента, так и на уровне сервера. SSL работает на транспортном уровне и создает безопасный шифрованный канал данных. Чаще всего он используется при посещении пользователем защищенного Web-узла;

• S-HTTP – интернет-протокол, реализующий сервис безопасности;

• S/MIME – Secure Multipurpose Internet Mail Extension, стандарт шифрования, используемый в электронной почте или других типах сообщений в Интернете.

SSH

SSH (Secure Shell) – программа, позволяющая зарегистрироваться на удаленном сервере и иметь шифрованное соединение. SSH используется вместо устаревших и небезопасных утилит rlogin, rsh и rep. Применяемый протокол использует шифрование с помощью открытого ключа как для шифрования соединения между двумя машинами, так и для опознавания пользователей. Существует также несколько бесплатных реализаций SSH-клиентов для Windows.

РАМ

РАМ (Pluggable Authentication Modules) – унифицированный метод идентификации. Практически все современные приложения, которые используют идентификацию пользователя, имеют соответствующий модуль РАМ. Это позволяет пользователю "на лету" изменять методы идентификации, требования, инкапсулировать все локальные методы идентификации без перекомпиляции программ.

Вот что можно делать с РАМ:

• использовать различные алгоритмы шифрования для своих паролей;

• устанавливать лимиты на ресурсы для пользователей;

• "налету" активизировать теневые пароли (shadow password);

• разрешать определенным пользователям регистрироваться только в определенное время и/или из определенного места.

CIPE

CIPE – криптографическая IP-инкапсуляция, шифрует данные на сетевом уровне. Шифруются пакеты, которые передаются между компьютерами в сети. CIPE можно также использовать при тунелировании (tunnelling) для создания виртуальных частных сетей (VPN, Virtual Private Networks). Преимущество низкоуровневого шифрования состоит в том, что оно разрешает прозрачную работу между двумя сетями, соединенными в VPN, без каких-либо изменений в программном обеспечении.

Kerberos

Kerberos является идентификационной системой, разработанной по проекту Athena в Массачусетском технологическом институте (MIT). Kerberos представляет сервер идентификации, услугами которого могут пользоваться компьютеры, подключенные к сети. Таким образом нет необходимости заводить на всех компьютерах учетную запись пользователя. Очень часто используется при модемном соединении провайдерами, имеющими несколько удаленных площадок.

CFS и TCFS

CFS – криптографическая файловая система. Это метод шифрования всей файловой системы, позволяющий пользователям сохранять в ней зашифрованные файлы. Метод использует NFS-сервер, запущенный на локальной машине.

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

Безопасность ядра

Поскольку ядро контролирует поведение компьютера в сети, очень важно, чтобы ядро было максимально защищено от взломов. С этих позиций крайне желательно использовать последние стабильные версии ядер, а при компиляции ядра максимально исключить ненужные вам опции и драйверы устройств.

Устройства ядра

Устройства /dev/random и /dev/urandom служат для получения случайных чисел в любой момент времени. Эти числа используются в генераторах PGP-ключей (Pretty Good Privacy – общедоступная система кодирования информации с открытым ключом), SSH-вызовах и других аналогичных приложениях.

Устройство /dev/random является высококачественным генератором случайных чисел, основанным на временно-зависимых параметрах системы.

Работа устройства /dev/urandom подобна, однако она более быстра, но менее надежна.

Сетевая безопасность

Назад Дальше