LXF158:Рубрика сисадмина: Знать свои слабости
Olkol (обсуждение | вклад) (→Невообразимая сложность) |
Olkol (обсуждение | вклад) (→Невообразимая сложность) |
||
| Строка 59: | Строка 59: | ||
|- | |- | ||
| Текст ячейки | | Текст ячейки | ||
| − | |||
|} | |} | ||
Версия 14:40, 15 сентября 2018
|
|
|
По рецептам доктора Брауна
Содержание |
Эзотерическое системное администрирование из причудливых заворотов кишок серверной
Моя жена ведет кружок по пошиву лоскутных покрывал. Поотиравшись около их сборищ, я научился отличать узор «плетенка» от узора «лестничка», узнал, что дешевый ватин мохрится, и понял, как вырезать фестоны для «широких квадратов». Нет, я не выдумывал эти термины.
Свой жаргон есть у всех профессий. Но я бы сказал, что в мире открытого ПО его многовато. Где еще вы услышите, что обратный слэш экранирует звездочку, или получите советы погрепить в логах, отправить демону сигнал HUP, su’кнуть в root, пропатчить ядро или загрузить Grub? Где вы еще сможете запереть руткит в песочнице или уловить вредоносное ПО на «медовую приманку» [honeypot, ресурс-приманка, вызывает атаку на себя для изучения стратегии злоумышленника и определения защиты, – прим. пер.]? Где еще вы узнаете, что парень, с которым вы только что взяли по пиву, все еще работает в Lucid с «предками пространства ARM»? Эти термины я тоже не выдумал.
…надевай шляпу
Все это (в чем-то) подводит меня к недавно попавшейся мне книге «Gray Hat Hacking [Учебник серого хакера]», примечательной потрясающим набором охваченных тем.
Вы научитесь вводить в заблуждение охранные программы и создавать «медовую приманку». А зная Ассемблер, вы сможете подробно разобрать создание эксплойта и проведение анализа на уязвимости. Этически такие книги балансируют на грани между обучением «черных шляп» (плохих парней) и «белых шляп» (хороших парней).
В первых главах внимание уделяется вопросам этики, с основной идеей «нельзя должным образом защитить себя от угроз, которых не понимаешь». Эта книга не для слабаков (во многих аспектах), но если в названии вашей должности есть слово «безопасность», ее стоит прочесть.
chris.linuxformat@gmail.com
Знать свои слабости
Чтобы защитить свои компьютеры от нападения, нужно знать свои уязвимости. Вам поможет OpenVAS.
Можно ли быть уверенным в том, что система защищена? Ну, на 100 % нельзя никогда. Но можно существенно повысить свою уверенность, запустив сканер уязвимостей, и во многих организациях это делается на регулярной основе.
OpenVAS – одна из таких программ. Это ответвление Nessus, популярного сканера, который в 2005 году превратился из открытого в коммерческий. К моменту чтения этой статьи должна выйти OpenVAS 5. OpenVAS запускает на главном компьютере сканирующий демон, который выполняет серию проверок на уязвимость для заданного набора объектов. Эти проверки называются проверками сетевой уязвимости (NVT – network vulnerability tests) и пишутся на простом скриптовом языке (Nessus Attack Scripting Language – язык описания атак Nessus).
Тысячное войско
Сейчас таких тестов чуть менее 25 000, и каждый день добавляются новые в ответ на новую информацию об угрозах безопасности, поступающую от производителей ПО и из отчетов исследователей. Около 16 000 из этих тестов основаны на информации от производителей ПО, обычно в такой форме: «О, у вас версия X приложения Y. Значит, у вас есть уязвимость Z». Другие тесты реально взаимодействуют с системой, определяя уязвимости. Качество работы OpenVAS, очевидно, зависит от качества тестов и своевременности их создания и распространения по мере обнаружения новых угроз. OpenVAS обеспечивает бесплатный приток тестов; есть также и коммерческий, от немецкой компании Greenbone, разработчика OpenVAS. Чтобы по-быстрому это попробовать, скачайте виртуальный экземпляр OpenVAS4 с сайта openvas.org; он совместим с VirtualBox и VMWare (сам я пробовал только последнее) и предоставляет сервер OpenVAS – с ним можно работать через утилиты командной строки или с помощью браузера через порт 9392. Надо сказать, что хотя его легко загрузить и установить, кривая его изучения довольно крута. Для практического использования установите сами пакеты OpenVAS. Возможно, они есть в репозиториях вашего дистрибутива.
Наконец, заострим, что запуск сканера уязвимостей сам по себе волшебным образом не повысит вам безопасность. Кто-то должен его отчеты читать и принимать меры. И во многих случаях достаточно просто обновить уязвимое приложение до более поздней версии.
Существует много других утилит сканирования. Bastille – утилита сканирования и укрепления системы, которая взаправду усилит безопасность системы и предложит краткий курс по безопасности в качестве бонуса. Проект некоторое время дремал, но, кажется, возвращается к жизни (www.bastille-unix.org). В отличие от OpenVAS, Bastille проверяет систему «изнутри», т. е. вы запускаете его на сканируемом компьютере.
Linux упрочняет защиту
У SELinux репутация невероятно сложной системы, но он слишком важен, чтобы его игнорировать. Рассмотрим этот важный рубеж обороны.
Должен признаться, что при упоминании SELinux я веду себя как страус – прячу голову в песок и надеюсь, что он исчезнет. Но RedHat принимает его всерьез, и системным админстраторам приходится иметь с ним дело все чаще. И я решил, что лучше рассказать об его основах, хотя бы немного.
Прежде всего, зачем он нужен? В двух словах – его назначение в том, чтобы ограничить ущерб системы из-за атаки, воспользовавшейся уязвимостью в программе. Чтобы понять, как это работает, начнем с традиционной модели прав доступа к файлам в Linux, под которой я имею в виду известные разрешения rwx. В этой модели авторизация происходит исключительно по UID и GID процесса, выполняющего запрос. Если процесс запускается от имени пользователя chris, я вижу одни права доступа, если от имени root – другие, и т. д. Например, пусть я пользуюсь Firefox. Разумеется, браузеру нужен доступ к некоторым каталогам файловой системы – чтобы кэшировать cookie, записывать историю и т. д., но все мои файлы ему ни к чему. Однако если открыть в нем активное вредоносное содержимое, умеющее использовать уязвимость в браузере, злоумышленник потенциально получит доступ к тем же файлам, что и я (как пользователь chris).
С сетевыми сервисами проблема часто и того острее, ведь многие из них запускаются от имени суперпользователя-root, и воспользовавшись уязвимостью в таких сервисах, атакующий может получить доступ ко всей системе.
Как написано в руководстве пользователя по SELinux в RedHat, «Многие системные сервисы и программы запускаются со вчерне заданными привилегиями, намного превосходящими их потребности, и ошибка в любой из этих программ может быть использована для получения доступа к системе».
Здесь традиционная модель безопасности в Linux становится бессильной, и управление на себя берет SELinux. Важно понимать, что решения об авторизации, принимаемые SELinux, дополняют, а не заменяют традиционную модель. Если права rwx не разрешают доступа – точка. Но если они разрешают, политики SELinux дают системе дополнительную возможность запретить его.
Невообразимая сложность
Детали устройства SELinux, мягко говоря, непросты. Но давайте окунемся в них и узнаем, сможем ли мы хотя бы почувствовать их аромат. Если начинать с самого начала, то у каждого файла и каждого процесса в системе SELinux есть контекст безопасности, в который входят четыре составляющих:
| Текст ячейки |
ПОЛЬЗОВАТЕЛЬ [USER]
Это пользователь SELinux, которому «принадлежит» файл или процесс. Эти пользователи напрямую не соответствуют учетным записям в /etc/passwd; на самом деле, большинство обычных учетных записей в Linux связаны с пользователем unconfined_u SELinux.
РОЛЬ [ROLE]
Используется для управления доступом на основе ролей (role-based access control – RBAC). Пользователи авторизуются для получения определенных ролей, а роли определяют, к каким ресурсам у пользователя есть доступ. Роли используются в управлении процессами, но файлы, которые по сути пассивны, на самом деле не пользуются ролями, и для них используется «пустая роль» object_r.
ТИП [TYPE]
Это главные атрибуты безопасности, которыми SELinux руководствуется при принятии решения о доступе. При применении к процессам типы также называются доменами и по сути определяют именованную «песочницу», в которой выполняется процесс.
УРОВЕНЬ [LEVEL]
С помощью этого атрибута реализуется многоуровневая система доступа – в ее основе лежит идея о том, что документы могут быть «публичными», «конфиденциальными», «совершенно секретными» и т. д.