Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
РЕПОРТАЖ 2 БЕЗОПАСНОСТЬ
АДМИНИСТРИРОВАНИЕ Защита сетевых сервисов
с помощью stunnel
Linspire одним глазком
Андрей Бешков
Валентин Синицын tigrisha@sysadmins.ru 42
val@linuxcenter.ru 4
Железный login:
Идеальный карманный компьютер ломаем зубы грубой силе
для системного администратора
Часть 2 Александр Похабов
chiko@agk.ru 48
Андрей Маркелов
andrew@markelov.net 8 Тени исчезают в полдень
Дистрибутив для всех Сергей Яремчук
grinder@ua.fm 54
Сергей Яремчук
grinder@ua.fm 10 WEB
Копирование файлов PHP-GTK
в автоматическом режиме
с множества компьютеров через SSH Андрей Уваров
dashin@ua.fm 60
Рашид Ачилов
shelton@granch.ru 12 Обработка переадресованных
http-запросов
Единая учетная запись
для Windows и UNIX Алексей Мичурин
в Active Directory alexey@office-a.mtu-net.ru 62
Игорь Полянский HARDWARE
ipoliansky@mail.ru 18
Запись дисков CD-R/RW в Linux
FreeBSD tips: настройка VLAN Часть 2
Сергей Супрунов
amsand@rambler.ru 24 Владимир Мешков
ubob@mail.ru 68
Биллинг для АТС на базе PostgreSQL
ОБРАЗОВАНИЕ
Георгий Толоконников
info@samag.ru 26 Файловая система NTFS извне и изнутри
Часть 2
Пакетный фильтр OpenBSD
Часть 2 Крис Касперски
kk@sendmail.ru 76
Денис Назаров
pheonix@sysattack.com 30 Разработка сценария регистрации
пользователей в сети
Настоящий UNIX в наши дни Часть 2
Александр Байрак Иван Коробко
x01mer@pisem.net 34 ikorobko@prosv.ru 82
Автоматизируем FTP с помощью Python Содержание журнала за 2004 год 92
Сергей Супрунов
amsand@rambler.ru 36 BUGTRAQ 33, 53, 91, 94
2
администрирование
ВАЛЕНТИН СИНИЦИН
Фирма Linspire (www.linspire.com) – ветеран движения за по- ставщиков закрытого ПО) канал доставки, компания выз-
пуляризацию Linux, хотя самой торговой марке едва насчи- вала сильное удивление у коллег по цеху, а г-н Робертсон в
тывается пять месяцев. Между тем компания была основа- очередной раз подтвердил звание большого затейника.
на в далеком 2001 году. С тех пор и по сей день ее бес- Подробности доступны по адресу: http://info.linspire.com/p2p/
сменным управляющим является всемирно известный аван- p2p-pr.html. Иногда (правда, в последнее время все реже и
тюрист-инноватор Майкл Робертсон (Michael Robertson), со- реже) Linspire проводит промо-акции, в ходе которых тре-
здатель портала MP3.com. Первоначально компания назы- буется угадать текст купона (как правило, это нечто оче-
валась Lindows, а ее основное детище и герой сегодняш- видное для тех, кто внимательно следит за заголовками
ней статьи, настольный дистрибутив Linux, – LindowsOS. новостных лент), ввести его и получить стопроцентную скид-
Такое явное созвучие с «Окнами» не могло понравиться ку в интернет-магазине компании. После этого ISO-образ
корпорации Microsoft и очень быстро стало предметом мно- дистрибутива можно загрузить бесплатно через HTTP или
гочисленных судебных разбирательств как на территории все тот же BitTorrent.
США, так и за их пределами. Тяжба не утихала в течение В данном обзоре мы рассмотрим основные возможнос-
нескольких лет, причем фортуна практически равным об- ти Linspire 4.5.189 Developers Edition, датированной янва-
разом благоволила как той, так и другой стороне. Вконец рем 2004 года. С тех пор было выпущено несколько исправ-
погрязнув в пучине судебных баталий, Lindows, Inc. и лений (об их роли в этой истории мы поговорим чуть поз-
Microsoft в июле этого года пришли к мировому соглаше- же), однако базовая функциональность системы не претер-
нию, по которому все права на торговую марку «Lindows» и пела существенных изменений.
соответствующие доменные имена отошли в «Редмонд»,
правда, не безвозмездно. Размер контрибуции составил Делай раз: установка
около 20 млн. долларов. Вполне удовлетворенная исходом Итак, вставляем компакт-диск с Linspire в оптический при-
дела, Lindows сменила имя на Linspire и с большой выго- вод и перезапускаем компьютер. Нашему взору представ-
дой продала свою прежнюю вывеску на аукционе eBay. ляется графический splash-экран с логотипом компании и
На сегодняшний день компания представляет широкий меню с двумя загрузочными опциями: Install и Diagnostic. Пос-
модельный ряд, включающий базовую редакцию Linspire ледний вариант может использоваться для тонкой (эксперт-
4.5, профессиональную Linspire 4.5 Developers Edition, заг- ной) настройки параметров или восстановления системы.
ружаемый диск LinspireLive! и специальную версию Выбрав его и подождав достаточное время, можно попасть
LinspireEspaсol для испаноязычных пользователей. Поми- в текстовую консоль и, например, переразбить жесткий диск,
мо этого имеются различные дополнения, например, пользуясь командой fdisk или же реанимировать файловую
LinspireOffice. Ранее существовала еще одна разновид- систему с помощью fsck. Из важных утилит в этом режиме
ность – Laptop Edition, предназначенная для ноутбуков, но не доступен, пожалуй, один hdparam (читатели, у которых
сейчас она, по-видимому, слилась с базовой версией. хотя бы раз «взрывался» хорошо раскрученный CD-ROM,
Как и многие настольные дистрибутивы, Linspire явля- меня поймут). Впрочем, развитие промышленности идет се-
ется коммерческим программным продуктом. Цена базо- мимильными шагами и несбалансированные/некачествен-
вой редакции – 49,95 доллара. Версия для разработчиков ные диски сейчас встречаются все реже и реже.
стоит чуть дороже – $59,95. LinspireLive! можно приобрести Сделав все необходимое, можно начать установку
за $19,95 или (официально!) загрузить через файлообмен- Linspire командой startx или же выйти из диагностического
ную сеть BitTorrent. Выбрав столь оригинальный (для по- режима, набрав exit.
4
администрирование
ентированные на ту же целевую аудиторию, стали продви-
гать совместимость с WiFi лишь к концу 2004 года (моя вер-
сия Linspire, напомню, была выпущена в январе). Возмож-
но, эти ошибки уже исправлены, однако достоверных све-
дений на сей счет у меня нет.
В процессе установки программа сама отформатирует
предназначенный системе раздел. В качестве файловой си-
стемы по умолчанию (впрочем, этот термин здесь не впол-
не уместен, ведь ничего другого выбрать не предложили)
используется ReiserFS, что неудивительно – Linspire спон-
сирует ее разработчиков, о чем красноречиво свидетель-
ствует лейбл на сайте Namesys (www.namesys.com). Эта
компания вообще поддерживает или принимает участие в
достаточно большом числе открытых проектов, в том чис-
ле KDE (www.kde.org) и Mozilla (www.mozilla.org), и даже с
Ðèñóíîê 1. Êëèåíò Click-N-Run некоторых пор имеет собственную Open Source инициати-
Программа-инсталлятор, напротив, является воплоще- ву – Nvu (www.nvu.com), задача которой ни много ни мало –
нием простоты. Достаточно упомянуть, что она состоит мак- создать свободный аналог Macromedia DreamWeaver и
симум из четырех экранов. Вначале пользователю предла- Microsoft Frontpage. В качестве основы используется редак-
гается выбрать один из двух режимов: Take Over An Entire тор Mozilla Composer. Проект делает определенные успе-
Hard Disk («Занять жесткий диск целиком» – режим по умол- хи: по крайней мере все новые страницы на сайте Linspire
чанию, хорошо подходит для установки на чистый нераз- разработаны с помощью Nvu.
меченный диск и не требует вмешательства пользователя) Завершив (ура!) копирование файлов, инсталлятор вы-
или Advanced Install. «Продвинутость» в данном случае оз- даст соответствующее сообщение и предложит перезагру-
начает возможность указать существующий раздел для ин- зить систему. Добро пожаловать в мир настольного Linux!
сталляции корневой файловой системы. Изменить их струк-
туру программа не позволяет, вероятно, для того, чтобы нео- Делай два: первый запуск
пытный пользователь нечаянно не уничтожил данные на со- и постинсталляционная настройка
седнем Windows-разделе. После осуществления выбора мы После неизбежного перезапуска мы видим уже знакомую
переходим на третий экран, где предлагается ввести имя заставку и меню, на этот раз содержащее три опции. Две
для нашего компьютера и пароль. Последняя настройка яв- из них нам хорошо известны и предназначены для нормаль-
ляется необязательной, что очень понравится пользовате- ного старта системы и перехода в экспертный режим. Сред-
лям Windows 9x и приведет в ужас бывалых администрато- няя, «Redetect», используется для обнаружения нового обо-
ров. Программа не проверяет введенные пароли на проч- рудования. Дождавшись загрузки системы (наберитесь тер-
ность: хотите «123456» – пожалуйста. После заполнения пения – как и многие настольные дистрибутивы, Linspire не
данных полей ваше участие в процессе заканчивается и слишком легок на подъем. Это неизбежная плата за отсут-
система приступает к копированию файлов. Вполне оправ- ствие тонкой настройки) и введя пароль (если таковой име-
дывающий себя подход, по крайней мере до тех пор, пока ется), мы окажемся в окне мастера первого запуска, кото-
не возникнет внештатная ситуация. рый предложит нам ознакомиться с лицензией и установить
Сообщения инсталлятора об ошибках малоинформатив- ряд параметров. Беглый взгляд на соглашение конечного
ны и обычно состоят из числового кода, краткого описания пользователя (EULA) обнаруживает занятную вещь – лицен-
(например: «200: rsync failed» или «255 Unspecified Error») и зия Linspire является Family Friendly. Говоря русским язы-
предложения обратиться в службу технической поддерж- ком, одну копию системы можно легально установить на
ки, которая, как следует из периодически появляющейся в неограниченное число компьютеров, владельцы которых со-
ходе установки рекламной картинки, доступна через Web и ставляют одну семью. Не вдаваясь в юридические тонко-
по телефону, правда, не круглосуточно. Опыт показывает, сти, отметим явное преимущество такого договора как для
что специалисты откликаются достаточно быстро, однако нас с вами, так и для производителя: если отечественный
на вопрос о причинах неудачи разводят руками: мол ошиб- пользователь худо-бедно свыкся с мыслью о том, что про-
ка, знаем, работаем. Возможно, build 189 был в этом отно- граммы имеют лицензию, которую надо соблюдать, то пла-
шении не слишком успешным (как уже упоминалось ранее, тить за себя, за маму и за папу он точно не станет. Нажав
с тех пор вышло несколько исправлений, и текущий релиз на расположенную в окне кнопку «Advanced», можно доба-
имеет номер 444), но мне с трудом удалось найти компью- вить новые учетные записи (по умолчанию вы заходите в
тер, на который Linspire поставился без сучка и задоринки. систему как root) или настроить экранное разрешение, глу-
Особенно обидно, что в число «неприкасаемых» попал и бину цвета и частоту развертки (в состав Linspire входят
мой ноутбук, с помощью которого предполагалось прове- фирменные драйверы ATI и Nvidia, поэтому приготовьтесь
рить на практике, насколько хорошо система поддержива- к высокому refresh rate). Программа также предложит вам
ет работу с беспроводными сетями. Эта возможность ши- настроить системное время. Выполнив все необходимые
роко рекламируется в руководстве пользователя, что вну- операции, можете спокойно выходить из мастера. Вас ждет
шает некоторое уважение: прочие дистрибутивы Linux, ори- сюрприз: одно из фирменных аудиоруководств Linspire! В
6
администрирование
разработчиков Lindows была практически стопроцентная и создания HTML-документов используется интернет-пакет
совместимость с Windows-приложениями (отчасти поэтому Mozilla.org. Не так давно компания MozDev Group (http://
ей и было присвоено столь «неудачное» имя). Стремясь до- www.mozdevgroup.com) по заказу создателей дистрибути-
стичь ее, компания не жалела денег на инвестиции, в пер- ва расширила его возможности интегрированным поиском
вую очередь, в проект Wine (http://www.winehq.com). Одна- (по любому слову на странице, в теле письма и т. д.) и про-
ко, спустя некоторое время г-н Робертсон изменил курс. веркой правописания. Функция имеет название Hot Words
Сославшись на дороговизну продуктов для Windows, он (http://info.linspire.com/suite.html) и доступна, как и все в мире
предложил сконцентрировать все усилия на написании их Linspire, через CNR Warehouse. В состав Linspire 4.5 вклю-
полноценных аналогов (чем компания сейчас и занимает- чены также интернет-пейджер GAIM (gaim.sourceforge.net)
ся, достаточно вспомнить тот же Nvu). Было ли это реаль- и IP-телефон SIPphone (www.sipphone.com).
ной причиной или же стопроцентная эмуляция Win32 API Поинтересуйтесь у начинающего линуксоида, что ему
оказалась чересчур трудоемкой задачей, науке доподлин- кажется самым непонятным в этой системе. Уверен, в «го-
но неизвестно, но факт остается фактом: в смысле двоич- рячую десятку» непременно попадет процедура подключе-
ной совместимости с Windows у пользователей Linspire нет ния (mount) разделов, особенно остро встающая для съем-
особых преимуществ перед «простыми смертными». Через ных носителей: дискет, компакт-дисков, USB Flash и т. д.
CNR Warehouse доступны все те же Wine, NeTraverse Здесь Linspire оказался на высоте. Вставленный в USB-
Win4Lin (около 70 долларов с учетом «клубной скидки») и разъем «брелок» система опознала сразу, о чем уведоми-
WineX (приблизительно 15 долларов). Весьма популярный ла меня, разместив пиктограмму «Flash Disk» на рабочем
пакет CrossOver Office, базирующийся на Wine, и входящий столе. Вставленный в привод DVD-ROM оптический диск
в комплект поставки конкурентов Linspire (Lycoris Desktop/ был также легко опознан и смонтирован, а вот с его отклю-
LX и Xandros), в CNR Warehouse отсутствует. чением возникли небольшие проблемы. В случае, если он
Как вы уже, наверное, обратили внимание, названия ин- оказывался занят (в понимании Linux – например, было от-
терфейсных элементов в данной статье приводятся на анг- крыто окно с деревом расположенных на нем каталогов),
лийском языке. Это происходит вовсе не из-за прозапад- система игнорировала нажатие на кнопку Eject на передней
ной ориентации автора – английский является языком панели. Такое поведение родного компьютера может сму-
Linspire по умолчанию, а помимо него, система официаль- тить и испугать новичка. Было бы лучше, если бы Linspire
но поддерживает лишь испанский. В отличие от Linare (см. выдавала диалог с сообщением о невозможности извлече-
статью «Заметки о Linare», журнал «Системный админист- ния диска и списком потенциальных причин (или даже на-
ратор», №11, ноябрь 2004 г.), где поддержка кириллицы званием приложения, использующего CD/DVD-ROM в дан-
выдрана с корнем, научить Linspire хоть как-то говорить по- ный момент).
русски возможно. Для этого потребуется установить стан- Вот и подошел к концу этот небольшой обзор. Что мож-
дартный пакет локализации KDE и шрифты все из того же но сказать в заключение? По-моему, Linspire – это непло-
CNR Warehouse. хой дистрибутив, страдающий излишним интересом к день-
Среди заслуживающих внимания приложений, входящих гам своего владельца и отсутствием полноценной русифи-
в состав «Кладовой», следует назвать авторские разработ- кации, но, несмотря на это, предоставляющий достаточный
ки Linspire: аудиоплейер в стиле «все в одном2 Lsongs (http:/ комфорт для домашнего и офисного применения. Если у
/info.linspire.com/lsongs), аналогичный iTunes и фотоальбом вас есть широкий канал в Интернет – загрузите LinspireLive.
Lphoto (http://info.linspire.com/lphoto), заменяющий iPhoto. Возможно, он вам понравится. Если что-то не получилось,
Обе программы бесплатны для подписчиков CNR и стоят не расстраивайтесь – Linspire не единственный в своем
около 20 долларов для остальных. роде. В январском номере журнала мы рассмотрим Lycoris
Desktop/LX, загадочный дистрибутив от компании, ранее
Делай четыре: приступаем к работе известной как Redmond Linux.
Итак, все подготовительные операции завершены, допол-
нительное ПО установлено, и мы можем наконец-то при-
ступить к тому, ради чего все и затевалось, – работе. Вне-
шний вид Linspire 4.5 представлен на рис. 2. В качестве ра-
бочего стола используется KDE. Содержимое меню
«Launch» (зеленая буква «L» в левом нижнем углу) стара-
тельно повторяет привычное пользователям Windows (кро-
ме тех, кто успел основательно обжиться в XP): те же
Programs, Settings, Search и Run Command. В устоявшийся
порядок вещей добавлен всего один штрих – опция
«Terminate Program» («Снять программу»). При ее выборе
(равно как и при нажатии магической комбинации <Ctrl-Alt-
Del>) на экране появляется дерево запущенных процессов.
Во время своего старта система автоматически загружает
апплет, извещающий пользователя о наличии новых сооб-
щений в почтовом ящике (конверт в правом нижнем углу) –
мелочь, а удобно. Для чтения писем, а также просмотра Web Ðèñóíîê 3. Ïîíàäîáèëñÿ îôèñ? Äîáðî ïîæàëîâàòü â CNR Warehouse!
АНДРЕЙ МАРКЕЛОВ
Обновляем системное программное ! включены версии баузеров Opera 7.25 и NetFront 3.1;
обеспечение КПК ! улучшена поддержка USB-устройств через CF USB Host;
За время, прошедшее с выхода первой части статьи1, ком- ! добавлена поддержка эмуляторов SNES и Scumvm.
пания Sharp успела выпустить преемника рассматриваемой ! поддержка файловых систем ext3 (позволяет создавать
модели карманного компьютера, в основном отличающе- отказоустойчивые ext3 разделы на больших внешних кар-
гося наличием четырехгигабайтного жесткого диска. Однако тах памяти) и squashfs (предоставляет очень хорошую
пока еще эта модель под названием SL-C3000 заговорит степень сжатия данных при невысоком использовании
хотя бы по-английски, а не по-японски, и доберется до на- системных ресурсов), fuse (FileSystem in User Space);
шего рынка, пройдет очень много времени. А пока идеаль- ! обновлены драйвера bluetooth и WiFi (используются
ным КПК для системного администратора как был, так и драйвера HostAp, поддерживаются Wireless Extentions
остается Sharp Zaurus SL-C860. Кстати, с появлением трех- версии 15, WPA);
тысячной модели, цена на восемьсот шестидесятую долж- ! добавлен модуль брандмауэра iptables;
на упасть, что сделает Zaurus более доступными. Продол- ! bash «дорос» до версии 3.0;
жим же наш разговор об этом карманном компьютере, ра- ! в прошивку включен Midnight Commander;
ботающем под управлением ОС Linux. ! включены в прошивку unrar, diff, smbmount и другие кон-
В первой части статьи я уже рассказывал о существую- сольные утилиты, которые иначе пришлось бы доуста-
щем многообразии «прошивок» ROM для Zaurus. Две ос- навливать вручную;
новных из них – это pdaXrom (http://www.pdaxrom.org) и ! созданы новые версии многих консольных утилит (wget,
Cacko ROM (http://cacko.biz/cacko). Первая в качестве гра- fdisk, OpenSSL/OpenSSH);
фической среды использует X11, а вторая, как и родная ! обновлена программа эмулятора терминала;
шарповская – Qtopia. Доставшийся мне «карманник» шел ! добавлена поддержка целого ряда новых bluetooth и WiFi
с довольно устаревшей русифицированной для «МакЦент- CF-карт.
ра» версией Cacko ROM. Поэтому я хочу начать вторую
часть с описания процесса перепрошивки ROM, который Как видите, список изменений весьма внушителен, для
весьма не тривиален. После окончания операции по срав- того чтобы приступить к обновлению прошивки. Нужно ска-
нению с макцентровской версией, помимо исправлений зать, что к этому процессу стоит отнестись со всей ответ-
ошибок, мы должны дополнительно получить огромное чис- ственностью, так как можно легко привести КПК в нерабо-
ло бонусов: тоспособное состояние. Снимки с экрана Zaurus во время
Наиболее заметные изменения: выполнения этого увлекательного процесса вы можете най-
! переделаны все значки и обои; ти по адресу www.markelov.net/z860upd.html, а далее я по-
! значительно обновлена программа kino2 – оболочка для стараюсь подробно описать само действо.
mplayer; Начнем с того, что на всякий случай сохраним копию те-
! включена поддержка NLS для всех языков в ядре; кущей прошивки. Для этого нам необходимо попасть в так
! модернизирована программа переключения клавиатур- называемое «диагностическое меню» карманного компью-
ных раскладок; тера – аналог BIOS настольных ПК. Для того чтобы зайти в
1
Маркелов А. Идеальный карманный компьютер для системного администратора. Часть 1. – Журнал «Системный администратор», №10,
октябрь, 2004 г.
8
администрирование
него, необходимо на некоторое время вынуть батарею, либо ставить о нем представление тем, кто только собрался об-
просто отодвинуть на некоторое время защелку батареи. завестись карманной Linux-системой, но окажутся полез-
После чего возвращаем все в исходное состояние, и при ными и обладателям Zaurus. На возникшие вопросы автор
включении «завра» держим нажатыми клавиши <D+M>. Пе- с удовольствием ответит по электронной почте, либо на фо-
ред вами меню на английском языке. Я настоятельно реко- руме журнала.
мендую не экспериментировать с его пунктами, так как мож- Хочу поблагодарить Антона Масловского, предоставив-
но легко «убить» ваш КПК. Теперь перемещаемся на третью шего мне предварительную версию Cacko ROM 1.22, кото-
страницу меню. Там выбираем пункт «NAND Flash Back Up». рая к моменту публикации статьи наверняка уже выйдет в
Перед этим необходимо убедиться, что в КПК вставлена от- свет.
форматированная в файловой системе FAT карточка. Места
же должно хватить для 135 Мб файла с полной копией ваше-
го текущего содержимого NAND ROM. По окончании про-
цесса на флэшке будет лежать файл systc860.dbk. Обратно
в диагностическое меню можно будет вернуться по клавише
«Cancel», а из самого диагностического меню выход осуще-
ствляется выбором подпункта «Reset» пункта «Extra menu».
При необходимости вернуться к сохраненной прошивке мож-
но выполнить обратную операцию по восстановлению через
пункт «NAND Flash Restore».
Теперь приступим непосредственно к замене нашей ус-
таревшей версии на новую прошивку. Это делается из спе-
циального меню на японском языке. Не забудьте, что Sharp
официально не продает Zaurus за пределами Японии! По-
лучить доступ в это меню можно, если после «горячего»
рестарта включать КПК кнопкой «Power» с одновременно
нажатой клавишей «Ок». В меню выбираем четвертый, ниж- Ðèñóíîê 1. Çàãðóæàåòñÿ îáíîâëåííàÿ âåðñèÿ Cacko ROM
ний пункт. После КПК спросит, с какого носителя мы будем
обновлять прошивку. Три файла из архива – initrd.bin,
tools.tar и updater.sh должны лежать в корне либо CF – либо
SD-карты. Кроме того, убедитесь, что подключили блок
питания, иначе процесс не начнется. До этого момента он
не должен был быть подключенным. Итак, выбираем вто-
рой или третий пункт, и спустя некоторое время попадаем
в загрузочное меню установщика.
Далее, для корректной работы новой прошивки нам не-
обходимо переразбить внутреннюю flash-память КПК, вы-
делив под root-раздел 28 Мб. Выбираем пятый пункт «Flash
repartition», и в ответ на вопрос вводим 28. По окончании
переразбивки КПК предложит перезагрузиться. Заново вхо-
дим в японское меню, и повторяем все действия вплоть до
попадания в загрузочное меню установщика прошивки. На-
конец, выбираем «Install new ROM» и ожидаем окончания
Ðèñóíîê 2. Îáíîâëåííûé èíòåðôåéñ
процесса.
После обновления ROM, вам, возможно, захочется по-
пробовать собрать какую-нибудь программу на Zaurus из
исходников. К сожалению, из-за относительно небольшого
объема запоминающего устройства на КПК по умолчанию
не стоят средства разработки. Тем более что все в основ-
ном собирается кросс-компилятором на «большом» линук-
се. Однако все-таки возможность разработки непосред-
ственно на КПК есть. Для этого необходимо скачать и уста-
новить «Developer image» – образ сжатой файловой систе-
мы, который занимает порядка 35 Мб. В нем содержится
компилятор gcc, заголовочные файлы, утилиты и библио-
теки для сборки утилит командной строки и Qtopia. Ска-
чать его можно с http://www.zaurususergroup.com. Там же
находятся и RPM-пакеты для кросс-компилятора.
Надеюсь, статьи, посвященные замечательному карман-
ному компьютеру от фирмы Sharp, не только помогли со- Ðèñóíîê 3. Ñèñòåìíàÿ èíôîðìàöèÿ
10
администрирование
который позволит работать в сетях Windows; сервер аутен- analysis tools (http://www.sleuthkit.org/sleuthkit). О возможно-
тификации openldap; сетевая система обнаружения атак стях утилит, входящих в его комплект, уже писалось на стра-
Snort c ACID; сканеры Nessus и Nmap; снифферы tcpdump ницах журнала. Для наглядности работы этих утилит раз-
и ethereal позволят проанализировать сетевые пакеты; фай- работчиками также установлен Autopsy Forensic Browser
рвол iptables с графическим интерфейсом firestarter; (http://www.sleuthkit.org/autopsy), позволяющий использовать
traceroute и графический xtraceroute позволят выяснить путь для вывода результатов веб-интерфейс. Для этого доста-
к интересующему узлу, и еще много сетевых утилит, тра- точно набрать в консоли autopsy & и вставить появившую-
диционно входящих в состав любой UNIX-системы. Имеют- ся строку в браузер.
ся утилиты для работы в беспроводных сетях. Далее Squirrelmail Webmail также дает возможность ис-
пользовать браузер для работы, в данном случае это по-
чта. Для его использования достаточно разрешить запуск
сервиса IMAP в /etc/xinetd.d/imap (disable = no) и запустить
xinetd, который по умолчанию не работает.
И затем sendmail.
КОПИРОВАНИЕ ФАЙЛОВ
В АВТОМАТИЧЕСКОМ РЕЖИМЕ
С МНОЖЕСТВА КОМПЬЮТЕРОВ
ЧЕРЕЗ SSH
РАШИД АЧИЛОВ
Постановка задачи Настройка SSH
Предположим, имеется некоторое количество компьютеров SSH – это протокол связи двух компьютеров через TCP/IP
под управлением операционной системы UNIX (Windows) с c шифрованием передаваемых данных. Этот протокол обес-
запущенным SSH-сервером, на которых автоматически по печивает надежный и безопасный доступ к удаленному ком-
расписанию в некоторое время стартует программа, созда- пьютеру, расположенному... да неважно где, лишь бы у него
ющая резервные копии некоторых каталогов (например, был выход в Интернет. С точки зрения рядового системно-
/etc, /usr/local/etc) и складывающая их в определенное мес- го администратора SSH обычно рассматривается как бе-
то. Пример такого скрипта, адаптированного под систему зопасное средство удаленного управления сервером, для
periodic во FreeBSD, можно скачать с http://www.granch.ru/ чего ранее использовалась программа telnet. Конечно, есть
~shelton/fileZ/130.backup-dirs. Все используемые парамет- и другие средства шифровки трафика, но их мы рассмат-
ры описаны в начале скрипта. Для обеспечения сохраннос- ривать не будем.
ти данных архивов было бы неплохо копировать их все в Разумеется, шифрование сессии во время работы по
одну точку, откуда их можно было бы перенести на съем- SSH выполняется, но возможности SSH не исчерпываются
ный носитель, например. Копирование должно проводить- только этим. Я не буду приводить здесь описание всех воз-
ся в автоматическим режиме, все имена каталогов – быть можностей SSH, это тема для отдельной статьи, всех инте-
уникальными, требовать минимум настроек и обеспечивать ресующихся отсылаю к документации на SSH2 (http://
максимум безопасности при передаче данных по сети (если, www.ssh.fi/support/documentation/online/ssh/adminguide/32).
например, архив /etc попадет в чужие руки, можно полу- Одной из возможностей SSH является то, что он может
чить столько проблем, что мало не покажется). С этой це- выполнять авторизацию пользователей и организовывать
лью был разработан скрипт копирования файлов через удаленное выполнение команд в SSH-сессии без ввода па-
SCP2 (программу безопасного копирования, входящую в роля, с помощью так называемого публичного ключа. Эта
комплект SSH2) без ввода паролей, используя авториза- возможность основана на стандартном методе авториза-
цию с помощью публичных ключей. Скрипт выполняет ко- ции с помощью асимметричных ключей – приватного и пуб-
пирование файлов, размещенных в некотором, заранее личного.
обусловленном каталоге, отмечает каждое действие в соб- Приватный ключ доступен только пользователю и тща-
ственном файле журнала. В статье скрипт будет приводить- тельно им оберегается от хищения, публичный же ключ, на-
ся по частям (которые, будучи объединены вместе, тем не оборот, размещается во всех местах, где только можно его
менее дадут полноценный скрипт), полный текст скрипта разместить. На мой взгляд, наиболее удачное описание
можно загрузить с http://www.granch.ru/~shelton/fileZ/safecopy. того, как работает SSH и как его использовать (не считая,
Для разработки скрипта, отладки и применения исполь- конечно, man ssh2, man ssh.conf и прочих манов) – это кни-
зовался компьютер с операционной системой FreeBSD 4.10- га «SSH, the Secure Shell: Definitive Guide» [1].
STABLE и SSH2 от SSH Communications Inc., установлен- После того как принято решение о включении данного
ный из портов (/usr/ports/security/ssh2). Скрипт имеет неко- компьютера в автоматическое копирование файлов, но пе-
торые адаптационные возможности для работы с OpenSSH, ред тем как начинать собственно копирование, необходи-
но работоспособность этих возможностей не проверялась мо выполнить следующие шаги по настройке SSH:
и может содержать ошибки. Для работы скрипта использо- 1. Создаем пользователя, от имени которого будет вы-
валось имя пользователя rmbackup. полняться копирование файлов. Пользователь может не
12
администрирование
иметь пароля («*» в поле пароля в /etc/master.passwd), но тивном режиме. Это необходимо для создания хост-клю-
должен иметь действительный shell, поскольку он (shell) чей в подкаталоге hostkeys каталога .ssh2. Хост-ключи иден-
будет выполнять некоторые команды. Пользователь должен тифицируют SSH-сервер в целом. При отсутствии хост-клю-
быть создан на всех компьютерах, с которых будут копиро- ча в подкаталоге hostkeys перед началом сессии мастер и
ваться файлы, и на всех компьютерах иметь одинаковые удаленный компьютер обмениваются хост-ключами, и хост-
настройки и имя. Это не обязательно с точки зрения SSH, ключ удаленного компьютера помещается в подкаталог
но необходимо для скрипта, поскольку тот использует одно hostkeys для пользователя rmbackup. При этом на консоли
фиксированное имя пользователя. Интерактивной работы появляется следующий запрос:
на компьютерах, с которых будут копироваться данные,
>ssh mybox
никогда не будет, поэтому /bin/sh будет вполне достаточно. Host key not found from database.
На компьютере, на котором будет выполняться скрипт (на- Key fingerprint:
xocob-bicub-vatun-mofos-nutym-parok-sahet-hefer-papuh-kepyz-rexox
зовем его «мастер») установите любой привычный shell. You can get a public key's fingerprint by running
2. Создаем ключевую пару для данного пользователя % ssh-keygen -F publickey.pub
on the keyfile.
на данном компьютере. Для этого используется программа Are you sure you want to continue connecting (yes/no)? yes
ssh-keygen2. Порядок создания ключей не важен, следует Host key saved to /usr/home/rmbackup/.ssh2/hostkeys/key_22_mybox.pub
host key for mybox, accepted by rmbackup Wed Nov 03 2004 23:44:10 +0600
только помнить, что мастер-компьютер обращается ко всем
компьютерам, с которых копируются данные, а к самому Проверка того, что авторизация настроена правильно,
мастер-компьютеру не обращается никто. Поскольку пред- очень проста – набираете команду ssh remote на мастер-
полагается автоматическая работа, то создается ключевая компьютере, где remote – имя или адрес удаленного компь-
пара, не защищенная паролем. Пример создания ключе- ютера. Удаленная SSH-сессия должна начаться сразу же,
вой пары приведен ниже: без дополнительных запросов пароля. Если появится зап-
рос пароля на разблокировку ключа:
>ssh-keygen2 -P
>ssh mybox
Passphrase for key "/usr/home/rmbackup/.ssh2/id_dsa_2048_a"
Опускать -P здесь нельзя – опция указывает на необхо- with comment "2048-bit dsa, rmbackup@mybox.com,
Fri Jul 23 2004 12:50:25 +0700":
димость создания ключа, не защищенного паролем. После
создания ключевой пары появляются файлы id_dsa_2048_a значит ключ был сгенерирован с паролем. Такой ключ сле-
(приватный ключ) и id_dsa_2048_a.pub (публичный ключ). дует удалить и создать заново, но без пароля (см. пример
Подробную информацию о создании ключевой пары см. man выше).
ssh-keygen2. Публичный ключ мастер-компьютера, пере- Если же появляется стандартный запрос пароля:
именованный, например, в rmbackup_master.pub, нужно по-
местить в подкаталог .ssh2 домашнего каталога пользова- >ssh mybox
rmbackup's password:
теля rmbackup на всех компьютерах, с которых будут копи-
роваться файлы. значит, существуют проблемы в настройке авторизации. В
3. Настраиваем конфигурационные файлы идентифи- разделе «Возможные ошибки и изменения скрипта» при-
кации и авторизации. Эти файлы определяют имя файла ведены примеры того, что может пойти не так во время на-
(файлов – в SSH2 их может быть несколько) приватного стройки, и некоторые советы по исправлению создавшего-
ключа (ключей) и имена файлов, задающие ключи, автори- ся положения.
зация с которыми разрешена на данном компьютере для
данного пользователя. По умолчанию имена этих файлов Дополнительные вопросы безопасности
identification и authorization. На мастер-компьютере файл Поскольку созданный нами публичный ключ не имеет па-
authorization можно не создавать – на него никто не будет рольной защиты, то всегда существует ненулевая вероят-
заходить данным пользователем. На компьютерах, с кото- ность, что данный ключ может быть похищен и использо-
рых будут копироваться данные, файл authorization обяза- ваться не по назначению. Для того чтобы сделать такую
тельно должен содержать имя файла ключа мастер-компь- возможность как можно менее привлекательной, пользо-
ютера. Примеры файлов: вателя, от имени которого выполняется копирование, по-
местим в chroot-окружение.
identification: Что это такое? Это отдельная настройка SSH-сервера,
IdKey id_dsa_2048_a
authorization: при которой он передает клиенту информацию о том, что
Key rmbackup_master.pub домашний каталог пользователя – это корень файловой
системы. Естественно, выше корня двигаться невозможно.
Следует иметь в виду, что если планируется заходить с Технология изоляции критичных системных сервисов в «пе-
нескольких компьютеров, ключ каждого компьютера дол- сочницы» (sandboxes) применяется уже достаточно давно
жен быть помещен в подкаталог .ssh2 данного компьютера и успешно. Правда тут есть одно «но» – нам понадобится
и описан в файле authorization. Более подробная информа- обеспечить работоспособность сервера в данном окруже-
ция о настройке авторизации по публичному ключу приве- нии. Поскольку абсолютно все, что находилось выше до-
дена в man ssh.conf и man sshd.conf. машнего каталога в режиме chroot, недоступно, следует со-
4. В первый раз заходим с мастер-компьютера на ком- здать собственную иерархию каталогов со всем необходи-
пьютер, с которого будут копироваться файлы в интерак- мым. Правда, этого необходимого крайне мало. В домаш-
ки на библиотеки. Такой режим обычно применяется для Предварительная подготовка завершена. Мы настрои-
программ, используемых в процессе восстановления сис- ли компьютеры, с которых (и на которые) будут копировать-
темы. Исполняемый файл sftp-сервера должен быть обяза- ся данные таким образом, что можно выполнять команду
тельно собран с отключением динамических библиотек, на удаленном компьютере через SSH2 без ввода паролей с
иначе придется дублировать всю структуру динамической помощью авторизации по публичному ключу.
загрузки – /usr/libexec/ld-elf.so, /var/run/ld-so.hints и все ос-
тальное. Исполняемый файл такого типа можно получить, Настройка скрипта
дописав в каталоге, где лежат исходные тексты ssh, в под- Настройка скрипта выполняется через задание перемен-
каталоге apps/ssh в файл Makefile в строчку 273 (или около ных в конфигурационном файле /etc/periodic.conf. Эти пе-
того) LDADD=<флаги> флаг -static и пересобрать SSH. Как ременные используются скриптом резервного копирования,
проверить, является ли полученный исполняемый файл ста- упомянутым в начале статьи, и скриптом, описываемым в
тически или динамически собранным? данной статье.
Скрипт использует следующие переменные:
> ldd sftp-server2
Ldd: sftp-server2: not a dynamic executable
daily_backup_owner="rmbackup" # Owner of backup files
daily_backup_group=”wheel” # Group of backup files
Приведенный выше ответ является правильным, если daily_backup_mode="0600" # Mode of backup files
вместо него появляется что-то типа: daily_backup_dirmode="0700" # Mode of intermediate dirs
14
администрирование
# Go down function ! Переменные hostlist и logfile задают соответственно име-
# Set variable godown to downing directory name на файлов списка компьютеров и регистрационного
go_down() журнала.
{ ! Переменные wsyear, wsmon и wsday хранят текущие год,
if [ ! -e $godown ]; then
mkdir $godown месяц, день.
chown $daily_backup_owner:$daily_backup_group $godown ! Переменная openssh указывает на то, что SSH, обнару-
chmod $daily_backup_dirmode $godown
fi женный скриптом, является OpenSSH (используется для
cd $godown
адаптации путей и работы с конфигурационными фай-
} лами).
! Переменная sshconf указывает на расположение конфи-
Функция перехода в подкаталог, задаваемый перемен- гурационного файла SSH по умолчанию.
ной godown. Если каталог отсутствует, он будет создан, и ! Переменная sshome указывает на пользовательский ка-
ему будут установлены права доступа, заданные в конфи- талог с настройками, ключами и т. д. для SSH (имена
гурационном файле. каталогов отличаются в SSH2 и OpenSSH).
! Переменная scpname задает имя программы безопас-
# If there is a global system configuration file, suck it in. ного копирования SCP (в SSH2 и OpenSSH они отлича-
#
if [ -r /etc/defaults/periodic.conf ]; then ются).
. /etc/defaults/periodic.conf
source_periodic_confs
fi Проверка командной строки
и обнаружение SSH
Загрузка значению по умолчанию для скрипта, если они
заданы (обычно вписываются в /etc/defaults/periodic.conf). # Check commandline
if [ $# -ne 0 ]; then
if [ $1 = "-h" ]; then
Переменные echo "Safering updater. Copying current daily ↵
backup dir from remote server."
Единственная переменная, которую имеет смысл настра- echo " Usage: safecopy [hostlist-location-and-name]."
ивать в скрипте, вынесена перед строкой предупрежде- exit
else
ния. Разумеется, все остальные переменные тоже можно hostlist=$1
менять – это же скрипт. Но все же делать это не рекомен- fi
fi
дуется без понимания механизма его работы.
# Check on presence SSH in system and detect their version
# Variables wssh=`which ssh2'`
# There is only maintained variables! if [ -z $wssh ]; then
# This is a root folder for all subordinated folders wssh=`which ssh'`
sysdir="/usr/local/share/rmbackup"
if [ -z $wssh ]; then
# NO CHANGES BEHIND THIS LINE!! YOU HAVE BEEN WARNED!! logline="No any SSH program was detected, ↵
backupdir="backup"
ringdir="$sysdir/backup" install it first"; safe_logger
exit
maintdir="$ringdir/maint" else
hostlist="$maintdir/cphosts"
logfile="$maintdir/saferlog" wsver=`$wssh | awk '{printf "%s %s %s",$1,$2,$3}'`
sshome="$HOME/.ssh"
wsyear=`date +"%Y"` scpname=scp
wsmon=`date +"%m"` wsx=`$wssh | awk '{print $3}'`
wsday=`date +"%d"`
# We assumed SSH2 by SSH Com. presence and locating config if [ $wsx = "SSH" ]; then
openssh=1
# in /usr/local/etc/ssh2 sshconf="/etc/ssh/ssh_config"
openssh=0
sshconf="/usr/local/etc/ssh2/ssh2_config" else
logline="Broken SSH1 from SSH ↵
sshome="$HOME/.ssh2" Communicationc Inc. probably detected"
scpname=scp2
safe_logger
exit
fi
Итак: fi
! Переменная sysdir указывает корневой каталог систе- else
wsver=`$wssh -V 2>&1 | awk '{printf "%s %s ↵
мы кольцевого копирования. Обычно это домашний ка- %s %s",$2,$3,$4,$5}'`
талог пользователя rmbackup, хотя можно указать лю- fi
бой другой. В этом каталоге будут располагаться все # Log detected version
остальные каталоги. logline="Detected version: $wsver"; safe_logger
! Переменная backupdir указывает на каталог с резерв-
ными копиями на удаленном компьютере. Допустимыми параметрами командной строки являют-
! Переменная ringdir указывает на каталог с резервными ся -h или имя файла со списком компьютеров, с которых
копиями на мастер-компьютере. производится копирование. Если имя файла не задано,
! Переменная maintdir указывает на каталог с регистра- будет использоваться файл cphosts в каталоге $maintdir.
ционным журналом, списком компьютеров, с которых Первым делом ищется программа ssh2 (which ssh2).
будут копироваться данные, и собственно скриптом. Если она найдена, то выбирается информация о версии (пе-
16
администрирование
Последнее и самое важное действие скрипта – пооче- компьютере на предмет сообщений об ошибках и устра-
редное копирование файлов из списка, полученного на пре- нить их.
дыдущем шаге. Выполняется команда scp, и результат ее Если предыдущая команда завершена успешно, следу-
работы заносится в переменную status. В зависимости от ет проверить работу команды scp следующим образом (за-
значения переменной status выдается сообщение либо об менить 192.168.1.1 на IP-адрес или имя компьютера, с ко-
успешном завершении копирования (при этом устанавли- торого должны быть получены файлы. Файл .profile должен
ваются права и режим доступа, соответствующие парамет- существовать на удаленном компьютере):
рам, перечисленным в пункте «Настройка скрипта»), либо
об аварийном завершении (и тогда в журнал заносится код scp2 192.168.1.1:.profile ./profile-tmp
ошибки, расшифровку которого можно посмотреть в man
ssh2). (Внимание! Точка – элемент команды!)
Если в текущем каталоге появился файл .profile-tmp,
Возможные ошибки следует уточнить код ошибки по руководству к ssh2 (man
и изменения скрипта ssh2) и устранить ошибки. Если же нет – проверить файл
Если скрипт работает не так, как ожидается, то, скорее все- журнала, в который выводятся сообщения от SSH-сервера
го, имеет место ошибка в настройке SSH (по крайней мере, на удаленном компьютере на предмет сообщений об ошиб-
почти все ошибки, с которыми я сталкивался после завер- ках, и устранить их. Здесь наиболее частой ошибкой мо-
шения его разработки, были такого плана). Это очень про- жет быть неверный sftp-server2, который не собран в соот-
сто проверить – достаточно с консоли мастер-компьютера ветствии с рекомендациями раздела «Дополнительные воп-
набрать ssh remotebox, где remotebox – имя любого компь- росы безопасности», а просто переписан и для работы тре-
ютера, с которого должны копироваться данные. Если сра- бует наличия динамического загрузчика, libc и пр.
зу же открывается терминал удаленного компьютера – все Как можно изменить место, откуда берутся копируемые
нормально (при этом motd показываться не должно). Если файлы на удаленном компьютере? Для этого достаточно
же появляется запрос пароля на разблокирование ключа, изменить формирование переменной fullpath, описанной в
запрос пароля на регистрацию на удаленном компьютере разделе «Разбор строки и получение файлов для копиро-
или какие-либо сообщения об ошибках – следует устранить вания».
ошибки и повторить. Как можно изменить место и организацию каталогов, в
Единственной ошибкой, которую можно совершить при которые раскладываются файлы на мастер-компьютере? Для
генерации ключа, является запуск ssh-keygen2 без ключа этого в функцию go_down передается значение переменной
-P. При этом при генерации ключа будет запрошен пароль. godown – каталог будет создан по ее содержимому. Можно
Если при генерации ключа появился запрос пароля, лучше вообще все складывать в один каталог – для этого нужно
генерацию прервать и запустить ssh-keygen2 заново с клю- закомментировать строки с «godown=...; go_down».
чом -P.
Самой распространенной ошибкой авторизации явля- Заключение
ется то, что ключ мастер-компьютера не помещен в ката- Данный скрипт – инструмент системного администратора
лог .ssh2 пользователя rmbackup удаленного компьютера, из разряда «настроил и забыл». После его настройки он не
не описан в файле authorization, или в имени ключа допу- требует какого-либо сопровождения, кроме, пожалуй, ре-
щена банальная опечатка. Если ключ для пользователя гулярного резервного копирования каталога с файлами,
rmbackup создавался через su rmbackup от пользователя скопированными с удаленных компьютеров. Ну и, конечно,
root, возможно, установлены неверные права на файлы обеспечения необходимых мер безопасности по отношению
identification и authorization (при создании файлов владель- к каталогу, в котором хранятся резервные копии. Разуме-
цем становится создатель). Второй распространенной ется, он разрабатывался для решения определенной част-
ошибкой является задание параметра RequiredAuthentication ной задачи, но его нетрудно адаптировать для копирова-
password в конфигурационном файле sshd.conf на удален- ния чего угодно откуда угодно. Ошибки в самом скрипте
ном компьютере, требующего обязательной аутентифика- исключены ввиду его достаточной простоты, как правило,
ции по паролю. все ошибки связаны с ошибками самого SSH.
Если терминальная сессия на удаленном компьютере
открывается нормально, то следует попробовать вручную Дополнительная информация:
ввести команду (вместо 192.168.1.1 подставить IP или имя 1. Daniel J. Barrett, Richard Silverman. SSH, the Secure Shell:
компьютера, с которого должны быть получены файлы): Definitive Guide. O’Reilly & Associates, 2001, 558 pages.
ISBN: 0-596-00011-1.
>su rmbackup 2. http://www.ssh.fi/support/documentation/online/ssh/
>ssh2 -o "BatchMode yes" -q 192.168.1.1 "cd /etc && ↵
/bin/ls -1" adminguide/32 – SSH Secure Shell for Servers Version 3.2
Administrator’s Guide.
Если в результате выполнения этой команды получа- 3. http://www.opennet.ru/docs/RUS/ssh_faq – Faq по SSH в
ется оглавление каталога /etc (в chroot это файлы group, русской редакции. Русская редакция: Андрей Лаврен-
passwd, pwd.db и spwd.db) – значит, следует проверить ра- тьев (lavr@unix1.jinr.ru).
боту scp. Иначе следует проверить файл журнала, в кото- 4. man ssh2, man sshd2, man ssh.conf, man sshd.conf, man
рый выводятся сообщения от SSH-сервера на удаленном ssh-keygen2.
ИГОРЬ ПОЛЯНСКИЙ
В данной статье речь пойдет о том, как управлять единой А за тем, что очень многие организации изначально ориен-
учетной записью пользователя посредством MS Active тированы на платформу Windows и в качестве каталога при-
Directory вне зависимости от того, на какой платформе он меняют Active Directory, а когда в сети начинает появляться
работает, будь то Windows или UNIX-подобные системы. За- UNIX, то встает вопрос об интеграции, и не всегда хорошие
бегая вперед, скажу, что если с Windows-клиентами все ясно, коммерческие решения подходят, либо из-за стоимости, либо
то интеграция с каталогом от Microsoft тем способом, кото- в силу других причин. Я изначально рассматривал вариант с
рый будет здесь описан, подходит не для всех UNIX-подоб- ведением второго каталога для UNIX-клиентов на базе
ных операционных систем. Так уж сложилось – все они раз- OpenLdap, но хотелось все-таки управлять учетными запи-
ные, да и Active Directory вовсе не идеальная среда для ин- сями из единой точки, а именно из Active Directory, потому
теграции разнородных систем. Тогда зачем я все это пишу? что этот каталог широко используется у нас в сети.
18
администрирование
Вариант Samba + winbind меня не устраивал, поскольку
по роду задач samba вообще не нужна, к тому же это лиш-
ние службы на каждой машине, использование которых все-
таки не решает проблем с централизованным управлени-
ем пользовательскими данными, поэтому это решение мне
показалось неразумным и неизящным.
Более всего привлекал вариант с использованием сер-
вера NIS, который входит в продукт, известный как Services
For Unix от компании Microsoft и синхронизация записей
Active Directory to NIS. Зайдя на microsoft.com в надежде
скачать SFU3.5, которая в отличие от предыдущей версии
SFU3.0 бесплатна, я набрел на ряд интересных статей, про-
читав которые, пошел по другому пути.
Как уже говорилось в начале, не все UNIX-подобные си-
стемы могут проходить аутентификацию и запрашивать
данные о пользователе в Active Directory описанным здесь
способом, а только те, которые умеют работать с PAM и
pam-модулями. Как вы, наверное, догадались, я буду опи-
сывать способ взаимодействия с ldap-сервером, входящим
в Active Directory через модули pam_ldap и nss_ldap.
Итак, начнем. В качестве подопытных будут выступать
MS Windows 2000 Server Standart с установленной Active
Directory (в дальнейшем AD), Linux Manrdake 10.0, Solaris 9
x86, FreeBSD 4.10. Над Windows 2000/XP опыты ставить бес- Как видите, теперь у каждого пользователя есть атрибу-
смысленно – все и так работает. Как минимум понадобит- ты, применяемые в UNIX-системах. Первое поле «NIS
ся DNS-сервер, который может быть установлен на том же Domain» будет содержать краткую форму имени нашего до-
Windows 2000 Server. Свежеустановленная AD не имеет тра- мена. Этот параметр нужен для службы NIS, и хотя в нашем
диционной ldap-схемы для UNIX: userid, grouid, login shell, случае она не применяется, без нее не активируются другие
home directory. Нам нужно её расширить, и для этого я вос- поля. С остальными полями, я думаю, затруднений не воз-
пользуюсь SFU3.5. Вообще-то существует несколько спо- никнет, может быть, за исключением GID. Прежде чем выб-
собов это сделать: вручную создав ldif-файл с нужной схе- рать из этого поля группу, её надо создать или в свойствах
мой и импортировав его при помощи каких-либо программ уже имеющейся задать UNIX-атрибуты. Проблема с группа-
сторонних разработчиков, например такой, как AD4Unix ми заключается в том, что нельзя задать одно и то же имя
(www.padl.com/download/MKSADPlugins.msi), или с помощью для пользователя и группы, а в мире UNIX такой подход весь-
SFU от Microsoft. Первый способ я оставляю гуру, вышеоз- ма распространен. В таком случае можно использовать толь-
наченную программу MKSADPlugins.msi вам установить ко численное представление, правда, я сомневаюсь, что это
вряд ли удастся, если Windows 2000 Server работает с аль- хороший выход из создавшейся ситуации. Ещё потребуется
тернативной локалью, отличной от US, что для России уме- создать учетную запись, которая будет применяться для вза-
стно. В пользу же SFU, на мой взгляд, говорит то, что она имодействия UNIX-машин с ldap-сервером. Это своего рода
сделана в том же КБ, где Windows и AD, плюс в своем со- дыра в безопасности, поэтому сей аккаунт не должен при-
ставе имеет много утилит от UNIX. надлежать кому-либо и доступ к важным ресурсам ему дол-
Пройдя добровольно-принудительную процедуру полу- жен быть запрещен. Тем не менее он должен иметь право на
чения .NET Passport, вы сможете бесплатно скачать и ис- поиск объектов в каталоге. На этом этапе вы готовы управ-
пользовать SFU3.5 (www.microsoft.com/windows/sfu). Размер лять единой учетной записью при помощи Active Directory.
программы примерно 230 Мб. Прежде чем устанавливать Переходим к настройке клиентских машин. Я использо-
SFU, нужно инсталлировать Active Directory Schema MMC вал Linux Mandrake 10.0 Official и всё необходимое ПО ус-
snap-in следующей командой: танавливал из rpm-пакетов, входивших в состав дистрибу-
тива. Понадобится установить pam_ldap и nss_ldap. После
regsvr32 ñ:\WINNT\system32\schmmgmt.dll установки этих пакетов нужно отредактировать несколько
конфигурационных файлов. Pam_ldap и nss_ldap для на-
Для расширения схемы AD достаточно установить толь- строек используют один и тот же файл ldap.conf. Также нуж-
ко NIS-сервер из состава SFU. Для успешного завершения но будет отредактировать nsswitch.conf и как минимум один
установки необходимо быть либо членом групп Domain файл, находящийся в /etc/pam.d, а именно system-auth. Не
Admins и Schema Admins, либо работать с правами Адми- забудьте сделать копии оригинальных файлов. Итак, файл
нистратора. После установки будет предложено перегру- ldap.conf должен содержать следующее:
зить машину. NIS-сервер как таковой не понадобится и его
можно остановить и благополучно забыть о нём. В свой- # Áàçîâûå íàñòðîéêè, íåîáõîäèìûå äëÿ ïîäêëþ÷åíèÿ ê AD.
# domain, loc è server.domain.loc âû äîëæíû èçìåíèòü
ствах пользователя, группы, компьютера в Active Directory # â ñîîòâåòñòâèè ñî ñâîèìè íàñòðîéêàìè
Users and Computers добавится вкладка UNIX Attributes. base dc=domain,dc=loc
20
администрирование
Это сработает для оболочек, совместимых по синтак- ! Скачал исходный код: http://keutel.de/pam_mkhomedir/
сису с sh, например, bash, ksh. Если вы пользуетесь другим pam_mkhomedir.c тоже в /tmp и скомпилировал следую-
интерпретатором, посмотрите документацию к нему. щей командой (в одну строчку), находясь в /tmp:
Соберем модули от PADL, перейдя в соответствующие
директории, созданные в процессе разархивации файлов, /usr/local/bin/gcc -D_REENTRANT -g -O2 -Wall -fPIC ↵
-c -ILinux-PAM-0.77/libpam/include ↵
полученных с www.padl.com/download: -ILinux-PAM-0.77/libpamc/include ↵
-ILinux-PAM-0.77/modules/pammodutil/include ↵
cd pam_ldap-176 -DPAM_DYNAMIC pam_mkhomedir.c -o pam_mkhomedir.o
./configure
make ! Получил готовый модуль следующей командой:
make install
/usr/ccs/bin/ld -o pam_mkhomedir.so -B dynamic -G ↵
cd nss_ldap-226 -lc pam_mkhomedir.o
./configure --enable-schema-mapping
make
make install К сожалению, FreeBSD 4.x не умеет работать с nss_ldap
и значит запрашивать данные о пользователе в AD, плюс
Если все прошло удачно, редактируем ldap.conf и не может менять пароль стандартными средствами с помо-
nsswitch.conf аналогично Linux, за исключением строчки: щью pam_ldap. Но всё же доступ к машине, как с консоли,
так и к службам ssh, ftp и т. д. можно получить, пройдя аутен-
uri ldap://server.domain.loc тификацию в Active Directory. Для этого установите pam_
ldap, отредактируйте два файла – ldap.conf и pam.conf. В
которую заменим на: ldap.conf достаточно внести следующий фрагмент:
chroot = /var/tmp/stunnel
pid = /stunnel.pid
setuid = stunnel
22
администрирование
FreeBSD TIPS:
НАСТРОЙКА VLAN
СЕРГЕЙ СУПРУНОВ
Представьте себе ситуацию: узел СПД в составе маршру- ! подсеть реальных адресов для работы в Интернете
тизатора CISCO и коммутатора Catalyst находится на пер- (111.222.0.0/28);
вом этаже, а ваш FreeBSD-сервер – на четвертом. И при ! корпоративная частная подсеть для доступа к вышесто-
этом требуется вывести во внешний мир несколько подсе- ящим узлам компании (10.0.123.0/24);
тей, которые проходят через сервер FreeBSD на Catalyst. ! и еще одна сеть для управления оборудованием СПД
Можно, конечно, подключить к серверу несколько сетевых (10.254.0.0/24).
адаптеров, занять для внутреннего использования несколь-
ко портов на Catalyst и пробросить между этажами кило- Прежде всего нужно проверить, поддерживает ли ваша
метр кабеля 5-й категории. На кабеле можно даже сэконо- сетевая карта работу по VLAN. Некоторые карты обеспе-
мить, пропустив по одному кабелю сразу два соединения и чивают поддержку данной технологии на аппаратном уров-
задействовав тем самым все имеющиеся пары. Однако все не, однако драйвер также должен поддерживать VLAN.
равно и затрат, и дополнительных работ по прокладке ка- Страница справочного руководства (см. man vlan) для
белей получается слишком много. А раз возникает слож- FreeBSD 5.2 сообщает, что аппаратное мультиплексирова-
ность, то наверняка кто-то уже нашел способ ее устранить. ние поддерживается для драйверов bge, em, gx, nge, ti и
И в нашем случае панацеей будет технология VLAN – вир- txp. (Во FreeBSD 5.3 к этому списку добавился еще и драй-
туальные локальные сети. вер re, обеспечивающий работу сетевых адаптеров на чип-
Данная технология позволяет логически разделять не- сетах RealTek 8139C+/8169/8169S/8110S). Узнать подроб-
сколько подсетей на одном устройстве (например, комму- ную информацию по каждому из драйверов, в том числе
таторе) таким образом, что машины, объединенные в одну список поддерживаемых драйвером моделей сетевых карт,
VLAN, ничего не знают о существовании компьютеров, вхо- можно на страницах man (например, man 4 em сообщает,
дящих в другую. И с точки зрения топологии сети мы полу- что драйвером em поддерживается Intel PRO/1000 Gigabit
чаем отдельные коммутаторы для каждой подсети. Ethernet adapter). Если ваш адаптер не входит в этот спи-
На уровне протоколов это достигается добавлением не- сок, то наверняка он сможет работать с использованием
скольких полей в заголовок пакета сетевого уровня. Одно программной эмуляции мультиплексирования. По крайней
из добавленных полей содержит идентификатор (номер) мере, для большинства современных карт это утвержде-
сети VLAN, на основе которого и происходит разделение ние справедливо. Нужно заметить, что тот же man vlan гла-
Ethernet-кадров по виртуальным сетям. Кадры, имеющие сит, что сетевой адаптер для полноценной эмуляции дол-
одинаковый номер VLAN, рассматриваются как принадле- жен поддерживать «длинные» кадры (oversized frames). В
жащие одной подсети. Регламентируется это стандартом противном случае из-за необходимости размещения допол-
IEEE 802.1Q. нительных полей заголовка, содержащих информацию о
Развитие технологии VLAN привело к тому, что стало VLAN, которой принадлежит пакет, приходится снижать мак-
возможным не только назначать отдельные подсети отдель- симальный размер передаваемого пакета (MTU) на соот-
ным портам, но и через один порт пропускать несколько ветствующем интерфейсе.
VLAN (так называемый multiVLAN). То же относится и к се- Драйвера сетевых адаптеров, поддерживающих длин-
тевым адаптерам, чем мы и воспользуемся. ные кадры, перечислены в man vlan, однако данный список
Рассмотрим настройку VLAN для FreeBSD на следую- нельзя считать исчерпывающим, поскольку с 2002 года (ког-
щем примере: пусть имеется один отрезок кабеля между да писались страницы руководства) ситуация изменилась
Catalyst и FreeBSD. На Catalyst свободен один порт, на в лучшую сторону и перечень совместимых сетевых карт
FreeBSD – одна сетевая карта, обслуживающая внешние значительно расширился. По крайней мере, D-Link DFE-
соединения. Нужно через это соединение организовать 538TX, работающий на драйвере rl, отсутствующем в спис-
передачу следующих подсетей: ке, никаких нареканий с моей стороны не вызвал. (Замеча-
24
администрирование
ние: во FreeBSD 5.3 поддержка vlan значительно расшире- Если со стороны CISCO все настроено должным обра-
на, и теперь поддержка длинных кадров драйвером rl офор- зом (собственно говоря, основное требование – номер VLAN
млена официально.) должен совпадать с тем, который назначен интерфейсу со
Пожалуй, хватит теории. Перейдем к практике. стороны FreeBSD), то после этой команды все должно ра-
Для работы VLAN в системе должны быть соответствую- ботать. Например, конфигурация интерфейса для подсети
щие псевдоустройства. В случае с FreeBSD 5.2 (думаю, это реальных адресов на CISCO у меня выглядит следующим
справедливо и для всей 5-й ветки) устройства vlan создают- образом:
ся динамически. За это отвечает модуль ядра if_vlan.ko. Если
вы предпочитаете иметь монолитное ядро, то потребуется interface FastEthernet0/0.111
encapsulation dot1Q 111
пересобрать его со следующей опцией: ip vrf forwarding Inet
ip address 111.222.0.1 255.255.255.240
device vlan no ip route-cache
ГЕОРГИЙ ТОЛОКОННИКОВ
В статье рассматривается содержащая около 90 строк кода ся в базу данных телефонных переговоров, поддерживае-
биллинговая система для небольших АТС, которая легко мую СУБД PostgreSQL. На основе базы данных ведется под-
может быть расширена на АТС большой номерной емкос- счет трафика, расчет оплаты и выполняются практически
ти. В качестве примера рассматривается NEAX2000 IPS. любые запросы, интересующие пользователей.
Стандартный выход АТС соединяется с портом компью- Обычный веб-интерфейс позволяет выводить на экра-
тера, приходящая от АТС информация захватывается скрип- ны (удаленных) компьютеров результаты запросов в режи-
том биллинговой системы, обрабатывается, и направляет- ме реального времени.
26
администрирование
Введение дится к тому, что обозначение внутренних номеров начина-
Биллинговая система – это комплекс программ, работаю- ется со знака *, например, *029. Такая нумерация обычно
щий на компьютере, сопряженном с АТС и позволяющий используется, чтобы можно было звонить «в город» без на-
тарифицировать телефонный трафик, выставлять счета бора «9».
абонентам, получать практически любую информацию по Соединим кабелем COM-порт компьютера с RS232
звонкам. разъемом АТС, находящимся на процессорной плате. Для
Такие системы обычно дороги. Многие пользуются Win определенности используем нулевой порт – как правило, в
Tarif (как правило, взломанной версией…). Можно также по- компьютере два COM-порта: нулевой и первый.
смотреть сайт www.billonline.ru со всеобъемлющим серти- Обычно тарификация проводится для исходящих вызо-
фицированным Министерством связи решением проблем вов, поэтому здесь мы не будем рассматривать другие звон-
(за деньги) учета телефонных переговоров. ки.
Наш подход, однако, – демонстрация философии UNIX Введем следующую команду для прослушивания пор-
в действии – позволяет обеспечить простое, бесплатное, та, на который поступает информация от АТС (для Linux
открытое решение. Состоит оно из нескольких десятков порт будет называться не dev/cuaa0, а, cкорее всего, /dev/
строк кода и опирается на типовые утилиты UNIX. Слож- ttyS0):
ность кода минимальная, достаточно, например, владения
азами SQL и Perl. Обычно оператор связи, предоставив- # cat /dev/cuaa0 >> file
ший телефоны, выставляет счет раз в месяц, а тарифика-
цию по внутренним номерам офисной АТС либо вообще от- получим при каждом исходящем вызове добавку к содер-
казывается делать, либо требует дополнительной оплаты. жимому файла file:
Платное программное обеспечение имеет закрытый код и
^B0!KA050077001*029 08110737260811073756
не ясно, что и как оно считает, заменить в нем что-нибудь
000050050100 0000 04040
на более подходящий вариант невозможно. Таким образом,
наличие подобного предлагаемого в статье простого реше- (с учетом пробелов для каждой записи получаем 128 бай-
ния полезно для работы организации. тов, по байту на каждый символ).
В настоящее время в небольших фирмах – операторах Приведенный пример содержит информацию о том, что
связи или в офисах крупных (и не очень) компаний наряду с номера *029, 11 августа с 7 час. 37 мин. 26 сек до 37 мин.
в ЛВС имеется АТС, часто попадающая на обслуживание 56 сек. абонент звонил на номер 100 (служба «время» в
системному администратору. Так что затронутые в статье МГТС).
вопросы многим окажутся интересны. При разборке файла с помощью Perl в качестве при-
План действий по автоматизации тарификации АТС сле- знака конца записи для отдельных вызовов можно принять
дующий: восклицательный знак «!».
! смотрим, что и в каком формате выводит АТС на порт, Воспользовавшись вызовом sysread(fd, $v, length), где
сопрягаемый с компьютером (часто это com-порт); fd – дескриптор файла $v – переменная, в которую пишет-
! пишем скрипт, разбирающий должным образом полу- ся информация, length – количество считывающихся бай-
чаемый поток байтов с АТС; тов за один вызов, можно установить, что АТС выдает всю
! заводим в СУБД (PostgreSQL) необходимые таблицы; запись по вызову отдельными порциями наборов символов,
! добавляем к скрипту блоки захвата вывода с АТС и заг- указанных в примере, разделенными пробелами. В АТС
рузки обработанных скриптом записей в СУБД; имеется буфер (довольно приличный по размеру), в кото-
! формируем скрипт сопряжения базы данных с веб-сер- ром хранятся данные по вызовам, так что при соединении
вером для возможности просмотра данных и запросов с компьютером все предыдущие вызовы «скачиваются» в
абонентами и руководством. компьютер.
Код будущей программы состоит из двух блоков:
Собственно и все. За пару дней это можно сделать и ! блок считывания и обработки (считывает из порта ин-
запустить в эксплуатацию. Например, на следующем комп- формацию, поступающую из АТС);
лексе: Pentium-200 MMX, 256 Мб ОЗУ, FreeBSD версии 4.5 ! блок загрузки записей в базу данных.
и выше с Perl5, PostgreSQL 7 довольно быстро обрабаты-
вается до 100 тыс. записей звонков. Это около 100-150 но- Перед рассмотрением приведенного ниже кода скрип-
меров абонентов, звонящих с интенсивностью выше сред- та подчеркнем следующее.
ней в течение месяца. На Pentium 4 можно легко обрабаты- Наша цель – показать, что создать собственную систе-
вать уже миллионы записей. му биллинга совсем несложно. У каждого системного ад-
Все вышеприведенное будет легко работать и под лю- министратора есть свои излюбленные приемы в Perl, кото-
бым другим UNIX. рые он при необходимости использует, приспособив под-
ходящим образом приведенный скрипт или написав свой
Тестирование формата вывода АТС собственный. Поэтому мы для краткости оставили лишь ти-
и алгоритм программы повую обработку ошибок, не стремимся усложнять код для
Сначала надо изучить выходные сигналы АТС. Мы рассмат- обеспечения его безопасности, оптимальности или кратко-
риваем NEAX2000 IPS с настройками, практически не от- сти. Отметим только, что приведенный код неплохо рабо-
личающимися от стандартных. В нашем случае отличие сво- тал у нас на стареньком отдельно стоящем компьютере:
28
администрирование
ДЕНИС НАЗАРОВ
Вот и вышел очередной новогодний выпуск этого замеча- ные транзакции. Пограничным хостом (firewall) была дав-
тельного журнала из печати, на улице холодно, а мы будем ненько установленная нами, в то время еще OpenBSD 3.1-
сидеть в тепле, пить горячий кофе и с удовольствием по- stable, с PF в качестве пакетного фильтра. При осмотре
знавать то, что несет нам этот номер. Linux-сервера сразу стало понятно, что его атаковали, и не
В прошлой статье1 я рассказал об основных возможно- раз, я нашел огромное количество различных exploits на
стях пакетного фильтра операционной системы OpenBSD сервере и несколько скриптов, которые в тот момент дер-
и почему так важно использование фильтров. Недавно нам жали открытыми порты с shell, запущенными от прав www-
поступило тревожное сообщение от одной из организаций сервера. После проверки сервера различными методами я
о том, что их сервер «барахлит», мне пришлось ехать и про- пришел к выводу, что злоумышленникам так и не удалось
верять, но я и не подозревал, насколько всё серьёзно! Сеть ни похитить данные, ни проникнуть на сервер. Мне стало
организации была спроектирована довольно хорошо, од- интересно, как же данные со взломанного сервера (сервер
нако единственным слабым местом был Linux-сервер, на действительно считался взломанным по нашим критериям)
котором крутились Java-сервлеты и обслуживали денеж- так и не ушли в чужие руки.
1
Назаров Д. Пакетный фильтр OpenBSD. – Журнал «Системный администратор», №11, ноябрь 2004 г.
30
администрирование
Так как сервер останавливать было нельзя, пришлось Пакеты в очереди с наибольшим приоритетом будут об-
вживую искать все ниточки. Все свелось к одному – на сер- работаны первыми.
вере с OpenBSD, посмотрев лог-файлы пакетного фильт- ! HFSC (Hierarchical Fair Service Curve) – описание очень
ра, сразу стало ясно, что любые попытки добраться к тем схоже с CBQ за исключением некоторых дополнений.
shell на Linux-сервере оканчивались провалом, ибо фильт- HFSC есть не что иное как «исправленный» механизм,
рация была настолько четкой, что помимо входящих соеди- базирующийся на модели QoS. Его уникальность состо-
нений контролировались и все исходящие. Дальнейшее ис- ит в возможности разъединять связь между задержкой
следование показало все места, откуда были произведены пакета и очередью. То есть HFSC обрабатывает очере-
атаки, и подтвердило их безуспешность. Сейчас в той орга- ди и пакеты отдельно друг от друга, однако после про-
низации стоит новый мощный сервер под управлением Sun цесса обработки пакет и очередь опять логически свя-
Solaris 10 и теперь уже OpenBSD 3.6-stable. К чему вся эта зываются. В некоторых ситуациях это позволяет добить-
история? Показать на конкретном примере, как важно ис- ся максимальной производительности от трафик-шей-
пользование пакетных фильтров и как они могут защитить пера. Очень часто это используется для сервисов, ра-
заведомо опасные приложения. ботающих в режиме реального времени.
Итак, приступим к продолжению нашей статьи, я рас-
скажу вам о следующих вещах: Активизировать возможность распределения по очере-
! Распределение по очередям (Queuing). дям нужно в конфигурационном файле вашего фильтра (по
! Роутинг (маршрутизация). умолчанию /etc/pf.conf) при помощи директивы «altq on»,
которая имеет свои дополнительные параметры:
Распределение по очередям (Queuing) ! <interface> – имя интерфейса, для которого мы включа-
Любые пакеты могут быть разделены по очередям для кон- ем данную возможность, если не определено, то очере-
троля полосы пропускания. Зачем это надо? Распределять ди будут активированы для всех интерфейсов.
нагрузку на канал равномерно для всей сети, например, или ! <scheduler> – планировщик, в данный момент PF под-
же, наоборот, урезать трафик для определенного сервиса держивает cbq, priq, hfsc.
или IP-адреса. Для определения «очереди» (queue) нужны ! bandwidth <value> – максимальный битрейт для всех оче-
всего лишь две декларации, и в дальнейшем все пакеты редей на данном интерфейсе. Значение может быть оп-
можно будет распределять по очередям, используя «имя ределено как процент от общей пропускной способнос-
очереди». Согласно компоненту фильтрации пакетного ти интерфейса, так и числовой величиной. Для этого
фильтра (PF), для правила pass данный пакет будет поме- могут использоваться слова b, Kb, Mb, Gb. Что соответ-
щен в очередь, на которую ссылалось последнее(!) прави- ственно – биты, килобиты, мегабиты, гигабиты. Если
ло. Немножко запутанно? значение bandwidth не задано, то будет использована
Поясню на примере: максимальная скорость.
! qlimit <value> – количество пакетов, которое может об-
pass in on $ext_if inet proto tcp from any to ↵ служивать очередь, по умолчанию 50, это значение от-
any port 80 keep state queue www-1
pass in on $ext_if inet proto tcp from any to ↵ лично подходит для 100-мегабтиных сетей.
any port 80 keep state queue www-2 ! queue <list> – определяет список очередей, которые бу-
дут созданы для данного интерфейса.
Здесь будет применено последнее правило, т.е пакет бу-
дет присвоен очереди с именем «www-2». В этом примере интерфейс dc0 будет распределять в
Очередями управляют «планировщики». На данный мо- очереди 5Mbit/s, используя CBQ.
мент PF поддерживает 3 типа «планировщиков»:
! CBQ (Class Based Queueing) – очереди, прикрепленные altq on dc0 cbq bandwidth 5Mb queue { std, http, mail, ssh }
к интерфейсу, создают «дерево», в котором каждая из
этих очередей может иметь своих «потомков». Очере- После включения altq мы можем создавать очереди-по-
ди имеют приоритет и полосу пропускания. Приоритет томки. Для них используются те же дополнительные пара-
определяет, через какую очередь пакет пройдет первым, метры, что и для директивы altq, за исключением <scheduler>
а полоса пропускания уже непосредственно влияет на и queue, т.к они уже определены. Имя родительской очере-
скорость прохождения. CBQ выполняет двухсторонее ди должно совпадать с определением в altq.
разделение полосы пропускания вашего канала, исполь- Например:
зуя иерархически-структурированные классы. Каждый
класс имеет свою собственную «очередь» и присвоен- queue std bandwidth 10% cbq(default)
ную ей способность пропускания. Класс-потомок может
заимствовать у родительского класса только(!) ту про- Для <scheduler> есть список параметров, которые по-
пускную способность, которая в данный момент доступ- могают контролировать работу очереди.
на для него. ! default – попадая в эту очередь, пакет не проверяется
! PRIQ (Priority Queueing) – очереди просто присоедине- дальше, а тут же обрабатывается.
ны к интерфейсу и не могут иметь очередей-потомков. ! red – Random Early Detection – RED отбрасывает паке-
Каждая такая очередь имеет свой уникальный «приори- ты, которые, предположительно могут перегрузить оче-
тет», который может принимать значения от 0 до 15. редь.
block return out on dc0 inet all queue std Комбинируя правила фильтрации и опции роутинга,
pass out on dc0 inet proto tcp from $developerhosts to ↵
any port 80 keep state queue developers можно добиться очень сложных схем маршрутизации, но
pass out on dc0 inet proto tcp from $employeehosts to ↵ для таких целей придумали Cisco routers. А это уже совсем
any port 80 keep state queue employees
pass out on dc0 inet proto tcp from any to ↵ другая история.
32
bugtraq
НАСТОЯЩИЙ UNIX
В НАШИ ДНИ
АЛЕКСАНДР БАЙРАК
В этой статье я рассмотрю один из вариантов запуска на- Если процесс компиляции прошел гладко, приступаем
стоящего UNIX на современных компьютерах. непосредственно к запуску:
Я думаю, любой юниксоид хотя бы один раз читал исто-
рию возникновения UNIX, как он развивался и какие мета- # BIN/pdp11
морфозы пережил, чтобы дойти до нас в виде множества
своих «детей». Глядя на генеалогическое древо UNIX, диву На экране появится приглашение программы.
даешься, какое большое количество ответвлений и версий
системы было выпущено в прошлом. Некоторые уже давно // Óêàçûâàåì, êàêîé òèï ïðîöåññîðà ìû áóäåì ýìóëèðîâàòü:
sim> set cpu 18
умерли, иные просто в спячке, но большинство из них вы- // u18 ñîîòâåòñòâóåò ïðîöåññîðó, óñòàíîâëåííîìó
росли и дожили до наших дней. Ну как тут не загореться // íà êëàññè÷åñêîé pdp 11/45.
// Óêàçûâàåì, ÷òî áóäåì èñïîëüçîâàòü êîíñîëüíûé òåðìèíàë
желанием посмотреть на тот самый настоящий, легендар- // DL11. Âûâîä èíôîðìàöèè áóäåò ïðîèçâîäèòüñÿ â ðåæèìå
ный AT&T UNIX, с которого все и началось? Конечно, в наши // 7 áèò íà ñèìâîë.
sim> set tto 7b
дни достаточно затруднительно найти PDP11 и родной ди- // Óêàçûâàåì, ÷òî ââîä áóäåò òàêæå èñêëþ÷èòåëüíî 7-áèòíûé.
стрибутив. Так что единственной возможностью погрузиться sim> set tti 7b
// Ïðèñîåäèíÿåì äàìï äèñêà ñ UNIX ê rl.  êà÷åñòâå rl
во времена использования настоящего UNIX на PDP11 нам // âûñòóïàåò êîíòðîëëåð äèñêà RLV12/RL01.
помогут эмуляторы. Точнее, один из них – simh (Simulator sim> attach rl unix_v7_rl.dsk
// Óêàçûâàåì, îòêóäà ïðîèçâîäèòü çàãðóçêó:
History). Начало данному проекту было положено в 1993 sim> boot rl
году. Главный разработчик проекта – Robert M Supnik. В
настоящее время simh можно запустить почти на всех со- Начинается загрузка:
временных ОС, а именно:
! OpenVMS/VAX ! Tru64 @boot
New Boot, known devices are hp ht rk rl rp tm vt
! OpenVMS/Alpha ! Solaris
! Windows 9x/2k/XP ! HP-UX Указываем, что именно запускать:
! MacOS X ! *BSD
! Linux ! OS/2 : rl(0,0)rl2unix
Классический pdp 11/45 был выпущен в 1970 году. Из Более подробно обо всех опциях, использованных выше,
pdp-серии это был единственный 16-битный компьютер. можно прочитать в документации, поставляемой вместе с
Хотя были и 24- и 18-битные машины. При рекордно низкой программой.
цене (~ 10800$) pdp 11 получил широчайшее распростра- Далее нам показывают объем доступной памяти, он
нение. Всего было продано около 600000 (!) экземпляров. равен целым 177 856 байтам! После чего мы попадаем в
Некоторые из них работают и по сей день. shell. В принципе можно начинать работу с настоящим UNIX
Все свои эксперименты я проводил на P3-550 МГц/ 7-ой версии. По умолчанию мы попадаем в систему с пра-
320 Мб RAM под управлением FreeBSD 5.3. вами root. В документации к эмулятору в качестве примера
Для начала нашего путешествия во времени нам нужен работы были приведены следующие действия:
дистрибутив, который можно взять с http://simh.trailing-
edge.com/sources/simhv33-0.zip. // Ñîçäàäèì êàòàëîã dmr
# mkdir /usr/dmr
Также понадобится дамп диска с установленным UNIX. // Ñäåëàåì âëàäåëüöåì êàòàëîãà dmr ïîëüçîâàòåëÿ dmr
Его мы берем с http://simh.trailing-edge.com/kits/uv7swve.zip. # chown dmr /usr/dmr
// Èçìåíèì ãðóïïó âëàäåíèÿ êàòàëîãà íà òðåòüþ
Распакуем и установим программу: # chgrp 3 /usr/dmr
// Ñîçäàäèì êàòàëîã äëÿ âðåìåííûõ ôàéëîâ
# mkdir unixemul # mkdir /tmp
# cd unixemul // Ïîñòàâèì äëÿ íåãî ïîëíûé äîñòóï äëÿ âñåõ
# chmod 777 /tmp
# unzip ../simhv33-0.zip // Íàæèìàåì <Ctrl+D>
# unzip ../uv7swve.zip
# mkdir BIN # ^D
# gmake
После чего на экране появляется приглашение к вводу
Симулятор помещает все свои исполняемые файлы в логина.
каталог BIN. Но так как по умолчанию он не существует,
создаем его: Restricted rights: Use, duplication, or disclosure is subject to restrictions
stated in your contract with Western Electric Company, Inc.
Thu Sep 22 05:51:05 EDT 1988
# mkdir BIN
# gmake
Идем дальше.
34
администрирование
// Ââîäèì ëîãèí dmr: на указанном порту, мы можем с помощью команд netstat -
login: dmr na или sockstat -4.
// Ñ ïîìîùüþ ðåäàêòîðà ed íà÷èíàåì ðåäàêòèðîâàòü ôàéë hello.c:
$ ed hello.c Работать по сети мы сможем после ввода на локальной
?hello.c
машине параметров, указывающих, откуда нам запускать
a ОС. В нашем случае это boot rl. После вывода которой мы
main() видим на экране:
{
printf(«Hello World!\n»);
} Waiting for console Telnet connection.
.
w После чего мы можем получить доступ к эмулятору че-
40 рез telnet. Пример сессии:
q
// Ñêîìïèëèðóåì íàïèñàííûé íàìè ôàéë: [01mer@darkthrone]:~> telnet marduk 12345
$ cc hello.c Trying 192.168.1.22
// Çàïóñòèì: Connected to marduk
$ a.out Escape charset is ‘^]’
Connected to PDP11 simulator
Видим результат: @
Hello World!
Я не буду описывать здесь все свои эксперименты ко-
Кстати, вы еще не догадались, кому принадлежит имя торые проводил в UNIX, чтобы не лишать читателя удоволь-
пользователя dmr? Человеку – живой легенде современ- ствия самому заняться исследованием этой ОС. А море
ности – Деннису Ритчи, отцу и основоположнику Юникса! различных открытий и удивительных находок я вам обещаю.
Согласитесь, что очень неудобно при каждом запуске Для корректного завершения работы с UNIX надо два
ОС каждый раз вводить все команды инициализации. Тут раза произвести синхронизацию диска с помощью коман-
нам на помощь приходят команды save и restore. Для «со- ды sync. После чего нажать <Ctrl+E>, и вы снова попадете
хранения» ввода команд, необходимых для запуска ОС, нам в оболочку эмулятора. Выход из которой осуществляется с
нужно набрать команду: помощью команд exit, quit, bye, на выбор.
В конце хотел бы добавить, что рассмотренный эмуля-
sim> save filename тор кроме PDP11 поддерживает еще достаточно большое
количество различных компьютеров:
В качестве filename введите имя файла, в который вы ! Data General Nova, Eclipse
хотите сохранить текущий образ эмулятора. ! Digital Equipment Corporation PDP-1, PDP-4, PDP-7, PDP-8,
Для «восстановления» состояния набираем: PDP-9, PDP-10, PDP-11, PDP-15, VAX
! GRI Corporation GRI-909
sim> restore filename ! IBM 1401, 1620, 1130, System 3
! Interdata (Perkin-Elmer) 16b and 32b systems
После чего будут актуальны ранее введенные и сохра- ! Hewlett-Packard 2116, 2100, 21MX
ненные настройки. ! Honeywell H316/H516
Также следует отметить одну очень досадную недора- ! MITS Altair 8800, with both 8080 and Z80
ботку по части удобства использования. В оболочке эмуля- ! Royal-Mcbee LGP-30, LGP-21
тора нет возможности редактировать вводимые команды. ! Scientific Data Systems SDS 940
Про возможность автодополнения команд я вообще
молчу. Хотя должен заметить, можно использовать зара- Соответственно, если мы найдем ОС для данных компь-
нее определенные алиасы. Например, для команды attach ютеров и приложим немного смекалки и настойчивости, по-
синонимом будет команда at. Более подробно про алиасы лучим в собственное распоряжение целый полигон для изу-
можно прочитать в документации. чения истории компьютеров и ОС. Особый интерес (по край-
Simh поддерживает работу через сеть. Например, у вас ней мере для меня) представляет эмуляция VAX. Особенно
нет возможности работать с ОС, запущенной через эмуля- при учете того, что на VAX можно запустить OpenBSD,
тор, находясь непосредственно перед монитором компью- NetBSD, и другие менее известные в настоящее время ОС.
тера, на котором включен simh. Или вы хотите дать воз- Но этому вопросу я намерен посвятить отдельную статью.
можность своим знакомым или друзьям поэксперименти- Я был бы очень рад всем вашим отзывам c описанием
ровать на запущенной через эмулятор ОС. экспериментов, поставленных с помощью этого эмулятора.
Воспользуемся опцией, определяющей консоль:
Ссылки:
sim> set console telnet=12345 1. http://simh.trailing-edge.com/software.html – небольшая
коллекция программ и ОС, подходящих для использо-
Назначаем доступ к консоли через порт 12345. вания под эмулятором simh.
На что эмулятор ответит: 2. http://simh.trailing-edge.com/photos.html – фотогалерея
различных старых компьютеров.
Listening on port 12345.
3. http://www.cs.bell-labs.com/who/dmr – домашняя странич-
Проверить, действительно ли нас ожидает соединение ка Денниса Ритчи.
СЕРГЕЙ СУПРУНОВ
Любой системный администратор, если он в меру ленив, абонентов). Все задачи условно разделим на пользователь-
рано или поздно берется за автоматизацию своей работы. ские (например, инициирование отправки) и администра-
Сначала вместо длинных команд со множеством ключей по- торские (например, первичная настройка). Первые из них
являются псевдонимы (aliases), потом группы команд объе- требуется разработать максимально удобно, предоставив
диняются в пакетные файлы командной оболочки, затем простейший интерфейс и лишив пользователя возможнос-
на арену выходят сценарии на более функциональных язы- ти ошибаться. Задачи второй категории по традиции ре-
ках типа Perl… И все для того, чтобы сократить количество шим достаточно упрощенно – главное, чтобы все работало
«кликов» и по возможности переложить часть работы на при минимуме телодвижений.
пользователей, которые эти операции и должны бы делать Первым делом скачаем с http://python.org дистрибутив
«по идее», но «по факту» научить их находить нужный файл Python для Windows. Его инсталляция никаких вопросов
в дереве каталогов, упаковывать его и отправлять по на- вызвать не должна. На момент написания статьи у меня
значению оказывается на порядок сложнее, чем делать это была установлена версия Python 2.3.4. Входящая в состав
самому. пакета среда разработки IDLE (рис. 1) предоставляет неко-
Об использовании Python для выполнения тех или иных торые удобства, но для меня как-то уже устоялся стиль раз-
операций на UNIX-серверах написано достаточно много. В работки, когда код вбивается в обычный текстовый файл,
данной же статье я хочу показать применение этого языка и затем исполняется командой типа:
для решения «бытовых» задач в среде Windows. В качестве
примера (которым возможности Python никоим образом не C:\myworks\python\test>python test.py
ограничиваются) разработаем приложение, автоматизирую-
щее отправку данных и получение обновлений по FTP, ис- Можно, конечно, в командной строке набрать просто
пользуя заранее настроенные пути и имена файлов. test.py – в процессе инсталляции в Windows расширение
Попытаемся сделать наше приложение максимально «.py» ассоциируется с интерпретатором python.exe, и по-
универсальным, однако будем иметь в виду конкретную добная команда тоже выполнит код. Однако на стадии от-
цель – нужно организовать обмен данными с удаленной кас- ладки это не совсем удобно – для потоков stdout и stderr в
сой (ежедневно сбрасывать на сервер файлы реестров и этом случае создается новое консольное окно, которое зак-
время от времени получать с сервера обновленную базу рывается сразу же после завершения (в том числе и ава-
36
администрирование
рийного) работы сценария, не позволяя ознакомиться с со- ступом. Отступ может быть выполнен любым количеством
общениями об ошибке. символов «пробел», но все операторы блока должны иметь
одинаковый отступ. Первая же строка, выполненная без
отступа, рассматривается как окончание блока операторов.
Здесь хочется сделать отступление и немного пофило-
софствовать о стиле программирования. Тот же Perl позво-
ляет кодировать как угодно – хоть в одну строку. С одной
стороны, каждый программист со временем вырабатывает
тот стиль, который ему более удобен. При переходе на Perl
с других языков можно перенести и устоявшийся стиль на-
писания кода. Но с другой стороны тут есть и вероятность,
что кто-то другой будет очень долго воспроизводить «не-
Ðèñóíîê 1 ASCII»-звуки, пытаясь разобраться в исходниках програм-
мы, написанной как-нибудь экзотически. Язык Python в этом
Знакомство с Python смысле более требователен к разработчику, унифицируя
Подробно останавливаться на основах языка я не буду. Дан- тем самым стиль кодирования и упрощая работу тем, кому
ный раздел имеет целью коротко пояснить, что и как, для придется работать с этим кодом в будущем. Однако про-
тех, кто ранее с Python не сталкивался, но статью прочи- должим…
тать непременно хочет. И сразу, как говорится, – с места в (4, 5) – оператор «print» выводит на экран значение стро-
карьер: ковой переменной или непосредственно строку, заключен-
ную в кавычки или апострофы. Вставка в строку перемен-
(0) # -*- coding: cp866 -*- ных выполняется в стиле оператора printf языка Си, за тем
(1) #----------------------------- first.py
(2) import os исключением, что список интегрируемых переменных за-
(3) def hello(message): дается после символа «%» как кортеж (то есть через запя-
(4) print message
(5) print 'Âû íàõîäèòåñü â %s.' % os.getcwd() тую и в круглых скобках). Если переменная одна, как в на-
(6) шем случае, скобки можно опустить.
(7) if __name__ == '__main__':
(8) hello('Hello from Python.') (6) – пустые строки, естественно, допускаются.
(9) raw_input('Íàæìèòå Enter...') (7, a) – оператор ветвления пояснять, думаю, не нужно.
(a) else: pass
(b) #----------------------------end of first.py Как и обычно, задаются условие и блок операторов (выде-
ляется отступом), которые будут выполнены, если условие
Результат работы этого сценария будет следующим: истинно. В противном случае, если задан далее оператор
«else», будет выполнен его блок операторов. Если команда
C:\myworks\python\test>python test.py
Hello from Python. в блоке одна, допускается указывать ее непосредственно
Вы находитесь в C:\myworks\python\test. после двоеточия в этой же строке (хотя это и противоречит
Нажмите Enter...
официальному стилю программирования). Оператор «pass»
(0) – первая строка указывает интерпретатору, в какой ничего не делает, и строго говоря, строка «a» в нашем слу-
кодировке следует рассматривать приведенный ниже текст. чае совершенно не нужна.
Для ASCII-текста она не требуется, но поскольку мы исполь- Чуть подробнее следует остановиться на самом усло-
зуем кириллицу, то без нее интерпретатор будет каждый вии, указанном в строке (7): __name__ == ‘__main__’. Встро-
раз выдавать предупреждение «DeprecationWarining: Non- енная переменная __name__ возвращает имя программы,
ASCII character…». если вызывается как модуль из другого сценария (об этом
(1, b) – комментарии, как и принято в UNIX, предваря- – чуть ниже) либо строку «__main__», если файл запуска-
ются символом «#». Для многострочных комментариев ча- ется непосредственно. То есть код строк «8-9» будет вы-
сто используют обрамление текста с помощью утроенных полнен только тогда, когда файл first.py запускается из ко-
кавычек: «’’’ multiline comment ’’’». Этот же прием можно ис- мандной строки. Зачем это сделано, будет объяснено да-
пользовать для временного исключения участков кода на лее.
стадии отладки. (8) – здесь мы просто вызываем описанную ранее фун-
(2) – третья строка импортирует модуль, в данном слу- кцию «hello», передав ей текстовую строку в качестве аргу-
чае «os», который является стандартным для Python и со- мента.
держит функции для работы с конкретной операционной (9) – функция raw_input считывает со стандартного по-
системой. В нашем примере из этого модуля мы использу- тока ввода stdin строку, завершающуюся символом пере-
ем функцию getcwd(), возвращающую текущий каталог. вода строки. В данном случае этот оператор используется
(3) – с этой строки начинается определение функции исключительно для задержки вывода, чтобы консольное
«hello». В скобках указывается список параметров, причем окно не закрывалось сразу.
даже если параметров нет, скобки обязательно должны Теперь рассмотрим еще одну конце