7.2.4. Оболочки безопасности и цепи Бернштайна
7.2.4. Оболочки безопасности и цепи Бернштайна
Один из распространенных способов использования сценариев упаковщиков — это создание оболочек безопасности (security wrappers). Сценарий безопасности может вызывать программу-диспетчер (gatekeeper) для проверки мандата (credential), а затем в зависимости от значения, возвращенного программой-диспетчером, запустить другую программу.
Образование цепей Бернштайна (Bernstein chaining) представляет собой специализированную методику применения оболочек безопасности, впервые разработанную Даниелем Бернштайном (Daniel J. Bernstein), который задействовал ее в многих своих пакетах. (Подобная модель наблюдается в таких командах, как nohup(1) и su(1), но условность выполнения отсутствует.) Концептуально цепи Бернштайна подобны конвейерам, но, в отличие от последних, в цепях каждый успешный этап заменяет предыдущий, а не выполняется одновременно с ним.
Обычным применением данной методики является заключение привилегированных приложений в некоторой программе-диспетчере, которая затем может передать параметры менее привилегированной программе. В данной методике несколько программ объединяются с помощью вызовов exec или, возможно, комбинации вызовов fork и exec. Все программы указываются в одной командной строке. Каждая программа осуществляет некоторую функцию и (в случае успешного завершения) запускает ехес(2) для остальной части командной строки.
Пакет Бернштайна rblsmtpd является принципиальным примером. Он служит для поиска узла в антиспамной DNS-зоне системы предотвращения некорректного использования почты (Mail Abuse Prevention System). Свои функции данный пакет выполняет путем отправки DNS-запроса на IP-адрес, переданный ему как значение переменной среды TCPREMOTEIP. Если запрос оказался успешным, то rblsmtpd запускает собственный SMTP-сервер, который отклоняет почту. В противном случае предполагается, что оставшиеся аргументы командной строки вводят в действие агент доставки почты, который поддерживает протокол SMTP, и передаются для запуска ехес(2).
Еще один пример можно встретить в пакете qmail Бернштайна. Пакет содержит программу, которая называется condredirect. Первым параметром является адрес электронной почты, остальные параметры — программа-диспетчер и аргументы, condredirect разветвляется и запускает программу-диспетчер со своими аргументами. В случае успешного завершения программой-диспетчером своей работы, condredirect перенаправляет почтовое сообщение, ожидающее в stdin, на указанный адрес электронной почты. В этом случае, в противоположность rblsmtpd, решение принимается дочерним процессом. Этот случай несколько больше походит на классический вызов с созданием подоболочки.
Более сложным примером является POP3-сервер qmail. Он состоит из трех программ: qmail-popup, checkpassword и qmail-pop3d. Программа Checkpassword взята из отдельного пакета, остроумно названного checkpassword, и, естественно, предназначена для проверки паролей. В протоколе POP3 предусмотрен этап аутентификации и этап работы с почтовым ящиком. Перейдя к этапу работы с почтовым ящиком, пользователь не имеет возможности вернуться к этапу аутентификации. Это идеальное применение для цепей Бернштайна.
Первым параметром программы qmail-popup является имя узла для использования в POP3-приглашениях. Остальные ее параметры, после того как имя пользователя POP3 и пароль были доставлены, разделяются и передаются ехес(2). Если данная программа возвращает отказ, то пароль, вероятнее всего, не верный, qmail-popup сообщает об этом и ожидает ввода другого пароля. В противном случае предполагается, что программа окончила POP3-диалог, поэтому qmail-popup завершает работу.
Ожидается, что программа, указанная в командной строке qmail-popup, считывает 3 строки, ограниченные символом NULL, из дескриптора файла 3[70]: имя пользователя, пароль и ответ на криптографический запрос, если он есть. В настоящее время такой программой является checkpassword, которая принимает в качестве параметров имя qmail-pop3d и его параметры. Программа checkpassword завершается с ошибкой в том случае, если был введен несоответствующий пароль. В противном случае она принимает пользовательские идентификаторы uid и gid, домашний каталог пользователя и выполняет оставшуюся часть командной строки от имени данного пользователя.
Создание цепей Бернштайна полезно в ситуациях, когда приложение требует setuid- или setgid-привилегий для инициализации соединения или для получения какого-либо мандата, а затем понижает эти привилегии, чтобы можно было использовать последующий вовсе не обязательно "благонадежный" код. Поскольку дочерняя программа была запущена с помощью вызова exec, она не может установить свой действительный идентификатор пользователя равным идентификатору администратора. Такая методика является более гибкой, чем использование одного процесса, поскольку можно модифицировать поведение системы путем внедрения в цепочку другой программы.
Например, программа rblsmtpd (упомянутая выше) может быть вставлена в цепь Бернштайна между программой tcpserver (из пакета ucspi-tcp) и реальным SMTP-сервером, обычно qmail-smtpd. В то же время она также работает с inetd(8) и sendmail -bs.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Общий обзор средств безопасности: дескриптор безопасности
Общий обзор средств безопасности: дескриптор безопасности Анализ дескриптора безопасности предоставляет хорошую возможность для общего ознакомления с наиболее важными элементами системы безопасности Windows. В этом разделе речь будет идти о самых различных элементах
5.2. Место информационной безопасности экономических систем в национальной безопасности страны
5.2. Место информационной безопасности экономических систем в национальной безопасности страны В современном мире информационная безопасность становится жизненно необходимым условием обеспечения интересов человека, общества и государства и важнейшим, стержневым,
Центр обеспечения безопасности и компоненты безопасности
Центр обеспечения безопасности и компоненты безопасности В обеспечении безопасности компьютера участвуют специализированные службы и программы. Важнейшие из них находятся под контролем Центра обеспечения безопасности. Этот компонент Windows отслеживает стабильность
Сценарии оболочки
Сценарии оболочки Наш затянувшийся разговор о командах и командном интерфейсе подходит к концу. И в заключение этого раздела — ещё немного терпения. Потому что было бы несправедливо не уделить чуть-чуть места тому, что придает командному интерфейсу POSIX-систем его
5.6.2 Приглашения оболочки
5.6.2 Приглашения оболочки Одна из очень важных переменных имеет имя PS1. Эта переменная задает вид приглашения, которое bash выводит, когда ожидает ввода очередной команды пользователем. По умолчанию этой переменной присвоено значение "s-v$ ". Вообще-то в bash существует четыре
Непланарные цепи
Непланарные цепи Если схемы непланарны, их нельзя изобразить в двухмерном пространстве без пересечения линий, соединяющих узлы. Такова схема на рис. 1.37, которая содержит источник напряжения и восемь резисторов, то есть всего девять элементов. Из используемых методов
Параллельные резонансные цепи
Параллельные резонансные цепи Уравнения для анализа параллельной резонансной цепи значительно сложнее уравнений для последовательного колебательного контура. Можно найти полное описание этих уравнений в учебниках. Однако моделирование на PSpice позволяет легко
Фазосдвигающие цепи
Фазосдвигающие цепи Простая фазосдвигающая цепь, использующая только конденсаторы и резисторы, показана на рис. 2.21. Это мостовая Т-образная схема со следующими параметрами элементов: С1=С2=10 нФ; R1=200 Ом; R2=250 Ом; RL=100 Ом и R=1 Ом (резистивный датчик тока). С помощью PSpice-анализа
15. Транзисторные цепи в Capture
15. Транзисторные цепи в Capture В главе 10 исследовалась модель PSpice для биполярного транзистора (BJT). В демонстрационной версии PSpice имеется шесть транзисторов BJT (Q2N2222, Q2N2907A, Q2N3904, Q2N3906, Q2N6052 и Q2N6059), три из которых npn-, а три других — pnp-транзисторы. Чтобы показать некоторые из
14.2. Регулируемые цепи
14.2. Регулируемые цепи Регулирующие участки разного уровня обладают рядом недостатков. Главным из них является относительное запаздывание реакции системы на возбуждающий импульс. Улучшение временной реакции при сохранении регулирования возможно при применении
7.2.4. Оболочки безопасности и цепи Бернштайна
7.2.4. Оболочки безопасности и цепи Бернштайна Один из распространенных способов использования сценариев упаковщиков — это создание оболочек безопасности (security wrappers). Сценарий безопасности может вызывать программу-диспетчер (gatekeeper) для проверки мандата (credential), а затем в
Библиотека оболочки
Библиотека оболочки DragAcceptFiles Функция DragAcceptFiles регистрирует окно, если оно принимает перетаскиваемые на него файлы. VOID DragAcceptFiles ( HWND hWnd , // дескриптор окна BOOL fAccept // опция разрешения принятия файлов ); Параметры hWnd - идентифицирует окно, регистрируемое, если оно принимает
Загрузочные оболочки
Загрузочные оболочки Началу работы операционной системы предшествует ее загрузка. Стандартные возможности Windows не позволяют сделать загрузчик более привлекательным и продуктивным. Эту проблему успешно решают программы сторонних разработчиков, позволяющие оформить
У15.6 Кольцевые списки и цепи
У15.6 Кольцевые списки и цепи Объясните, почему LIST нельзя использовать для создания кольцевых списков. (Подсказка: в этом вам может помочь изучение формальных утверждений, обсуждение которых вы найдете в начале следующей лекции.) Опишите класс CHAIN, который может служить