РУССКАЯ ВЕРСИЯ
СЕРТИФИКАЦИЯ BSD КАК? КОГДА? ЗАЧЕМ?
В НОМЕРЕ: ИНТЕРВЬЮ С ДИРЕКТОРОМ ФОНДА NLNET - ВАЛЕРИЕМ МИЩЕНКО НАСТРАИВАЕМ РАБОЧЕЕ МЕСТО PC-BSD 9.0 ИНСТРУМЕНТЫ УПРАВЛЕНИЯ ПАКЕТАМИ В MIDNIGHTBSD ВЫ ДУМАЕТЕ, ЧТО КОНСОЛЬ НЕ ДЛЯ ВАС? POSTGRESQL: ОТ УСТАНОВКИ ДО PITR АНАТОМИЯ КОМПРОМЕТАЦИИ FREEBSD (ЧАСТЬ 3-Я) ПОЛИТИКА КЛАССИФИКАЦИИ ДАННЫХ
ВЫПУСК 02/2012 (3)
В НОМЕРЕ Дорогие друзья, Редакционная коллегия решила несколько разбавить оригинальное содержимое журнала и организовала интервью с директором фонда NLnet Валерием Мищенко. Надеемся, вам наша инициатива понравится и вы сможете почерпнуть что-то полезное из представленной информации. И кто знает, может и вы решите сформировать заявку на финансирование своего идеи или проекта. Также в рубрике „Уголок разработчика” обзор возможностей по индивидуальной настройке PCBSD - секреты раскрывает Kris Moore. Также взглянем на дистрибутив MidnightBSD - какие инструменты по управлению пакетами разработаны для этой системы. Dru Lavigne представляет первую часть статьи, посвященной вопросу сертификации по BSDA. Что означает этот экзамен, как готовиться к нему и в чём заключается принципиальное отличие от ряда корпоративных сертификаций - материал на странице 16. Что делать, если перед вами тектосвый терминал 80x24? Существует ли жизнь в таком режиме и как в нём выживают „гики”? Очень понятно рассказал Sander Recihe в рубрике „Howto”. Также встречайте в ней информативный материал от Luca Ferrari, посвященный СУБД PostgreSQL и ряду возможностей по откату и восстановлению данных в этой мощной и открытой базе данных.
Редактор английской версии: Patrycja Przybyłowicz patrycja.przybylowicz@software.com.pl Авторы: Dru Lavigne, Toby Richards, Robert Sommerville, Luca Ferrari, Kris Moore, Lucas Holt, Sander Reiche, Guillaume Duale, Richard Batka Исполнительный директор: Ewa Dudzic ewa.dudzic@software.com.pl Русская редакция: editor@bsdmag.su (ru.bsdmag@gmail.com) Корректоры: corrector@bsdmag.su Издатель : Software Press Sp. z o.o. SK ul. Bokserska 1, 02-682 Warszawa Poland worldwide publishing tel: 1 917 338 36 31 www.bsdmag.org Все торговые марки, задействованные в журнале, использованы для информационных целей. Права на них принадлежат соответствующим компаниям.
Toby Richards поделится своим мнением по политике классификации данных. Какие из них считать открытыми, а какие только для ограниченного круга людей. Robert Sommervile расскажет о различного рода инструментах, позволяющих выяснить „who is who” в локальной сети. В статье „Наши потери” проведем краткий экскурс о тех персоналиях, что ушли от нас в 2011 году. К сожалению, понимаешь, что постепенно уходят ключевые фигуры, что создали когда-то этот информационный мир. Команда русской редакции
2
02/2012
В НОМЕРЕ
Уголок разработчика с директором NLnet 04 Интервью Valer Mischenko
NLnet является одной из тех немногих некоммерческих организаций, направленно стимулирующих развитие сетевых технологий, в частности интернет-технологий.
рабочее место 08 Настраиваем PC-BSD 9.0 Kris Moore
Одной из самых важных новых черт в PC-BSD 9.0 является возможность настроить вашу рабочую машину по индивидуальному выбору
инструменты управления 12 mport: пакетами в MidnightBSD Lucas Holt
Одной из нуднейших задач в настройке и, в дальнейшем, поддержке ПЭВМ является установка ПО.
Сертификация BSD нужно сертифицироваться по 16 Зачем программе BSDA? Dru Lavigne
В этой статье мы попробуем разобраться в основных ошибках, связанных с сертификацией, а также расскажем, зачем вам потребуется сертификат BSDA.
How-To думаете, что консоль не для Вас? 20 Вы Sander Reiche
Большинство пользователей выросло в компьютерной среде, где главенствует какой-либо графический интерфейс. Но всегда найдется группа людей, которая предпочитает работать в обычной консоли 80x24. Попробуем выяснить, действительно она подходит только для гиков или не всё-таки нет.
от установки до PITR 24 PostgreSQL: Luca Ferrari
“Самая продвинутая open-source база данных, доступная из любого места” - гласит комментарий к пакету PostgreSQL. Рассмотрим эту СУБД в близком прицеле.
www.bsdmag.su
SUN JAVA и NetBeans 36 OpenBSD, Guillaume Dualé
Что делать Java-разработчикам, которые хотят создавать свои программы на хорошей операционной системе.
Администрирование классификации данных 38 Политика Toby Richards
Хороший системный администратор понимает, что безопасность - это нечто большее, чем просто файрволы, шифрование, накладывание заплаток и другие технические мероприятия. Самое слабое звено в любой сети – это человеческий фактор.
Советы и рекомендации нагрузки: нагрузка 42 Балансировщики в промышленных системах и доступность сервисов Richard C. Batka
Балансировщики нагрузки обрабатывают “нагрузку” и люди привыкли думать, что под этим термином подразумевается доступность ресурса в течение длительного времени. Чаще всего, в последнее время, когда люди начинают разговоры об балансировщиках нагрузки, то имеется ввиду нагрузка сервера вебтрафиком.
Безопасность компрометации FreeBSD 48 Анатомия (часть 3-я) Rob Sommerville
В этой части серии статей мы расскажем про некоторые инструменты, которые используются для проникновения, тестирования и обеспечения безопасности устройств и, кроме этого, для выполнения анализа и выяснения уязвимостей.
Поговорим наши потери 56 Подсчитывая Sander Reiche
Ушедший год был полон на климатические сюрпризы и катастрофы. Но что осталось за кадрами освещения новостных агентств? Поговорим о реальных героях основателях целой эпохи в IT.
3
УГОЛОК РАЗРАБОТЧИКА
Интервью
с директором Фонда NLnet, Валерием Мищенко.
Мало кто слышал в России о голландском технологическом фонде NLnet, в то время как NLnet является одной из тех немногих некоммерческих организаций, направленно стимулирующих развитие сетевых технологий, в частности интернет-технологий.
Н
ашим читателям будет интересно узнать о независимом технологическом фонде, его деятельности, методах работы и достижениях. Для начала, в чем состоит миссия NLnet? Задача NLnet – стимулировать развитие сетевых технологий, и с их помощью обмена электронной информацией, на благо всего общества.
С чего началась история NLnet? Похоже, у BSD и NLnet, в некотором роде общие корни.
В некотором роде, да. В конце семидесятых в Голландии сформировалась очень сильная команда Unix-программистов работавших как в университетах, так и в коммерческих компаниях. Эта группа фактически существует и по сей день в форме ассоциации NLUUG, в которой учавствуют также много программистов специализирующихся на BSD и других ОС группы Unix. К тому же, философия BSD, в конце концов, повлияла на формулирование миссии фонда NLnet в части открытости исходных кодов. История NLnet началась когда эта команда Unixпрограммистов в начале восьмидесятых на чисто общественных началах и из научного интереса занялась соединением различных голландских вычислительных центров в одну большую сеть. Благодаря сотрудничеству с железнодоржным
4
комплексом удалось с минимальными затратами проложить кабели между городами вдоль железных дорог, это послужило базой, которая до сих пор является основой интернетной инфраструктуры Голландии. Тогда же началось соединение с сетями в других европейских странах и США. Когда спрос на сетевые технологии стал значительно превышать возможности группы энтузиастов, продажу сетевых услуг NLnet выделили в отдельную коммерческую организацию, которая 15 лет назад была продана и все вырученные средства были помещены в Фонд NLnet с соверщенно определенной миссией.
Как конкретно воплощается эта миссия?
Наши методы работы просты и эффективны. Обратиться к нам с предложением спонсировать проект может кто угодно, для нас не важно есть ли это коммерческая, исследовательская или другая организация, индивидуум или группа. Для нас важны идеи, с которыми к нам приходят, и потенциальное положительное воздействие воплощения этих идей на наше общество. Наши процедуры просты и доступны практически каждому. На нашем сайте Вы можете просто заполнить короткую анкету, изложив идею проекта и что для этого нужно. Раз в два месяца предложения рассматриваются правлением и в течение двух недель
02/2012
Интервью с директором Фонда NLnet
Вы получаете ответ о том, проходит ли Ваш запрос во второй раунд или нет. Если да, то мы вступаем с Вами в контакт, запрашиваем дополнительную информацию, обсуждаем детали проекта и планы по времени, а также необходимые расходы. И в течение следующих двух недель Вы точно знаете - получаете ли Вы финансирование или нет. Т.е потенциально в течении месяца после начала рассмотрения Вы можете начать работу над проектом. Такой эффективности не знает ни один известный мне фонд. В современных технологиях и нельзя по-другому. Развитие идет настолько быстро, что ожидание в течение нескольких месяцев и меняющаяся за это время ситуация могут обесценить проект еще до его начала. При рассмотрении предложений мы смотрим не только на новизну идеи - потенциальный проект должен удовлетворять определенным критериям. Но даже если он удовлетворяет всем критериям, это еще не гарантия получения гранта. К сожалению, так как наши средства ограничены, мы не в состоянии спонсировать все проекты, которые нам хотелось бы спонсировать. Сумма гранта также ограничена 30-ю тысячами евро. Если первая фаза проекта, как обычно, самая рисковая, удачна, но требует дополнительного финансирования, мы готовы рассматривать дальнейшие предложения. Часто случается, что если результаты проекта очень интересны, то его замечают и другие организации и проект плучает спонсирование от них. Так было, например, с австралийским Serval Project, который после первой фазы финансирования NLnet получил грант в 400 тысяч от Shuttleworth Foundation. Или проект Ksplice американского MIT, после двух фаз финансирования NLnet получил из раличных источников грантов на 1 миллион долларов, был коммерциализирован и, в последствии, куплен корпорацией Oracle.
Пожалуйста, по-подробнее о критериях, которые вы применяете к предлагаемым проектам.
Во-первых, и это логично, проект должен соответствовать миссии NLnet. Во-вторых, группа потенциальных пользователей должна быть как можно большей. Третий критерий – влияние результатов проекта на развитие сетевых технологий и общества вообще. Четвертый – возможность развития новых технологий опираясь на достигнутые результаты проекта. Далее, каким образом Вы собираетесь донести
www.bsdmag.su
результаты проекта до потенциальных пользователей и разработчиков. И еще, каковы риски, имеет ли разработчик или проектная группа достаточно опыта, чтобы довести проект до обещенных результатов.
Вы говорите про сетевые технологии, при это подразумевая не только интернетные технологии.
Интернет – это только одна из (супер)сетей, развитие которых мы поддерживаем. У нас было много проектов направленных, например, на исследование работы сетей мобильной телефонии, а также взаимной интеграции различных сетей. Интересна тенденция взаимопроникновения и объединения сетей. Для нас любая сеть – это всего лишь инструмент. Независимо от используемых стандартов и протоколов (IP, GSM, PSTN, и пр.) любая сеть используется для передачи, хранения и обработки информации. С этих позиций мы пытаемся стимулировать проекты ведущие к интеграции всех сетей. Ведь пользователю не важно какая технология или протоколы используются в сети, важно как удобно, быстро, с минимальными затратами, в любом месте и в любое время, обрабатывается и передается информация. Этот процесс интеграции, как показывает практика, очень не прост. Не столько технологически, сколько политически. До сих пор, например, такая организация как ITU (International Telecommunication Union, ред.), истоки которой лежат в традиционной телефонии, пытается подмять развитие Интернета под себя и определять направление этого развития по своим канонам: вместо свободного развития - разрешительные методы; в противоположность интернетной децентрализации полная централизация; вместо открытых стандартов определяемых независимыми группами, такими, как IETF, стандарты, определяемые большими (в основном, американскими) коммерческими компаниями. В таких вопросах роль NLnet, как полностью независимой организации, очень важна. У организации нет политических или коммерческих интересов, есть одна цель – стимулирование открытых технологий служащих свободному обмену информацией.
Что вы подразумеваете под открытыми технологиями?
Наше определение открытых технологий не отличается от классического определения open source.
5
УГОЛОК РАЗРАБОТЧИКА
Результаты всех проектов, которые мы поддерживаем публикуются под открытой лицензией, например, GPL, BSD, Apache, и др. Мы даже не принимаем к рассмотрению проекты не подразумевающие открытие исходных кодов, моделей, документации и пр. и пр. NLnet работает на благо всего общества, и те средства, которыми мы располагаем, мы расходуем на благо общества в целом, а значит и результаты нашей деятельности должны быть доступны всем и каждому.
технологий. Если технология закрыта, контролировать действительно ли она делает только то, что должна и ничего более, невозможно. Поэтому открытые стандарты и открытые технологии – это то, что будет обязательным условием предоставления услуг правительственным организациям в ближайшее время, а они являются одним из основных покупателей на рынке цифровых технологий.
Значит ли это, что коммерция вам чужда?
Действительно, Фонд не может бесконечно существовать без подпитки. Часть этой подпитки – это рента на вложенный тогда капитал. Но этого, конечно, недостаточно для того, чтобы поддерживать столько проектов, сколько нам хотелось бы. Часть средств поступает извне в виде пожертвований. Такие компании, как, например, Nokia, Comcast, Cisco, жертвуют средства не потому, что они хотят улучшить мир, в их миссию это не входит. Но они осознают, что NLnet, поддерживая открытые технологии, расширяет их собственный рынок сбыта. К тому же, такие пожертвования в благотворительный фонд, каким является NLnet, отнимаются от налоговой базы компании. Другой пример – это поддержка NLnet Labs некоммерческой структурой SIDN, занимающейся продажей деменных имён “.nl”. NLnet Labs - это наша исследовательская группа, которая проводит исследования и создает очень сложное программное обеспечение для управления системой доменных имён (DNS) и ее безопасности. Многие результаты работы NLnet Labs интенсивно используются как SIDN, так и другими региональными, национальными и локальными интернет-регистраторами, и они зинтересованы в продолжении и расширении таких иследований, а также в соответствующей поддержке уже существующих систем. К счастью, многие из тех, кто поддерживает NLnet, осознают тот факт, что большинство технологий, на которые опирается интернет, были созданы без какой-либо бизнесс-модели. При этом практически весь бизнес во всем мире больше не может обходиться без интернета, и дальнейшее развитие рынка без развития интернета как платформы не представляется возможным. Я не имею ввиду здесь развитие проприетарных технологий, таких, как Facebook, которые создают закрытые технологические острова недоступные другим, но развитие открытых технологий, на которых держится весь интернет.
Ни коим образом. Мы стремимся к тому, чтобы как можно больше спонсированных нами разработок стали самоокупаемыми. Недавно, совместно с Rotterdam School of Management, мы провели исследование деятельности малых и средних компаний зарабатывающих свой хлеб с помощью открытых технологий. Оказалось, что их модели бизнеса и прибыльность мало отличаются от компаний, живущих за счет закрытых технологий. Они отличаются только философией, и, в отличие от ‘классических’ компаний, убеждены, что открывая свои технологии они получают обратно гораздо больше, чем дают. Из маленьких кусочков открытых технологий создается огромное технологическое пространство, которое можно прибыльно использовать для своего бизнеса. Если, конечно, не заниматься чистым копированием, а предлагать продукты и услуги, которые нужны вашему партнеру для создания своей прибавочной стоимости, ведь без взаимной выгоды для вас и вашего партнера нет долгосрочного бизнеса. За открытыми технологиями – будущее. Посмотрите на тенденцию, которая прослеживается среди европейских правительств и правительственных органов – переход на открытые стандарты и, повозможности, на открытый код. Одно из основных требований к правительственным организациям – это непрерывность деятельности, которая не совместима с монополией на продукт или услугу. Если поставщик предоставляющий правительственной организации закрытый продукт перестает существовать или по каким-либо причинам не может или не хочет больше иметь дела с организацией, то возникают сложные проблемы с непрерывностью деятельности организации. К тому же, любая монополия ведет к искуственному завышению цен, в то время, как правительственные организации обязаны рачительно расходовать налоговые поступления. Немаловажным аспектом является также контролируемость
6
Как вы регулируете свои финансы, ведь те финансовые средства, которые Фонд получил 15 лет назад не бесконечны.
02/2012
Интервью с директором Фонда NLnet
Расскажите об одном из нынешних проектов на выбор.
Обзор всех нынешних и законченных проектов можно найти на нашем сайте. Выбрать один, конечно, трудно, так как все они важны и интересны. Одним из самых многообещяющих проектов, пожалуй, можно назвать Unhosted. Он подразумевает создание протокола позволяющего разрубить Гордиев узел проблем, которые мы получаем когда начинаем пользоваться cloud computing. Конечно, cloud – это надежно, выгодно, удобно. Но мало кто подходит к этому со стороны конфиденциальности и защищенности личной, государственной и корпоративной информации. Если Вы, например, являетесь абонентом облачной электронной почты Gmail или пользуетесь текстовым процессором GoogleDocs, то вся информация, которую Вы закачиваете для этого на сервера Google, по сути дела принадлжит Google. Конечно каждый индивидуум может сам определять что он хочет хранить в облаке, а что нет. Но как быть с государственными учреждениями, которые обязаны, например, хранить конфиденциальную информацию о гражданах или государственную тайну? Как быть с научной информацией исследовательских центров? Как быть с корпоративной конкурентной информацией? Информация в наше время – это деньги. И власть. Облако – это экстремально дешевый способ поиметь всю информацию в реальном времени. Никакого шпионажа не нужно, вся информация приходит сама. Об этом многие даже не задумываются. Так вот, Unhosted призван разрубить этот Гордиев узел проблем путем полного отделения используемого приложения от обрабатываемой информации. Вы можете вибирать приложение из одного облака, а обрабатываемую информацию из совершенно другого места. Вместе они комбинируются только на Вашей машине. Тот, кто предоставляет приложение даже не имеет представления о том, какую информацию это приложение обрабатывает. А там, откуда берется информация никто не узнает с помощью каких приложений эта информация обрабатывается. Облако, таким образом становится безопасным и конфиденциальным. Для демонстрации работы Unhosted мы также спонсируем создание некоторых приложений, таких, как LibreDocs – онлайновый текстовый редактор. В этом году мы планируем предоставить два миллиона Unhosted accounts голландским университетам и исследовательским центрам, чтобы они на практике могли совместить все выгоды облака
www.bsdmag.su
с конфиденциальностью личной и исследовательской информации.
У вас есть проекты в РФ?
Да, в настоящее время мы финансируем два проекта. Оба проекта являются частью более обширной программы создания полностью открытой сети GSM, как на аппаратном уровне, так и на уровне программного обеспечения. Первый проект Fairwaves – создание WiMAX сканнера. Второй, OpenBTS hardware, создание контро́ллера ба́зовых ста́нций. Конечно, мы получаем больше запросов из РФ на финансирование проектов, но, по большей части они или не попали в рамки нашей миссии или не отвечали поставленным нами критериям.
Пожелания нашим читателям?
Я полагаю, что читателей BSD Magazine не нужно убеждать в важности открытых технологий и рассказывать им о перспективах их развития, иначе бы они читали microsoft magazine. Вместо этого, хотелось бы пожелать всем, чтобы их идеалы совпадали с желанием и возможностью зарабатывать на этих технологиях приличный капитал. А заработав его, не забывать, что приходят новые таланты открытых технологий с новыми идеями, которым тоже нужна минимальная поддержка для начала воплощения их замыслов. Поддерживайте их, создавайте свои фонды или жертвуйте, или точнее сказать, “инвестируйте” в уже существующие фонды отвечающие вашим идеалам.
7
УГОЛОК РАЗРАБОТЧИКА
Настраиваем рабочее место PC-BSD 9.0 Одной из самых важных новых черт в PC-BSD 9.0 является возможность настроить вашу рабочую машину по индивидуальному выбору – для этого существует множество FreeBSD пакетов, таких как оконные менеджеры и рабочие окружения, драйверы устройств, пакеты для серверных применений и т.д.
В
сё это возможно сделать благодаря новой утилите “pc-metapkgmanager” и ряду графических оболочек для неё. С помощью указанных инструментов пользователи могут быстро и просто указать список пакетов, которые нужно установить – например, KDE или GNOME. Такая
возможность необходима для более тонкой настройки рабочей машины, т.к. теперь не требуется прибегать к командной строке и вручную выяснять зависимости пакетов. Давайте рассмотрим пример использования механизма установки в новой версии PC-BSD 9.
Рис. 1 – Выбор мета-пакетов во время инсталляции
8
02/2012
Настраиваем рабочее место PC-BSD 9.0
Когда PC-BSD устанавливается первый раз с полного образа системы, размещенного на DVD, USB-брелке или же в сетевом окружении, то появляется экран, где можно будет выбрать из списка нужные мета-пакеты. Desktops: GNOME • Accessibility • Games • Net • Utilities KDE • Accessibility • Artwork • Education • Games • Graphics • KOffice • L10N (Translations) • Multimedia • Network • PIM • SDK • Toys • WebDevKit LXDE XFCE • Plugins Awesome FVWM IceWM OpenBox ScrotWM Window Maker
Drivers: • HPLIP • Handheld • NVIDIA • VMwareGuest • VirtualBoxGuest Services: • Database Servers • Samba • Web Servers Misc: • I18N (Translations) • Compiz • MythTV • XBMC Development: • Debug Tools • QT • Version Control Systems
Выбрав требуемые пакеты, инсталлятор PC-BSD настроит системную конфигурацию в соответствии с этим выбором. Более опытные пользователи, которые заходят увидеть из каких именно пакетов будет состоять система, могут щелкнуть правой кнопкой мыши на названии мета-пакета и выбрать “View Packages”. Ниже представлен полный список мета-пакетов, доступных в версии 9.0.
После того, как PC-BSD установлена, можно завершить настройку рабочей станции по вкусу пользователя добавляя / удаляя нужные мета-пакеты. Существует несколько способов для этой операции, самый простой из которых – задействовать системный менеджер PC-BSD. Начните с запуска контрольной панели, см. Рис.2. Затем откройте Manager), Рис. 3
менеджер
системы
(System
Когда он запустится, нажмите на вкладку “Системные пакеты” (“System Packages”), Рис.4. В этой вкладке уже простым щелчком можно отметить (либо снять отметку) соответствующий метапакет для того, чтобы его установить (или же удалить из системы). При установке новых пакетов менеджер системы автоматически находит и загружает их с выбранного зеркала. Указать нужные зеркала можно в соответствующей вкладке “Зеркала” (“Mirrors”). В случае, если пользователь случайно удалил или повредил свою графическую систему, то существует возможность восстановить её работоспособность из командной строки, с помощью утилиты “pc-metapkgmanager”. Перед началом работы рекомендуется просмотреть список установленных мета-пакетов: # pc-metapkgmanager list | more
Когда вы определились с названием мета-пакета, который вы хотите установить или же удалить, то запускайте команду в следующем формате: # pc-metapkgmanager add KDE ftp://mirrors.isc.org/pub/
pcbsd/9.0/amd64/netinstall/packages/
# pc-metapkgmanager del KDE
Зеркало в вышеприведенном примере может быть заменено на нужный (ближайший к вам) сервер. Нужно только правильно указать версию PC-BSD и используемую архитектуру, например, 9.0/i386 или 9.0/ amd64. После замены мета-пакета, можно проверить его статус, запустив команду с ключом “status”. # pc-metapkgmanager status KDE The meta-pkg KDE is installed
Рис. 2 – Контрольная панель PC-BSD www.bsdmag.su
9
УГОЛОК РАЗРАБОТЧИКА
В сети PC-BSD Users Handbook: http://wiki.pcbsd.org/index.php/PC-BSD_9_Handbook Используя этот новый инструментарий и утилиты, становится намного проще, нежели до этого, заниматься
Рис. 3 - System Manager настройкой системы PC-BSD в соответствии с индивидуальным вкусом и конкретным вычислительным потребностям. В дополнение к сказанному, существует возможность обновления системы через интернет на новую версию PC-BSD, например, 9.1. И в тоже время присутствует возможность выборочно оставить, либо обновить выбранный мета-пакет.
Рис. 4 - Вкладка “Системные пакеты” ОБ АВТОРЕ
Kris Moore учредитель и руководитель разработки PC-BSD. Он живет вместе со своей женой и четырьмя детьми в восточном Теннесси (США) и наслаждается настройкой своего ПК и игрой на нём в свободное время. kris@pcbsd.org
10
02/2012
Настраиваем рабочее место PC-BSD 9.0 Редакция русской версии журнала открыта для сотрудничества!
Пишите нам: editor@bsdmag.su
www.bsdmag.su
11
УГОЛОК РАЗРАБОТЧИКА
mport – инструменты управления пакетами в MidnightBSD Одной из нуднейших задач в настройке и, в дальнейшем, поддержке ПЭВМ является установка ПО. Вы узнаете… • Историю утилиты mport и почему она была написана • Как использовать mport для своей основной задачи: установки и удаления программ • Подсказки опытным пользователям для формирования скриптов и задач автоматизации
С
ообщество BSD исторически обеспечивало пользователей системой портов, чтобы можно было скомпилировать нужные пакеты, а также использовать программу по управлению ими. Такой подход хорошо работал с опытными пользователями. В другом сообществе – Linux – были доступны утилиты, которые можно было запустить как из командной строки, так и с графическим интерфейсом. За считанные минуты вы могли бы установить новый веб-браузер или текстовый редактор. Когда я начинал проект MidnightBSD, моей целью было донести преимущества BSD до новых пользователей. Было обозначено три проблемы: установка MidnightBSD, управление программным обеспечением, и настройка графического пользовательского интерфейса. Было ясно, что управление пакетами – ключевая задача для разрешения всех трех проблем. Мы с Chris Rienhardt начали работать над этим в 2007 году. Мы запланировали новую систему,
12
О чем вы должны знать… • Как устанавливать MidnightBSD или же загружать виртуальный образ машины • Как запускать команды от имени root, используя sudo(8) или su(1) • Опытные пользователи должны быть знакомы со скриптовыми языками и SQL.
которая предполагала внесение изменений в mports – нашу коллекцию портов, и новые инструменты для управления пакетами. Chris внес нужные изменения в mports, а я начал работать над новой библиотекой для создания и управления пакетами. Система использовала SQLite3 для хранения информации о доступных пакетах, уже установленных пакетах и списка установленных файлов. К выходу MidnightBSD 0.3-RELEASE у нас уже были работающие программы, которые позволяли устанавливать ПО из портов и удалять его. Однако, системе всё еще не хватало фронтенда. И я решил разработать утилиту, подобную apt-get, но построенную на базе libarchive, limimport и SQLite3. Этот новый инструментарий будет доступен в следующем релизе – 0.4. Пока же можно протестировать версию для разработчиков в составе MidnightBSD 0.4-CURRENT.
Используем mport
Для того, чтобы выполнить любую задачу, связанную с управлением пакетами, мы должны вызвать mport
02/2012
mport – инструменты управления пакетами в MidnightBSD
с ключевым словом и далее, опционально, указать название пакета. Команда
Описание
clean
удалить старые пакеты и очистить базу
list
вывести список установленных пакетов
info
распечатать информацию о выбранном пакете
delete
удалить выбранный пакет
deleteall
удалить все установленные пакеты
download
загрузить пакет, но не устанавливать его
install
установить пакет
search
произвести поиск пакета
update
обновить выбранный пакет
upgrade
обновить все пакеты, установленные в системе
Таблица 1. - команды mport
Устанавливаем ПО
Для поиска пакета производится проверка заголовков и описаний на совпадение с заданной фразой: mport search gzip. Узнать подробнее о пакете, включая информацию – установлен ли он на машине, его версию и лицензию можно так: mport info gzip. Если вы знаете название пакета, который хотите установить, то запускайте: mport install gzip. Зависимости пакета будут установлены автоматически.
Удаляем ПО
Чтобы удалить пакет, используйте: mport delete gzip. Обратите внимание, что такая процедура не удалит файлы пакет из системы, а лишь проведет деинсталляцию ПО.
Просматриваем установленные пакеты
Просмотреть все установленные пакеты в системе можно так: mport list.
www.bsdmag.su
Просмотреть устаревшие пакеты можно так: mport list updates.
Обновляем ПО
Для обновления всего ПО запустите: mport upgrade. Для обновления определенного пакета, с загрузкой, если это необходимо, выполните следующую команду: mport update gzip.
Задачи по техническому обслуживанию
Для удаления старых пакетов и сжатия базы запускайте: mport clean. Пакеты будут удалены из /usr/mports/Packages. Для подробной информации обратитесь к документации mport(1).
Опытным пользователям и разработчикам
Опытные пользователи могут составить свои собственные скрипты и программы, помимо утилиты mport, для управления пакетной базой. Файлы, используемые mport, хранятся в /var/db/mport. В файле master.db - все установленные пакеты, в то время как в index.db хранится список доступных пакетов из пакетного кластера MidnightBSD под названием magus. Пользователи могут открывать индексные файлы с помощью утилиты sqlite3 и запускать нужную SQLвыборку. Инсталляционные логи доступны в таблице logs, а настройки для зеркал, откуда скачиваются пакеты – хранятся в таблице settings. Программа для быстрого запуска SQL-запросов лежит в /usr/libexec/mport.query. Программисты на C, C++ и Objective-C могут использовать libimport для написания собственных версий программ по управлению пакетами. Исходный код можно найти в src/lib/libmport. Соответствующие функции идут с
Листинг 1 - Примерный вывод команды mport info mport info gzip gzip latest: 1.3.13 installed: 1.3.13 license: gpl3 origin: archivers/gzip A compression utility designed to be a replacement for compress
13
УГОЛОК РАЗРАБОТЧИКА
В сети • •
http://www.midnightbsd.org/ – вебсайт проекта MidnightBSD http://www.midnightbsd.org/documentation/mports/ – документация по mports
префиксом MPORT_PUBLIC_API.
Другие программы
Коллекция портов mports состоит из нескольких простых приложений, написанных для определенной цели. Например, когда пакет создается в mports, то запускается программа /usr/libexec/mport.create, после которой запускается /usr/libexec/mport.install для установки пакета. Другой полезной утилитой является /usr/libexec/mport.init, которая создает свежий файл master.db, в случае, если он был поврежден или удален по ошибке.
Направления развития
Я планирую в версии MidnightBSD 0.4-RELEASE написать графическое приложение для управления пакетной установкой. Другими улучшениями могут быть: задействование алгоритма xz для загрузки индексов, улучшение документационной базы, выбор быстрого зеркала и усовершенствование логики проведения обновления системы. Хотя mport и libmport были спроектированы для работы с коллекцией портов mports в MidnightBSD, они могут быть использованы и в других BSD проектах.
Итоги
mport – это решение по управлению пакетной базы в MidnightBSD, которое помогает пользователю установить, обновить и удалить программный пакет. Оно легкое в использовании, но предоставляет множество механизмов опытным пользователям, позволяющих автоматизировать инсталляцию.
ОБ АВТОРЕ
Lucas Holt – основатель проекта MidnightBSD и программист/аналитик в Mathematical Reviews в городе Ann Harbor (Мичиган/США).
14
02/2012
<<TOP>>
Вы предоставляете услуги хостинга и работаете на *BSD? Разместите рекламу у нас!
www.bsdmag.su
15
СЕРТИФИКАЦИЯ BSD
Зачем нужно сертифицироваться по программе BSDA? Если вы читаете этот журнал, то вы уже заинтересованы в более глубоком изучении систем BSD. Возможно также, что вы замечали объявления на страницах журнала о BSD сертификации и хотите выяснить побольше об этой программе, либо считаете, что это не для вас. В этой статье мы попробуем разобраться в основных ошибках, связанных с сертификацией, а также расскажем, зачем вам потребуется сертификат BSDA.
П
еред тем как организовать в 2005 году BSD Certification Group, я целое десятилетие потратила на прохождение и проведение сертификаций в области IT. Этот опыт дал мне возможность выяснить как разные вендоры проводят собственные сертификационные программы и насколько их обучающие методики отличаются от академических программ. Я так же поняла, что в основном заботит людей, желающих пройти сертификацию. Выявленные мной проблемы не утратили актуальности и по сей день. Их можно разбить на несколько категорий: • • •
Сертификаты — пустая трата времени и не стоят даже бумаги, на которой напечатаны. Нельзя найти обучающих материалов, либо они слишком дороги. Я уже работаю, поэтому мне не нужна сертификация.
Эта статья первая из цикла серий. В ней мы рассмотрим вопросы, упомянутые выше, применительно к программе сертификации BSDA и приведем в конце несколько полезных ссылок. Во второй - мы раскроем все секреты, которые помогут вам получить сертификат BSDA.
16
Сертификаты это просто потеря времени и не стоят даже бумаги, на которой напечатаны
К сожалению, это действительно актуально для некоторых программ сертификации. Существуют экзаменационные книжки, которые позволяют вам пройти экзамен при этом никогда фактически не запуская то ПО, которое Вы должны изучить. Большое разнообразие веб-сайтов и программ по подготовке к экзаменам, где содержится большая часть экзаменационных вопросов и ответов; ужасные вопросы, которые никак не коррелируют с тематикой экзамена или же фактическим опытом использования ПО – всё это добавляет к сертификации определенный градус негатива. К счастью, это не относится к большинству программ сертификации. И ответом на вопрос “почему?” может быть одно слово – психометрия. В двух словах – психометрия это наука об оценке. Она обязательна для любой аккредитованной академической программы (что-то в духе университетского диплома или же колледжа) и является отличительным признаком хорошей сертификационной программы, такой как BSDA.
02/2012
Зачем нужно сертифицироваться по программе BSDA?
Вы можете определить, что сертификационная программа корректна с точки зрения психометрии, если она отвечает следующим критериям: Цель экзамена — результат анализа выполнения задач целевой работы (Job Task Analysis): первым шагом в составлении психометрически верной программы сертификации является использование анализа целевой работы для выяснения того, какие именно знания и навыки должны быть оценены в процессе этой сертификации. Как следует из названия этого подхода, вопросы ориентированы на решение конкретных задач, стоящих перед работником данной области. Хороший анализ подразумевает получение исходных данных от тех, кто уже работает в данной сфере (например, экзамен BSDA оценивает знания в области системного администрирования BSD) и от работодателей. Таким образом гарантируется, что задачи экзамена нацелены на реальные навыки, необходимые для данного вида работы. Вопросы должны совпадать с целями экзамена: психометрия требует, чтобы цели экзамена были частью плана, используемого для создания экзаменационных вопросов. Это означает, что экзамен не может содержать что-либо, не входящее в перечисленные в плане цели, которые, в свою очередь, должны быть чётко определены – что тестируемый должен знать для прохождения экзамена и получения сертификации. Таким образом, цели могут дополнительно служить указанием на материал, который необходимо изучить для успешного прохождения сертификации. Если вы понимаете их содержание, значит проблем со сдачей теста у вас не возникнет. Содержимое экзамена должно быть пропорционально его плану: в плане экзамена должна быть отмечена доля каждого раздела или категории. Например, если в плане указано, что безопасности уделено 20% всего экзамена, а сетевым взаимодействиям —10%, то в экзамене не может быть больше или меньше 20% вопросов, посвященных безопасности и больше или меньше 10% вопросов, посвященных сети. Если существует несколько разных версий одного и того же экзамена, то они не должны отличаться процентным содержанием вопросов по разным темам друг от друга. Экзаменационные вопросы должны быть четкими и ясными: назначением психометрически-грамотного
www.bsdmag.su
экзамена является не попытка вас обмануть, а проверка – понимаете ли вы тот материал, по которому проходит тестирование. Кроме того, если используется английская версия тестов в местах, где английский не является государственным языком, то должны быть предприняты меры, чтобы вопросы не содержали грамматических ошибок или же разговорных выражений, которые могут ввести людей в заблуждение. Особенно, остро вопрос стоит с теми, у кого английский не является родным языком. Это означает, что в нормальном психометрическом экзамене вам не должны встретиться следующие типы вопросов: • • •
трехстраничный текст, где вы ещё должны найти суть вопроса, скрытого за нагромождением посторонней информации. вопросы с двойным отрицанием, или же похожие грамматические приёмчики вопросы, ответы на которые может выудить из контекста даже тот, кто не понимает проходимого материала.
Экзаменационные вопросы должны соответствовать уровню тестируемой аудитории: в плане экзамена должно быть четко зафиксировано, на кого рассчитан этот экзамен и сами вопросы не должны быть ни слишком простыми, ни слишком сложными для тестируемых. Например, в экзамене по BSDA целевая аудитория определена так: “Сертификация BSDA является сертификацией начального уровня по системному администрированию BSD Unix. Для получения максимальной выгоды от сертификации, тестируемые кандидаты должны иметь общее представление о системе Unix, и по меньшей мере 6 месяцев опыта в качестве системного администратора BSD или претендовать на работу в качестве системного администратора BSD. Отделы кадров должны рассматривать успешно сдавшего экзамен BSDA как претендента, обладающего необходимыми знаниями по регулярному обслуживанию систем BSD под руководством более старшего администратора.” Рубрика “В сети” к конце этой статьи содержит ссылки на планы по BSDA экзаменам и на материалы по психометрии.
Отсутствие обучающих материалов или их дороговизна.
С прискорбием следует отметить, что очевидная необходимость в “авторизованных” обучающих
17
СЕРТИФИКАЦИЯ BSD
материалах и дорогостоящая процедуре обучения в группах является побочным продуктом сертификации от вендора. Создание и поддержка в актуальном состоянии программы сертификации – дорогое удовольствие, поэтому обучающие материалы и сопутствующие курсы часто используются для получения дополнительной прибыли. Посмотрите на это с такой стороны: кто-то собирается приступить к сертификации по системному администрированию, но при этом ни обучающий материал ни недельные курсы не превратят вас за неделю из новичка в системного администратора. Обучающие материалы могут рассказать, что будет на экзамене, но планы экзаменов и так сделают то же самое, причем абсолютно бесплатно. И даже если в обучающих материалах будет рассказано, какие вопросы и ответы будут на экзамене, то мы опять возвращаемся к тому, что “сертификаты – это потеря времени и не стоят даже бумаги, на которой напечатаны”. Если же сертификация псиохметрически составлена правильно, то она определяет реальные навыки. А единственный способ их получить – это сесть и проработать с реальным программным продуктом по всем тем направлениям, что прописаны в планах к экзамену. После этого у вас появятся реальные навыки и вам останется лишь подтянуть теорию. Это не означает, что вам нужно приобретать все эти навыки в вакууме, или что обучающие курсы и материалы абсолютно бесполезны. Речь идет о том, что вам нужно отвлечься и выяснить, что вам необходимо изучить и что есть у вас под рукой, что могло бы вам в этом помочь. Некоторым достаточно man-страницы, командной строки и короткого времени на практику для обучения новому навыку. Для помощи таким обучающимся, в каждом плане экзамена BSDA содержатся ссылки на man-страницы, требующиеся в ходе работы, а также доступный для загрузки список команд, где приводится соответствие man-страниц с каждой операционной системой BSD. Иногда man-страниц бывает недостаточно и вам нужен кто-то еще, чтобы показать как работает та или иная команда или объяснить что-то непонятное. Часто такой персоной выступает ваш коллега или же продвинутый друг. Если же привлечь их не так просто,
18
то можно попробовать задать вопрос на IRC-канале, либо же в списке рассылок. А если в вашем городе есть пользовательская группа UNIX, BSD или Linux, то это наилучшее место в поисках наставника. Если же вы ищете материалы для чтения, то не стоит ограничивать себя “официальными” списками литературы. Просмотрите книжки по системному администрированию, может быть там описаны все те моменты, которые вас интересуют. Хорошая книжка по системному администрированию — ценный справочник на физической или цифровой полке любого администратора. Ищете обучающий курс? Тогда узнайте, кто его ведет, а также сколько часов будет выделено практической работе в лаборатории. Если в курсе запланировано мало лабораторных часов – потратьте лучше свои деньги на хорошую книжку. Хороший тренер стоит на вес золота, поскольку он может ответить на ваши вопросы, показать вам, как сделать что-либо, а также посоветовать, как сделать что-то лучше. У хорошего преподавателя должен быть реальный опыт в той предметной области, по которой он проводит обучение. Если вы записываетесь на какой-либо курс, запишите свои вопросы, на который хотите получить ответ. Возьмите их с собой на курсы и убедитесь, что в конце обучения вы получили на них ответы.
Я уже работаю, поэтому мне не нужно сертифицироваться.
Распространённой ошибкой является мнение, что сертификация нужна только тем, кто пытается войти в какую-либо новую для себя отрасль или же в настоящий момент озабочен поиском работы. Если вы уже работаете, возможно, что вы используете окружение Windows или Linux и поэтому администрирование BSD систем не входит в ваши ежедневные задачи. Однако этот факт не означает, что вы не можете получить дополнительные бонусы от BSDA сертификата. Даже если вы уже работаете в качестве системного администратора, то сертификация по BSDA даст вам следующее: •
Она позволит вам восполнить пробелы в ваших знаниях: многие навыки системного администрирования получаются на работе на основе каких-либо имеющихся требований для решения задач, часто повторяющихся и привязанных к какой-либо версии операционной системы. Это значит, что вы можете превосходно
02/2012
Зачем нужно сертифицироваться по программе BSDA?
В сети • • • • • • •
•
•
Вебсайт сертификации BSDA: http://www.bsdcertification.org/certification/associate.html План “BSDA”: http://www.bsdcertification.org/downloads/pr_20051005_certreq_bsda_en_en.pdf Психометрия и составление экзамена: http://www.bsdcertification.org/downloads/psychometric.pdf Как составить психометрически-верный экзамен: http://www.slideshare.net/dlavigne/eurobsdcon-2011 http://ru.wikipedia.org/wiki/Психометрия Playing the Certification Game: http://www.slideshare.net/dlavigne/lisa2011 Почему сертификационные экзамены плохи: http://it.toolbox.com/blogs/bsd-guru/?page=30 решать текущие задачи на данном конкретном окружении, но в тоже время у вас нет возможности расширить ваши навыки. Обучение на курсах для сдачи сертификационного экзамена толкает вас к изучению новой информации и выяснению того, какие навыки считаются в индустрии востребованными. Заполняя эти пробелы вы расширяете набор навыков, которые могут пригодиться вам как на текущей работе, так и при вашем дальнейшем карьером росте. Обучение, совмещённое с работой, позволяет вам интенсивно увеличить багаж знаний без дополнительного стресса, который бы вы испытывали будучи безработным или находясь в поисках работы. Она позволит повысить ваш статус в глазах работодателя: сертификаты обеспечивают вам дополнительное преимущество. Они показывают партнерам и заказчикам компании, что в ней есть сертифицированные профессионалы, которые соответствуют их требованиям. Если ваш менеджер достаточно умный, то он заметит, что вы прикладываете дополнительные усилия для получения сертификата, относящегося к вашей области деятельности и это может правильно расставить баланс сил когда придет время для повышения или увольнения. Она улучшает технологическое продвижение BSD систем: если вы хорошо разбираетесь в системном администрировании BSD, то вы, возможно, будете заинтересованы в в более широком использовании технологии на работе. Даже если вы уже знаете те задачи, что проставлены в экзаменационных вопросах и можете запросто пройти экзамен, становясь сертифицированным по программе BSD выказываете вашу поддержку BSD системам. Сертификат показывает вашему работодателю, что BSD системы актуальны и можно рассчитывать на других сертифицированных специалистов, после того, как вас повысят или
www.bsdmag.su
в инфраструктуре компании появятся новые системы на базе BSD.
Вывод
В этой статье освещены некоторые преимущества, получаемые от психометрически корректной программы сертификации, а также даны некоторые советы, необходимые для прохождения сертификационного экзамена. Будем надеяться, что она пробудила ваш интерес в получении сертификата BSDA. В следующей части мы сфокусируемся на самой программе BSDA сертификации: где можно сдать экзамен, сколько он стоит, что предпринять, если тестирование не доступно в вашем месте, а также как принять участие в сообществе по BSD сертификации.
ОБ АВТОРЕ
Dru Lavigne — автор книг BSD Hacks, The Best of FreeBSD Basics и The Definitive Guide to PCBSD. В качестве директора по развитию в проекте PC-BSD, она руководит работой команды по документированию, помогает новым пользователям, оказывает содействие в поиске и исправлении ошибок, работает с сообществом для выяснения потребностей. Она бывший редактор журнала Open Source Business Resource — бесплатного ежемесячного издания посвященного open source и коммерциализации продуктов на его основе. Она также является основателем и председателем совета BSD Certification Group Inc., некоммерческой организации, миссия которой — создание единого стандарта для сертификации системных администраторов BSD систем. Кроме этого, Dru Lavigne является членом совета FreeBSD Foundation.
19
HOWTO
Вы думаете, что консоль не для Вас? Большинство из нас выросло в компьютерной среде, где главенствует какой-либо графический интерфейс. Но всегда есть такая группа людей, называющихся “гиками”, которая предпочитает работать в обычной консоли 80x24. Но консоль ведь только для гиков или не так? Вы узнаете… • Как редактировать текст • Как публиковать его в сети • Чем слушать музыку • Какими клиентами соцсетей пользоваться
Д
О чем вы должны знать… • Как открывать окно терминала • Как взаимодействовать с shell
авайте обо всем по порядку. Сначала перечислим недостатки такого подхода. Путешествовать по интернету в текстовом режиме было удобно в начале развития сети. Сейчас же, с применением множества сумасшедших технологий, отсутствием должного веб-дизайна, несовместимого с простой текстовой интерпретацией, работать в интернете в текстовом режиме можно только с простыми или старыми веб-сайтами. Однако развитие сети не стоит на месте и вполне возможно, что ваши любимые сайты, однажды, будут поддерживать текстовый режим лучше, чем сегодня. Не отчаивайтесь и не переставайте пробовать!
установлена та или иная версия troff, кроме которой так же широко распространены её GNU аналоги – roff, groff (1). Большая часть аудитории знакома с ними по man-страницам, однако их потенциал намного шире. С помощью troff вы можете писать статьи, составлять газеты и даже готовить целые книги. Работа с ними требует тяжёлой тренировки, но результаты стоят того. Рассмотрим следующий пример:
Так как в наши дни всемирная паутина содержит гораздо больше медиа-контента, нежели «олдскульного» чистого HTML (труъ-HTML), то становится актуальным работа с мультимедиаданными в командной строке. Всё, за исключением прослушивания музыки, практически неосуществимо в терминале 80x24. Конечно, если на вашей машине установлена подсистема X11, то перед вами будут открыты все многочисленные возможности обработке информации. Впрочем, об этом расскажу в другой статье.
$ groff -ms example.ms | ps2pdf - example.pdf
Обычно на большинстве рабочих станций *NIX
20
Пропустите этот скрипт через утилиту groff(1), которая сгенерирует файл в PostScript-формате. Обратите внимание, что утилита ps2pdf(1) входит в пакет ghostscript:
И просмотрите его в вашем любимом PDF-ридере, например: $ xpdf example.pdf
И, конечно, вам потребуется графический интерфейс, чтобы увидеть, что же получилось на выходе. Если в системе нет графического интерфейса, то вы спокойно можете вывести PostScript-файл на принтер, который понимает этот формат. Однако, даже бумага стоит денег, поэтому я рекомендую всё-таки открыть файл
02/2012
Вы думаете, что консоль не для Вас?
в X11 подсистеме, чтобы потратить деньги на что-то более полезное. Если после прочитанного у вас еще не взорвалась голова, то перейдем к следующему примеру. Сгенерируйте результирующий файл: $ pic pictest | groff | ps2pdf - 1.pdf
И наслаждайтесь увиденным: $ xpdf 1.pdf
Вот очень краткое описание того, что умеет делать troff. Просто примите к сведению те возможности, которые есть у вас под рукой. Для лучшего усвоения материала, ознакомления с историей возникновения troff, а также обучения невероятным кульбитам с его помощью – загрузите бесплатную книгу от Dale Dougherty и Tim O’Reilly издательства Hayden Books (http:// oreilly.com/openbook/utp/). Группа энтузиастов была в таком восторге от этой книги (“Unix Text Processing”), что перевела всю книжку в формат troff. Так что можете сами скомпоновать книгу по вашему вкусу из “исходников” – (http://home.windstream.net/kollar/utp/). Также рекомендуется книга Е.Балдина “Компьютерная типография Latex“ (http://ctan.uni-altai.ru/info/russian/ Computer_Typesetting_Using_LaTeX/ctex.pdf). XeTex, LaTex, TeTex – все они имеют под собой одну программную основу – TeX, созданный Дональдом Кнутом (этого человека мы, конечно же, знаем и любим). На мой взгляд TeX это старший брат troff, хотя бы потому что занимает, немного-немало, почти половину гигабайта (а в некоторых случаях и несколько гигабайт). Однако такие затраты дискового пространства стоят того, так как с помощью него можно создавать чрезвычайно красивые документы. Серия примеров по TeX (http://www.tug.org/texshowcase/) показывает насколько мощный этот инструмент. Также рекомендуется обратить внимание на книгу Кнута “TeXBook” (ISBN 0-201-13448-9), для которой доступны исходные коды примеров. Со временем вы научитесь виртуозно готовить документы в формате PostScript, которые, вполне возможно, будете просто конвертировать в формат PDF. Также следует быть готовым к тому, что в некоторых случаях придется всё-таки непосредственно иметь дело с документами PostScript. Помните о
www.bsdmag.su
том, что сам по себе PostScript является языком программирования, поэтому после обработки troff или TeX, нужно взглянуть на полученный PostScript, попытаться проанализировать и модифицировать код, а затем посмотреть, как непосредственно происходит обработка с помощью команды gs(1). Либо же сконвертировать модифицированный PS в PDF, а дальше просмотреть через обычный PDF-ридер.
Музыка
Но подождите-ка! Вы вполне можете захотеть послушать музыку, пока вы готовите свою письменную работу, правда? Я в полном восторге от mpg123(1), т.к. программа просто мизерная по размеру и обладает очень простым интерфейсом. Есть также и ряд других, например, в портах OpenBSD можно найти mpg321, mp3blaster, herrie (очень замечательная утилита!) или же shell-fm с поддержкой last.fm. Покопавшись, можно выудить еще целый спектр аналогичных программ.
Загрузка файлов
Наверное, вам захочется написать о чем-либо интересном, например, о свежей версии Ubuntu. Для этого, вам нужно задействовать широко-известные утилиты wget(1) или curl(1). Но если вы хотите помочь при этом другим, можно воспользоваться консольной утилитой rtorrent, которая позволяет получать свежие ISO-образы по протоколу bittorrent, а также раздавать их, например, вашим друзьям.
Создание и ведение блога
Итак, вы закончили вашу статью в формате PDF и хотите опубликовать её. Вы можете пойти двумя путями – вооружиться ‘vi’ и подготовить сайт самому с нуля. Либо же воспользоваться пакетом blazeblogger (http://blaze.blackened.cz), который является набором Perl-скриптов и из которых, в свою очередь, состоит CMS. Для нее не требуется ни база данных, ни PHP. Очень простой интерфейс, но интуитивно понятный для консольного пользователя. Результат на выходе получается отменным и при использовании стандартных настроек, однако и их можно поменять. Вы хотите держать ваших друзей в твиттере в курсе происходящего, но открыть twitter.com со всеми его интерактивными возможностями в `lynx(1)’ или `links(1)’ не самая лучшая идея? Для этого существует ttytter (http://www.floodgap.com/software/ttytter/), консольный клиент для твиттера, написаный на perl.
Чат
Большая часть ваших друзей “висит” в IRC?
21
HOWTO
Листинг 1. example.ms .\” Example of -ms macro runoff. This is a comment .RP no .P1 .ds LH Left header .ds CH Center header .ds RF Right footer .TL This is a title .AU S. Reiche .AI ls-al.eu - public \s-2UNIX\[rg]\s0 Access .AB no .AE .LP We begin a nice paragraph all the way to the left. .PP Then we have a indented starting paragraph. .XP An exdented (yes) paragraph. .QP And of course, we couldn’t live without a quoting paragraph. .NH 1 Heading .NH 2 Subheading .SH Unnumbered subheading .PP And of course, .B we have .I some formatting .R .BI capabilities. Even .BX boxes or simple .UL underlinings. .LG LARGE .NL or .SM small .NL fontsizes and everything.
22
.IP 1. 12 lists are always handy .IP \(bu even unnumbered ones or .IP glossary style. .LP But what’s a technical document without footnotes\**? .FS You know, footnotes! .FE
Листинг 2. Тест с картинками – pictest .PS lineht = lineht / 2 box “\fIletter.tr\fP” arrow circle “tbl” arrow Eqn: circle “eqn” arrow Troff: circle “troff” arc cw line down arc cw left arrow circle “grops” arrow box “\fIletter.ps\fP” up line <- from Troff.n arc line box “\fItmac.m\fP” .PE
02/2012
Запустите irssi и подключитесь к IRC-серверу, чтобы сообщить о вашей новой статье. Специальный плагин для irssi (http://cybione.org/~irssi-xmpp/) позволяет подключаться к сервисам в формате XMPP, например, к GoogleTalk. При использовании его с bitlbee (http://www.bitlbee.org/main.php/news.r.html), можно активировать еще ряд чат-протоколов. Отдельный консольный клиент для протокола jabber/xmpp под названием GNU Freetalk можно найти в дереве портов. Если приходится работать в MSN-сети, то еще один консольный клиент – tmsnc (http://tmsnc.sourceforge. net/)– к вашим услугам.
Почта
Через пару дней вам будет интересно, откликнулся ли кто-нибудь на вашу статью? Не важно, используете ли вы свой собственный почтовый сервер или же пользуетесь сервисом вашего оператора, то можно пойти по стандартному пути получения почты – запустить утилиту fetchmail. Однако, при использовании GMail могут возникнуть трудности. Вот как их можно обойти: - Использование POP/SSL от GMail при работе с fetchmail http://www.axllent.org/docs/networking/gmail_ pop3_with_fetchmail - Использование IMAP/SSL GMail с fetchmail http:// www.daemonforums.org/showthread.php?t=5590 - Использование IMAP/SSL GMail вместе с mutt http:// shreevatsa.wordpress.com/2007/07/31/using-gmail-withmutt-the-minimal-way/ - Использование SMTP/SSL GMail вместе с heirloommailx(nail) и msmtp http://ubuntuforums.org/showthread. php?t=780509 И не забудьте про отличные статьи от Michael Hernandez на тему ‘mutt в OS X’ в журнале BSD Magazine! Вот, собственно, и всё что я хотел рассказать. Теперь вы в курсе, как можно эффективно работать в консоли в режиме 80x24. Я считаю, что такой подход идеален, и сам редко использую X11 или подобные возможности в своей работе. И думаю, что вам тоже стоит опробовать мой метод.
ОБ АВТОРЕ
Sander Reiche фанатеет от PDP-11 и BSD/UNIX, уделяя этому свое свободное время, хотя и по своей работе он инженер UNIX систем. Кроме всего прочего он является учредителем Veritable UNIX Systems Group. Его страничка http://ls-al.eu/~reiche.
www.bsdmag.su
HOWTO
PostgreSQL: от установки до PITR “Самая продвинутая open-source база данных, доступная из любого места” - гласит комментарий к пакету PostgreSQL. Вы узнаете… • базовые основы PostgreSQL • как установить и запустить экземпляр PostgreSQL • как создать пользователей и базы, а также как делать резервные копии
Д
анная СУБД является объектно-реляционной базой данных уровня предприятия, обладающая высокой стабильностью и надежностью, в которой есть ряд свойств, позволяющих ей соревноваться на равных с широко-известными коммерческими базами данных. PostgreSQL выпускается под лицензией BSD, обладает обширной документацией и поддерживается рядом экспертов в области хранения данных, находящихся по всему миру. В этой статье мы осветим вопросы установки и настройки кластера PostgreSQL, взаимодействия с системой и покажем, как производить резервное копирование ваших данных.
Концепция
СУБД PostgreSQL управляет кластером баз: один экземпляр PostgreSQL может запускать и контролировать набор баз данных, которые изолированы друг от друга, и при этом обслуживаются через один и тот же сокет TCP/IP (UNIX-сокеты также поддерживаются). Ограничений по количеству запущенных экземпляров PostgreSQL нет, разве что должно быть достаточно системных ресурсов и незанятых TCP/IP сокетов. Кластер основан на процессной схеме: сервис запускает главный процесс (исторически называемый
24
О чем вы должны знать… • базовые основы SQL • базовые shell-команды, а также как использовать дерево портов
postmaster), который ожидает входящие клиентские подключения. При первом соединении postmaster создаёт копию самого себя и этот новый процесс начинает обслуживание клиента. Он называется backend. Такой подход с использованием выделенного процесса для каждого клиентского подключения был сделан ради вопросов безопасности и переносимости, что предоставляет процессный API в отличие от API нитей. Кластер использует файловую систему для хранения всех баз и их данных: есть главная директория (индивидуальная на кластер), называемая PGDATA, состоящая из нескольких поддиректорий, по одной на каждую базу, которые, в свою очередь, хранят все объекты в базе (таблицы, генераторы последовательностей и т.п.). Также можно реализовать хранение данных вне PGDATA, например, в другом каталоге, за счет механизма tablespace. Конфигурация PostgreSQL, в основном, хранится в нескольких текстовых файлах, которые обычно находятся внутри PGDATA. Из вышеизложенного читатели могут видеть, что для обслуживания нескольких кластеров на одной и той же машине для каждого экземпляра должно быть выполнено следующее:
02/2012
PostgreSQL: от установки до PITR
Листинг 1. Устанавливаем PostgreSQL из портов # cd /usr/ports/databases/postgresql91-server/ # make install clean # cd /usr/ports/databases/postgresql91-contrib/ # make install clean ... # id pgsql uid=70(pgsql) gid=70(pgsql) groups=70(pgsql) # pkg_info -cs ‚postgresql*’ Information for postgresql-client-9.1.2: Comment: PostgreSQL database (client) Package Size: 7914 (1K-blocks) Information for postgresql-contrib-9.1.2: Comment: The contrib utilities from the PostgreSQL distribution Package Size: 1647 (1K-blocks) Information for postgresql-server-9.1.2: Comment: The most advanced open-source database available anywhere Package Size: 14621 (1K-blocks)
Листинг 2. Инициализируем кластер без PGDATA # # # # #
echo ‘postgresql_enable=”YES”’ >> /etc/rc.conf echo ‘postgresql_data=”/postgresql/cluster1”’ >> /etc/rc.conf mkdir -p /postgresql/cluster1 chown pgsql:pgsql /postgresql/cluster1/ /usr/local/etc/rc.d/postgresql initdb
Листинг 3. Инициализируем кластер с PGDATA # mkdir /postgresql/anotherCluster # chown pgsql:pgsql /postgresql/anotherCluster # su -l pgsql -c „exec /usr/local/bin/initdb -D /postgresql/anotherCluster”
• • •
отдельный сокет TCP/IP, на котором postmaster будет работать и ожидать клиентские подключения; отдельная структура PGDATA; отдельный набор конфигурационных файлов (обычно хранимых в PGDATA).
Базовая инсталляция
Установить PostgreSQL на машине с FreeBSD можно через систему портов: сначала требуется установить порт -server, который в свою очередь установит порт -client, необходимого для доступа к кластеру (т.е. для обеспечения соединения к процессам backend). По желанию, можно также установить и модуль -contrib, в котором хранятся дополнительные полезные утилиты
www.bsdmag.su
по управлению экземплярами PostgreSQL. Прежде, чем мы начнем процесс установки, вам нужно выбрать правильную версию. PostgreSQL формируется в форме головнойномер.версия. минорная версия (например, 9.1.2). В случае, если отличие версии находится в строке головнойномер.версия, содержащей главный номер релиза и номер версии, обычно приходится делать дамп данных и проводить реинициализацию. В версиях PostgreSQL, которые отличаются только минорной версией, совместимость не нарушается, поэтому для них реинициализацию делать не требуется. В Листинге 1 приведены шаги, необходимые для
25
HOWTO
установки сервера 9.1 (и клиентского окружения); читатели в конце могут увидеть, что устанавливаются пакеты как для клиентской и серверной части и добавляется пользователь pgsql. Он нужен для запуска серверных процессов PostgreSQL в непривилегированном режиме. Как только СУБД установлена, то должен быть создан и новый кластер. Чтобы сделать это, для PostgreSQL PGDATA должна быть назначена новая директория. Только лишь создать директорию недостаточно, т.к. она должна быть инициализирована командой initdb(1), чтобы PostgreSQL могла размещать в ней свои структуры данных кластера. Все кластерные процедуры, включая инициализацию, старт, остановку и получение статуса кластера могут быть произведены через исполняемый скрипт /usr/local/etc/rc.d/postgresql, который, в свою очередь, вызывает нужную команду (обычно pg_ctl(1) или initdb(1)) посредством непривилегированного пользователя pgsql. Как и
для многих остальных сервисов, очень важно внести в файл rc.conf нужную строчку, разрешающую запуск PostgreSQL. А также внести туда значение переменной PGDATA – главной директории кластера. Это обеспечит запуск утилит из состава пакета PostgreSQL без указания каждый раз этой переменной. В листинге 2 приводится пример стандартной установки PostgreSQL и указания переменных в rc.conf, а в листинге 3 показано, как достичь того же результата с помощью определения папки PGDATA в командной строке. После инсталляции из листинга 2, самое время запустить сервис и проверить, работает ли он. Обратите внимание, что пока не создана ни база данных, ни пользователи, которые могут ею распоряжаться. Поэтому вам потребуется от имени пользователя pgsql подключиться к СУБД (см. листинг 4). Соединение с кластером (как и к любой его базой данных) происходит посредством команды psql(1),
Листинг 4. Запускаем PostgreSQL и получаем первую информацию о ней # service postgresql start # /usr/local/bin/psql -l -U pgsql List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+-------+----------+---------+-------------+------------------postgres | pgsql | UTF8 | C | en_US.UTF-8 | template0 | pgsql | UTF8 | C | en_US.UTF-8 | =c/pgsql + | | | | | pgsql=CTc/pgsql template1 | pgsql | UTF8 | C | en_US.UTF-8 | =c/pgsql + | | | | | pgsql=CTc/pgsql
Листинг 5. Проверяем некоторые настройки в PostgreSQL template1=# SELECT name, setting, reset_val, context, sourcefile,sourceline FROM pg_settings WHERE sourcefile IS NOT NULL; name | setting | reset_val | context | sourcefile | sourceline ----------------------------+--------------------+--------------------+------------+--------------------------------------+----------DateStyle | ISO, MDY | ISO, MDY | user | /postgresql/cluster1/postgresql.conf | 485 default_text_search_config | pg_catalog.english | pg_catalog.english | user | /postgresql/cluster1/postgresql.conf | 507 lc_messages | en_US.UTF-8 | en_US.UTF-8 | superuser | /postgresql/cluster1/postgresql.conf | 500 lc_monetary | en_US.UTF-8 | en_US.UTF-8 | user | /postgresql/cluster1/postgresql.conf | 502 lc_numeric | en_US.UTF-8 | en_US.UTF-8 | user | /postgresql/cluster1/postgresql.conf | 503 lc_time | en_US.UTF-8 | en_US.UTF-8 | user | /postgresql/cluster1/postgresql.conf | 504 log_destination | syslog | syslog | sighup | /postgresql/cluster1/postgresql.conf | 276 max_connections | 40 | 40 | postmaster | /postgresql/cluster1/postgresql.conf | 64 shared_buffers | 3584 | 3584 | postmaster | /postgresql/cluster1/postgresql.conf | 109 silent_mode | on | on | postmaster | /postgresql/cluster1/postgresql.conf | 313 update_process_title | off | off | superuser | /postgresql/cluster1/postgresql.conf | 419 template1=# SHOW shared_buffers; shared_buffers ---------------28MB
26
02/2012
PostgreSQL: от установки до PITR
Данные в структуре PGDATA
Тип
Значение
PG_VERSION
текстовый файл
Содержит главную версию кластера PostgreSQL, который владеет данными PGDATA
postgresql.conf
текстовый файл
Содержит все главные опции и конфигурационные настройки кластера
pg_hba.conf
текстовый файл
Host Based Access (HBA): определяет, какие узлы имеют право на подключение к базам
base
директория
Содержит базы данных в кластере (по одной на каждую директорию).
pg_tblspc
директория
Содержит ссылки на внешние директории, которые содержат объекты базы.
pg_clog
директория
Содержит транзакционные логи.
pg_xlog
директория
Содержит логи по упреждающей журнализации (Write Ahead Logs – WAL), необходимые для правильного функционирования кластера и восстановления.
global
директория
Содержит кластерный каталог.
pg_ident.conf
текстовый файл
Позволяет провести сопоставление имен пользователей операционной системы с именами пользователей СУБД
Таблица 1. - Главные данные в структуре PGDATA и их значения. которая выглядит как интерактивная оболочка. Либо же вы можете запускать SQL-запросы в пакетном режиме.
Анатомия свежеустановленного экземпляра базы
Как показано в листинге 4, кластер уже содержит две важных базы данных, готовых к работе: template1 и template0. Эти две шаблонных базы работают в качестве каркаса для других баз, которые будут в дальнейшем созданы администратором СУБД. Обе они создаются во время инициализации кластера (т.е. когда запускается initdb(1)). Любая новая база будет клонирована из template1, т.к. template0 выступает в качестве дублирующей копии для template1, в случае, если последняя будет разрушена. Обратите,
пожалуйста, внимание, что к этим шаблонным базам можно подключаться как к обычным базам данным. Единственным владельцем директории PGDATA является пользователь psql. В ней хранятся конфигурационные данные для всего кластера, а также файлы с данными – основные параметры прописаны в таблице 1, и выделены синим цветом на рис. 1. Обратите внимание, что для восстановления или миграции кластера не достаточно обычного бекапа на уровне файловой системы; требуются более сложные процедуры, типа Point In Time Recovery (более подробно о ней будет сказано позже). Каждый объект базы идентифицируется по своему уникальному номеру, называемому OID (Object Identi-
Параметр
Значение
listen_address
IP-адрес, по которому служба принимает клиентские подключения
port
TCP/IP порт, на котором висит служба и ожидает входящие подключения
max_connections
Максимальное количество клиентских подключений, которое может быть создано
shared_buffers
Общий объем памяти, используемый всеми процессами PostgreSQL для хранения данных в ОЗУ и обслуживания клиентских подключений (предусматривайте по крайней мере 400Кб ОЗУ на каждое подключение)
work_mem
Объем памяти, временно используемой для реорганизации данных
maintanance_work_mem
Объем памяти, необходимый для обслуживающих процессов (vacuum, reindexing и т.д.)
log_destination log_directory log_filename
Определяют, где служба должна хранить логи (не те, что относятся к WAL и commit)
log_min_duration_statement
Устанавливает порог времени, после которого backend-процесс должен сохранить запрос, который исполняется дольше данного количества секунд (полезно для выявления медленных запросов)
Таблица 2. - Главные конфигурационные параметры postgresql.conf
www.bsdmag.su
27
HOWTO
fier) и сохраняется в файловой системе (в директории PGDATA) в файле, имя которого совпадает с этим номером. Файл с данными может разрастись максимум до размера в 1Гб, после чего будет разбит на сегменты, название которых будет формироваться как OID и соответствующая часть счетчика.
Базовая конфигурация
Конфигурация PostgreSQL основана на текстовых параметрах ключ-значение (key-value). По умолчанию, параметры хранятся в файле postgresql.conf, но к ним можно обратиться изнутри СУБД. Каждый параметр привязан к специальному контексту, который определяет, когда кластер применит измененный
Листинг 6. Создаем базу из shell-окружения ~> createuser -P bsdmag Enter password for new role: Enter it again: Shall the new role be a superuser? (y/n) y ~> createdb -O bsdmag bsdmagdb
Листинг 7. Создаем базу изнутри самой СУБД template1=# CREATE USER bsdmag WITH SUPERUSER LOGIN ENCRYPTED PASSWORD ‘bsdmag’; CREATE ROLE template1=# CREATE DATABASE bsdmagdb WITH OWNER bsdmag; CREATE DATABASE
Листинг 8. Правила для HBA (pg_hba.conf) # TYPE DATABASE USER ADDRESS # “local” is for Unix domain socket connections only local all pgsql host bsdmagdb bsdmag 192.168.200.0/24
METHOD trust md5
Листинг 9. Заполняем базу ~> psql bsdmag -U bsdmag -h 192.168.200.2 bsdmagdb=# CREATE TABLE magazine( pk serial, id text, month int, issuedon date, title text, PRIMARY KEY(pk), UNIQUE(id) ); NOTICE: CREATE TABLE will create implicit sequence “magazine_pk_seq” for serial column “magazine.pk” NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index “magazine_pkey” for table “magazine” NOTICE: CREATE TABLE / UNIQUE will create implicit index “magazine_id_key” for table “magazine” CREATE TABLE bsdmagdb=# INSERT INTO magazine(id, month, issuedon, title) VALUES(‘2012-01’, 1, ‘01/01/2012’::date, ‘FreeBSD: Get Up To Date’); INSERT 0 1 bsdmagdb=# INSERT INTO magazine(id, month, issuedon, title) VALUES(‘2011-12’, 12, ‘01/12/2011’::date, ‘Rolling Your Own Kernel’); INSERT 0 1 bsdmagdb=# INSERT INTO magazine(id, month, issuedon, title) VALUES(‘2011-11’, 11, ‘01/11/2011’::date, ‘Speed Daemons’); INSERT 0 1
28
02/2012
PostgreSQL: от установки до PITR
параметр: •
postmaster: кластер должен быть перезапущен;
•
sighup: кластер должен получить сигнал SIGHUP;
•
backend: применяется ко всем новым подключениям от клиентов;
•
[super]user: применить сразу, если инициировано [супер]пользователем.
Параметры могут быть проверены и изменены (за исключением контекста postmaster) в текущем соединении к базе при помощи команд SHOW, SET, либо выполнив запрос к каталогу pg_settings, в котором можно увидеть к какому контексту принадлежит каждый параметр и в каком конфигурационном файле он прописан (см. листинг 5 в качестве примера). Минимальный набор конфигурационных параметров, на которые следует обратить внимание перед стартом PostgreSQL, приведены в таблице 2. Кроме них, нужно обратить еще внимание и на контрольный список пользователей в HBA (файл pg_ hba.conf), которым разрешается доступ к базе.
Создаем новую базу данных
В качестве примера для этой статьи мы создадим простую базу под названием bsdmagdb и суперпользователя bsdmag. PostgreSQL позволяет создавать (и уничтожать) базы и пользователей как из самой СУБД (т.е. когда вы подключены к template1), так же и из командной строки. В листинге 6 показано, как создать суперпользователя и базу из командной строки, а в листинге 7 – тоже самое, но уже из самой СУБД. Когда база и её пользователи готовы, то самое время проверить правила подключения, содержащиеся в файле pg_hba.conf. Эти правила определяют, какой хост имеет право подключаться к кластеру, а также разрешения для конкретных пользователей подключаться к конкретным базам. Рассмотрение правил синтаксиса этого файла находится вне рамок статьи, но отмечу, что в листинге 8 определяется доступ к базе bsdmagdb только для пользователя bsdmag, находящегося в сети 192.168.200.0/24. Опция md5 определяет, что пользователь должен будет ввести пароль, в то время как ключевое слово trust разрешает пользователю подключаться к базе без авторизации по паролю. Поэтому, даже если пользователю bsdmag разрешается подключаться к
www.bsdmag.su
базе bsdmagdb из локальной сети и при этом также запрашивается его пароль, то для пользователя psql работают совершенно другие правила – он может соединяться к любой базе без запроса пароля, но используя локальные сокеты. Пора подключиться к вышеупомянутой базе bsdmagdb и заполнить её хотя бы одной таблицей с несколькими кортежами – в листинге 9 приводится пример создания таблицы, в которой будут храниться названия журнальных выпусков. Обратите внимание на то, что команда psql будет запрашивать пользовательский пароль при каждом подключении, но данную процедуру можно обойти создав файл ~/.pgpass (с правами на чтение только владельцу) и вписав туда строчку в формате: server-address:port:dbname:username:password
что в нашем случае будет выглядеть как 192.168.200.2:5432:bsdmagdb:bsdmag:mypassword
Поэтому, прежде, чем запросить у пользователя пароль, команда psql будет искать соответствие в файле ~/.pgpass, и, найдя нужное, использует его. Такой механизм особенно удобен для организации скриптов, что запускаются через cron(8) или periodic(8).
Путь к данным
Как мы сказали ранее, PostgreSQL хранит объекты базы данных, включая таблицы (и их кортежи) в файлах в директории PGDATA (в поддиректории base, если не было задано отдельного табличного пространства). Такие файлы именуются по номерам OID, которые были присвоены объекту при его создании, несмотря на то, что некоторые обслуживающие команды могут игнорировать такое правило. Системный администратор может выяснить, какой файл соответствует конкретному объекту базы и наоборот, с помощью команды oid2name, находящейся в модуле contrib. Либо же такое это можно узнать с помощью системного каталога. В листинге 10 показывается как команда oid2name может быть применена для показа всех OID используемой базы (если запускается без аргументов). Кроме того можно выяснить какой OID у определенной таблицы в какой-либо конкретной базе. В примере из листинга 10 oid2name получает номер 16387 в качестве OID для базы bsdmagdb и
29
HOWTO
16390 в качестве номера для таблицы magazine. Это означает, что в директории PGDATA/base должна быть директория под названием 16386 (это OID номер для bsdmagdb), в которой, помимо других файлов, должен быть файл с названием 16390. В нем-то и хранятся кортежи таблицы magazine. Как вы видите, команда ls(1) показывает размер этого файла в 8Кб, несмотря на то, что хранится всего лишь пара значений. Это размер страницы PostgreSQL по умолчанию и по этой 8Кб границе будет происходить выравнивание данных. Чтобы посмотреть, как изменяется размер файла, давайте сгенерируем несколько тысяч пустых кортежей с помощью специальной функции generate_ series() как показано в Листинге 11. Размер файла на диске станет около 5.4 Мб. Считая, что размер каждой страницы 8Кб, то таблица содержит 5652480 / ( 8 * 1024 ) = 690 страниц
что и подтверждается при запуске запроса к системному каталогу в листинге 11.
Делаем резервную копию
Несмотря на то, что PostgreSQL очень надежная и стабильная СУБД, администратору БД всё-таки надо делать резервные копии содержимого кластера, чтобы не потерять данные в ходе аппаратного сбоя, неправильной конфигурации, ошибок в приложениях, человеческих ошибках и т.п. Есть несколько путей для проведения резервного копирования и которые могут быть сгруппированы в следующие категории: логическое и физическое резервное копирование. Логическое копирование – это методика однократного “снимка” содержимого базы с учетом транзакционной целостности. Система экспортирует данные из кластера и сохраняет их в заданном файле, при этом транзакционные сессии сохраняются в том виде, в
Листинг 10. Информация по файлам СУБД ~> oid2name All databases: Oid Database Name Tablespace ---------------------------------16387 bsdmagdb pg_default 11912 postgres pg_default 11904 template0 pg_default 1 template1 pg_default ~> oid2name -H 192.168.200.2 -d bsdmagdb -U bsdmag -t magazine From database “bsdmagdb”: Filenode Table Name ---------------------16390 magazine ~> ls -l /postgresql/cluster1/base/16387/16390 -rw------- 1 pgsql pgsql 8192 Jan 19 14:26 /postgresql/cluster1/base/16387/16390
Листинг 11. Увеличиваем размер таблицы и выясняем размер, используемый на диске bsdmagdb=# INSERT INTO magazine(id, month,issuedon, title) bsdmagdb-# VALUES( generate_series(1,100000), 0, ‘01/01/2009’::date, ‘TEST’); INSERT 0 100000 bsdmagdb=# SELECT relname,relfilenode,relpages,reltuples bsdmagdb-# FROM pg_class WHERE relname = ‘magazine’; relname | relfilenode | relpages | reltuples ----------+-------------+----------+----------magazine | 16390 | 690 | 100003 ~> ls -l /postgresql/cluster1/base/16387/16390 -rw------- 1 pgsql pgsql 5652480 Jan 19 15:44 /postgresql/cluster1/base/16387/16390
Листинг 12. Выгружаем архивную копию базы в обычный текстовый файл с помощью pg_dump ~> pg_dump -h 192.168.200.2 -U bsdmag -f bsdmag.backup.sql bsdmagdb
30
02/2012
PostgreSQL: от установки до PITR
каком они были на момент экспорта; администратору базы данных не нужен доступ к директории PGDATA. Физическое копирование подразумевает, что у администратора есть доступ к этой директории и он может скопировать каждый файл оттуда. Естественно, что транзакционные сессии в этом случае, не могут быть правильно сохранены, поэтому при старте PostgreSQL нужно будет провести проверку на целостность. Для этого, у СУБД должны быть логи по упреждающей журнализации WAL (Write Ahead Logs), которые СУБД использует при отказе аппаратуры и т.п. От уровня
архивации этих логов зависит и степень физического архивирования: можно настроить архивирование от одной логической точки до другой, либо в качестве непрерывного процесса, либо отсылая логи на другую машину, которая в свою очередь будет использовать их и работать в качестве резервного “клонирующего” узла (вот, в принципе, как работает репликация данных).
Логическое архивирование: pg_dump
Стандартный способ для совершения логического
Рис. 1 - Архитектура PostgreSQL используемая в примерах статьи www.bsdmag.su
31
HOWTO
Листинг 13. Подготовка системы для PITR ~> oid2name All databases: Oid Database Name Tablespace ---------------------------------16387 bsdmagdb pg_default 11912 postgres pg_default 11904 template0 pg_default 1 template1 pg_default ~> oid2name -H 192.168.200.2 -d bsdmagdb -U bsdmag -t magazine From database “bsdmagdb”: Filenode Table Name ---------------------16390 magazine ~> ls -l /postgresql/cluster1/base/16387/16390 -rw------- 1 pgsql pgsql 8192 Jan 19 14:26 /postgresql/cluster1/base/16387/16390 ~> psql -U bsdmag -c “ALTER TABLE magazine ADD COLUMN ts timestamp default ‘now’::text::timestamp;” bsdmagdb ALTER TABLE ~> psql -U bsdmag -c “SELECT pg_start_backup(‘MY FIRST PITR’);” bsdmagdb pg_start_backup ----------------0/3C000020 (1 row) ~> cp -Rf /postgresql/cluster1/* /postgresql/cluster2/ ~> rm /postgresql/cluster2/pg_xlog/* ~> rm /postgresql/cluster2/postmaster.pid ~> psql -U bsdmag -c “SELECT pg_stop_backup();” bsdmagdb NOTICE: pg_stop_backup complete, all required WAL segments have been archived pg_stop_backup ---------------0/3C000094 (1 row) bsdmagdb=# INSERT INTO magazine(id, title) VALUES( generate_series(1, 200000), ‘BATCH-1’); INSERT 0 200000 bsdmagdb=# INSERT INTO magazine(id, title) VALUES( generate_series(200001, 400000), ‘BATCH-2’); INSERT 0 200000 bsdmagdb=# INSERT INTO magazine(id, title) VALUES( generate_series(400001, 600000), ‘BATCH-3’); INSERT 0 200000 bsdmagdb=# INSERT INTO magazine(id, title) VALUES( generate_series(600001, 1000000), ‘BATCH-4’); INSERT 0 400000 bsdmagdb=# SELECT ts::time, title FROM magazine GROUP BY ts,title ORDER BY title; ts | title -----------------+--------08:22:42.982515 | BATCH-1 08:22:51.401579 | BATCH-2 08:23:03.243077 | BATCH-3 08:23:17.011491 | BATCH-4 (4 rows) bsdmagdb=# TRUNCATE TABLE magazine; TRUNCATE TABLE
32
02/2012
PostgreSQL: от установки до PITR
архивирования – это задействовать команду pg_ dump(1), которая выгрузит содержимое базы в виде текстового SQL-файла (обычного или сжатого). У этой команды есть много параметров и можно выбрать, что именно сохранять – только данные, только структуру базы, единичную таблицу или объект, либо же всё вместе. Также есть другая утилита под названием pg_dumpall(1), которую можно использовать для сохранения всего кластера, вместо одной какойлибо базы. Использование двух утилит похоже и в листинге 12 показано, как сделать архивирование нашего примера с базой bsdmagdb. При установке из портов будет создан скрипт в /usr/local/etc/periodic/ daily, который при его активации будет запускать pg_ dump для сохранения всех баз из кластера (кроме template0).
Физическое архивирование и восстановление нужной временной отметки (Point in Time Recovery – PITR)
PITR является интересной функцией, разработанной в версии 8, и которая основана на физическом архивировании. Она позволяет вернуться к определенному состоянию базы в прошлом. Это можно описать так: система следит за состоянием логов WAL, в которых хранится состояние “образа” базы в любой точке времени. Когда необходимо провести восстановление, то сервис останавливается и затем перезапускается с эмуляцией отказа (т.е. с “грязным” статусом). СУБД затем начинает процедуру отката с помощью WAL-логов так, чтобы была обеспечена внутренняя целостность транзакций. Определив, сколько информации в логах является лишней, можно откатиться в нужную временную точку в прошлом.
Чтобы посмотреть PITR в действии нам нужно определить, где мы будет хранить WAL-логи, поэтому создадим директорию /postgresql/pitr (см. на Рис. 1 красный прямоугольник) и сконфигурируем следующие опции в файле postgresql.conf: wal_level = archive archive_mode = on
archive_command = ‘cp -i %p /postgresql/pitr/%f’
которые информируют кластер когда и как архивировать эти логи. После рестарта PostgreSQL мы можем подключиться и смоделировать загрузку. Для более подробного понимания нашего примера мы поменяем в таблице magazine кортежи, чтобы теперь сохранялись и временные метки (см. листинг 13). Первым шагом по активизации PITR является сохранение физической копии директории PGDATA, за исключением содержимого каталога pg_ xlog. Неважно, куда и когда будет производиться архивирование, а также сколько на это потребуется времени – просто оповестите кластер, что процесс копирования начался и закончился. Сделать это можно запустив функции pg_start_backup() и pg_stop_ backup(). В листинге 13 показано, что для упрощения процедур, наша копия выгружается в зеркальную директорию PGDATA, которая называется /postgresql/ cluster2 (см. рис. 1 – красный прямоугольник). Пока копирование идет, кластер может продолжать работу (т.е. пользовательские подключения разрешены). В конце процесса мы вставляем, с помощью четырех инструкций, миллион кортежей с четырьмя разными временными метками. А после этого все их удаляем (см. листинг 13). Таким образом мы моделируем ошибку
Листинг 14. Тестируем PITR ~> cat /etc/rc.conf | grep postgres postgresql_enable=”YES” postgresql_data=”/postgresql/cluster2” ~> cat /postgresql/cluster2/recovery.done restore_command = ‘cp /postgresql/pitr/%f “%p”’ recovery_target_time = ‘2012-01-20 08:23:18’ ~> service postgresql start ~> psql -U bsdmag -c “SELECT ts::time, title, count(title) FROM magazine GROUP BY ts,title ORDER BY title;” bsdmagdb ts | title | count -----------------+---------+-------08:22:42.982515 | BATCH-1 | 200000 08:22:51.401579 | BATCH-2 | 200000 08:23:03.243077 | BATCH-3 | 200000 ~> cat /postgresql/cluster2/recovery.done restore_command = ‘cp /postgresql/pitr/%f “%p”’ recovery_target_time = ‘2012-01-20 08:23:18’
www.bsdmag.su
33
HOWTO
В сети • • •
Официальный веб-сайт PostgreSQL: http://www.postgresql.org Официальный веб-сайт ITPUG: http://www.itpug.org Документация по PostgreSQL 9.1: http://www.postgresql.org/docs/9.1/interactive/index.html
в приложении, но аналогично можно смоделировать и другие (более сложные) случаи отказов. Теперь представьте, что мы хотим вернуться в момент времени 08:23:18 (третья инструкция отработана, но четвертый блок еще не завершен – временные метки в листинге 13 определяются, когда запускается команда INSERT). Чтобы восстановить систему к этому времени нам нужно: • остановить экземпляр базы • поменять директорию PGDATA в /etc/rc.conf на нашу физическую копию; • создать файл recovery.conf в нашей новой директории PGDATA, в котором будет храниться позиция о сохраненных WAL-логах, а также время к которому мы хотим восстановить базу. • создать файл recovery.conf в нашей новой директории PGDATA, в котором будет храниться место сохраненных WAL-логов, а также время к которому мы хотим восстановить базу. В Листинге 14 показано, что при перезапуске базы содержимое таблицы magazine возвращается к состоянию, когда третий блок отработал. Стоит отметить, что как только восстановление отработало, система переименовывает файл recovery.conf в recovery.done, а другой текстовый файл – backup_label – переименовывается в backup_label. old. В последнем хранится информация о том, когда физическое архивирование началось, название для архива (которое было передано в pg_start_backup()), а также информация об WAL. Оба файла могут использоваться для анализа текущего состояния кластера. Как видите, PITR – очень мощный инструмент для кластерного архивирования. Дополнительно отмечу, что ограничений отката назад по времени для PITR нет, как и ограничений на сам метод архивирования логов WAL – достаточно выделить для них необходимое пространство и задействовать нужную команду (например, cp, scp, tar и т.д.), чтобы иметь возможность сохранить и восстановить всю историю СУБД.
34
Какую стратегию архивирования использовать?
Выбор правильной стратегии архивирования зависит от загрузки кластера. Логическое архивирование самое простое и должно быть использовано всякий раз, когда для него не потребуется много времени или места (или когда, вам требуется сделать полную копию базы). Когда же выгрузка занимает много времени (например, базы слишком большие) или же для выгружаемых баз требуется слишком много места, то тогда следует обратить внимание на физическое архивирование. Вы даже можете использовать оба варианта – логическое и физическое архивирование – делая архивные копии WAL-логов для нужд PITR в промежутках между двумя логическими архивами. Таким образом вы получаете инкрементальный архив до следующего полного (логического) архива. Убедитесь, что выбранная стратегия удовлетворяет вашим потребностям и работает правильно.
Заключение и анонс
В этой статье мы кратко рассказали об основах PostgreSQL – как ее устанавливать и использовать. В следующей статье мы продолжим наши исследования и рассмотрим управление конкурентным доступом с помощью многоверсионности (Multiversion concurrency control – MVCC) и процедуру Vacuum.
ОБ АВТОРЕ
Luca Ferrari живет вместе с женой и сыном в Италии. Он является адъюнкт-профессором в Nipissing University (Канада), а также сооснователем и вицепрезидентом итальянской группы пользователей PostgreSQL (ITPUG). Ему просто нравится OpenSource культура, поэтому он отказывается работать с не UNIX-системами. Найти его вы можете по адресу http://fluca1978.blogspot.com
02/2012
<<TOP>>
Ваш продукт основан на FreeBSD? Расскажите о нем на страницах нашего журнала! editor@bsdmag.su
www.bsdmag.su
35
HOWTO
OpenBSD, SUN JAVA и Netbeans Данная статья предназначена для Java-разработчиков, которые хотят создавать свои программы на хорошей операционной системе. Вы узнаете… • Вы узнаете как установить окружение SUN Java и NetBeans на вашем компьютере OpenBSD.
М
атериал статьи ориентирован на OpenBSD 5.0. Поехали!
Установка портов
Сперва нам нужно установить порты. С их помощью затем можно будет собрать и JRE (Java Runtime Environment). Загружаем:
О чем вы должны знать… • Как устанавливать OpenBSD, см. официальный веб-сайт. • У вас должна быть работающая OpenBSD с подсистемой X11 и интернет-подключение.
pkg_add -iv wget
Со-зависимости
Мы готовы к загрузке всех зависимостей, необходимых для построения JRE. Но прежде, мы должны поместить их в нужное место: mkdir /usr/ports/distfiles cd /usr/ports/distfiles
ftp ftp://ftp.fr.openbsd.org/pub/OpenBSD/5.0/ports.tar.gz
Загружаем зависимые пакеты
tar zxvf ports.tar.gz -C /usr
wget http://download.java.net/jdk6/6u3/promoted/b05/jdk-
Принимаем лицензию SUN Нам нужно добавить строчку о принятии лицензии Java в файл mk.conf. Иначе, собрать Java не получится.
wget http://download.java.net/jdk6/6u3/promoted/b05/jdk-
Распаковываем:
echo “ACCEPT_JRL_LICENSE=Yes” >> /etc/mk.conf
Зависимости
Установим wget для получения обновлений
Для начала, нам нужно экспортировать переменную, в которой будет содержаться путь к OpenBSD-пакетам. export PKG_PATH=ftp://ftp.fr.openbsd.org/pub/OpenBSD/5.0/ packages/i386/
Теперь настало время для установки пакетов. Поставим “wget”:
36
Готовы? Тогда загружаем ...
6u3-fcs-src-b05-jrl-24_sep_2007.jar
6u3-fcs-bin-b05-jrl-24_sep_2007.jar
wget http://download.java.net/jdk6/6u3/promoted/b05/jdk6u3-fcs-mozilla_headers-b05-unix-24_ sep_2007.jar
Некоторые зависимые пакеты не могут быть подхвачены ‘wget’ из-за того, что требуется предварительное принятие лиценизии. Поэтому, придется получить их вручную: Скачиваем файл bsd-jdk16-patches-4.tar.bz2 со страницы сайта http://www.eyesbeyond.com/freebsd-
02/2012
OpenBSD, SUN Java и NetBeans
dom/java/jdk16.html Скачиваем файлы jdk-1_5_0_16-fcs-src-b02-jrl-28_ may_2008.jar и jdk-1_5_0_16-fcs-bin-b02-jrl-28_ may_2008.jar со страницы http://download.java.net/tiger/tiger_u16/ Файл bsd-jdk15-patches-9.tar.bz2 со страницы http:// www.eyesbeyond.com/freebsddom/java/jdk15.html Файл jdk-1_5_0_16-solaris-i586.tar.Z со страницы http://java.sun.com/products/archive/j2se/5.0_16/index. html (потребуется учетная запись на веб-сайте Oracle). И файл xalan-j_2_7_0-bin.tar.gz с ресурса http://archive.apache.org/dist/xml/xalan-j/ И поместим всех их в /usr/ports/distfiles/
Собираем Java
Да! Теперь мы готовы к сборке системы Sun Java. cd /usr/ports/devel/jdk/1.6 make install
Запаситесь кофе, т.к. на компиляцию уходит масса времени.
Устанавливаем NetBeans
Установка NetBeans происходит намного легче, нежели самой Java. Потому, что пакет NetBeans уже есть в OpenBSD. pkg_add -iv netbeans
Рис. 1 - Запускаем NetBeans
Выводы
Мои поздравления. Теперь у вас есть возможность программировать, программировать и еще раз программировать на вашем любимом языке на вашей любимой операционной системе :)
ОБ АВТОРЕ
Guillaume Dualé - системный администратор, увлечен системой OpenBSD, а также является контрибьютором pfSense. g.duale@otasc.org
www.bsdmag.su
37
АДМИНИСТРИРОВАНИЕ
Политика
классификации данных Дорогие читатели, весь прошлый месяц я размышлял, о чём бы мне написать в этот журнал. Сперва я хотел сделать руководство для новичков по PC-BSD 9.0, но команда PC-BSD разработала продукт, который настолько легко устанавливается и используется, что даже не о чем, собственно и говорить. Вы узнаете… О чем вы должны знать… • Как создать такую политику классификации • Особых технических знаний для статьи не данных, чтобы даже непрофессионалы смогли требуется. её понять.
И
граясь с PC-BSD 9.0 в виртуальной машине, я стал думать: «Что же не оставляет равнодушным меня самого? О чем мне хочется поделиться с читателями журнала BSD Magazine? Что вас может заинтересовать?» И тут я понял, что львиная доля читателей – это системные администраторы, как и я сам. Хороший системный администратор понимает, что безопасность - это нечто большее, чем просто файрволы, шифрование, накладывание заплаток и другие технические мероприятия. Одна поговорка гласит - “Защищенный компьютер — это компьютер, не включённый в сеть”. Ерунда! Умный хакер легко обманет пользователя, сделав так, чтобы тот воткнул Ethernet-кабель обратно в розетку. Самое слабое звено в любой сети – это человеческий фактор. Я хочу поделиться с вами моей политикой классификации данных. В текущей варианте она сильно отличается от той первоначальной версии, которую я разработал на основе примерной классификации, данной в книге “Искусство заблуждения – контролируем аспекты безопасности через человеческий фактор” (The Art of Deception: Controlling the Human Element of Security, Kevin D. Mitnick, William L. Simon, Steve Wozniak). Через несколько недель облагораживания и упрощения того
38
книжного примера получилось то, что вы и видите перед глазами. Я очень рекомендую прочитать эту книгу (The Art of Deception: Controlling the Human Element of Security). Это просто отличный источник информации пео данной теме. По моему мнению, ее должны прочитать не только технические специалисты, но и каждый человек. Для более глубокого понимания того, какие уловки может применить злоумышленник для обхода вашей системы безопасности может потребоваться взглянуть и на следующую книгу: “Крадя Сеть: полное коллекционное издание” (Stealing the Network: The Complete Series Collector’s Edition, Final Chapter, and DVD – Johnny Long, Timothy Russel, Timothy).
Вступление
Классификация данных – ключевой пункт в обеспечении безопасности информации в организации. Без четкой классификации данных, любое решение о чувствительности той или иной информации будет приниматься исходя из субъективных предпочтений. Политика классификации дает основу для ответа на вопросы: “Как я должен обращаться с моими данными?” и “Кому разрешено получать мои данные?”. Классификация данных является важной защитой против социальной инженерии.
02/2012
Политика классификации данных
Классификация данных
Данные делятся на три категории: публичные, контролируемые и секретные. Менеджеры, каждый в своём отделе, имеют полное право и даже обязаны разделить свою информацию по этим трём категориям.
Применяемые правила
В зависимости от того, под какую категорию ваша информация подпадает, могут применяться следующие два правила по управлению информацией: Три вопроса (3В) Правило “3В” означает, что вам не следует распространять данные или передавать их комулибо, включая работников организации, пока вы не удостоверились в 3 атрибутах получателя: 1. Аутентификация: получатель точно тот, за кого он себя выдает? 2. Правомочность: получателю разшенено получить эти данные? 3. Необходимость в данных: получателю нужны эти данные? Шифрование “Шифрование” означает, что вы должны зашифровывать данные, перед тем, как они покидают контур локальной сети организации, если они находятся в цифровой форме. Вы можете расшифровывать данные, только если вам нужно с ними поработать. Вам не следует расшифровывать их, пока вы находитесь в каком-либо публичном месте, как то кафе или аэропорт. Пример 1 Вам не нужно держать данные в портфеле с замком, пока вы идёте от вашей машины к вашему дому. Пример 2 Вам не следует заносить данные в кафе, если они не лежат в закрытом кейсе. Также не следует читать данные или работать с ними, пока вы находитесь там. Кроме этого, если ваши данные подпадают под эту категорию, они должны быть уничтожены, если и когда вы избавляетесь от них. Физические носители нужно отправлять в шреддер. Файлы достаточно удалить CD-носители должны быть разломаны. Данные на внешних дисках, в ноутбуках, компьютерах должны быть безопасно удалены IT-отделом.
www.bsdmag.su
Возможная классификация
Открытые данные: никакие правила не применяются Контролируемые: к данным применяются только правило “3В” Секретные: применяются как правило “3В”, так и шифрование
Криптографические стандарты
Криптографически-приемлемыми стандартами алгоритмов шифрования, включёнными в SSL и TSL для безопасных веб-сайтов, являются AES, Blowfish (или же производные от него Twofish и Threefish) и 3DES. Так же применяется почтовая корреспонденция, подписанная сертификатом/парами ключей. Отдел IT в состоянии рекомендовать и обеспечить обучение по процедуре шифровании. Пароли по умолчанию относятся к категории “секретно” и никогда не должны передаваться в электронном виде. Если вы отсылаете комуто шифрованную информацию, то пароль для дешифровки так же должен тоже быть “секретом” и его необходимо сообщить лично, или же по телефону.
Наследование классификаций
Любой набор данных должен наследовать самую высшую категорию, назначенную для какого-либо подмассива этих данных. Например, если номера соцстрахования считаются секретными, и в карточках личных дел содержатся эти номера, то и сами карточки тоже должны попадать под категорию секретных данных.
Классификация по умолчанию
Любые данные, не относимые явно ни к какой категории, должны классифицироваться как “Контролируемые”.
Дополнение 1: Матрица классификаций Правило “3В” применимо
Правило “3В” не применимо
Правила шифрования применяется
Секретные данные
Не используется
Правила шифрования не применяются
Контролируемые данные
Открытые данные
39
АДМИНИСТРИРОВАНИЕ
Дополнение 2: предложение про проведению аутентификации Отдельные отделы должны создать такие процедуры использования правила “3В”, которые бы комбинировали максимальную безопасность и при этом минимально мешали работе. Самая сложная часть в этом правиле 3-х вопросов – это аутентификация личности. Запомните, АОН не является надежным средством определения звонящего. Номер может быть подделан. Вот несколько примеров методики проведения аутентификации: Перезвоните: определите телефон звонившего по внутренней телефонной книге или по городскому справочнику и перезвоните ему в ответ, чтобы убедиться, что это и вправду его номер. Если вы планируете делать такие проверки регулярно, то для удобства нужно будет завести телефонные справочники с данными тех организаций, с которыми вы часто общаетесь. «Общий секрет»: используйте какую-либо предварительно согласованную информацию, известную только вам и аутентифицируемому человеку.
Comodo. Последняя предлагает бесплатные персональные SSL сертификаты для использования с электронной почтой: http://www.instantssl.com/ssl-certificate-products/free-email-certificate.html Распознавание голоса: один из самых безопасных методов подтверждения личности. Персональный идентификатор: должны приниматься только те идентификаторы, которые выданы государственной (федеральной) структурой. Студенческие ID для этой цели не подходят. ID работников можно использовать только в пределах той организации, где данный работник числится или в партнёрах / доверенных организациях. Дополнение 4: Как избежать неразберихи Строго рекомендуется, чтобы каждый контролируемый и секретный документ содержал шапку, в которой указывался бы класс этого документа. Рекомендуемое цветовое кодирование: зеленый цвет для открытых документов (шапка с классификатором для открытых документов ставится по желанию), голубой цвет для контролируемых и красный для секретных. Вот примеры:
Цифровые сертификаты: Запросите электронное письмо, подписанное цифровым кодом или сертификатом, который можно проверить используя стороннюю организацию, такую как VeriSign или Приложение 3 – Матрица шифрований Решение
Классификация: Открытые данные (Public) Контролируемые данные(Controlled) Секретные данные (Secret)
Совместимые алгоритмы
Решение соответствует политике по классификации данных? Да
Нет
Офисные пароли
неизвестно / нет шифрования
+
Шифрование Zip
несовместимо
+
Протокол Telnet
нет
+
File Transfer Protocol
нет
+
Secure Sockets Layer (SSL, TLS или HTTPS)
3DES
+
WinZip 9 или позже, 7zip
AES
+
Шифрование TrueCrypt
AES
+
Шифрование dsCrypt
AES
+
PGP или GPG
AES или 3DES
+
Шифрование почты по сертификату
AES или 3DES
+
Шифрование с помощью Windows Vista Bitlocker
AES
+
Mac OSX 10.5+ Secure Disk Image
AES
+
Secure Shell (SSH) или SFTP
Blowfish
+
40
02/2012
Политика классификации данных
Другой вариант – печатать документы разных классов на бумаге своего собственного цвета. Пример 1 В Ираке, корпус морских котиков печатает всю информацию, которая считается секретной на желтой бумаге. Это не обязательное правило, а скорее удобный способ быстрого определения класса распечатанного документа. Пример 2 Рабочая группа может решить печатать контролируемую информацию на светлоголубой бумаге, а секретную – на розовой. Также, рабочие группы могут выработать свои правила для обработки информации.
Вывод
Информационный отдел должен предпринимать все доступные технические меры для защиты конфиденциальных данных организации, однако только технические мероприятия не могут защитить от человеческих ошибок. Следовать данному руководству или нет, очевидно, должен решать каждый отдел и каждая рабочая группа. Распределение документов по данной классификации — зона ответственности руководителей отдела / группы.
ОБ АВТОРЕ Toby Richards работает сетевым администратором с 1997 года. Каждая его статья — следствие вынесенных уроков из новых проектов на *BSD системах. Toby рекомендует bsdvm.com для вашего хостинга, так как они предоставляют консольный доступ к вашей виртуальной машине.
www.bsdmag.su
41
СОВЕТЫ И РЕКОМЕНДАЦИИ
Балансировщики нагрузки:
Нагрузка в промышленных системах и доступность сервисов
Мир – это сложное место. Один и тот же термин означает что-то одно для одного человека, а для другого является своей полной противоположностью. Вы узнаете… • Базовой настройке балансировки • Вопросы по обеспечению безопасности • Как выяснять, использует ли веб-сайт балансировщик • Включение балансировки в OpenBSD окружениях
В
озьмем, к примеру, балансировщики нагрузок. Сколько различных типов вы знаете?
Типы балансировщиков нагрузки: • • • • • • • • •
42
Балансировка нагрузки для Layer2 (бондинг) Балансировка нагрузки для Layer4 Балансировка нагрузки для Layer7 (реверсивный прокси) Аппаратное ускорение SSL или разгрузка Балансировка нагрузки на DNS Балансировка нагрузки на линки Оптимизация / сжатие при балансировочной нагрузке Оптимизация нагрузки в WAN-сети Балансировка нагрузки SIP-потоков
О чем вы должны знать… • Сетевое взаимодействие • Веб-хостинг • Вопросы маршрутизации и адресации в пулах (битовые маски, round-robin и т.д.) • Администрирование UNIX (pfsync, rsync)
Балансировщики нагрузки обрабатывают “нагрузку” и люди привыкли думать, что под этим термином подразумевается доступность ресурса в течение длительного времени. Чаще всего, в последнее время, когда люди начинают разговоры об балансировщиках нагрузки, то имеется ввиду нагрузка сервера вебтрафиком.
Факт
Т.к. поведение пользователей на веб-ресурсах становится всё более непредсказуемым, то в определенный момент в индустрии возник спрос на решение, которое позволило бы масштабировать инфраструктуру, чтобы удовлетворить этот возросший поток (нагрузку). Решение из единственного веб-сервера уже не
02/2012
Балансировщики нагрузки
Определения • • • • • • • •
OpenBSD – UNIX-подобная система, произошедшая от BSD Нагрузка – количество одновременных запросов к сервису в определенное время Балансировщик нагрузки – программное или аппаратное решение, которое помогает распределять нагрузку CARP – протокол избыточности общего адреса (Common Address Redundancy Protocol) VRRP – протокол, предназначенный для увеличения доступности маршрутизаторов (Virtual Router Redundancy Protocol) HSRP – протокол “шлюза последней надежды” (Hot Standby Router Protocol) VNIC – виртуальный сетевой интерфейс PenTester (Penetration Tester) – профессионал в области информационной безопасности, который проверяет корпоративную безопасность и выдает экспертные рекомендации
Инструментарий
Вы должны знать следующие инструменты, о которых пойдет речь в статье: • ldb.sh • Halberd 0.2.4
может рассматриваться в качестве приемлемого, вне зависимости от того, насколько он “мускулист” и производителен. Давайте также не забывать, что происходит, когда в дело вступает вирулентность (стремительность распространения среди пользователей ) - нагрузка в таком случае вырастает по экспоненте.
Текущие вызовы
В последнее время есть целый ряд умных бизнесдеятелей, которые затрачивают огромное время пытаясь создать решения класса “устойчиво к вирулентности” при этом не задумываясь, какое влияние это окажет на сетевые сервисы и операции. Почему они этим занимаются? Из-за того, что вирулентность = деньги. Что означает конкретно для вас? Вирулентность = пора разворачивать балансировщики.
серверов. Организации значительного размера обычно имеют тысячи веб-серверов для обработки вашего запроса.
Подсказка
Когда приходится принимать решение, как лучше распределить нагрузку по нескольким серверам, у вас есть несколько вариантов. Очень часто, балансировщик нагрузок выполнен в качестве специальной аппаратуры с несколькими сетевыми картами, которые подключены к многочисленным хостам.
Как это работает
Большое количество одновременных сервисных запросов к веб-серверу могут его “свалить”.
Балансировщик принимает запрос от вашего компьютера (обычно в форме запроса от вашего веб-браузера), после чего равномерно распределяет нагрузку по всей группе серверов, обычно это “кластер” серверов. Идея состоит в том, что вам не нужно думать, куда уходит запрос, т.к. все серверы одинаковые.
Нагрузка
Аптайм и доступность
Проблема
Когда мы говорим об веб-хостинге, то под нагрузкой мы подразумеваем количество одновременных запросов, полученных хостом или же кластером из хостов в какое-либо конкретное время.
Приветствуем: балансировщик нагрузок
Балансировщик нагрузок – это устройство, которое решает куда перенаправлять запросы. Когда вы заходите на сайта Microsoft.com или CNN.com, то вы попадаете не на единственный сервер, как это принято считать. Вы обращаетесь к одному из многих
www.bsdmag.su
Наша цель в том, чтобы сервер ответил на запрос, при этом нам не важно какой именно сервер это будет. Такое оборудование необходимо в больших компаниях, где требуется обслужить сотни тысяч пользователей, одновременно пытающихся зайти на ресурс.
Факт
Балансировщик нагрузки критически необходим в крупных организациях и сетях.
43
СОВЕТЫ И РЕКОМЕНДАЦИИ
Максимальная гибкость
Вы можете выбрать, по какой схеме распределять запрос: в зависимости от нагрузки, или же в зависимости от содержимого. Может быть вы хотите, чтобы один из серверов предоставлял видео-клипы, другой генерировал веб-страницы, а третий хранил бы картинки? Вы вправе сами выбрать, как именно раскидывать нагрузку по всем серверам.
Безопасность
Использование балансировщика создаёт большую проблему с безопасностью, т.к. к балансировщику приходит большое количество соединений, которые затем распределяются по всему множеству серверов, то вам нужно быть уверенным, что все ваши серверы обновлены и защищены.
Подсказка
Убедитесь, что все хосты используют свежие обновления, а программы, запускаемые на них, приведены к текущему уровню репозитария.
Проверьте себя
Убедитесь, что вы знаете всю схему работы балансировщика нагрузки, а также связанные с ним проблемы безопасности и возможные уязвимости. Дополнительно нужно убедиться, что нет проблем со сторонними cookies.
Подсказка
Определите, какие известны эксплойты для самого балансировщика.
Факт
При компрометации балансировщика нагрузки, атакующий может перенаправлять трафик на другие направления.
Прокси
Люди часто разворачивают прокси-сервера для обеспечения дополнительной защиты. Ничто не мешает сделать вам то же самое. Он представляет собой тип сервера (либо последовательность серверов), который спроектирован таким образом, чтобы находиться между пользователями и интернетом. Его задача “перехватить” запрос, сформированный внутренним пользователем и посланный веб-серверу, сформировать новый запрос и пересылать его дальше, якобы от имени пользователя.
44
Факт
Надежность и совместимость – самые важные и самые востребованные критерии при развертывании прокси-серверов и балансировщиков нагрузок. Прокси-сервер получает ответ, который затем проверяет на отсутствие вредоносного кода или вирусов. Прокси может даже контролировать, а разрешено ли пользователю заходить на данный веб-сайт. Если всё нормально, то прокси-сервер отошлет ответ (точнее результат запроса) обратно, инициировавшему пользователю.
Факт
Прокси-сервер — дополнительный уровень взаимодействеия между вами и сетью интернет. Очевидно, что балансировщики и прокси-серверы становятся новым узким местом, поэтому вам нужно будет убедиться, что аппаратное обеспечение позволяет масштабирование для обработки всего потока данных.
Как выяснить, использует ли веб-сайт балансировщик
Очень часто, пен-тестеры очень заинтересованы в выяснении, используется ли в компании балансировщик или прокси-сервер, т.к. именно изза них инструменты безопасности могут получать неверные ответы. 1. Сначала активируйте в своем браузере опцию “показывать заголовки HTTP-запросов”. 2. Получите доступную информацию о домене или хосте с помощью инструментария на searchdns.netcraft.com или DomainName.com 3. Обратите внимание на используемую операционную систему, т.к. она будет использована в результатах searchdns.netcraft.com 4. Научитесь использовать DIG для получения дополнительной информации.
Инструмент: DIG NAME: dig - DNS lookup utility.
SYNOPSIS : dig [ @server ] [ -b address ] [ -c class ] [ -f filename ] [ -k filename ] [ -p
port# ] [ -t type ] [ -x addr ] [ -y
name:key ] [ name ] [ type ] [ class ] [ queryopt... ]
Dig - это программа для получения дополнительной информации от DNS-серверов. Она выполняет запрос
02/2012
Балансировщики нагрузки
к серверу и отображает полученные результаты. Dig считается программой, которая может помочь в устранении ошибок. 5. Найдите и используйте Halberd 6. Запустите как: 7. Вам может потребоваться запустить LBD – Load Balancing Detector 0.1 – для проверки, используется ли на выбранном домене балансировка. Программа была написана Stefan Behte (http://ge.mine.nu) и находится в настоящее время в состоянии Proof-of-Concept.
Подсказка
LBD проверяет на наличие балансировки DNS, а затем на наличие балансировки HTTP. Возвращает обнаруженное состояние. 8. Запустите ./ldb.sh www.DomainName.com
Факт
Балансировщики нагрузок достаточно дорогие устройства, пока все мы любим нажимать на клавишу F5 (или Refresh), однако бюджет не всегда позволяет их приобрести.
Создайте свой собственный балансировщик
Вы можете построить свой собственный простой балансировщик нагрузки на базе OpenBSD. Прежде чем начать, прочитайте про адресные пулы, и обновите в голове информацию о четырех методах по их использованию: • на основе битовых масок • случайным образом • на основе источника • round-robin Операционная система OpenBSD позволяет распределить нагрузку как входящих соединений, так и исходящего трафика.
Производим балансировку входящих соединений
Сделать балансировку с помощью адресных пулов достаточно просто. Вы распределяете все входящие запросы к веб-серверу по всей серверной ферме. Команда будет выглядеть примерно так: web_server = “{10.0.0.10, 10.0.0.11, 10.0.0.13}” match in on $ext_if_proto tcp to port 80 rdr-to $web_
servers round-robin sticky-address
Каждый запрос будет переслан новому веб-серверу в группе в соответствии с правилом round-robin. Кроме того, в нашем сценарии, другое соединение от этого же источника будет передано тому же конечному серверу в ферме.
CARP
CARP так же является очень популярным протоколом среди тех людей, которые сами строят балансировщики нагрузок. С его помощью, достигается необходимый уровень системного резервирования, что требуется в глобальном корпоративном плане управления сетью. CARP расшифровывается как протокол избыточности общего адреса (Common Address Redundancy Protocol), и позволяет вам для ряда хостов организовать единый IP-адрес. В случае сбоя какоголибо одного сервера, другой сервер из CARP-группы ответит на запрос. Таким образом достигается простое резервирование на уровне сервер/хост. В расширенном варианте, вы можете распределить нагрузку между членами CARP-группами.
Факт
Все думают, что CARP является протоколом для файрволов. Это не так.
Подсказка
Используйте CARP, чтобы обеспечить доступность
В сети • • • • • •
www.SearchDNS.NetCraft.COM Halberd Load Balancer Detector www.pydoc.net/halberd/0.2.4/Halberd.version LBD by Stefan Behte http://ge.mine.nu http://ru.wikipedia.org/wiki/HSRP http://ru.wikipedia.org/wiki/Round-robin_(алгоритм) http://ru.wikipedia.org/wiki/CARP
www.bsdmag.su
45
СОВЕТЫ И РЕКОМЕНДАЦИИ
сервиса и распределение потока между несколькими веб-серверами. Этот протокол появился тогда, когда пользователи OpenBSD захотели сделать открытую версию протоколов VRRP и HSRP, но из-за патентных ограничений отказались от этого. Тогда команда разработчиков OpenBSD вышла с инициативой по разработке варианта VRRP. В сегодняшних реалиях, для развертывания CARP, первое, что вам нужно сделать – это сгруппировать несколько физических компьютеров вместе под одним или несколькими виртуальными адресами. Т.к. CARP является мульткаст-протоколом, то одна из систем должна выступать в качестве мастера и отвечать на все пакеты, предназначенные для группы. Другие системы должны будут находиться в standby-режиме, ожидая сбоя или отказа в обслуживании.
обеспечить максимальную функциональность без ущерба для управляемости и безопасности. Если цены на аппаратное решение для вас неподъемны, попробуйте рассмотреть программный балансировщик. Т.к. балансировщик является видимой частью сети, будьте готовы к тому, что он будет работать как большое бутылочное горлышко и будет мишенью для всяческих злодеев. Спасибо, что нашли время прочитать эту статью.
Когда происходит отказ мастер-узла, то на первый план начинают выходить другие хосты в CARP-группе. Та машина, которая может чаще других отвечать становится новым мастер-узлом. Даже если мастерузел восстановится через короткое время, то он будет числиться в группе в качестве резервного.
Подсказка
CARP обслуживает только виртуальный сетевой интерфейс – VNIC. Вам может потребоваться использовать pfsync или rsync для синхронизации данных на уровне приложений.
Настройка CARP
Производится через команды sysctl и ifconfig. Используемый синтаксис легко найти в интернете.
Балансировка нагрузки CARP
CARP обеспечивает два разных метода организации распределения нагрузки входящего трафика по набору хостов, помещённых в CARP: балансировка по ARP и балансировка по IP. Оба метода требуют, чтобы у вас была выстроена балансировочная группа. Опять же, информация по синтаксису доступна в интернете.
В заключение
Когда мы начинаем говорить об управлении нагрузкой, то положиться практически не на что. Будьте готовы к любым событиям. Оцените доступные аппаратные решения, которые могут
46
ОБ АВТОРЕ Richard C. Batka — бизнеси IT-менеджер, работающий в Нью-Йорке, оказывающий консалтинговые услуги CIO и CTO компаниям из списка Fortune 500. Он работал с лидерами рынка: Microsoft, PricewaterhouseCooers, Symantec, Verizon, Thomson Reuters и JPMorgan Chase. Выпускник New York University, он доступен по адресу rbusa1@gmail.com или http://twitter.com/richardbatka.
02/2012
БЕЗОПАСНОСТЬ
Анатомия компрометации FreeBSD (часть 3) В продолжении серии статей по безопасности, мы рассмотрим инструменты, которые потребуются для защиты систем. Вы узнаете… О чем вы должны знать… • Как использовать сетевые утилиты и команды • Навыки сетевого администрирования и безопасности знание BSD систем
В
предыдущих статьях нами были рассмотрены социальные и технологические аспекты хакерских атак с сопуствующими примерами. В этой же статье мы расскажем про некоторые инструменты, которые используются для проникновения, тестирования и обеспечения безопасности устройств и, кроме этого, для выполнения анализа и выяснения уязвимостей. Хотя эти примеры и носят недеструктивный характер, тем не менее рекомендуется проводить тестирование в индивидуальной локальной сети, и уж во всяком случае не в интернете или же без одобрения вашего работодателя, поскольку они могут быть рассмотрены как нарушение правил вашего провайдера или же работодателя (Acceptable Use Policy) и может привести даже к судебному иску против вас. Этическая сторона вопроса Одной из самых обсуждаемых тем в интернете является вопрос – что делать с трафиком от хакеров, спамеров и т.д., когда он приходит на ваш сервер. Т.к. относительно просто выяснить, откуда идет атака (если предположить что вы заметили происшествие и при условии что в атаке принимает участие только один человек), то возникает большой соблазн “открыть ответный огонь” против тех, кто вламывается в систему. Это достаточно распространенная реакция, но по моему мнению не самая лучшая. Во-первых, вы показываете тем самым, что на этом конце провода есть разумная жизнь и, таким образом, открываетесь для дальнейших атак. Во-вторых, в законе не
48
уточнено (по крайнем мере в Британском), что ваша обратная реакция не будет расценена в свою очередь как атака. В глазах закона, ваш “ответный огонь” будет оценен точно так же, как и атака на вас. Ситуация отягощается еще и тем, что очень часто бывает так, что если сетевое устройство на той стороне и скомпрометировано, то его владелец находится в полном неведении. И атаковать ваш веб-сервер – это последнее, что может прийти ему в голову. Самый безопасный вариант заключается в следующем – отбрасывать подозрительные пакеты вместо того, чтобы начинать полноценную встречную атаку, с целью «нести возмездие во имя Луны»(с). Если же случаются повторные инциденты, то уведомите провайдера атакующего. Либо, при развитии ситуации по худшему сценарию, напишите заявление в соответствующее подразделение правоохранительных органов. Тем не менее, в список инструментов защиты я включил также и honeypots. Решение о том, считать или нет пойманный в капкан ловушки (т.е. в тарпит - см. “В сети”) вредосный пакет, в свою очередь защитой или нападением, я оставляю на усмотрение юристов. Требования Для этой серии тестов автор будет использовать следующую комбинацию – виртуальная машина, запущенная на рабочей машине и подключенная через сетевое соединение типа “мост” к локальной сети. Также есть две системы FreeBSD (одна в виртуальном окружении, другая – реальный сервер) – Border.merville.intranet и hacker.merville.intranet –
02/2012
Анатомия компрометации FreeBSD (часть 3)
соответственно, жертва и нападающий. Кроме них есть и другие устройства в ЛВС. Машина Border. merville.intranet представляет из себя FreeBSD 6.1, с установленными Apache, PHP и MySQL. Она была первоначально скомпрометирована, но впоследствии приведена в должное состояние. Машина Hacker.merville.intranet – FreeBSD 9.0 RELEASE с оконным менеджером TWM и нужными утилитами, установленными с помощью pkg_add. Несколько других серверов и машин будут использоваться в дальнейших экспериментах в качестве жертв, но
для объяснения базовых функций будет достаточно и этих двух. У меня в ЛВС используется Ciscoсвитч, но обычный хаб (или виртуальный LAN) также сойдет (если не сказать, что будет еще лучше). Результаты работы свитча и хаба могут слегка различаться, в зависимости от настроек первого, т.к. пакеты не будут транслироваться на все порты, как это было бы в случае хаба. Если же используется виртуальная ЛВС, то может потребоваться внести изменения и в настройки безопасности виртуальных машин. Результаты в вашей сети могут значительно Коммерческая лицензия/ поддержка
Название
Описание
Категория
Веб-сайт
netstat, telnet, ping, dig, ps, netcat, top, tcpdump и т.д.
Инструменты общего назначения для администрирования и конфигурирования сети. Должны быть знакомы каждому системному администратору.
Приложение
N/A
Nmap / Nmapsi4
Сканеры портов. Проверяет доступные по TCP устройства и открытые на них порты
Приложение
http://nmap.org
Ntop
Зонд сетевого трафика
Приложение
Да
http://www.ntop.org
Nessus
Сканер уязвимостей. Применяя профессиональные шаблоны можно определить открытые порты, приложения и характерные для них уязвимости.
Приложение
Да
http://www.nessus.org
Wireshark
Анализатор сетевых протоколов и пакетный Приложение сниффер.
Metasploit
ПО для тестирования проникновений. Выполняет обзор сети и проверку на уязвимости.
Приложение
Да
http://metasploit.com
Snort
Система обнаружения вторжений (IDS)
Приложение
Да
http://snort.org
Honeyd
“Нелипкая” ловушка – используется для привлечения атакующих
Приложение
http://honeyd.org
Labrea
“Липкая” ловушка. То же самое, что и предыдущая, но использует тарпит и замедляет атаку.
Приложение
http://labrea.sourceforge.net
Trinity rescue kit
Инструмент общего назначения. Позволяет клонировать по сети образы машин, сбрасывать пароли для MS Windows, восстанавливать удаленные файлы и т.д.
Загрузочный CD
http://trinityhome.org
BackTrack Linux
Отличный Linux-дистрибутив для нужд эксперта по безопасности. Почти всё, что вам нужно, находится в одном ISO-образе. Выбор хакера-ниндзя.
Загрузочный CD
http://www.backtrack-linux.org
Knoppix S-T-D
Live-дистрибутив с обширной коллекцией инструментов безопасности
Загрузочный CD
http://s-t-d.org
Hiren’s BootCD
Live-CD предназначенный для удаления вирусов. В основном требуется для Windows-машин.
Загрузочный CD
http://www.hiren.info
http://www.wireshark.org
Таблица 1. - Распространённые сетевые инструменты и утилиты обеспечения безопасности
www.bsdmag.su
49
БЕЗОПАСНОСТЬ
Рис. 1 – Стратегия атаки
Рис. 4 – NTOP позволяет увидеть используемые протоколы отличаться от моей тестовой ЛВС, в зависимости от используемых устройств и т.д.
Рис. 2 – NTOP показывает сетевой трафик
Инструменты Для *BSD разработано большое количество консольных утилит, которые помогают администратору выявлять уязвимости. Кроме этого существуют и LiveCD, в которые включены целые коллекции утилит, и которые можно использовать вне зависимости от установленной операционной системы. Такие дистрибутивы удобны в том плане, что всё собрано в одном месте и их можно запустить как с CDROM, так и с загрузочного USB-брелка. Для *BSD-систем большинство этих утилит доступно в той или иной форме, за исключением, конечно, инструментов под определённую ОС (например тех, что находятся
Рис. 3 – NTOP показывает клиентов (колонки разделены для удобства) 50
02/2012
Анатомия компрометации FreeBSD (часть 3)
Рис. 5 – TCPDUMP показывает движение сетевого трафика в реальном времени на Hirens BootCD), но для них в любом случае потребуется дополнительная настройка (установка дополнительных скриптов/шаблонов и т.п.) для запуска на *BSD. Некоторые распространяются под коммерческой лицензией или же производитель зарабатывает на платной техподдержке. Системный администратор сам должен выбрать инструмент для работы и иногда целесообразно заручиться помощью специалистов, особенно в быстроменяющемся мире системной безопасности. Воспользуйтесь Таблицей 1 – “Распространённые сетевые инструменты и утилиты по безопасности” – в ней описаны самые популярные инструменты по безопасности как для *BSD-, так и для Windows-платформ. В мире безопасности не существует одного какого-либо приложения, которое подошло бы для всех целей, поэтому использование некоторого широкого спектра утилит позволяет системному администратору проверить рабочее окружение с нескольких разных точек. Антивирусное ПО и файерволы были исключены из списка так как они зависят от операционной системы и по умолчанию будем считать, что у наш системный администратор их уже использует. Стратегия Одна из причин, почему бот-сети считаются высокоэффективными, состоит в том, что они собирают и позволяют анализировать повторяющиеся данные. Говоря по-русски, мы должны спускаться от (общего) макро-уровня и прийти к (частному) микро-уровню. Упрощенно это показано на рис. 1 — движение от общего к частному. К каким сетям мы имеем доступ? Какие устройства присутствуют в сети? Какие порты открыты на этих устройствах? И, наконец, какие эксплойты существуют для этих портов? Если мы посчитаем, то согласно Wikipedia обнаружим, что разработано 27 типов различных веб-серверов. И это только для одного сервиса, обслуживающего порт 80. Принимая во внимание, что существует 65536 портов TCP/IP, и есть ненулевая вероятность, что ПО для них не настроено безопасным образом, либо на него не установлены заплатки, или же сервис просто сломан,
www.bsdmag.su
то мы можем оценить объем информации для анализа, причем это пока касается только одного сервера. Посмотрите на это глазами хакера: наш приоритет — выявить самую уязвимую систему. Таким образом, нашей первой задачей является сканирование сети, для выявления потенциальной жертвы. NTOP, NMAP и другие утилиты Для мониторинга трафика в сети существует отличный инструмент – NTOP и его консольный аналог – TCPDUMP. Используя их совместно с GREP, можно быстро выяснить какие пакеты бегают по сети. Но что если есть забытый сервер, к которому никто не обращается? Пока он не запросит какой либо сервис (ARP, DHCP и т.п.) он может тихо сидеть и быть незамеченным. С другой стороны, у нас есть активный инструмент сканирования NMAP, который проверит всю сеть, так что спрятаться не получится. NTOP также может провести сканирование сети и проанализировать имеющийся трафик, что даст нам дополнительные результаты, кроме данных, полученных от NMAP. Мы используем все три метода
Рис. 6 – ARP в сетевой модели
51
БЕЗОПАСНОСТЬ
Рис. 7 – ARP-трафик получаемый с помощью TCPDUMP для обнаружения устройств в сети. Также может быть полезен WIRESHARK, особенно когда нужно знать, кто в сети включен, однако без применения таких активных (интрузивных) инструментов как NMAP, жизнь хакеров была бы более сложной. Поскольку по умолчанию утилиты NTOP, WIRESHARK и TCPDUMP относятся к пассивному классу, то самые лучшие результаты могут быть получены за счет комбинирования как пассивных (sniffing) и активных сканеров. Подготавливаем hacker.merville.intranet (Атакующий сервер) Из под root-пользователя установите в системе следующие пакеты: NMAP, NMAPSI, NTOP. pkg_add -r nmap nmapsi4 ntop
Добавьте следующие строки в /etc/rc.conf ntop_enable=”YES”
Рис. 8 – Результаты сканирования с помощью NMAP
отправителем и конкретным получателем), что в сети 192.168.X.X находится 3 узла (Hacker, Intel и Border), и что обмен шел по HTTP, NetBIOS, DNS и DHCP-протоколам, причем доля HTTP-трафика превалирующая. Неплохо для начала, так как часть сетевой головоломки мы получили. Но я то знаю ещё кое-что о моей ЛВС, например, что в ней есть роутеры и что для доступа к Border я использую SSH. Эти устройства и протоколы не были обнаружены NTOP... пока. TCPDUMP Если у вас нет доступа к интернету, чтобы установить пакеты, то неплохим инструментом для анализа трафика будет TCPDUMP. Используйте его совместно с GREP и TELNET. На атакующей машине запустите следующую команду (может потребоваться предварительный запуск IFCONFIG для определения названия сетевого устройства):
ntop_flags=”-d --use-syslog=daemon -u nobody -A -4”
tcpdump -i em0
Это будет заставит NTOP функционировать в режиме IPv4, а не IPv6. Перезагрузитесь:
В реальном времени перед вами будет отображаться трафик, проходящий через сетевое устройство em0 (Рис. 5). В зависимости от масштаба сканируемой сети, анализ всего трафика может оказаться проблематичным, поэтому либо пропускайте вывод через команду MORE (tcpdump -i em0 | more), либо же отфильтровывайте через GREP по определенному IPадресу или протоколу как в примере (по проколу ARP):
reboot
Если у вас возникли какие-либо проблемы с запуском NTOP, то обращайтесь к документации: man ntop.
Сеть и обнаружение устройств
NTOP После перезагрузки атакующего сервера, откройте в браузере порт 3000 и вы увидите интерфейс NTOP. При включении всех плагинов, спустя некоторое время вы получите детализированную статистику по сетевому трафику (Рис. 2), обнаруженные хосты (Рис. 3) и хронологию использования сетевых протоколов (Рис. 4). Со временем анализ будет становиться более детальным по мере прохождения через интерфейс новых порций трафика. При проверке данных, мы обнаружим, что большая часть трафика – это unicast (т.е. трафик между конкретным
52
tcpdump -i em0 | grep ARP
У вас должна получиться картина, похожая на Рис. 7 - “ARP-трафик полученный TCPDUMP”. Нажмите Ctrl+C для выхода из программы. Наши действия определяются мудрой поговоркой, размещенной на сайте BackTrack Linux - “Чем тише вы себя ведете, тем больше вы можете услышать”. Одно из главных умений хакера – быть невидимым. Топорно орудуя в сети вы быстро привлечёте к себе внимание файервола и любого ПО для определения вторжений
02/2012
Анатомия компрометации FreeBSD (часть 3)
№ п/п
Название хоста
IP-адрес
Обнаружен с помощью
1
Hacker
192.168.0.131
NTOP, TCPDUMP, NMAP
2
Intel
192.168.0.132
NTOP, TCPDUMP, NMAP
3
?
192.168.0.141
TCPDUMP
4
?
192.168.0.250
NMAP
5
Border
192.168.0.254
NTOP, TCPDUMP, NMAP
Таблица 2. - Потенциальные жертвы (IDS). Терпение и продолжительное прослушивание интерфейса более удачная стратегия, особенно если вы скрываетесь или же принимаете меры для того, чтобы вас не обнаружили. Итак, TCPDUMP обнаруживает нашу первую аномалию – устройство 192.168.0.141 не знает, кто оно или где именно в сети оно находится! Самое интересное, что когда мы первоначально запускали NTOP, то никаких признаков узла 192.168.0.141 не было. Такое явление можно объяснить самой природой
Рис. 9 – Содержимое ARP-кэша
протокола ARP, который работает на канальном уровне (см. рис. 6 – ARP). Данный протокол предназначен для транслирования IP- и MAC-адресов, и часто данные могут кешироваться на локальном узле. Беспричинный ARP-пакет от узла 192.168.0.141 может подразумевать наличие по этому адресу некоторых видов роутеров, так как такой метод используется для форсированного обновления локального ARP-кеша на узлах сети. Чтобы посмотреть, что хранится в ARP-кэше, запустите: arp -a
Вы должны получить вывод примерно как на рис. 9. NMAP NMAP выпускается в двух вариантах – как консольная утилита и как GUI-версия, которую можно запустить в любом оконном X11-менеджере. Для этого опыта мы будем использовать первый вариант, т.к. мы хотим выгрузить содержимое в файл. От имени root запустите NMAP в любой директории, где есть достаточно свободного пространства (в корневом
разделе обычно очень мало места): nmap -sn 192.168.0.0/24 -oN SN_192.168.0.0.TXT
Рис. 10 – Проводим стелс-сканирование хоста 192.168.0.141
Будет сгенерирован текстовый файл SN_192.168.0.0.TXT, в котором будут содержаться обнаруженные хосты в сети 192.168.0.0 (см. Рис. 8). У NMAP есть несколько режимов сканирования, от
Рис. 11 – 192.168.0.140 — хост не обнаружен брут-форс до стелс-режима. Сканирование, которое мы используем – это обычный ping без определения открытых портов. Таким образом, мы обнаружим большую часть устройств в нашей сети, при условии, что они отвечают на сформированный ICMP-запрос. Используя в комбинации NTOP, TCPDUMP и NMAP мы будем знать о следующих потенциальных жертвах в сети (см. Таблицу 2 – “Потенциальные жертвы”).
Рис. 12 – Хост 192.168.0.254 – полно потенциальных дыр www.bsdmag.su
Давайте теперь проверим, сможем ли мы обнаружить открытые порты на хостах 192.168.0.141 и
53
БЕЗОПАСНОСТЬ
192.168.0.254, запустив “NMAP -Pn”. Такая конструкция уведомляет NMAP, чтобы он воспринимал все хосты, как включенные (онлайн). И если хоста на самом деле нет, то вы это увидите. Для процесса сканирования потребуется некоторое время. После чего мы можем твердо сказать, что хост 192.168.0.141 действительно существует, но фильтрует на всех портах (см. Рис. 10). Если бы этот узел не существовал, то мы бы увидели совершенно другую картину (см. Рис. 11). На Рис. 12 показано, что удалось обнаружить по открытым портам
в ходе 5-минутного сканирования узла 192.168.0.254. На Рис. 13 показана собранная статистика, которую NTOP аккумулировал в течение 4 часов и 40 минут. И наконец, возвращаясь к консольным утилитам – не забудем про скромный клиент TELNET. Взгляните на Рис. 12 – вы видите, что на узле 192.168.0.254, SQUID работает на порту 3128. Напечатав какой-либо мусор, мы можем получить информацию и об его версии – SQUID2.5STABLE14 (Рис. 14). telnet 192.168.0.254 3128
[Нажмите ENTER и напечайте что-нибудь]
Вывод
Существует несколько способов получения ценной информации из сети. Мы можем прослушивать интерфейсы в течение продолжительного времени, сканировать устройства с помощью брут-форса и стелс-методов, а также использовать такие утилиты как telnet для опроса веб-сервисов с целью узнать их версию.
Рис. 13 – NTOP вывод через несколько часов
ОБ АВТОРЕ
Рис. 14 – Используем TELNET для проверки открытых портов 54
Rob Sommerville неравнодушно относился к технологиям с детства. Ярый сторонник открытых систем с середины восьмидесятых, он проработал во многих корпоративных секторах, включая финансовый, автомобильный, авиаиндустрии, правительственный и СМИ. Был во множестве ролей - начиная от технической службы поддержки, системного администратора, разработчика и заканчивая системным интегратором и IT-менеджером. Вышел из мира CP/M и газоразрядных ламп, однако хранит паяльник под рукой, на всякий случай.
02/2012
<<TOP>>
Неравнодушны к UNIX и системам на базе BSD? Поделитесь с остальными! editor@bsdmag.su
www.bsdmag.su
55
ПОГОВОРИМ
Подсчитывая наши потери 2011 год по всем мнениям вышел тяжелым. Даже на Discovery Channel выпустили специальную передачу об основных событиях этого года. Разрушительное землетрясение в Японии, наконецто пойманный Бен-Ладен, волнения в арабских странах и даже преждевременная смерть Стива Джобса. Всё это подробно было освещено в новостях. Но как насчёт реальных героев? Тех, которые остались за пределами внимания популярных СМИ? Кеннет Гарри Олсен (Kenneth Harry Olsen) - со-основатель DEC, Digital Equipment Corporation. Больше всего DEC известна своими компьютерами серии PDP, процессорами Alpha и VAX а так же сопутствующей переферией. Хотя неверные маркетинговые решения DEC и лишили её лидерства на рынке вычислительной техники, тем не менее в области компьютерной техники DEC всегда оставалась впереди со своими идеями. Достаточно сказать, что Ethernet был по большей части разработан именно в DEC. Оттуда же в нашу повседневную жизнь пришла кластеризация (как идея использовать набор менее мощных компьютеров в качестве замены одному более мощному и дорогому), массивы RAID 0 и 1. Из среды этой компании вышли такие операционные системы, как RSX, RT-11, Ultrix, VAX или OpenVMS, OSF/1, Digital UNIX и Tru64. Стандарт пленки DLT так же был изобретен в DEC. Все знают, что стандартный терминал VT100 был выходцем из DEC также как и менее известный VT220. Проект «Афина» в Массачусетском технологическом университете, в значительной степени финансированный DEC, развивал и продвигал такие продукты, как X Window System, Kerberos и Zephyr (первая система обмена мгновенными сообщениями). Jukebox, разрабатывавшийся в научно-исследовательском центре DEC во время слияния с Compaq, был первым коммерческим плеером с жестким диском для хранения информации [1]. Аналогичным образом большая часть интернета была возмущена тем, что смерть Дэнниса Макалистера Ритчи (Dennis MacAlistair Ritchie) 12 октября 2011 года была практически обойдена вниманием СМИ, особенно если по сравнению с тем, как широко сообщалось о смерти Стива Джобса. Между тем, Ритчи был одним из пионеров компьютерной эры. Стив Джобс, возможно, не смог бы добиться того, чего достиг, если бы не было UNIX, созданного Денисом Ритчи. Деннис же, в свою очередь, вполне возможно и не стал бы изобретать С и писать на нём UNIX, если бы не PDP-7 фирмы DEC, который лежал в углу Bell Labs, что снова отсылает нас к Кеннету Олсену [2] и его DEC. Несмотря на пройденное время, UNIX и С играют значительную роль на современных вычислительных платформах. Если Вам нужно относительно низкоуровневое программирование, большая скорость выполнения и вы не хотите возиться с ассемблером, то С - это Ваш выбор. И, как известно, если Вы хотите сделать что-то правильно, Вы выбираете UNIX. На мой взгляд, самой лучшей одой Деннису и его невероятному вкладу было бы это: {
printf(“goodbye, dad.\n”; return 0;
}
56
02/2012
Подсчитывая наши потери
Роберт Морис (Robert Morris) же сделал так, чтобы все мы могли относительно безопасно входить в UNIX. Он является создателем `crypt`, языка программирования `bc` и математической библиотеки UNIX. После карьеры в Bell Labs он переключился на работу в Агентстве Национальной Безопасности (NSA), о чём Вы можете более подробно прочитать в статье Дэнниса Ритчи «Dabbling in the Cryptographic World» [3]. Его сын, Роберт Таппан, написал печально известный вирус, положивший почти 10% тогдашнего интернета, состоявшего из 60 000 соединенных систем, так что компьютерная безопасность в их семье в крови. Роберт умер в возрасте 78 лет, 26 июня 2011 года. Стив Джобс (Steve Jobs) - один из тех людей, которых мы не забудем. Он был не только своеобразным человеком, но и в некоторой степени ясновидцем. Результатом его деятельности является не только Apple, но и студия Pixar, а также компания NeXT. Понятно, что в этой статье невозможно полностью оценить его вклад в современное общество, но есть достаточно источников и книг, в которых описана его сумасшедшая жизнь. Он умер в возрасте 56 лет, 5 октября. Джек, он же Джейкоб Е. Голдман (Jacob E., Goldman), скончался в возрасте 90 лет - 20 декабря 2011 года. Будучи настоящим учёным, он проделал огромную работу для лаборатории Ford Scientific, в частности, разрабатывая электромобиль с натрий-серными батареями в 60-х годах. Однако его главная заслуга заключается в том, что он принял на работу Джорджа Пейка, который должен был основать научно-исследовательский центр Xerox в Пало-Альто, откуда вышли такие вещи, как лазерный принтер, Ethernet, GUI (графический пользовательский интерфейс, который Джобс “украл” для Apple) и объектно-ориентированное программирование. Может быть это и не столь фундаментальный вклад по сравнению с теми, кого мы уже упомянули, однако это именно то, что мы используем каждый день и без чего уже не можем представить современной жизни. Другим Великим Человеком, который ушел в этом году, был Джон МакКарти (John McCarthy). Он прожил 84 года до того момента, пока не умер 24 октября. Этот человек придумал сам термин «искуственный интеллект» или ИИ. Он создал семью языков Lisp, с которой сталкивалось большинство программистов в тот или иной момент своей жизни. Многое из того, что он задумывал, рано или поздно в итоге воплотилось в жизнь. Прочитайте об этой удивительной и интересной личности на странице в Википедии [4]. Полу Барану (Paul Baran) приписывают изобретение пакетной коммутации, которая используется сегодня в наших сетях и интернете. Во время работы в корпорации RAND, он должен был разработать сеть, способную выдержать ядерную атаку. Для этого он, еще в начале 60-х годов, использовал избыточность, которая в итоге вылилась в принцип пакетной коммутации, использованный в ARPANET (предок интернета). Позже он использовал этот же принцип, в ATM [5] (Асинхронный режим передачи) и ITU G.992.1 [6], что в свою очередь, явилось основой OFDM (мультиплексирование с ортогональным частотным разделением каналов), которое используется в DSL модемах. Пол ушел из жизни в возрасте 84 лет - 26 марта 2011 года. 23 марта 2011 года умерла Жан Дженнингс Бартик (Jean Jennings Bartik), одна из шести настоящих ENIAC (Electronic Numerical Integrator and Computer — электронный цифровой интегратор и компьютер) программистов. Кроме этого, она работала на BINAC и UNIVAC 1 компьютерах. В те годы программирование компьютеров было скорее женской работой, нежели сейчас. Тем не менее, она не получила достойной оценки своей работы и была уволена из MacGrawHill в 1985 году, когда ей был 61 год. Музей ее имени в Северо-западном университете штата Миссури в Мэрвилле хранит экспонаты ENIAC, UNIVAC и BINAC. Жан зарегистрирована в зале славы «Международной организации женщин в технологии» [7] и была одним из трех лауреатов премии Fellows Award [8] 2008, вместе с Бобом Меткалф и Линусом Торвальдсом. Джек Вулф (Jack Wolf) ответственен за многие теории, созданные между 60-ми и до примерно 2000 года, и был неоднократно награждён за них. Практически все его публикации касаются проблемы передачи информации без потерь и они до сих пор используются в таких продуктах, как жесткие диски, ленточные накопители и т.п. Когда он умер 12 мая 2011 года ему было 76 лет.
www.bsdmag.su
57
ПОГОВОРИМ
В сети [1] http://en.wikipedia.org/wiki/Personal_Jukebox [2] http://ru.wikipedia.org/wiki/Си_(язык_программирования) [3] http://cm.bell-labs.com/cm/cs/who/dmr/crypt.html [4] http://ru.wikipedia.org/wiki/Маккарти,_Джон [5] http://ru.wikipedia.org/wiki/ATM [6] http://ru.wikipedia.org/wiki/ITU_G.992.1 [7] http://en.wikipedia.org/wiki/Women_in_Technology_International [8] http://ru.wikipedia.org/wiki/Fellow_Awards [9] http://en.wikipedia.org/wiki/MUSIC-N [10] http://en.wikipedia.org/wiki/George_(robot) [11] http://en.wikipedia.org/wiki/Computer_Conservation_Society [12] http://ru.wikipedia.org/wiki/Блетчли-парк [13] http://ru.wikipedia.org/wiki/Проект_«Гутенберг» [14] http://ru.wikipedia.org/wiki/Харт,_Майкл
21-го апреля 2011 года был ознаменован окончанием жизни для Макса Мэтьюза (Max Mathews). Будучи еще менее известным, нежели перечисленные выше, этот человек сделал все возможное, чтобы мы имели целый оркестр в наших компьютерах. В 1957 году, работая в Bell Labs, он написал программу MUSIC [9], первую программу для прямого синтеза музыки на ПК. Дожил он до 84 лет. Энтони Эдгар «Тони» Сейл (Anthony Edgar ‘Tony’ Sale) был британским инженером электронщиком и любил историю компьютеров. Он был человеком, построившим робота George (Джорджа) - робота из обломков бомбардировщиков Wellington [10] в 1949 году. Тогда это было большим событием. Через 45 лет бездействия робот был заново включен в 2011 году, оказалось достаточным лишь заменить батарейки и немного подкрутить крепления. Тони был членом Британского Компьютерного Общества, Общества Сохранения Компьютеров [11] и большим человеком в Тресте Блетчли-парка [12], где он в 1993 году занимался восстановлением известного компьютера Colossus, за что получил награду Comdex IT Personality 1997. Он умер 30 августа 2011 года в возрасте 80 лет. Том Вест (Tom West), вероятно, лучше всего описан в книге «Душа новой машины», написанная Трэйси Киддером. Он являлся также создателем Eclipse MV/8000, первого в семействе 32-х битных компьютеров, производимых Data General в 1980-х годах, и выдвинувших компанию в число крупных игроков на рынке. Том был одним из немногих интересных людей и то, что написано о нём в издании The Boston (http://www.boston.com/bostonglobe/obituaries/articles/2011/05/22/tom_west_engineer_was_the_soul_of_data_generals_new_ machine/?page=full) кажется лишь малой частью его жизни. Он умер 19 мая, в возрасте 71 года. Майкл Штерн Харт (Michael Stern Hart), возможно, и не был настоящим инженером, однако в сфере его ответственности лежат по крайней мере две вещи, которые для нас сегодня важны. Это электронные книги (или e-book) и Проект Gutenberg [13]. Он был основателем данного проекта, задуманным с целью большей доступности электронных книг и текстов. Текст Декларации о независимости был набран на Xerox Sigma V. Майкл ловко писал сообщения электронной почты моноширинным шрифтом, в которых каждая строка была одинаковой длины. Это довольно здорово. Он прожил лишь до 64 лет [14] и умер 6 сентября 2011. Да упокоятся они с миром.
ОБ АВТОРЕ
Sander Reiche - фанатик PDP-11 и обожает заниматься BSD/UNIX в свободное время. Он также является системным инженером UNIX на своей ежедневной работе. Основатель Veritable UNIX Systems Group. Его страница в интернете расположена по адресу: http://ls-al.eu/~reiche.
58
02/2012
В следующем выпуске: • Вторая часть по сертификации BSD от Dru Lavigne • Анатомия компрометации FreeBSD • Подробнее о PostgreSQL