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

Безопасность пользователя 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 подобна, однако она более быстра, но менее надежна.

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

   Все наверняка слышали, как кто-то по сети взломал Web-cepвep и испортил его содержимое или украл номера кредиток. Таких случаев становится все больше, поэтому крайне важно обеспокоиться сетевой безопасностью. Не следует, однако, забывать, что атака может проистекать в равной мере как из Интернета, так и из внутренней сети фирмы, поэтому крайне неразумно защищать сеть от атак снаружи и ничего не предпринимать для защиты от атак из внутренней сети.

Packet Sniffers

   Одним из наиболее общих методов взлома сетевых машин является применение сниферов (Packet Sniffer – в дальнейшем просто снифер – программа, позволяющая перехватывать сетевые пакеты, предназначенные для других компьютеров. Первоначально использовалась для анализа сетевого трафика) с уже взломанного компьютера вашей сети. Эта программа перехватывает все Ethernet-пакеты сети и сканирует их на наличие слов Password, Login или su. Таким образом без особых усилий взломщик получает множество паролей для систем, которые он даже и не пробовал пока взламывать. Поэтому крайне нежелательно использовать сетевые сервисы, передающие пароли в незашифрованном виде. Этот способ взлома напрямую связан с обеспечением физической безопасности, т. к. посторонний может просто принести с собой ноутбук и подключиться с его помощью к внутренней сети фирмы.
   Использование SSH или других методов шифрования паролей сводит к нулю эффективность этого способа взлома.

Системные сервисы

   Прежде чем подключить систему к сети, следует подумать, какие сервисы будут предоставляться системой. Чем меньше запущенных сервисов, тем меньше вероятность взлома системы. Можно также ограничить список компьютеров, для которых разрешено использование сервисов вашего компьютера. Для этого в файле /etc/hosts.allow необходимо прописать только те компьютеры, которым разрешено иметь доступ к сервисам на вашем компьютере. Для запрещения доступа «подозрительных» систем следует использовать файл /etc/hosts.deny. Также проверьте ваши каталоги /etc/rc.d/rcN.d на предмет наличия запуска сервисов, которые вам не нужны.
   Однако нельзя огульно выбросить все, что, как вам кажется, не используется. К примеру, удаление сервиса в файле /etc/services приводит к тому, что локальный клиент также не сможет использовать этот сервис.

DNS

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

identd

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

Сетевые сканеры

   Существует целый класс программных пакетов, которые выполняют сканирование портов и сервисов в компьютерных сетях. Сетевые сканеры используются администратором системы для определения уязвимых мест системы, однако никто не мешает воспользоваться ими и злоумышленнику. Наиболее известными, хотя уже и устаревшими, представителями этого класса программ являются SATAN и ISS. SATAN (инструмент администратора безопасности для анализа сетей) является сканером портов с Web-интерфейсом. Он может быть полезен для выполнения легкой, средней или тщательной проверки машины или сети машин. ISS (сканер безопасности Интернета) также является сканером портов. Он быстрее чем SATAN, но SATAN предоставляет больше информации.

Электронная почта

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

«Отказ в предоставлении доступа»

   Очень популярный в последнее время вид атаки. Смысл ее напоминает пословицу – «Сам не гам, и другому не дам». Взломщик пытается искусственно загрузить некоторые сервисы настолько, чтобы они не могли отвечать на запросы или запрещали доступ к вашей машине законным пользователям. Имеется несколько разновидностей такой атаки:
   • SYN flooding – сетевая атака "отказ в предоставлении доступа". Использует преимущества «лазейки» (loophole) в методе создания ТСР-соединения. Последние версии ядер Linux имеют несколько конфигурационных настроек для предотвращения SYN Flooding-атак;
   • Ping flooding – простая грубая реализация атаки "отказ в предоставлении сервиса". Взломщик посылает компьютеру «поток» ICMP-пакетов. Если атака происходит с компьютера с большей полосой пропускания, нежели имеет ваш компьютер, или с нескольких компьютеров одновременно, то ваша машина будет лишена возможности посылать что-либо в сеть. При вариации этой атаки, называемой «smurfmg», на определенный сервер посылается поток ICMP-пакетов с обратным IP-адресом вашей машины;
   • атака Ping о Death использует тот факт, что поступающие ICMP-пакеты ECHO REQUEST могут быть больше, нежели может вместить структура данных ядра, которая сохраняет эту информацию. Из-за приема единичного большого (65 510 байтов) ping-пакета многие системы зависали, поэтому эта атака быстро обрела свое название;
   • Teardrop/New Tear – атака, основанная на ошибке, присутствующей в коде фрагментации IP в Linux– и Windows-платформах. Она была исправлена еще в ядре версии 2.0.33.

Безопасность NFS

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

Firewall

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

Администрирование системы

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

Резервная копия системы

   Администрированию и резервированию операционной системы посвящено много интересных публикаций, так что особо останавливаться на этом процессе мы не будем. Однако рассмотрим несколько общих соображений.
   В настоящее время существует несколько малобюджетных вариантов резервирования системы:
   • использование жестких IDE-дисков. Сегодня приличный жесткий диск емкостью 20 Гбайт стоит порядка восьмидесяти долларов. Как представляется, это небольшая плата за систему, которую отлаживали долго и упорно, а тем более, если в ней хранятся важные данные. Еще одно преимущество резервного копирования на жесткий диск – его можно сконфигурировать так, чтобы было достаточно подключить винчестер в сервер, и система практически сразу становится полностью работоспособна;
   • использование привода CD-RW. Очень экономичный вариант. При стоимости одного диска CD-R менее шестидесяти центов, а диска CD-RW около доллара, это, пожалуй, самый экономичный вариант;
   • использование привода DVD-RAM. Позволяет резервировать достаточно большие объемы данных;
   • привод Zip. Удобен тем, что существует внешний вариант исполнения;
   • привод Jazz. Емкость диска порядка одного гигабайта;
   • накопители на магнитооптике. Существуют разные модели с разной емкостью дисков. Достаточно дороги;
   • ленточные накопители. Существуют разные модели с разной емкостью. Достаточно дороги.
   Сразу после создания резервных копий на лентах и других перезаписываемых носителях необходимо поставить защиту от записи. Сохраняйте ваши резервные копии в надежных недоступных местах. Периодически проверяйте восстанавливаемость резервной копии. Периодически устраивайте "боевые учения" по восстановлению системы.
Режим резервирования
   Существует несколько стратегий резервирования, и только вам решать, какая стратегия резервирования подходит. Достаточно универсальной является следующая стратегия:
   • в конце рабочей недели делается полная резервная копия системы;
   • в течение недели делается нарастающее резервирование системы (то есть резервируется изменение данных по сравнению с прошлым днем);
   • при особо важных изменениях в системе резервная копия делается немедленно.
   Однако достаточно часто используется резервирование не всей системы, а только особо важных данных (например, базы данных), но с совершенно другим интервалом (к примеру, каждый час).
   Существуют специальные программные пакеты, позволяющие писать сценарии автоматизированного сохранения и восстановления данных. Для простых схем резервирования достаточно часто используются скрипты, написанные администратором системы.
Резервирование RPM-базы
   При взломе системы взломщик обычно модифицирует для своих нужд несколько файлов, устанавливаемых при инсталляции из пакетов RPM. Если есть подозрение на взлом системы – одним из первых действий будет проверка целостности этих файлов. Однако, если работал опытный взломщик, велика вероятность того, что он подправит нужным ему образом базу установленных RPM-пакетов или, вообще, уничтожит ее. На функциональности системы отсутствие или повреждение базы установленных RPM-пакетов не влияет, но при этом теряется возможность проверки целостности установленных пакетов. Поэтому крайне желательно периодически копировать базу RPM (/var/lib/rpm/*) на съемный носитель и хранить его отдельно.
   Для проверки целостности установленных пакетов можно воспользоваться командой
 
   rpm -Va
 
   Но не забывайте после установки или удаления пакетов обновлять резервную копию базы RPM.

Файлы регистрации

   Первое, что делает опытный взломщик системы после успешного проникновения в нее – заметает следы. А поскольку ведутся специальные файлы регистрации пользователей в системе, подключений к сетевым сервисам и тому подобных событий, вполне очевидным действием взломщика является уничтожение или модификация файлов журналов. Поэтому крайне важно сохранить эти файлы в неприкосновенности. Начинать надо с ограничения списка пользователей, способных читать и писать в каталог /var/log.
   Регулярно инспектируйте свои журнальные файлы. Большое количество неудачных попыток регистрации или сканирование портов с одного и того же компьютера может указывать на попытку вторжения. Чтобы узнать, где ваш дистрибутив ведет системные журналы, нужно посмотреть в файл /etc/syslog.conf, который указывает syslog, куца записывать различные сообщения. Если вы заметили, что в журнальных файлах кто-то похозяйничал, необходимо определить, когда это началось и каких процессов касалось. Лучше всего в такой ситуации восстановить журналы с резервных копий и определить момент взлома.