Алексей Стахнов - Linux
Регистрация новых пользователей
Следует разработать правила регистрации новых пользователей в системе, которые должны неукоснительно выполняться. Существует несколько правил, которых необходимо придерживаться при работе с пользователями:
• предоставлять минимальное количество привилегий;
• отслеживать, когда и откуда происходит регистрация пользователя;
• не забывать удалить пользователя, если он больше не работает в фирме;
• стараться максимально ограничить количество пользователей, имеющих нестандартную конфигурацию или привилегии.
Безопасность пользователя 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 или подобные) позволяют использовать различные алгоритмы шифрования для паролей.