СЬ
ЛИ
ЛИ
ТЯ Е
Ж ПИ
ЗА ДНИ
НУ
РА КУ
ЛЫ ГО
ТИ РАС
КУ ВО
О
НИ НО
ТР
С
БЫ
подписной индекс 81655
КА
www.samag.ru
И
ЬГ
ЬД О
РА СКА
ТЕ
К
ИС НН
ЕН
УС
БО
НА ТПУ
ИЛ ДА
ТП
НЧ ЖИ
ВО
РА Е О
КО НЕО
АВ СЛ
Л
Л
ХА
ПО
УЕ
ЗА
Есть ли жизнь
без антивируса?
Так видит журнал читатель, оформивший подписку:
Запускаем spamd
на FreeBSD
Проверяем
HTTP-трафик на лету
Настраиваем WSUS
Устанавливаем связку
Postfix + Exchange
Удаленно управляем
BIOS Setup
ПОДПИШИТЕСЬ И ЧИТАЙТЕ! Автоматизируем подключение
№7(32) июль 2005
2
тенденции
Mozilla Suite будет жить сменить номер будущего major-релиза – им станет 1.5, а не
Новый учрежденный проект SeaMonkey Project продолжит ожидавшийся ранее 1.1. Данные преобразования связаны с
совершенствование набора открытых продуктов Mozilla желанием разработчиков отразить значимость и число нов-
Suite. Результаты работы SeaMonkey не станут официаль- шеств, которые появятся в Firefox 1.5. По ориентировочному
ным обновлением к Mozilla Suite от Mozilla Foundation, одна- плану выхода Firefox 1.5 «Deer Park», его бета-версия (1.4)
ко организация будет взаимодействовать с группой разра- выйдет в августе 2005 года, а сам стабильный релиз 1.5 –
ботчиков, предоставит им всю необходимую инфраструкту- в сентябре этого же года. Среди изменений отмечается но-
ру, а улучшения, проводимые в SeaMonkey, будут возвра- вый движок Gecko, совместимость с HIG, новая система об-
щаться в кодовую базу Mozilla, откуда затем уже попадать в новлений, улучшения в менеджере расширений.
другие продукты Mozilla (Firefox и Thunderbird). Первые рели-
зы SeaMonkey должны появиться в ближайшее время, и со- Проект корпоративного дистрибутива
общается, что пользователи Mozilla 1.7.x и Mozilla 1.8 Alpha/ Linux на базе Debian
Beta смогут найти в них множество улучшений. Появились первые известия и подробности о проекте соз-
дания корпоративного дистрибутива на базе Debian GNU/
Проблемы в безопасности Debian Linux. Среди компаний, подтвердивших свое участие в раз-
Как стало известно от Мартина Шульца, после выпуска Debi- работке новой системы отмечаются: credativ GmbH, Knop-
an GNU/Linux 3.1 (Sarge) в инфраструктуре обеспечения бе- pix, LinEx, Linspire, MEPIS, Progeny, Skolelinux, Sun Wah Linux,
зопасности возникли некоторые проблемы, из-за которых UserLinux, VA Linux Japan, Xandros. Союз получил название
команда Debian Security Team не могла выпускать обнов- DCC (Debian Core Consortium), а в качестве руководителя и
ления к уязвимым пакетам. Майкл Стоун в свою очередь главного инициатора – Progeny Linux Systems Inc., исполни-
жаловался на нехватку людских ресурсов для своевремен- тельным директором которой является основатель Debian
ного создания необходимых патчей. Однако уже в скором Ян Мердок. Стандартными для дистрибутива станут пакеты
времени все проблемы были полностью решены, и с пер- формата DEB, но обещается и совместимость с RPM. Си-
вой половины июля инфраструктура обеспечения безопас- стема будет соответствовать стандарту LSB (Linux Standard
ности для двух последних стабильных релизов дистрибути- Base) 2, положит основу для будущих релизов собственных
ва Debian GNU/Linux (3.1 «Sarge» и 3.0 «Woody») вновь пол- дистрибутивов компаний-участников.
ностью функционирует, патчи ко всем пакетам предостав-
ляются в обычном режиме. Составил Дмитрий Шурупов
по материалам www.nixp.ru
Вена начинает переход на Linux
В столице Австрии стартовала программа по миграции на
программное обеспечение с открытым кодом на настоль-
ных ПК. Городской советник Вены Руди Шикер представил
на пресс-конференции специально разработанный Linux-про-
ект, получивший название Wienux. Дистрибутив базируется
на Debian GNU/Linux с Linux-ядром 2.6.11, графической сре-
дой KDE и такими программами, как OpenOffice.org, Firefox
и GIMP. Департаменты городской администрации получи-
ли возможность перевода своих десктопов на Open Source.
Из 16 тысячи городских настольных ПК с Windows 2000 на
OpenOffice.org могут перейти 7,5 тысяч, а на Linux из них –
4,8 тысяч.
П
редставим, что у пользователей отсутствуют или от- Предполагается, что у вас уже имеется настроенный
ключены НГМД (про CD-ROM и USB я даже не упо- прокси-сервер, например Squid. На момент написания ста-
минаю – на мой взгляд, это непозволительная ро- тьи последней версией HAVP была 0.62. Установка произ-
скошь для клиентских рабочих мест). Почта уже проверя- водилась на Red Hat Linux Enterprise 4, но без проблем все
ется каким-нибудь открытым антивирусом типа Clamav. В должно работать и на других UNIX-системах.
таком случае единственным возможным источником виру-
сов может являться «дикий Интернет». И если доступ поль- Устанавливаем HAVP
зователям открыт только через протокол HTTP, то только Для начала создадим отдельную ФС для временных фай-
его нам и остается сканировать на предмет вирусов. Делать лов HAVP. Отдельную – потому что ее необходимо монти-
это удобнее и дешевле на сервере при помощи открытого ровать с поддержкой так называемых «ручных блокиро-
ПО, чем мы и займемся. вок» для файлов (mandatory locks).
Для проверки наличия вирусов традиционно предла- Это делается при помощи опции mand, команды mount.
гаю использовать наиболее распространенный из свобод- Я предпочел для ускорения работы и снижения нагруз-
ных антивирусов – Clam AntiVirus (http://www.clamav.net). Я ки на дисковый массив создать такую файловую систе-
не буду подробно рассказывать о его преимуществах и осо- му в ОЗУ:
бенностях, о которых уже написано в статьях [1, 2, 3]. Се-
годня мы разберем практические вопросы установки и ин- # mkdir /var/tmp/havp
# chown nobody /var/tmp/havp
теграции антивируса с прокси-сервером. В качестве прок- # chgrp nobody /var/tmp/havp
си мы возьмем HTTP AntiVirus proxy (HAVP) [4]. # mount -t tmpfs -o size=100M,mand tmpfs /var/tmp/havp
Помимо HAVP также рассматривались и другие вари-
анты. Но они либо на платной основе в случае коммерче- Соответствующая строчка, которую необходимо до-
ского применения как dansguardian.org (plug-in к нему), ли- бавить в /etc/fstab для автоматического создания файло-
бо показались менее стабильными, по отзывам в форумах. вой системы во время загрузки, выглядит следующим об-
Наверняка это не единственное, и, возможно, не самое разом:
лучшее решение, но тем не менее оно существует и впол-
не справляется с поставленными задачами. С возможны- # <fs> <mt _ point> <type> <options> ↵
<dump> <pass>
ми альтернативными вариантами вы можете ознакомить- tmpfs /var/tmp/havp tmpfs auto,size=100M,mand ↵
ся по ссылке [5]. 0 0
HTTP AntiVirus proxy – это прокси-сервер с фильтром –
антивирусом. Сканируется весь трафик, и проверка на ви- Проверяем, как смонтировалась наша файловая систе-
русы является единственной задачей данного прокси-серве- ма. Мы должны получить что-нибудь похожее на:
ра. Поэтому вполне разумным было бы использовать HAVP
в связке с кэширующим прокси, умеющим фильтровать тра- # df –h /var/tmp/havp
фик, например Squid. Ключевыми особенностями HAVP яв- tmpfs 100M 0 100M 0% /var/tmp/havp
ляются возможность непрерывной проверки трафика без
тайм-аутов и блокировок, а также корректная работа с ди- Кроме того, создадим директорию для лог-файлов прок-
намическими и защищенными паролем страницами. си-сервера и выставим владельца:
4
безопасность
# mkdir /var/log/havp StreamSaveToDisk
# chown nobody /var/log/havp
# chgrp nobody /var/log/havp
и удаляем строчку:
Теперь развернем предварительно скачанный со стра-
нички [4] исходные коды прокси-сервера. Example
# ./conÞgure
# make
# make install
Устанавливаем Clamav
Про установку антивируса Clamav читайте в [1, 2, 3]. Здесь
же я приведу минимально необходимые для установки све-
дения. Добавляем группу и пользователя, из-под которого Рисунок 2. Сработала защита
будет запускаться демон: Не забудьте запретить пользователям подключаться
напрямую к Squid. Если все получилось, то я могу вас по-
# groupadd clamav здравить с очередным успешным шагом в создании защи-
# useradd -g clamav -s /bin/false clamav
щенной локальной сети.
Скачиваем с сайта проекта [6] последнюю версию ис-
ходников, разархивируем и правим в clamav-config.h пере- Литература, ссылки:
менную SCANBUFF. Ее значение должно быть меньше, чем 1. Маркелов А. Броня моллюска. Обзор и установка анти-
указанное в переменной MAXRECV файла havp/default.h. вируса ClamAV. – Журнал «Компьютерра» №21, 2004 г. –
После чего выполняем привычные: 34-35 с. Статья доступна в Интернете по адресу: http://
www.markelov.net/articles.php?lng=ru&pg=44.
# ./conÞgure 2. Яремчук С. Свободный антивирус. – Журнал «Систем-
# make
# make install ный администратор», №8, 2004 г. – 24-25 с.
3. Супрунов С. Еще раз о ClamAV: особенности установ-
Добавляем в crontab строчку, запускающую команду по ки в FreeBSD. – Журнал «Системный администратор»,
обновлению антивирусных баз: №3, 2004 г. – 32-37 с.
4. HAVP – http://www.server-side.de.
1 * * * * /usr/local/bin/freshclam -quiet 5. Методы проверки HTTP-трафика при помощи Clamav –
http://www.clamav.net/3rdparty.html#webftp.
Правим файл /usr/local/etc/clamav.conf. Добавляем: 6. http://www.clamav.net.
7. Тестовая сигнатура вируса – http://www.eicar.org/anti_vi-
LocalSocket /var/run/clamd.sock rus_test_file.htm.
Dans
ansG
Guardian + C
Clam
lamAV:
AV:
ФИЛЬТРУЕМ ВЕБ-СОДЕРЖИМОЕ
И СТРОИМ АНТИВИРУСНУЮ ЗАЩИТУ
АНДРЕЙ АВРАМЕНКО
Я
думаю, ни для кого не секрет, что большая часть ви- дить и на локальной машине, но централизованная филь-
русов попадает на компьютеры локальной сети из Ин- трация трафика гораздо проще в обслуживании и позволя-
тернета. Конечно, проверку на вирусы можно прово- ет экономить ресурсы компьютеров локальной сети.
6
безопасность
DansGuardian – фильтр веб-содержимого для ОС Linux, --runas _ grp=squid
FreeBSD, OpenBSD, NetBSD, Mac OS X, HP-UX и Solaris, ис- make
пользует прокси-серверы squid или oops. Он фильтрует со- make instal
держимое несколькими методами: по фразам, картинкам
и URL. В отличие от некоторых других фильтров, он не ис- Далее следует настроить dansguardian. Конфигураци-
пользует «черный лист» URL, который надо постоянно об- онный файл /etc/dansguardian/dansguardian.conf оснащен
новлять (да и к тому же Интернет большой, все не пере- отличными комментариями, так что, я думаю, не будет за-
числишь). труднений в конфигурировании:
Проект постоянно дорабатывается, имеется коммерчес-
кая версия под названием SmoothGuardian. В ней есть не- reportinglevel = 3
languagedir = '/etc/dansguardian/languages'
сколько дополнительных возможностей: блокировка лицен- # К сожалению, русского языка в списке нет. Я сделал
зионной музыки, удаление рекламы, многоязыковая под- # перевод и в ближайшее время отправлю автору. Вы можете
# скачать архив с сайта журнала http://www.samag.ru,
держка фраз фильтрования, генерация стандартных отче- # раздел «Исходный код». Чтобы установить язык, необходимо
тов, таких как самые популярные сайты, пользователи и # разархивировать файл в папку /etc/dansguardian/languages
# и в конфигурационном файле указать:
сайты, заблокированные чаще всего, позволяет блокиро- language = 'russian'
вать «по часам», т.е. блокировка происходит в определен-
# Что записывать в лог
ное время, и другое. # 0 = none 1 = just denied 2 = all text based
Я буду использовать именно бесплатную версию, так как # 3 = all requests
loglevel = 2
ее конфигурирование считается более сложным. # Протоколировать, если страница была передана пользователю
Я устанавливал dansguardian на ОС Linux Alt Mas- logexceptionhits = on
ter 2.4: # формат ведения лога
! Версия dansguardian – 2.8.0.3 (версия антивирусного # 1 = DansGuardian format
# 3 = Squid Log File Format
2 = CSV-style format
4 = Tab delimited
патча 6.3.8). logÞleformat = 1
! Версия squid – 2.5.STABLE9. # Местонахождение лог-файла
! Версия clamav – 0.86.1. loglocation = '/var/log/dansguardian/access.log'
! Версия libesmtp – 1.0.3r1.
# Сетевые опции
Dansguardian не является редиректором (как, напри- # IP-адрес, на котором слушает dansguardian
Þlterip =
мер, squidGuard), хотя многие первоначально думают имен- Þlterport = 8080
но так. Это прокси-сервер, и он использует squid как веб-
# IP-адрес и порт прокси-сервера (squid или oops)
браузер. Для того чтобы пользователи не использовали proxyip = 127.0.0.1
squid напрямую, необходимо в конфигурационном фай- proxyport = 3128
ле firewall указать перенаправление с порта squid на порт # URL, на который произойдет переадресация при блокировке
dansguardian. Либо установить dansguardian на порт 3128, accessdeniedaddress = ↵
'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'
а squid перенести на какой-либо другой, открыв доступ nonstandarddelimiter = on
только с 127.0.0.1
# Заменять запрещенную картинку какой-нибудь своей
Для начала установим СlamAV. Скачать его можно с usecustombannedimage = 1
официального сайта http://www.clamav.net. custombannedimageÞle = '/etc/dansguardian/transparent1x1.gif'
8
безопасность
СЕРГЕЙ ЯРЕМЧУК
О
тношения пользователей по от- собный вариант вируса. Система об- ют систему. В последнее время ста-
ношению к антивирусам варьи- наружения, основанная на опыте пре- ло заметно оживление и среди раз-
руется от полной уверенности дыдущих атак, становится бесполез- работчиков систем безопасности для
в защите до осознания того, что глав- ной при столкновении с неизвестным ОС Windows.
ное – выдержать первый удар. Дейс- вирусом или шпионской программой. Прежде чем приступить к конкрет-
твительно антивирусы сегодня несут Для того чтобы сгенерировать сигна- ным решениям, хотелось бы пару слов
уже не столько защитную функцию, туру, антивирусной компании необхо- сказать об проблемах. Первое и самое
а скорее используются как средство димо получить экземпляр вируса, вы- трудное, что придется сделать – это
оценки нанесенного ущерба и удале- делить специфический только для него убедить самого себя в том, что такая
ния заразы. Антивирусные компании, фрагмент, и только после этого он бу- утилита способна защитить компьютер
полностью осознавая то, что вирус – дет занесен в базу. На все это уходит или хотя бы отреагировать. В течение
это некий алгоритм, включающий не некоторое время (а вслучае полимор- двух лет мой подопытный компьютер
только программу со всеми команда- фного вируса процесс создания сигна- защищался одним из бесплатных ан-
ми, но и определенные действия, при- туры может еще более затянуться), в тивирусов, как правило, с базами по-
водящие к поражению данных, упорно течение которого антивирусы не спо- лугодичной давности, межсетевым эк-
продолжают идти наиболее простым собны, противостоять новому врагу, раном и одной из программ, описанных
путем. И мы до сих пор пользуемся ан- но вполне достаточному, чтобы новый ниже. За это время система подверга-
тивирусами, которые просто сравнива- червь заразил сотни тысяч компьюте- лась (и постоянно подвергается) мно-
ют набор знаков, взятых из антивирус- ров. Классические сигнатурные анти- гочисленным атакам, но заражения так
ных баз, с другим (файлом пользовате- вирусы оказываются не способны пре- и не произошло.
ля или оперативной памятью). дотвратить глобальные эпидемии. Вполне возможно, что просто по-
В итоге традиционные антивирус- С другой стороны, наблюдение за везло, а может, пора действительно пе-
ные решения фактически оказались работой системы либо за основными ресмотреть взгляды. Но вся загвоздка
не способны в одиночку противостоять файлами позволяет определить не- в том, что утилиты требуют от пользо-
качественному разнообразию сущест- приятности и предотвратить нападе- вателя определенных знаний и неко-
вующих угроз. На одном из курсов, для ние, такие системы принято относить торого понимания происходящего в
того чтобы убедить скептиков, я распа- к классу систем предотвращения про- системе. Появление нового процесса
ковал вирус MyDoom, до этого благопо- никновения (Intrusion prevention sys- должно насторожить пользователя, он
лучно распознаваемый антивирусами tems) и проактивным системам защи- должен как минимум прочитать преду-
с обновленными базами, а затем за- ты. В мире Linux давно известны та- преждающее сообщение и затем при-
паковал уже другим упаковщиком. Ан- кие проекты, как LIDS, RSBAC, grsecu- нять верное решение. Щелчок по кноп-
тивирусы оказались не способны най- rity, tripwire и другие которые при пра- ке без раздумий может привести к за-
ти модернизированный, но работоспо- вильной настройке надежно защища- ражению. Хотя стоит отметить, что в
10
безопасность
жет. На момент написания статьи вания. Новая разработка Safe’n’Sec, всех данных на компьютере пользова-
регистрация была бесплатной. представленная в ноябре прошло- теля осуществляется в соответствии с
го года, практически сразу получила политикой контроля активности, опре-
Менеджер процессов признание и была названа журналом деляющую, какие действия и их после-
AnVir Task Manager PC Magazine/RE антивирусом месяца. довательность нужно считать вредо-
Первое, что приходит в голову после При этом Safe’n’Sec не относится к ан- носными. На данный момент имеются
знакомства с менеджером процессов тивирусам, а принадлежит к классу три политики – жесткая, строгая и до-
AnVir Task Manager (http://anvir.com/an- систем проактивной защиты, которые верительная. После обнаружения по-
virrus.exe), что это не серьезно. Виной анализируют подозрительное поведе- дозрительного приложения Safe’n’Sec
является небольшой размер програм- ние пользователя или программы. Для самостоятельно принимает решение
мы, чуть меньше 380 Кб. А зря. Несмо- малых и средних предприятий, а также об его вредоносности и уведомляет
тря на такой маленький размер, про- индивидуального использования пред- пользователя, который должен опре-
грамма помогает: назначена версия Personal. В корпора- делить, что делать с таким приложе-
! получить полную информацию о за- тивной версии Safe’n’Sec Business име- нием (разрешить или заблокировать)
пущенных процессах (путь к файлу, ется административная консоль, ко- (рис. 4). Причем для упрощения приня-
описание, время работы, родитель- торая позволяет системному админи- тия решения доступна история актив-
ский процесс, командная строка, стратору дистанционно инсталлиро- ности, по которой он может подробно
использование процессора, памяти, вать и настраивать программу на ком- изучить последовательность действий,
список используемых dll, файлов, пьютерах пользователей. выполненных приложением. Дополни-
драйверов, потоков, окон и пр.); Версия 1.1, актуальная на момент тельно из консоли можно получить до-
! вылечить зараженный компьютер написания статьи, доступна в двух ва- ступ к списку запрещенных и доверен-
от вирусов, spyware и резидентных риантах – усеченная Safe’n’Sec ver. 1.1 ных приложений, который можно здесь
вирусов-троянов; и полная Safe’n’Sec ver. 1.1 + antivirus. же отредактировать. Для тестирования
! управлять приложениями, запуска- Последняя, как понятно из названия, работоспособности вместе с програм-
ющимися при старте Windows, с воз- включает возможность антивирусной мой поставляется утилита snstest.exe,
можностью отложенного (через 1 проверки. Основу продукта составля- которая имитирует занесение данных
минуту) запуска и блокировки до- ет модуль Intelligent activity control, поз- в системный реестр, попытку записи и
бавления новых программ (рис. 2). воляющий обнаруживать комбиниро- удаления из системного каталога.
ванные атаки, предотвратить попыт-
ки внести изменения в системный ре- Всесторонний контроль
естр или состояние сервисов операци- с RegRun
онной системы, открыть доступ к ре- RegRun Security Suite (http://www.grea-
гистрационным данным пользователя tis.com) работает со всеми версиями
и пр. При этом механизм принятия ре- Windows. Еще один комплект средств
шения Safe’n’Sec действует на основе для защиты компьютера против виру-
правил, учитывающих все возможные сов или троянцев, spyware и adware. Он
последовательности действий, класси- доступен в трех основных вариантах:
Рисунок 2. Предупреждающее сообщение фицируемых как вредоносные. Защита Standart (для обычных пользователей,
AnVir Task Manager
Перехват системных
вызовов с Safe’n’Sec
Российская компания StarForce (http://
www.star-force.ru) уже давно известна
своим одноименным механизмом за-
щиты дисков от нелегального копиро- Рисунок 3. AnVir Task Manager позволяет получить полную информацию о процессах
12
безопасность
и месторасположение баз. Поэтому,
назвав файл как-то буднично, напри-
мер, kursovik.rtf или song.mp3 и поло-
жив в группу подобных файлов, мож-
но ее скрыть. При создании базы воз-
можны три варианта: в нее заносятся
только контрольные суммы файлов,
делается резервная копия всех дан-
ных, и резервные копии дополнитель-
но шифруются (256 бит AES). В пос-
ледних двух случаях, кроме контро-
ля, позволяют восстанавливать изме-
ненные файлы. В качестве контроль-
ной суммы можно использовать не-
сколько вариантов – от 128-разряд-
ной хеш-функции MD5 до AES с 256-
разрядной длиной ключа. При помо-
щи Xintegrity можно проверять целос-
тность файлов по требованию или за- Рисунок 6. Предупреждающее сообщение RegRun Run Guard
пустить ее в фоновом режиме, тогда
при обнаружении изменения поль-
зователь будет сразу же уведомлен.
Когда Xintegrity обнаружит такой из-
мененный файл, пользователю бу-
дет выдана подробная информация
о том, как и когда файл был изме-
нен, и при определенных опциях со-
здания базы будет предложено заме-
нить его резервной копией. Напри-
мер, на рис. 7 выведено различие
контролируемого файла и этого же
файла, зараженного вирусом Win32.
HLLP.Underscore.36864.
В целях безопасности при откры-
тии базы Xintegrity автоматически про-
веряет как себя, так и все зарегистри-
рованные базы на предмет целостно-
сти. При создании базы данных в нее
можно занести все файлы, лежащие в
определенном каталоге, либо при по-
мощи набора фильтров отобрать фай- Рисунок 7. Xintegrity позволяет сравнить измененный файл с оригиналом
лы, удовлетворяющие определенным в сети. И для каждой задать свой ре- ные приложения. Между тем произво-
критериям (размер, время модифика- жим проверки. дители уже встраивают подобные инс-
ции или создания, по типу, содержимо- трументы в свои утилиты. Например, Ti-
му, атрибутам и функциональным воз- Заключение ny Firewall (http://www.tinysoftware.com)
можностям). Имеется пункт, включаю- Существующие на сегодняшний день содержит Host Security Engine (HSE),
щий в себя все вышеперечисленное, а решения в области защиты информа- по принципу работы несколько напо-
также поддерживается Drag’and’Drop и ции эффективны в борьбе с уже извес- минающий проактивные антивирусы,
вставка файла с буфера обмена. Фай- тными угрозами и уязвимостями. Вре- а при помощи Track’n Reverse позво-
лы, расположенные на дисках с фай- мя реакции антивирусных компаний ляет в случае обнаружения зловред-
ловой системой FAT32, NTFS, и сете- после обнаружения неизвестного виру- ной утилиты вернуть систему в исход-
вые папки могут быть перечислены в са можно назвать медленным и доста- ное состояние. Или продукт компании
одной базе данных. Как видите, мож- точным для поражения тысяч компью- Aladdin (http://www.eAladdin.com) eSafe
но задать практически любые усло- теров. Но тенденции позволяют гово- (http://www.esafe.com) использует, кро-
вия. Поэтому можно создать несколь- рить о том, что нас ждет появление но- ме традиционных средств, и проактив-
ко баз, в одну собрать исполняемые и вых методов распространения угроз, с ный антивирус (Proactive Security En-
системные файлы, в другую – сетевые еще большей скоростью размножения. gine). По мнению многих аналитиков,
ресурсы, к которым имеете доступ, в Новые угрозы требуют нового подхода. ближайшее время пройдет под знаком
третью – ресурсы, способные работать В статье описаны только самостоятель- проактивной защиты.
СЕРГЕЙ СУПРУНОВ
Найти и не сдаваться 220 test.ru ESMTP spamd IP-based SPAM blocker; Thu Jul 7 07:56:09 2005
Spamd – система фильтрации спама, использующая меха- HELO me
250 Hello, spam sender. Pleased to be wasting your time.
низм «черного», «белого» и «серого» списков. Интересен ал- MAIL FROM: me@me.ru
250 You are about to try to deliver spam. Your time will be spent, for nothing.
горитм работы по серому списку: сообщение, отправитель RCPT TO: serg@test.ru
которого не входит ни в белый, ни в черный списки, откло- 250 This is hurting you more than it is hurting me.
data
няется с ошибкой 451 (временная ошибка, повторите попыт- 354 Enter spam, end with "." on a line by itself
Hello, spamd!
ку позже). И по реакции удаленной системы на эту вежли- I test you!!!
вую просьбу принимается решение о занесении отправите- .
450 SPAM. Blocked by me.
ля в белый список. В следующих подразделах будет описан
принцип работы spamd, а необходимые для этого настройки Ко всему прочему, каждый символ ответных сообщений
рассмотрены далее в соответствующем разделе. выводится с задержкой в 1 секунду (по умолчанию, может
быть изменено). То есть для соединений, попавших на вход
Работа в «нормальном» режиме spamd, стандартный диалог будет отрабатываться чрезвы-
Spamd может быть сконфигурирован для работы в одном чайно медленно, и в итоге отправитель получает сообщение
из двух режимов – «нормальном» и «сером» (greylisting об ошибке. Таким образом, время соединения затягивает-
mode). Схема работы spamd в нормальном режиме пред- ся, спаммер должен полностью сформировать отправляе-
ставлена на рис. 1. мое сообщение, но в самый последний момент, буквально
после завершающей точки, соединение разрывается. При-
чем в случае 450-го кода ответа оно обычно остается в оче-
реди на отправку, и столь же безнадежные попытки могут
повторяться неоднократно.
14
безопасность
адреса на 25-й порт до указанного правила (своеобразная
альтернатива белым спискам) и т. д.
Обойти это можно, запуская pfspamd.sh с ключом «fast- А это белый список. Параметр «msg» здесь за ненадоб-
start» вместо «start». При этом проверка того, запущен ли ностью не используется. Если адрес отправителя занесен
соответствующий процесс, выполняться не будет, эта за- в указанный файл, то он будет исключен из предыдущего
бота ложится на плечи администратора. черного списка, если там окажется.
При автоматическом запуске во время загрузки системы На основании данного конфигурационного файла spa-
первым стартует pfspamd.sh (rc-сценарии исполняются в по- md-setup формирует черные списки. При этом адреса в них
рядке, определяемом утилитой rcorder, но в данном случае упорядочиваются по возрастанию, исключаются дублиро-
требования к порядку запуска у рассматриваемых скрип- вания и пересечения подсетей так, чтобы любой адрес был
тов одинаковы, и они будут выполняться в алфавитном по- представлен только в единственном экземпляре. Адреса,
рядке, так что pfspamd.sh имеет преимущество). Поскольку присутствующие в белом списке, исключаются из предыду-
запускаемый вторым скрипт sa-spamd.sh ориентируется по щего черного (и только из него). Если «белый» адрес дол-
своему PID-файлу, то и его старт проходит нормально. жен быть исключен из нескольких черных списков, в сек-
ции «all» соответствующий белый список следует указать
Настроить и запустить после каждого такого черного списка.
Настройки белых и черных списков для spamd сосредоточе- Сформированные списки утилита spamd-setup загружа-
ны в файле /usr/local/etc/spamd.conf. Сразу после установки ет в таблицу <spamd> фильтра pf (используя команду pfctl),
в указанном каталоге будет находиться только файл spamd. а также отправляет их на управляющий порт (tcp/8026) де-
conf.sample, который следует переименовать в spamd.conf и мону spamd.
подправить под собственные нужды. Кроме того, потребует- В ходе тестирования было выявлено интересное поведе-
ся внести ряд изменений в файл /etc/pf.conf (конфигурацион- ние демона (используемая версия программы – 3.7) – то ли
ный файл пакетного фильтра pf). Также нужно знать ключи из-за ошибки разработчика, то ли по иной недосягаемой для
запуска spamd, поскольку именно ими определяется режим моего понимания причине spamd при обработке данных, по-
работы демона и значения используемых параметров. ступающих на порт 8026, не воспринимает последний (самый
большой) адрес. Поскольку в таблицу <spamd> он заносится
Параметры spamd.conf нормально, то перенаправление на порт 8025 его соедине-
Данный конфигурационный файл используется утилитой ний выполняется, но spamd как «черный» данный адрес не
spamd-setup для первоначальной настройки таблиц pf при воспринимает, помечая его как серый (GREY) и возвращая
запуске spamd. Формат spamd.conf достаточно прост и со- вместо ответа 450 или 550, определяемого ключами запу-
ответствует getcap(3). В нем обязательно должна присут- ска, код 451 «Временная ошибка». Но так как на MTA такое
ствовать запись all: соединение все равно не проходит, на корректность работы
фильтра эта ошибка практически не влияет.
all:\ Несколько слов нужно сказать о формате списков. Это
:spamhaus:blacklist:whitelist:
обычные текстовые файлы (могут быть упакованы утилитой
В этой записи перечислены используемые списки в по- gzip), в которые заносятся черные или белые адреса, ин-
рядке их применения. В данном случае описаны следую- тервалы адресов или подсети, по одному в каждой строке.
щие три списка: Допускаются комментарии, начинающиеся с символа «#».
После адреса могут содержаться любые пометки – при об-
spamhaus:\ работке используется только первая часть строки, соответ-
:black:\
:msg="SPAM. Your address %A is in the Spamhaus ↵ ствующая одному из указанных форматов. Например, файл
Block List\n\ списка может выглядеть так:
See http://www.spamhaus.org/sbl and\
http://www.abuse.net/sbl.phtml?IP=%A for more details":\
:method=http:\ # Пример черного списка
:Þle=www.openbsd.org/spamd/SBL.cidr.gz: 192.168.0.5 # Отдельный IP-адрес
10.0.0.1 – 10.0.2.255 # Диапазон адресов наглых спаммеров!!!
Данный список для блокировки нежелательной почты 5.6.7.0/24 # Так можно задать подсеть
# Попытка обмануть spamd:
использует информацию о спаммерах, собираемую сайтом 255.255.255.254
spamhaus.org (для загрузки по http используется файл, со-
храненный на сервере openbsd.org). Последняя строчка может быть использована для ре-
шения описанной выше проблемы. Поскольку при сорти-
blacklist:\ ровке данный адрес окажется последним (независимо от
:black:\
:msg="SPAM. Blocked by me":\ его места в файле списка), то именно он не будет воспри-
:Þle=/usr/local/etc/spamd/blacklist.txt: нят демоном spamd. Все остальные адреса нормально бу-
дут обработаны как «черные». Однако не забывайте, что та-
Эта запись указывает на необходимость загрузить в кой «завершающий» адрес все равно попадет в <spamd> и
черный список адреса из указанного локального файла. будет перенаправляться.
Поскольку этот метод используется по умолчанию, ключ Наблюдать за процессом заполнения черных списков
«method» опущен. можно, запустив spamd-setup с ключом -d:
16
безопасность
# /usr/local/sbin/spamd-setup -d all:\
:blacklist:
Getting http://www.openbsd.org/spamd/spews_list_level1.txt.gz
blacklist spews1 18541 entries blacklist:\
Getting http://www.openbsd.org/spamd/spews_list_level2.txt.gz :black:\
blacklist spews2 22641 entries :msg="SPAM. Blocked by me":\
Getting http://www.openbsd.org/spamd/chinacidr.txt.gz :Þle=/usr/local/etc/spamd/blacklist.txt:
blacklist china 321 entries
Getting http://www.openbsd.org/spamd/koreacidr.txt.gz
blacklist korea 162 entries В данном случае в таблицу <spamd> фильтра pf зано-
blacklist myblack 1 entries сятся все адреса из файла blacklist.txt. Все остальные ис-
whitelist mywhite 4 entries
точники будут пропущены на реальный MTA. Если же до-
Не забывайте выполнять spamd-setup каждый раз после бавить белый список:
перезапуска pf, чтобы вновь заполнить таблицу <spamd>.
Так же полезно занести вызов этой утилиты в crontab, что- all:\
:blacklist:whitelist:
бы периодически (например, раз в сутки) обновлять внеш-
ние черные списки. blacklist:\
:black:\
:msg="SPAM. Blocked by me":\
Настройка журналирования :Þle=/usr/local/etc/spamd/blacklist.txt:
Демон spamd пишет свои сообщения в syslog. Чтобы со- whitelist:\
брать все сообщения в одно место, удобно направить их :white:\
:Þle=/usr/local/etc/spamd/whitelist.txt:
в отдельный файл, для чего в /etc/syslog.conf поместим
строки: то в таблицу <spamd> попадет содержимое blacklist.txt за
исключением адресов, перечисленных в whitelist.txt. При-
!spamd чем таким свойством «вычитания» обладает только белый
*.* /var/log/spamd.log
список, приведенный в строке «all» непосредственно пос-
Правда, при такой настройке Spamassassin (если он ле имени черного.
запущен) тоже будет использовать этот файл. Поскольку
syslogd не создает отсутствующие файлы, то это придется «Серый» режим
сделать вручную, после чего нужно отправить сигнал HUP В сером режиме, как было показано выше, белый список
процессу syslogd: применяется явно, в то время как адреса, не представлен-
ные ни в одном из списков, получают серый оттенок и об-
# touch /var/log/spamd.log рабатываются особым образом. Для реализации этого, во-
# kill –HUP `cat /var/run/syslog.pid`
первых, требуется дополнительная таблица и правило пе-
Теперь сообщения от демона spamd будут собирать- ренаправления в /etc/pf.conf:
ся в файле /var/log/spamd.log. На стадии отладки для по-
вышения информативности можно будет запускать spamd table <spamd-white> persist
rdr pass inet proto tcp from !<spamd-white> to ↵
с ключом -v. any port smtp -> 1.2.3.25 port spamd
Типичный вывод выглядит следующим образом:
Jul 7 07:39:49 konst spamd[23]: 1.2.3.4: connected (2/2), lists: korea
В итоге соединения, источник которых не включен в
Jul 7 07:39:55 konst spamd[23]: (BLACK) 1.2.3.4: <br9@tlcm.ru> -> <kp@test.ru> <spamd-white>, тоже будут перенаправляться на порт 8025. За
Jul 7 07:39:58 konst spamd[23]: 1.2.3.4: From: =?Windows-1251?B?gg6vPv4O3o5ewu?=
Jul 7 07:39:58 konst spamd[23]: 1.2.3.4: To: kp@test.ru формирование белого списка теперь отвечает сам spamd, ди-
Jul
Jul
7
7
07:39:58
07:39:58
konst
konst
spamd[23]:
spamd[23]:
1.2.3.4: Subject: =?Windows-1251?B?wg6vPv4O3o5ewu?=
1.2.3.4: Body: <head> намически добавляя нужные адреса в таблицу <spamd-white>.
Jul
Jul
7
7
07:39:58
07:39:58
konst
konst
spamd[23]:
spamd[23]:
1.2.3.4: Body: <title></title>
1.2.3.4: Body: </head>
За черный список по-прежнему отвечает spamd-setup.
Jul 7 07:39:58 konst spamd[23]: 1.2.3.4: Body: <body bgcolor="#FFFFFF"> Обратите внимание, что адреса, занесенные в белые
Jul 7 07:39:58 konst spamd[23]: 1.2.3.4: Body: <p align="center">
Jul 7 07:39:58 konst spamd[23]: 1.2.3.4: Body: <p align="right"> списки spamd.conf, лишь исключаются из черных. То есть
spamd будет воспринимать их как серые.
Jul 7 07:39:58 konst spamd[23]: 1.2.3.4: disconnected after 9 seconds. lists: korea
То есть здесь можно найти информацию о времени уста- Во-вторых, чтобы spamd запустился в сером режиме,
новления и разрыва соединения, а также об отправителе и используется ключ «-g», который нужно указать в файле
получателе сообщения. Кроме того, в лог-файл (в режиме /etc/rc.d в строке pfspamd_flags:
подробного вывода, настраиваемого опцией -v) выводятся
заголовок и несколько первых строк тела сообщения. pfspamd _ ßags="-g –G 25:4:864 -v"
Если для протоколирования работы spamd вы исполь-
зуете отдельный файл, то не забудьте добавить для него Необязательный ключ «-G» задает временные интерва-
правило ротации в /etc/newsyslog.conf. лы соответственно для pastime, greyexp и whiteexp. Здесь же
можно добавить ключ «-v», чтобы на период отладки полу-
Нормальный режим чать более подробную информацию о работе фильтра.
В нормальном режиме spamd используется только для за- Возможно, я что-то упустил в процессе настройки, но
держки спам-трафика, поэтому перенаправление выполняет- при включении серого режима на экран стали выводиться
ся лишь для адресов, занесенных в черный список. Белые спи- такие сообщения об ошибке:
ски используются для удаления адресов из черных списков.
Например, рассмотрим такой конфигурационный файл: pfctl : /dev/fd/7: No such file or directory
18
безопасность
на Python несложный скрипт, который будет заносить белые # cat wl.txt
адреса в базу /var/db/spamd из текстового файла:
10.10.29.192/29
1.2.3.4/33
Листинг 1. Сценарий a2w.py
if errcnt:
print 'WARNING: executed with errors (see above)'
… поставить точку
Итак, мы рассмотрели работу пакета spamd в системе
Приведенный сценарий считывает данные из текстово- FreeBSD. Используемый им оригинальный подход к реше-
го файла, передаваемого как аргумент командной строки, и нию проблемы спама в ряде случаев оказывается весь-
заносит их в базу spamdb, используя команду /var/local/sbin/ ма эффективным. К тому же можно порадоваться, что
spamdb -a. Формат текстового файла не допускает коммента- теперь не только спаммеры могут портить нам жизнь –
риев, пустых строк и т. д. Он может содержать только IP-адре- есть инструмент, с помощью которого можно ответить
са или подсети в формате CIDR, по одной записи в строке: им тем же.
20
безопасность
воляющего пользователям менять свой пароли в Kerberos. Контроль доступа к kadmind и управлению пользовате-
Принципал kadmin/hprop, также создаваемый при инициали- лями Kerberos обеспечивается списками, хранящимися в
зации Kerberos, используется при синхронизации баз данных файле /var/heimdal/kadmin.acl. Разумная политика – предо-
между дополнительными и основным контроллерами секто- ставить администратору (admin/admin) полный контроль по
ра Kerberos, и в нашем случае он не актуален. С помощью ко- управлению записями Kerberos, а всем остальным – позво-
манда add в эту вновь созданную базу записываются пользо- лить лишь менять свои пароли. Для такой цели достаточно
ватели и сервисы. В данном случае добавляются пользова- иметь такой acl-файл:
тели – администратор Kerberos (admin/admin), еще один ря-
довой пользователь (mike) и принципал для компьютера, на admin/admin@MYREALM.RU all
*@MYREALM.RU cpw
котором работает контроллер Kerberos (host/kdc.myrealm.ru).
В отличие от первых двух случаев для сервиса пароль вы- Для проверки работоспособности сервера Kerberos по-
бирается случайным образом (ключ – random-key), посколь- пробуйте аутентифицироваться на нем (как администра-
ку знать его ни администратору Kerberos, ни тем более ря- тор) и посмотреть содержимое его баз данных:
довым пользователям необязательно. Затем этот ключ из-
влекается из базы данных Kerberos (команда ext) и дописы- kinit -p admin/admin
kadmin
вается в файл /etc/krb5.keytab. Керберизованные серверные kadmin> list *
программы знают, что их «пароли» записаны в этом файле и
при подключении клиента (см. схему работы Kerberos, изло- На этом установку сервера Kerberos можно считать за-
женную выше) могут извлечь свой пароль оттуда. В данном конченной. Настройка же клиентов для использования это-
случае права root для запуска kadmin необходимы, посколь- го сервера различается в случае рабочей станции и серве-
ку в результате помимо файла /etc/krb5.keytab в папке /var/ ров приложений. Разберем два случая – настройку только
heimdal, куда запись простым пользователям запрещена, со- сервера (компьютера, предлагающего сетевые сервисы)
здается файл heimdal.db с паролями принципалов. и только рабочей станции (которая не предлагает никаких
Теперь все готово для запуска сервера kdc. Если по- сервисов и предназначена только для локальной работы).
сле команды:
Настраиваем серверные программы
/usr/libexec/kdc -c /etc/krb5.conf --detach Настройка серверов приложений достаточно проста (при
условии, что на сервере работает UNIX-подобная система).
в log-файле появились сообщения вида: Во-первых, устанавливайте дистрибутив Heimdal, как опи-
сано выше. Этого уже достаточно, чтобы компьютер (пред-
2005-03-15T23:43:46 listening on IPv4:127.0.0.1 port 88/udp
2005-03-15T23:43:46 listening on IPv4:127.0.0.1 port 88/tcp
положим, что его сетевое имя server.myrealm.ru) работал как
клиент Kerberos, нужно только скопировать файл krb5.conf
значит, сервер успешно стартовал и можно переходить к с сервера Kerberos на настраиваемый компьютер. Конфи-
запуску сервера удаленного администрирования kadmind гурационный файл можно не редактировать – приведенный
(749/tcp-порт) и службы смены паролей kpasswdd (464/udp- выше файл подойдет как для серверов, так и рабочих стан-
порт). ций. Кроме того, как уже говорилось, на хосте с сетевыми
сервисами должен присутствовать файл /etc/krb5.keytab с
/usr/libexec/kadmind набором ключей для этих сетевых служб (точнее, для при-
/usr/libexec/kpasswdd
нципалов Kerberos, соответствующим этим сетевым служ-
Хотя для смены паролей можно использовать программу бам). Также сервису должно быть известно имя принципала,
kadmin (/usr/sbin/kadmin passwd mike), но для пользователей который представляет его в Kerberos. Как правило, этот па-
более удобно проделать то же самое с помощью утилиты раметр настраивается для каждого сервиса индивидуально
kpasswd, которая подключается к службе kpasswdd. (с помощью конфигурационных файлов) или используют-
Поскольку сервис kadmind нужен не очень часто (при ся какие-то фиксированные значения. В любом случае вам
добавлении/удалении принципалов), то имеет смысл ис- придется изучить документацию, предлагаемую разработ-
пользовать его вызов в сервере inetd (xinetd). Для этого чиками программы. Как уже говорилось ранее, для серви-
вам, во-первых, нужно убедиться, что ссылки на сервисы, сов используются имена, состоящие из трех компонентов –
собранные с поддержкой Kerberos (и kadmind в том числе) поле instance содержит сетевое имя компьютера, а основ-
присутствуют в файле /etc/services. Необходимые для это- ное имя обозначает тип предлагаемого сервиса. Предпо-
го данные содержатся в файле heimdal-0.6.3/etc/services. ложим, вы хотите установить все сервисы, входящие в дис-
append в дистрибутиве heimdal. Во-вторых, нужно добавить трибутив Heimdal (telnet, ftp, несколько r*-служб). Для этого
запись, касающуюся сервера удаленного администрирова- регистрируйтесь в Kerberos как администратор, добавляе-
ния, в файл /etc/inetd.conf и перeзапустить inetd. те принципалов host/server.myrealm.ru@MYREALM.RU, ftp/
server.myrealm.ru@MYREALM.RU и извлекаете их ключи в
kerberos-adm stream tcp nowait root ↵ локальный /etc/krb5.keytab файл.
/usr/libexec/kadmind kadmind
22
безопасность
Для рабочих станций под управлением Windows2000/
XP получить такую же функциональность несколько слож-
нее. Во-первых, авторы Heimdal не предлагают свой про-
дукт в виде стандартного Windows-приложения, и Heimdal
может работать только в Cygwin-окружении (www.cygwin.
com) – эмуляторе POSIX-системы для Windows. Вы можете
установить Cygwin целиком с помощью установщика, ко-
торый можно скачать с сайта cygwin и затем скомпилиро-
вать исходный код Heimdal. Гораздо проще, однако, взять
уже готовые бинарные пакеты Heimdal и урезанную вер-
сию Сygwin с ftp-сервера Стокгольмского университета:
ftp://ftp.pdc.kth.se/pub/heimdal/binaries/i386-pc-cygwin/latest
<http://www.cygwin.com/>. Поскольку Cygwin для приложе-
ний, запущенных в нем, выглядит как полное UNIX-окруже-
ние, то дальнейшая конфигурация ничем не отличается от
установки под Linux.
После установки Cygwin и Heimdal пользователь по край-
ней мере может аутентифицироваться на сервере Kerberos,
запустив терминал Cygwin и введя команду kinit. Получен-
ный сертификат в дальнейшем может быть использован
клиентскими программами из дистрибутива Heimdal (ftp,
telnet и т. д.).
При этом остаются две проблемы – заставить Heimdal
использовать ваше имя и пароль, введенный при входе в
Windows для аутентификации на сервере Kerberos, и обес-
печить доступ к Kerberos не только для Cygwin, но и Windows-
приложений. К сожалению, только средствами Heimdal эти
проблемы не решаются.
Разберемся со второй проблемой. Хотя библиотеки
Cygwin, и библиотеки Heimdal в том числе, являются стан-
дартными, динамически линкуемыми библиотеками Win-
dows, но использование их для приложений Windows не-
возможно (подробнее об этом написано на сайте cygwin –
http://cygwin.com/faq.html). Поэтому для Windows-приложе-
ний есть две возможности – или использовать API предла-
гаемой самой Windows, или использовать библиотеки MIT-
Kerberos, которые доступны в Windows-версии, но при этом
бесполезны для Cygwin-приложений. Возникает вопрос –
какие из библиотек лучше установить на свой компьютер?
Правильный ответ – ставить все! Пакет Support Tools от Mi-
crosoft [3] включает в себя две утилиты ksetup и kpasswd, с
помощью которых можно настроить получение начальных
сертификатов Kerberos при входе пользователя на рабочую
станцию, а пакет Kerberos-For-Windows от МТИ [5] позволя-
ет обеспечить доступ к этим сертификатам как для библи-
отек MIT-Kerberos, так и Heimdal.
Так что начнем с настройки керберизованного входа в
Windows. Я использую WindowsXP-Pro без сервиспаков, но
тот же метод работает и для более новых версий Windows.
Установка Support Tools не должна вызвать затруднений.
Затем вам нужно добавить принципала для этой машины
(для определенности назовем ее xp.myrealm.ru) в базу дан-
ных Kerberos. Сделать это можно, например, из терминала
Cygwin (я полагаю, что вы уже настроили Heimdal в нем), но
в отличие от рабочих станций, под управлением LInux вам
нужно будет придумать пароль для этого компьютера:
kinit admin/admin
kadmin
kadmin>add -pw passwordforWinXP host/xp.myrealm.ru@MYREALM.RU
24
безопасность
У MIT-Kerberos в дефолтной установке используется кэш в зовать именно ее библиотеки. При этом поддержка Heimdal
памяти, но его можно настроить на использование диско- тоже может быть реализована авторами программы. Хотя
вого файла. Сделать это можно с помощью установки пе- заголовки функций Heimdal практически повторяют функции
ременной окружения Windows (KRB5CCNAME) и записей MIT-Kerberos, но структуры данных существенно различны.
в реестре Windows HKCU\Software\MIT\Kerberos5\ccname, Поэтому перелинковка приложения, разработанного под MIT
HKLM\Software\MIT\Kerberos5\ccname. Системой использу- Kerberos c библиотеками Heimdal, даже если у вас получится
ется первое непустое значение в этой последовательнос- это проделать, скорее всего, приведет к некорректной рабо-
ти или значение по умолчанию – «API:». Я использую bat- те приложения. Таким образом, модификация кода приложе-
файл, запускаемый при входе в Windows, который устанав- ния, пусть и небольшая, неизбежна в любом случае.
ливает переменную окружения KRB5CCNAME на название Это замечание особенно актуально для Windows. Мно-
файла, используемого Heimdal, и затем перемещает сер- гие керберизованные приложения, разработанные под
тификат Windows в этот файл утилитой ms2mit. Для каж- UNIX-системы, можно использовать в Windows в среде Cyg-
дого из пользователей Windows этот файл свой, поскольку win, поскольку для авторов портирование под Cygwin дает-
значение KRB5CCNAME зависит от идентификатора этого ся легче, чем перелицовывание программы под полноцен-
пользователя в Сygwin-окружении. ное Windows-приложение. Единственная реализация Ker-
beros, доступная для такого рода программ, – это Heimdal,
set KRB5CCNAME = FILE:C:\Cygwin\tmp\krb5cc _ 1017 и вам следует убедиться, что интересующее вас приложе-
ms2mit
ние поддерживает Heimdal. Удивительно, хотя MIT-Kerberos
То же самое вы можете проделать с помощью програм- и разрабатывается под UNIX-системы, но в Cygwin-окруже-
мы Leash32 (меню «Action → Import Ticket(s)/Token(s)»), так нии он неработоспособен.
же как просматривать/удалять имеющиеся сертификаты Исключением является ситуация, когда приложение ис-
и настраивать кэш сертификатов (меню «Options → Kerbe- пользует Kerberos не напрямую, а через интерфейс GSSAPI.
ros v5 Properties Dialog»). Примером такого приложения является ftp из дистрибути-
Здесь имеется еще одна ловушка, заботливо расстав- ва Heimdal. GSSAPI (Generic Security Service Application Pro-
ленная компанией Microsoft. Для большей безопасности в gram Interface) – это интерфейс, обеспечивающий стандар-
установке по умолчанию Support Tools экспорт начального тизованный доступ к функциям аутентификации Kerberos.
сертификата из памяти Windows запрещен, что делает его Как MIT-Kerberos, так и Heimdal предлагают свои реализа-
использование бесполезным для MIT-Kerberos и Heimdal. ции GSSAPI, поэтому в данном случае обе библиотеки ока-
К счастью (точнее, благодаря давлению со стороны разра- зываются полностью взаимозаменямыми.
ботчиков из MIT), Microsoft оставила ключи в реестре, с по- На этом установку Kerberos в гетерогенной сети можно
мощью которых можно снять этот запрет. Так что, для то- считать завершенной. В итоге вы можете управлять регис-
го чтобы утилита ms2mit работала, в реестре должны быть трационной информацией пользователей из одного места
установлены значения: (сервера kdc). Ваши пользователи получают регистрацию
в секторе Kerberos при входе на свои рабочие станции, про-
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters зрачный доступ к компьютерам внутри сети с помощью ко-
AllowTGTSessionKey = 0x01 (DWORD)
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos манд telnet и rsh, удаленный доступ к файлам при помощи
AllowTGTSessionKey = 0x01 (DWORD) ftp и rcp, шифрованный канал доступа к X-серверам. Ра-
зумеется, количество керберизованных сервисов не огра-
ничивается только службами из состава Heimdal, но уста-
Заключение новка и конфигурирование других сервисов требует отде-
Еще несколько слов о совместимости различных версий льного обсуждения.
Kerberos. Как вы могли только что убедиться, билетики,
получаемые от сервера Heimdal, работают во всех верси- Литература, ссылки:
ях клиентов Kerberos (Microsoft, MIT, Heimdal). То же самое 1. Кондрин М. Изучаем принципы работы Heimdal Ker-
верно, если бы в качестве сервера использовался KDC от beros. – Журнал «Системный администратор», №6,
MIT. Пример же использования библиотеки MIT-Kerberos 2005 г. – 56-59 с.
в домене Windows 2000 c Active Directory, где реализован 2. Платов М. Атомные часы на вашем столе. – Журнал «Си-
сервер Kerberos от Microsoft, разобран в статье [7]. Так что стемный администратор», №4, 2004 г. – 16-21 с.
на уровне протокола совместимость между реализация- 3. http://www.microsoft.com /downloads /details.aspx?
ми удовлетворительная. В то же время на уровне API сов- familyid=49AE8576-9BB9-4126-9761-BA8011FABF38&dis
местимость даже между Heimdal и MIT Kerberos оставля- playlang=en.
ет желать лучшего. 4. http://web.mit.edu/kerberos/www/dist/kfw/2.6/kfw-2.6.5/
Для того чтобы приложение (клиент или сервер) могло MITKerberosForWindows-2.6.5.exe.
использовать Kerberos, соответствующая поддержка долж- 5. http://web.mit.edu/kerberos/www/dist/kfw/2.6/kfw-2.6.5/
на быть заложена в код программы. Реализация протоко- MITKerberosForWindows-2.6.5.exe;
ла Kerberos c нуля сложна, поэтому, как правило, приложе- 6. http://web.mit.edu/kerberos/www/dist/kfw/2.6/kfw-2.6.5/kfw-
ние использует динамические библиотеки Kerberos. Реали- 2-6-5.zip.
зации от MIT пользуется большей популярностью, поэтому, 7. Гребенников Р. Танцуем самбу. – Журнал «Системный
скорее всего, интересующее вас приложение будет исполь- администратор», №11, 2004 г. – 32-38 с.
АЛЕКСЕЙ БАРАБАНОВ
Сегодня мы рассмотрим настройку открытой версии Kerberos Heimdal для работы с OpenLDAP
в качестве хранилища учетных данных. Такое решение позволит вам создать однородную
информационную среду для обеспечения процесса аутентификации и авторизации
пользователей в Linux.
С
истемы аутентификации на основе стандартов Ker- тентификации и авторизации тоже в таком случае не мо-
beros все чаще используются в практических реше- жет производиться единым образом. Напрашивается оче-
ниях. Безусловно, Kerberos обладает массой при- видное решение – разместить обе базы в одном хранили-
влекательных качеств. Но сама по себе аутентификация – ще. В качестве такого хранилища может выступать LDAP.
это «паспорт» несуществующей страны, поскольку всегда Для реализации этой идеи надо обеспечить возможность
успешная аутентификация предполагает следующую фа- для системных средств получать информацию о бюджетах
зу – авторизацию. Если продолжим паспортную аналогию, из базы LDAP, во-первых, и, во-вторых, заставить Kerberos
то именно на стадии авторизации владелец действитель- хранить свои записи о принципалах и соответствующих им
ного «паспорта» получает соответствующие права. Авто- ключах тоже в LDAP. И то и другое уже достижимо.
ризационная база, содержащая перечень данных на каж- Размещение бюджетной информации в LDAP – это отде-
дую снабженную «паспортом» персону должна содержать льная большая тема. Ей посвящено много руководств и да-
еще и данные, позволяющие установить соответствие пер- же учебников. Вы можете воспользоваться рекомендациями
соны и паспорта. Но ведь и база аутентификации, т.е. база из заметок [1] на эту тему. Кроме того, использование LDAP
фактически проверяемых при сопоставлении «паспорта» зачастую является стандартнным для некоторых платформ.
и персоны данных, тоже содержит информацию, частично Поэтому предположим, что данный вопрос уже решен. Вся
продублированную в «паспорте», как минимум имя персо- дальнейшая работа будет производится в среде SuSE Linux с
ны. Возвращаясь к информационным технологиям, далее уже настроенным хранением бюджетов в OpenLDAP, напри-
будем называть набор прав к «паспорту» бюджетом, как это мер, так как это сделано согласно требованиям Samba PDC.
принято в практике администрирования, а персону с «пас- Теперь к такой системе добавляем Kerberos. Воспользуем-
портом» – принципалом, как это принято в Kerberos. ся открытой версией Kerberos, что поставлялась в SuSE до
Итак, если информация о бюджетах хранится в одной версии 9.3 – Heimdal. С версии 9.3 в SuSE произошел пере-
базе, а информация о принципалах в другой, то получает- ход на Kerberos от MIT, в опциях настройки которого отсутс-
ся, что для нормального функционирования неразрывно- твует возможность работы с LDAP, поэтому далее эту реа-
го механизма аутентификации и авторизации необходи- лизацию Kerberos не будем рассматривать.
мо поддерживать обе базы, обеспечивать их связанность, Итак, в OpenLDAP уже хранятся аутентификационные
иметь для каждой собственное средство управления досту- данные, соответствующие системным службам в атрибуте
пом. Кроме этого, архивирование информации системы ау- userPassword, аутентификационные данные, соответствую-
26
безопасность
щие Samba в атрибутах sambaLMPassword и sambaNTPass- Удивительно, но все собралось вопреки предупрежде-
word. Если в систему добавится Kerberos, то дополнительно ниям SuSE-гуру. Устанавливаем полученное.
каждому бюджету будет сопоставлены данные о принци-
пале Kerberos. Это тот же пароль и права на участие в от- # rpm -Uvh --force /usr/src/packages/RPMS/i586/heimdal-*.rpm
ношениях внутри определенной области Kerberos (Kerbe-
ros realm). Далее рассмотрим настройку Kerberos, работа- Проверяем, что теперь сборка выполнена с поддерж-
ющего с LDAP, по шагам. кой LDAP:
# rpmbuild -ba /usr/src/packages/SPECS/heimdal.spec Разрешим полный доступ через локальный сокет, доба-
..... вив соответствующие строки в настройки ограничений до-
Wrote: /usr/src/packages/SRPMS/heimdal-0.6-67.src.rpm ступа LDAP. Здесь используется специальный подключае-
Wrote: /usr/src/packages/RPMS/i586/heimdal-0.6-67.i586.rpm мый файл slapd.access.conf , содержащий очень грубую на-
Wrote: /usr/src/packages/RPMS/i586/heimdal-devel-0.6-67.i586.rpm
Wrote: /usr/src/packages/RPMS/i586/heimdal-lib-0.6-67.i586.rpm стройку условий доступа. Можно даже сказать так, что эта
Wrote: /usr/src/packages/RPMS/i586/heimdal-tools-0.6-67.i586.rpm настройка носит только учебный характер.
28
безопасность
Проверим настройки специальной программой. Master key:
Verifying - Master key:
kstash: writing key to `/var/heimdal/m-key'
# verify _ krb5 _ conf
30
безопасность
Здесь видно, что в кеше Kerberos для локального кли- Перечислим положительные приобретения:
ента alekseybb лежит билет от krbtgt/OFFICE.LOCALNET, ! Вся аутентификационная и бюджетная информация хра-
выписанный на принципала – администратора sysadmin/ нится в одной базе и, значит, может быть архивирована
admin@OFFICE.localnet. Такой билет называется суперби- единым образом.
лет (в оригинале – Ticket Granting Ticket), поскольку он да- ! Появляется возможность «заморозки» изменений в ба-
ет право на получение билетов на доступ ко всем другим зе Kerberos, что позволяет сделать его работу более на-
принципалам, расположенным в той же области Kerberos. дежной.
В нашем случае это список, полученный по команде «list *». ! Появляется второй канал репликации базы Kerberos
Проверим доступ к базе на правах администратора. за счет реплики LDAP. То есть возрастает доступность
(availability) службы KDC.
alekseybb@wsalekseybb:~> /usr/sbin/kadmin
kadmin> list * Теперь подсчитаем отрицательные:
krbtgt/OFFICE.LOCALNET@OFFICE.LOCALNET
kadmin/changepw@OFFICE.LOCALNET
! У KDC появляется зависимость от дополнительной служ-
kadmin/admin@OFFICE.LOCALNET бы, надежность предоставления сервиса которой надо
changepw/kerberos@OFFICE.LOCALNET
kadmin/hprop@OFFICE.LOCALNET
гарантировать теперь вдвойне.
default@OFFICE.LOCALNET ! Хотя использование мастер-ключа не позволяет вскрыть
sysadmin/admin@OFFICE.LOCALNET
kadmin> exit
или подменить ключи принципалов, но гарантия того, что
они не будут простого уничтожены, теперь лежит на дру-
Теперь снова заглянем в кеш билетов. гом сервисе и его настройках. Значит, в подобной схеме
хранения надежность определяется по наислабейшему
alekseybb@wsalekseybb:~> klist компоненту. Скорее всего, таким нужно считать LDAP.
Credentials cache: FILE:/tmp/krb5cc_500
Principal: sysadmin/admin@OFFICE.LOCALNET Во всех руководствах по созданию KDC записано тре-
Issued Expires Principal бование размещать KDC на отдельном хосте, который бо-
Jun 11 02:14:33 Jun 11 12:15:57 krbtgt/OFFICE.LOCALNET@OFFICE.LOCALNET
Jun 11 02:14:47 Jun 11 03:14:47 kadmin/admin@OFFICE.LOCALNET
лее ничем не может быть занят. Ну разве что SSH для ад-
министрирования. Но здесь же основанием для сочетания
Кроме супербилета, там появился второй билет, полу- Kerberos и LDAP главными были мотивы интегрального ха-
ченный на основании универсального и предназначенный рактера. С другой стороны, есть успешный пример такой
для доступа к принципалу kadmin/admin@ OFFICE.LOCAL- интеграции – разработка фирмы Microsoft под названием
NET. Оба билета выданы на «имя» sysadmin/admin. ActiveDirectory. Конечно, вопросы безопасности нужно про-
Значит, работает. Удостоверимся в том, что Heimdal не рабатывать очень тщательно и применительно к конкретно-
модифицирует в процессе аутентификации записи в базе. му составу приложений, которые будет обслуживать LDAP.
Для этого есть много способов, но достаточно более вни- Поскольку если в общей директории хранится еще и инфор-
мательно просмотреть записи в самой базе. мация Kerberos, то надо будет оградить ее от потенциаль-
но небезопасных приложений.
alekseybb@wsalekseybb:~> /usr/sbin/kadmin Ну и последнее соображение. Как следует из материа-
kadmin> list -l kadmin/admin лов работы [5], использование LDAP в качестве хранилища
Principal: kadmin/admin@OFFICE.LOCALNET увеличило среднее время обработки запроса с 8 мс до 2.4 с,
Principal expires: never
Password expires: never то есть почти в 300 раз. Конечно, измерения проводились
Last password change: never
Max ticket life: 1 hour
на области, содержащей 1000 принципалов, и на не очень
Max renewable life: 1 hour сильном компьютере. Но даже с поправкой на закон Мура
Kvno: 1
Mkvno: 0
надо учитывать фактор снижения производительности при
Policy: none переводе системы на подобную конфигурацию.
Last successful login: never
Last failed login: never
Failed login count: 0 Ссылки:
Last modified: 2005-06-10 20:04:12 UTC
Attributes: requires-pre-auth
1. Заметки по настройке размещения пользовательских
Keytypes(salttype[(salt-value)]): des-cbc-crc(pw-salt), бюджетов в LDAP: http://www.barabanov.ru/arts/LDAPre-
des-cbc-md4(pw-salt), des-cbc-md5(pw-salt), des3-cbc-sha1(pw-salt)
kadmin> exit
marks-2.pdf.
2. Домашний сайт проекта Heimdal: http://www.pdc.kth.se/
Видно, что поля с указанием времени последней ау- heimdal.
тентификации и прочие не установлены. Точно также 3. Схема для размещения информации Kerberos в LDAP:
можно убедиться в отсутствии модификаций по файлу- http://www.barabanov.ru/arts/kerberos_over_ldap/krb5-kdc.
реплике LDAP, в который должны заноситься все такие schema.
операции. 4. Лидер в области разработок АиА с использованием
LDAP: http://www.padl.com.
Взвесим «за» и «против» 5. Different database methods in Heimdal. Assar Westerlund,
Итак, давайте взвесим, какие преимущества достигаются Swedish Institute of Computer Science: http://www.chips.
комбинацией Kerberos и LDAP. Быть может, не стоило все chalmers.se/Chips/conference/made2000/presentations/
это и городить. danielsson.et.al.pdf.
МИХАИЛ ПЛАТОВ
В прошлой статье [1] мы познакомились с основными возможностями Asterisk PBX,
настроив небольшую мини-АТС, работающую по протоколу SIP. Сегодня мы значительно
расширим ее функциональность, добавив поддержку протокола H323 и обеспечив связь
с городской сетью.
Альтернативный межгород Что же выбрать? Ответ на этот вопрос нужно искать ис-
В прошлый раз мы предоставили нашим пользователям воз- ходя из конкретных задач.
можности дешевой междугородной связи. Для этого мы под- Если вы используете STABLE-версию Asterisk, то вариан-
ключили наш сервер к сети одного из провайдеров по «род- ты ограничиваются первыми двумя представителями. При
ному» для Asterisk протоколу SIP. Однако, как показывает этом, если планируемое количество одновременных звон-
практика, провайдеры в большинстве своем не спешат пере- ков, совершаемых через H323, достаточно велико, то бо-
ходить на SIP и при предоставлении своих услуг продолжают лее предпочтительным будет chan_h323, если желательна
использовать более традиционный H323. Сильно расстраи- более «качественная» реализация H323, то лучше исполь-
ваться по этому поводу не стоит – рано или поздно все рав- зовать chan_oh323.
но все перейдут. А пока этого не произошло, решим эту про- Драйверы chan_ooh323 и chan_woomera можно реко-
блему со своей стороны – установим H323-модуль Asterisk. мендовать к использованию разработчикам и «очень про-
На данный момент мне известно о существования четырех двинутым пользователям», желающим заглянуть в за-
различных H323-драйверов (см. таблицу 1)для Asterisk: втрашний день (H323 и SIP поверх IPv6 и т. д.). Для наших
! chan_oh323 – исторически первый H323-драйвер для же задач возможностей chan_h323 или chan_oh323 будет
Asterisk. При работе использует RTP-стек библиотеки более чем достаточно. Определенности ради будем счи-
OpenH323, со всеми вытекающими отсюда последствиями тать, что мы выбрали chan_oh323, хотя приведенные ни-
(поддерживаемые кодеки, стабильность, совместимость). же настройки с небольшими изменениями будут работать
Поддерживается компанией inAccess Networks [2]. и с chan_h323.
! chan_h323 – отличительной особенностью данного драй-
вера является более тесная интеграция с Asterisk (ис- Устанавливаем chan_oh323
пользуется Asterisk-реализация протокола RTP), что поз- Для канальных драйверов Asterisk отсутствуют готовые би-
воляет достичь большей производительности по сравне- нарные пакеты, поэтому воспользуемся единственно воз-
нию с chan_oh323. Платой же за это является несколько можным способом установки – компиляцией из исходно-
меньшая функциональность. Так, например, chan_h323 го кода.
не имеет собственного буфера дрожания (jitter buffer) [3], При этом будем использовать машину следующей кон-
а также не поддерживает некоторые кодеки. фигурации:
! chan_ooh323c – драйвер компании Objective Systems ! CPU AthlonXP 1500+
Inc [4], основанный на их открытом H323 стеке – Objec- ! MB Epox 8KHA+ (VIA KT266A)
tive Open H.323 for C. И хотя количество поддерживае- ! 512 Мб RAM
мых кодеков и H323-настроек несколько меньше, чем у ! HDD 40 Гб IDE Samsung
конкурентов, драйвер вполне можно использовать. На ! Gentoo Linux Linux 2005.0 (ядро 2.6.12, gcc 3.4.3 и
данный момент статус драйвера – «beta», но со слов glibc 2.3.4)
разработчиков, модуль в скором времени должен вой-
дет в состав официальной версии Asterisk. Нам понадобятся следующие версии программ и биб-
! chan_woomera – драйвер, позволяющий связать Asterisk лиотек:
с сервером Woomera. На данный момент через woomera ! pwlib 1.6.6
можно совершать только H323-звонки, хотя в будущем ! openh323 1.13.5
разработчики обещают обеспечить поддержку универ- ! chan_oh323 0.6.6
сального уровня абстракции OPAL. ! Asterisk 1.0.9
32
администрирование
Таблица 1. Сравнение H323-драйверов для Asterisk
Очень большое количество проблем при установке ка- стройку, а также внести соответствующие изменения в но-
нальных драйверов H323 возникает именно из-за исполь- мерной план.
зования других версий pwlib и openh323. Кроме того, у не- Параметры chan_oh323 хранятся в файле /etc/aster-
которых людей наблюдались трудности при использова- isk/oh323.conf. Итак, в контексте [general] определим сле-
нии готовых бинарных пакетов, входящих в состав у неко- дующие параметры (для остальных оставим значения по
торых дистрибутивов. умолчанию):
Взять нужные версии лучше всего с сайта inAccessNet-
works (к сожалению, у меня не получилось собрать openh323 с [general]
listenAddress=IP _ адрес _ интерфейса
сайта inAccessNetworks, поэтому я взял эту же версию библи- fastStart=yes
отеки из репозитория исходных кодов Gentoo) [5, 6, 7]. Итак, inBandDTMF=yes
gatekeeper=IP _ адрес _ GateKeeper
загружаем чуть меньше 4 Мб исходных кодов в /root/src/oh323 gatekeeperPassword=secret
и переходим к установке. Начинать необходимо с pwlib. context=generic-inc
# cd ..
# tar xfz ./asterisk-oh323-0.6.6.tar.gz
# cd ./asterisk-oh323-0.6.6
# make
# make install
Настраиваем chan_oh323
Прежде чем приступить к использованию chan_h323 в As-
terisk, нам необходимо предварительно произвести на- Рисунок 1. Список загруженных модулей Asterisk
34
администрирование
или их клоны) по-прежнему можно купить по цене 10-15$. Первая строчка означает, что для платы 1 необходи-
К сожалению, в России софт-модемы на нужных чипсетах мо использовать сигнализацию FXS loop-start (в Asterisk
не продаются в широкой рознице (у нас более популяр- для плат FXO используется сигнализация FXS, и, наобо-
ны модемы на микросхемах Conexant и Lucent, а не Intel и рот; если при указанных настройках сервер не будет опре-
Motorola), поэтому я заказал эту плату (X101P) через Ин- делять сигнал «занято», попробуйте другие разновиднос-
тернет [10, 11]. Итак, вставим модем в компьютер и на- ти fxs-сигнализации: fxs_ks, fxs_gs). Если плат в системе
строим его с Asterisk. несколько (например, две), то в первой строчке нужно на-
Первое, что нам необходимо сделать, – убедиться, что писать fxsks=1-2.
модем определился системой. Для этого выполним ко- Строки 2 и 3 определяют параметры телефонной сети
манду: для используемого оборудования (частоты тоновых сигна-
лов, их длительность и т. д.). К сожалению, в списке доступ-
# lspci ных стран России нет, поэтому, для того чтобы в вашем кон-
кретном случае все заработало, возможно, придется пере-
Если среди вывода этой утилиты присутствует строч- брать несколько стран. Список всех доступных вариантов
ка, похожая на эту: проще всего посмотреть в исходном тексте – файл zoneda-
ta.c библиотеки zaptel.
0000:00:09.0 Network controller: Tiger Jet Network Inc. Intel 537
Следующим шагом при настройке нашего сервера яв-
можете считать, что ядро Linux PCI-плату увидело и можно ляется определение параметров карты в файле /etc/aster-
пробовать загружать ее драйверы: isk/zapata.conf. Выбор значения того или иного парамет-
ра определяется конкретной АТС, к которой мы подклю-
# modprobe zaptel чаем Asterisk. Как известно, в России могут встречаться
# modprobe wcfxo
различные типы АТС. Привести универсальную конфигу-
Если модули загрузились без ошибок, то в /var/log/mes- рацию, подходящую для всех случаев жизни, достаточно
sages мы увидим следующее: сложно, поэтому ограничимся описанием двух наиболее
типичных – с импульсным набором (для старых АТС), с то-
Found a Wildcard FXO: Generic Clone
новым набором (для более-менее новых АТС). Итак, вна-
Данная строчка является лучшей иллюстрацией того, чале определим общие параметры, подходящие практи-
что с «железом» у нас все в порядке. чески для всех АТС:
Однако прежде чем перейти к настройке Asterisk оста-
новимся на еще одном важном моменте. Дело в том, что [channels]
context=[generic-inc]
платы Digium реализуют «телефонный» интерфейс (FXO, signalling=fxs _ ls
FXS, E1, T1) программно (в zaptel-драйвере), используя для group=1
callgroup=1
этого вычислительные ресурсы компьютера (в то время как pickupgroup=1
производители других систем телефонии используют спе- busydetect=yes
busycount=5
циализированные (и более дорогие) сигнальные процессо- channel=1
ры – DSP). При этом ввиду специфики задачи (быстрая об-
работка сигналов) работа с платой ведется в режиме пре- Замечание. Приводимые параметры сгруппированы для
рываний. Поэтому для нормальной работы очень важно на- более удобного изложения. При фактическом редактиро-
строить систему так, чтобы платы Digium ни с кем не дели- вании файла Zapata.conf настоятельно рекомендуется со-
ли одно прерывание, в противном случае возможны ухуд- хранять порядок, принятый в файле.
шения качества звука. Посмотрим, как с этим обстоит си- Итак, мы задали контекст, в который будут попадать все
туация у нас: телефонные звонки, приходящие со стороны ТФОП. Опре-
делили тип сигнализации, используемой Asterisk при рабо-
# cat /proc/interrupts те с FXO-портом.
0: 384085652 XT-PIC timer Кроме того, мы создали группу каналов (состоящую из
1:
2:
287894
0
XT-PIC
XT-PIC
i8042
cascade
одной телефонной линии), включили распознавание сиг-
8: 2 XT-PIC rtc нала «занято» (параметр busycount определяет количест-
9: 0 XT-PIC acpi
10: 181360 XT-PIC wcfxo во коротких гудков, необходимое для того, чтобы Asterisk
11: 48942244 XT-PIC hci_hcd, uhci_hcd, uhci_hcd, eth0 освободил линию), а также разрешили перехват звонков
12: 2690249 XT-PIC i8042
14: 810676 XT-PIC ide0 с ТФОП.
15:
NMI:
699164
0
XT-PIC ide1
Теперь перейдем к параметрам, определяемым в зави-
LOC: 0 симости от возможностей конкретной АТС:
ERR: 0
36
администрирование
избежать. Для этого в консоли asterisk достаточно выпол-
Полезные советы нить следующую команду:
Позвонив на номер 150, мы сможем наговорить необхо- 0 0 * * * root /etc/init/asterisk restart> /dev/nu
димый текст, который будет сохранен в стандартной папке
звуков Asterisk (/var/lib/asterisk/sound) в файле ivrrecording. Восстановление после сбоев
gsm. Прослушать содержимое этого файла можно, позво- Не исключено, что во время работы процесс Asterisk «совер-
нив по номеру 151. шит недопустимую операцию и будет закрыт». (И хотя такая
Помимо записи с помощью Asterisk можно использо- ситуация для STABLE-версии является из ряда вон выходя-
вать специальные утилиты конвертации форматов, напри- щей, не учитывать ее появление для «боевой» системы все
мер sox [12]: же нельзя.) Как это отразится на пользователях?
Думаю, что не нужно быть пророком, чтобы понимать,
# sox inputÞle.wav -r 8000 -c 1 outputÞle.gsm resample -ql что в этом случае связи не будет. Возможным решением
этой проблемы может быть сокращение общего времени
Перезагрузка конфигурации простоя сервиса путем его быстрого перезапуска. Для As-
Как вы могли заметить, после редактирования конфигура- terisk эта возможность является практически стандартной –
ционных файлов мы всегда перезапускали сервер. Действи- достаточно просто для запуска использовать файл asterisk_
тельно для некоторых модулей (например, zaptel и oh323) safe (вместо asterisk). Теперь при «авариях» сервис будет
такая операция обязательна. Однако при незначительных перезапускаться автоматически. В принципе аналогично-
изменениях (добавление нового устройства, изменение но- го результата можно добиться и с помощью простого shell-
мерного плана и т. д.) полного перезапуска сервера можно скрипта, выполняемого по cron.
Для минимальной настройки нам понадобится сконфи- Определим для него следующие параметры:
гурировать два dial-peer (по одному каждого типа), а также
определить правила маршрутизации между ними внутри dial-peer voice 0 pots
destination-pattern 9T
нашего шлюза. POTS dial-peer «привяжем» к FXO-линии, а port 0/0
VOIP dial-peer «настроим» на Asterisk. Звонок из ТФОП на user-name 100
user-password potsfxopwd1
наш сервер будут делаться с помощью донабора внутрен-
него номера. При наборе городских номеров из Asterisk бу- Только что мы сказали, что все звонки, приходящие на
дем добавлять префикс «9» перед исходным номером. шлюз и начинающиеся с номера «9», должны уходить на
Для конфигурирования воспользуемся telnet-интер- первый порт FXO, ассоциированный с dial-peer 0. При звон-
фейсом шлюза. Для этого подключимся к устройству и ках из ТФОП на указанный FXO-порт шлюз будет аутен-
перейдем в интерфейс конфигурирования с помощью ко- тифицироваться на Asterisk с использованием указанных
манды conf: имени пользователя и пароля. Правда, для этого устрой-
ству предварительно необходимо указать, где именно на-
AP200# conf ходится Asterisk, которому будут передаваться звонки из
Enter configuration commands, one per line. End with CNTL/Z ТФОП. Опишем VOIP dial-peer:
AP200(config)#
AP200(conÞg)# dial-peer voice 1000 voip
Создадим POTS-dial-peer с номером 0 (для второго пор- AP200(config-dialpeer-voip-1000)#
та нужно произвести аналогичные действия):
Определим следующие параметры:
AP200(conÞg)# dial-peer voice 0 pots
AP200(config-dialpeer-pots-0)# dial-peer voice 1000 voip
Литература и ссылки:
1. Платов М.В. Asterisk и Linux: миссия IP-телефония. – Жур-
нал «Системный администратор», №6, 2005 г. – 12-19 c.
2. http://www.inaccessnetworks.com/projects/asterisk-
Рисунок 4. POTS и VOIP dial-peer oh323.
Итак, с настройками шлюза мы закончили. Применим 3. Платов М. Что важно знать об IP-телефонии. – Журнал
конфигурацию и перейдем к настройке Asterisk: «Системный администратор», №5, 2005 г. – 20-25 c.
4. http://obj-sys.com/open/index.shtml.
AP200(conÞg)# write 5. http://www.inaccessnetworks.com/ian/projects/asterisk-
Do you want to WRITE configuration ? [y|n] y oh323/Libraries/pwlib-Janus_patch4-src-tar.gz.
Writing configuration....done 6. ftp://ftp.gtlib.cc.gatech.edu/pub/gentoo/distfiles/openh323-
AP200(config)# reboot
System Reboot... v1_13_5-src.tar.gz.
7. http://www.inaccessnetworks.com/projects/asterisk-oh323/
Для того чтобы использовать шлюз из Asterisk, нам по- download/asterisk-oh323-0.6.6.tar.gz.
надобится создать для него учетную запись SIP, а также 8. http://www.voipsupply.com/index.php?cPath=99.
внести необходимые изменения в номерной план. Добавим 9. http:/www.digium.com.
в файл /etc/asterisk/sip.conf следующие строки: 10. http://www.goods2world.com.
11. http://www.iaxtalk.com.
[100] ;AP200 13. http://sox.sourceforge.net.
type=friend
host=dynamic 14. http://www.voip-info.org/tiki-index.php?page=Asterisk+adm
username=100 inistration.
38
администрирование
Free
reeBSD
BSD TIPS: РАБОТАЕМ С TFTP
Для некоторых задач обмена
файлами по сети многие
возможности протокола FTP
оказываются избыточными.
Чтобы не тратить ресурсы
на их поддержку, был
разработан протокол TFTP.
СЕРГЕЙ СУПРУНОВ
П
ротокол TFTP (Trivial File Transfer Protocol – триви- по запросу на чтение или запись, после завершения опе-
альный протокол передачи файлов) благодаря сво- рации оно разрывается. С этой точки зрения TFTP больше
ей предельной простоте довольно часто использу- похож на HTTP, также работающий без поддержания по-
ется в различном оборудовании (маршрутизаторах, ком- стоянного соединения.
мутаторах, модулях DSLAM и т. п.). Его удобно применять В качестве стандартного порта для протокола TFTP
для обмена файлами внутри локальной сети, при необходи- определен порт 69. Основным транспортным протоколом
мости он легко может быть интегрирован в разрабатывае- для TFTP является UDP, однако работа поверх TCP также
мую программу. В последнее время все большую популяр- возможна. Чтобы прочитать файл, на этот порт посылается
ность приобретают бездисковые рабочие станции, перво- запрос на чтение, содержащий код операции (opcode, рав-
начальная загрузка которых выполняется по сети также с ный 1 (RRQ)), имя запрашиваемого файла и режим переда-
использованием протокола TFTP. В данной статье мы рас- чи, который может быть «netascii» или «octet». Стандартом
смотрим реализацию TFTP в системе FreeBSD. также определен режим «mail», предназначенный для пере-
дачи сообщений электронной почты, но он считается уста-
Протокол TFTP (a.k.a. RFC1350) ревшим и не рекомендуется к применению. Эти значения
Сначала коротко рассмотрим сам протокол, как он опреде- соответствуют тому, что обычно именуется «текстовым» и
лен в документе RFC1350. Поскольку главное требование «двоичным» режимами: в режиме netascii предусматривает-
к протоколу – простота, то в нем поддерживается лишь не- ся обработка управляющих символов (например, перевода
обходимый минимум функций: возможность чтения файла строки) в соответствии со стандартами, принятыми на той
с удаленного хоста и записи файла на хост. Протоколом не или иной платформе; в режиме octet данные должны быть
предусматривается ни аутентификация/авторизация поль- переданы в «сыром» виде, без какой-либо обработки.
зователя, ни навигация по каталогам, ни даже просмотр со- В ответ на запрос, если нужный файл существует и до-
держимого каталога. ступен для чтения, сервер отсылает первую порцию дан-
Нет в TFTP и отдельной процедуры соединения, как это ных, содержащую opcode 3 «DATA», номер блока (1) и соб-
происходит в случае с FTP – соединение устанавливается ственно данные. Данные передаются блоками по 512 байт,
40
администрирование
sent WRQ <file=messages, mode=netascii> торым руководствуется inetd, решая, запускать ли соответ-
received ACK <block=65535> ствующий процесс при попытке установить соединение на
sent WRQ <file=messages, mode=netascii>
received ACK <block=65535>
том или ином порту или нет.
Transfer timed out. Если нужно позволить клиентам запись любых файлов,
то рекомендуется использовать опцию -w совместно с -c,
То есть клиент (рассматривается отправка файла), ото- чтобы такая запись была разрешена только с указанных из-
слав блок номер 65535, не может отослать следующий из- вестных адресов. Однако не забывайте о возможности под-
за переполнения счетчика и повторно отправляет запрос на мены IP-адреса отправителя, что открывает возможность
запись WRQ. Сервер же ожидает следующий блок, повто- для атаки типа «Отказ в обслуживании» путем переполне-
ряя периодически подтверждение блока 65535. По истече- ния соответствующей файловой системы.
нии тайм-аута соединение разрывается. При этом переда- Также рекомендуется с файлов, которые предназначе-
ваемый файл сохраняется на сервере частично (он вроде ны только для считывания, снимать права на запись. Если
бы и есть, но попытка его использовать приведет к ошиб- файл требуется записывать на сервер, но он не предназна-
ке). Таким образом, не следует использовать TFTP для об- чен для чтения другими пользователями, можно поставить
мена большими файлами. на него права 222 (-w--w--w-). При включенной опции –w это
можно автоматизировать с помощью ключа «-U mask», кото-
Сервер tftpd рый определяет маску для создаваемых (самим процессом
Несмотря на букву «d» в конце имени, tftpd не является де- tftpd по запросу на запись) файлов. Для описанного выше
моном, его запуск выполняется супердемоном inetd при по- примера следует указать «-U 555» – в этом случае каждый
явлении запроса на порту 69. По умолчанию соответству- созданный по запросу клиента файл получит разрешение
ющая строка в /etc/inetd.conf закомментирована, и для ак- только на запись и не сможет быть никем прочитан (кроме
тивизации сервера комментарий нужно удалить и переза- администратора сервера, разумеется).
пустить процесс inetd.
Все настройки поведения сервера выполняются с по- Обмен файлами
мощью ключей командной строки путем редактирования с маршрутизатором CISCO
файла /etc/inetd.conf. Наиболее часто используются сле- В качестве примера рассмотрим применение TFTP для со-
дующие опции: хранения на сервер конфигурации с CISCO (например, для
! -s <каталог>: после запуска tftpd установит указанный более удобного редактирования или как резервную копию)
каталог как корневой, используя функцию chroot. Если и последующую загрузку на CISCO с сервера.
не указан пользователь (см. опцию –u), то процесс по- Итак, предполагая, что обмен с CISCO выполняется по
лучает права nobody. изолированной сети 10.100.100.0/24, а интересующие нас
! -c: позволяет привязывать корневой каталог сервера к устройства имеют адреса 10.100.100.1 и 10.100.100.2, запуск
IP-адресу удаленного хоста. Используется совместно с tftpd удобно выполнять со следующими ключами:
опцией –s, указывающей базовый каталог. Например,
если базовый каталог определен как /var/tftp, то при по- tftpd -clw -s /var/tftp/cisco -u tftp
лучении запроса с адреса 1.2.3.4 корневым каталогом
будет являться /var/tftp/1.2.3.4. Если данный каталог от- Создаем каталог /var/tftp/cisco, и в нем две директо-
сутствует, соединение разрывается. рии 10.100.100.1 и 10.100.100.2, владельцем которых дела-
! -C: аналогична ключу -c, но при отсутствии каталога, ем пользователя tftp (создать его придется вручную). Раз-
соответствующего адресу клиента, корневым катало- решаем прохождение соединений на порт 69 с указанных
гом становится базовый. адресов через все запущенные в системе пакетные филь-
! -l: включает режим протоколирования работы, исполь- тры. Теперь после перезапуска inetd (или перезагрузки сер-
зуя syslog (сообщения сохраняются как LOG_FTP). вера) tftpd готов к работе.
! -u <пользователь>: указывается имя непривилегирован- На CISCO копирование на сервер выполняется коман-
ного пользователя, с правами которого будет работать сер- дой copy:
вер после переключения в chroot. Пользователь должен Host>ena
быть задан по имени, использование UID недопустимо. Password:
! -w: разрешает создавать несуществующие файлы по Host #copy running-config tftp:
Address or name of remote host []? 10.100.100.254
запросу на запись. По умолчанию запись файла разре- Destination filename [host-confg]? config
шена только в том случае, если он существует и досту- !!!!!!
пен для записи пользователю, от имени которого рабо- 20693 bytes copied in 1.044 secs (19821 bytes/sec)
ВЛАДИМИР АГАПОВ
И
так, вы – системный администратор. Большой кон- бе начальник и говорит: «хочу». Хочу, чтобы у нас все бы-
торы или маленькой, принципиального значения ло как у людей: и книга адресная единая, корпоративная, и
не имеет. Равно как и то, настроена ли у вас почто- планировщик задач, и календарь событий на месяцы и го-
вая система или это только предстоит сделать в ближай- ды, ну, в общем, все, что только он где-то слышал или, не
шее время. Главное другое: однажды вас вызывает к се- дай бог, видел. Озадаченные этим вопросом, вы возвра-
42
администрирование
щаетесь к себе, попутно думая, а что же проще: настро- ! В связи с тем, что название Windows-домена в AD часто
ить The Bat на работу с LDAP и найти какие-нибудь утили- не совпадает с почтовым доменом, необходимо вклю-
ты, позволяющие получить данный функционал, или снес- чить маскарадинг.
ти The Bat со всех машин, и поставить туда Outlook, закрыв ! Во избежание локальных эпидемий внутреннюю почту
глаза на резко упавшую в этом случае безопасность? По- также необходимо проверять на вирусы.
думав с полчасика, приходим к выводу: придется ставить
Outlook, и не только его, что было бы только половиной бе- Приступим к настройке Exchange
ды, но и Exchange в качестве почтового сервера. Посколь- Запускаем Exchange System Manager:
ку начальнику может прийти в голову и еще что-нибудь не- ! Разворачиваем «Administrative Group → company → Serv-
приличное, типа внутрикорпоративного документооборо- ers → Exchange → protocols SMTP». Открываем свойства
та. Вместо MS Exchange можно, конечно, использовать и default. На закладке «Access» выбираем «Relay Restric-
OpenXchange, Hula, Opengroupware и пр. Но мы остановим- tions» и записываем туда IP-адрес нашего Postfix-сер-
ся на первом варианте. вера. В некоторых случаях может потребоваться ука-
Скорее всего, у вас совершенно нет желания вывеши- зать подсети целиком. Например, в случае использова-
вать наружу машину с установленной на ней ОС Windows ния приложений, напрямую общающихся с SMTP-сер-
и Exchange в придачу. Значит, придется разделить функ- вером.
ции внешнего и внутреннего почтовых серверов. На внут- ! Там же, на закладке «Delivery», выбираем «Advanced»
реннем пусть себе крутится Exchange, а на внешнем пос- и указываем в поле «Smart Host» IP-адрес Postfix-сер-
тавим UNIX-подобную операционную систему и, например, вера в квадратных скобках.
Postfix в качестве почтового сервера. Вот из этих предпо- ! Здесь же, в поле «masquerade domain», указываем наш
сылок и будем исходить. почтовый домен, для того чтобы Exchange отправлял
Поставить и запустить эти два сервера – задача сама всю почту от имени этого домена.
по себе для новичка нетривиальная, но такой вариант нас ! Выбор антивирусного сканера под Exchange я остав-
не устраивает, в нашем случае необходимо, чтобы эти сер- ляю за вами, поскольку почти все крупные производи-
вера взаимодействовали между собой и прозрачно пропус- тели антивирусных продуктов имеют в своих линейках
кали почту в мир и обратно. такие решения.
В результате всех размышлений получается примерно
следующий список задач: Этих настроек на данный момент достаточно. Более де-
1. Установка на все рабочие машины Microsoft Office Out- тальную настройку и конфигурирование оставляю на ва-
look в качестве почтового клиента. ше усмотрение.
2. Установка на первый сервер (exchange) ОС Windows и
Microsoft Exchange (в данном документе будет подраз- Настраиваем Postfix для работы
умеваться версия 2003). с Exchange
3. Установка на второй сервер (gate) ОС из семейства UNIX Определимся, что мы ожидаем от Postfix.
и Postfix (FreeBSD 5.3 и postfix 2.2 соответственно). ! Принимать почту, пересылаемую ему Exchange и от-
4. Настройка Exchange для работы с Postfix правлять ее дальше в мир.
5. Настройка Postfix для работы с Exchange ! Проверять всю входящую и исходящую почту на виру-
6. Дополнительное конфигурирование для поддержки alias сы.
и прочего. ! Проверять всю входящую почту на наличие спама и вы-
ставлять ей соответствующие балы.
Пункты с 1-го по 3-й выходят за рамки обсуждения дан- ! Для экономии трафика необходимо проверять, есть ли
ной статьи, поэтому детально описывать их я не буду, а бо- получатель входящего письма в нашем домене, и в за-
лее подробно остановлюсь на пунктах 4, 5 и 6. висимости от результата либо принимать, либо отвер-
Одно из решений задачи уже было предложено в жур- гать письмо.
нале [1]. Мы же в отличие от него будем использовать ва- ! Пересылать все прошедшие проверку входящие пись-
риант проверки Postfix наличия почтового аккаунта в Win- ма на Exchange.
dows-домене перед приемом почты.
Прежде всего нам потребуется установить Postfix. Об
Настраиваем Exchange для работы этом достаточно много имеется информации в Интернете,
совместно с Postfix поэтому остановлюсь лишь на главных моментах. У нас
Для начала определимся, что именно мы хотим получить есть два варианта установки:
от Exchange в данной конфигурации: ! просто пересылать всю входящую почту внутрь сети, не
! Он должен получать почту, которую будет перенаправ- задумываясь, есть ли такой почтовый пользователь;
лять ему Postfix и доставлять ее в соответствующие по- ! предварительно проверять наличие пользователя в AD
чтовые ящики пользователей. и в случае его отсутствия не принимать почтовое сооб-
! Почта пользователей, отправляемая за пределы доме- щение.
на, должна попадать в Exchange и пересылаться им для
дальнейшей обработки на внутренний интерфейс gate По первому варианту вы можете посмотреть уже упо-
для дальнейшей отсылки ее в мир уже Postfix. минавшуюся здесь статью [1]. Однако я предпочел остано-
44
администрирование
АВТОМАТИЗАЦИЯ MS WINDOWS,
ИЛИ AUTOIT КАК МЕЧТА ЭНИКЕЙЩИКА
ЧАСТЬ 4
Итак, когда диск для автоматической
Итак,
установки уже у вас в руках, надо правильно
его использовать. А после установки рабочей
станции еще и получить отчет. Обо всем этом
в последней, заключительной части статьи
об AutoIt.
АЛЕКСЕЙ БАРАБАНОВ
Полная виртуализация работы ! Перезагрузка и далее снова подключение к рабочему
столу как localadmin.
Если у вас дома в телефоне нет гудка, позвоните ! Рабочая станция включается в домен.
в службу компьютерной поддержки.
Мы можем это починить прямо из офиса.
! Перезагрузка с последующим подключением к рабоче-
му столу как localadmin.
Наконец-то диск с автоматически устанавливаемым Win- ! Выбранный доменный пользователь прописывается на
dows готов. Самое главное, что пользоваться им должны рабочей станции как администратор и назначается в
не системные администраторы, а обычные рядовые со- список удаленного доступа.
трудники обслуживаемых компаний. Такой диск позволя- ! Устанавливается принтер.
ет произвести установку новой станции или переустанов- ! Пользователь localadmin выходит из системы.
ку поврежденной станции без локального участия систем-
ного администратора. Сотрудник, оставшийся без рабоче- Все! Станция готова к работе. Можно перед выходом
го места, должен лишь в общих чертах представлять про- распечатать на локальном принтере приглашение для со-
цесс установки. Ему достаточно поместить диск, заранее трудника приступить к работе. После этого обрадованный
созданный по указанной методе и оставленный для тако- решением его проблем сотрудник прекращает курить и на-
го случая на предприятии, в лоток CD-Rom и произвести чинает работать. А «утомленный» сисадмин переходит к
перезагрузку компьютера, не забыв нажать «any key», что- кофе-брейку, что никак не раздражает его работодателя,
бы активировать загрузку с CD. Единственный раз, когда так как происходит за десятки или даже сотни километров
ему придется проявить самостоятельность, это выбор мес- от кабинета строгого руководителя. Шутка, конечно, но так
та, точнее, раздела, установки. Так как используется рус- или иначе все свои действия сисадмин может выполнять в
сифицированная версия Windows, то все диалоги, опреде- весьма комфортных условиях. Скорее всего, с только что
ляющие выбор, переведены на русский язык и снабжены установленной станции надо будет снять информацию для
комментариями. У меня не было случая, чтобы кто-нибудь отчета или дождаться, когда эта информация поступит в ав-
ошибся разделом. Это ведь так просто – нажать <Enter> и томатизированную систему учета, так как именно для это-
затем <L>. После чего самое главное для окружающих не го была предусмотрена установка snmp и настройка файр-
трогать ни клавиатуру, ни мышку. Установка продолжается вола для доступа из локальной сети. Отчет можно офор-
от 40 минут до полутора часов, в зависимости от мощности мить по вкусу, например, так, как приведено на снимке с
компьютера. В результате будет запущен сеанс Админис- экрана http://www.barabanov.ru/arts/autoit/draw7-8.png, пос-
тратора с уже известным паролем. Вот в этот момент при- ле чего остается его распечатать и заполнить приватной
ходит черед для приложения рук реального сисадмина-аут- информацией. Если одновременно устанавливается боль-
сорсера. Обычно этому предшествует звонок с сообщени- шое число станций, то возможность автоматически полу-
ем, что установка завершена. С точки администрирования чить их характеристики сильно облегчает создание отчет-
через сеть (автор это делает по каналам openvpn или pptp) ности, что уже прямо связано с закрытием работ у заказ-
поднимается подключение к удаленному рабочему столу. чика. Но даже на изолированной рабочей станции можно
И затем неторопливо производится завершение настрой- получить ту же самую отчетность прямо в процессе уста-
ки рабочей станции. Например, так: новки. Например, используя утилиту cpu-z для детектиро-
! Бюджетам Администратор и localadmin устанавливают- вания оборудования с http://www.panopsys.com, «обернув»
ся надежные пароли. ее скриптом на AutoIt, или просто воспользоваться данны-
! Оба бюджета назначаются в список удаленного досту- ми из реестра MS Windows, которые можно считать тем же
па. самым AutoIt, и после форматирования записать в файл с
! Рабочей станции меняется имя на реальное. отчетом. Вариант с cpu-z рассмотрим подробнее.
46
администрирование
При написании этого скрипта опять немного усложним
использованный инструментарий. Обратите внимание, в ко-
манду запуска добавим флаг @SW_HIDE, заставляющий
спрятать окошко с запускаемым командным интерпрета-
тором. Далее все по обычной схеме : запуск → анализ пе-
рехватчика → написание команд. Но в случае с этой про-
граммкой все оказывается не так просто. После выхода на
закладку с кнопкой для генерации отчета в форме html ока-
зывается, что нет способа сделать ее активной с помощью
клавиатурных нажатий. Приходится воспользоваться эму-
ляцией мышиных кликов. Для этого, как показано на рис. 1,
надо определить относительные координаты точки, в кото-
рой должно произойти нажатие мыши.
Эта задача должна иметь решение, независимое от раз-
мера экрана и положения рабочего окна на нем. Для этого
способ указания координат мыши переводим в относитель- Рисунок 1. Определяем координаты точки нажатия
ный, отсчитываемый от верхнего левого угла активного ок-
на режим, задавая параметр «MouseCoordMode», равный 0.
Но координаты курсора, отражаемые в перехватчике, име-
ют абсолютное значение. Поэтому сначала определяем ко-
ординаты точки, соответствующей верхнему левому краю
окна, затем координаты нужной точки и только тогда пере-
водим координаты второй точки в относительные. В нашем
случае получается так: X=455-308=147, а Y=528-116=412.
И именно 147 и 412 надо использовать в программе. Пол-
ный текст программы приведен далее:
AutoItSetOption ( "WinTitleMatchMode", 2 )
AutoItSetOption ( "WinDetectHiddenText", 1 )
AutoItSetOption ( "SendAttachMode", 1 )
; open free desktop
WinMinimizeAll ( )
Sleep ( ‘1000’ )
; run test Рисунок 2. Отчет о завершении установки
Run ( @ComSpec & " /c cpuz.exe", '' ,@SW _ HIDE )
If WinWaitActive ( 'CPU-Z','',10 ) == 0 Then
Exit Для работы этого скрипта нужно скачать с указанного
EndIf сайта утилиту cpu-z и, для того чтобы эта утилита могла за-
Send ( '{RIGHT}' )
Sleep ( '1000' ) пускаться автоматически без указания точного пути до ис-
Send ( '{LEFT 2}' ) полняемого файла, подложить ее в $OEM$/$$/System32.
Sleep ( '1000' )
Send ( '{RIGHT 5}' ) Скрипт, который будет производить запуск, поместить в
Sleep ( '1000' ) $OEM$/$1/InstData в откомпилированном виде. Далее ко-
FileDelete ( @WindowsDir & '\' & @ComputerName & '.html')
AutoItSetOption ( "MouseCoordMode", 0 ) манду запуска запишем в общий командный файл :
MouseClick ( 'left', 147, 412, 1 )
If WinWaitActive ( 'Сохранить как','',10 ) == 0 Then Листинг 2. Вызов программы получения состава оборудования
ProcessClose ( 'cpuz.exe' )
Exit /heap/Windows/uawsp2 # grep cpu-z ↵
EndIf \$OEM\$/\$1/InstData/GuiRunOnce.cmd
Send ( '{DEL}' )
Sleep ( '1000' ) %systemdrive%\InstData\get_cpu-z_info.exe
Send ( @WindowsDir & '\' & @ComputerName & '.html')
Sleep ( '1000' ) По завершении установки будет создаваться отчет по
Send ( '{ENTER}' ) оборудованию в формате html и записываться автоматиче-
If WinWaitActive ( 'CPU-Z','',10 ) == 0 Then
ProcessClose ( 'cpuz.exe' ) ски в файл «Имя рабочей станции.html». Примерно так, как
Exit это показано на рис. 2.
EndIf
Send ( '!{F4}' ) В заключение добавлю, что некоторые тексты, обсуж-
If WinWaitClose ( 'CPU-Z','',10 ) == 0 Then даемые в статье, но не удостоившиеся отдельной ссылки,
ProcessClose ( 'cpuz.exe' )
Exit можно найти в архиве по ссылке 1.
EndIf Hикогда нас не благодарите. Мы любим это, и нам за
If FileExists ( @WindowsDir & '\' & @ComputerName & ↵
'.html') == 1 Then это платят!
; run browser
Run ( @ComSpec & " /c rundll32 url.dll, ↵
FileProtocolHandler " & @WindowsDir & ‘\’ ↵ Ссылки:
& @ComputerName & '.html','',@SW _ HIDE ) 1. Архив исходных текстов: http://www.barabanov.ru/arts/
EndIf
Exit autoit/src.tgz.
АВТОМАТИЗИРУЕМ ПОДКЛЮЧЕНИЕ
БАЗ 1С НОВОЙ ВЕРСИИ 8.0
ИВАН КОРОБКО
48
администрирование
М
ы уже знакомили вас с автоматическим управлени-
ем подключения баз 1С v.7.7 с помощью сценария
регистрации пользователей в сети (см. [1]). Поль-
зователям, которые входили в соответствующие группы
безопасности, сценарий автоматически подключал необ-
ходимые сетевые базы и отключал те, к которым пользо-
ватель не имел прав доступа, при этом подключенные ло-
кальные базы сценарием не затрагивались. С появлением
1С v.8.0 ситуация изменилась: сценарий для подключения
баз 1С v.7.7 не подходит для новой версии 1С, поскольку ин-
формация о подключаемых базах для версии 7.7 хранилась
в системном реестре на рабочей станции, а для версии 8.0 –
в файлах. Сегодня мы подробно рассмотрим механизм под- Рисунок 2. Браузер 1С
ключения баз 1С v.8.0, ее итогом будет сценарий, который
в автоматическом режиме управляет подключением сете- тивном случае данные в браузере 1С будут отображаться
вых баз, записи, соответствующие в браузере локальным некорректно либо не будут отображаться вовсе.
базам, будут перенесены в отдельную папку.
Управляем текстовыми файлами
Выбираем язык программирования в кодировке utf-8
Для создания сценариев регистрации пользователей сущес- Объект FSO, традиционно используемый для создания тек-
твует множество языков, однако остановим свой выбор на стовых файлов, не подходит, поскольку он не поддержива-
KIXTart. Этот язык является стандартным языком програм- ет требуемой кодировки (utf-8). Для решения поставленной
мирования сценариев компании Microsoft. Его дистрибутив задачи предлагается использовать объект ADODB.Stream.
можно найти в Microsoft Resource Kit или бесплатно загру- Управление текстовыми файлами подразумевает чтение и
зить последнюю версию из сети Интернет (http://kixtart.org). запись данных в файл. Приведу два соответствующих при-
Подробное описание функционала языка можно найти на мера. Чтение данных из текстового файла:
этом же сайте.
Замечание: сценарии, созданные вами ранее на VB- $Stream = CreateObject("ADODB.Stream")
$Stream.Type =2
Script, Jscript, могут быть легко переписаны под KIXtart. $Stream.CharSet = "Utf-8"
$Stream.Open
$Stream.LoadFromFile("1.txt")
Рассмотрим внутреннее устройство $GetFile = $Stream.Readtext()
клиентской части 1C v.8.0 $Stream.Close
Как было сказано ранее, информация о подключенных ба-
зах для версий 7.7 и 8.0 находится в разных местах. Теперь В примере данные считываются из файла 1.txt в пе-
все данные хранятся в каталоге «Documents and Settings\ ременную $GetFile. Параметр $Stream.Type может прини-
%username% \Application Data\1C\1Cv8». Для успешно- мать значения 1(binary) или 2(text), в зависимости от ти-
го подключения баз необходимо в нем создать минимум па данных, содержащихся в файле. С помощью параме-
два файла (1Cv8strt.pfl и v8ib.lst) и соответствующие ID баз тра $Stream.CharSet управляют кодировкой чтения/записи
папки. В каждой из них также должен быть создан файл данных в файл. Доступные для данной ОС кодировки пе-
usr.def. Файловая структура подключаемых баз приведе- речислены в системном реестре HKEY_CLASSES_ROOT\
на на рис. 1. MIME\Database\Charset.
Запись данных в текстовый файл:
$Stream = CreateObject("ADODB.Stream")
$Stream.CharSet = "utf-8"
$Stream.Mode = 3
$Stream.Open
$Stream.WriteText("Записываемые данные")
$Stream.SaveToFile("1.txt")
$Stream.Close
Рисунок 1. Файловая структура клиентской части 1С 8.0 В приведенном примере данные, на которые ссылает-
Управление отображением списка баз (визуальная ся функция Stream.WriteText(), записываются в файл 1.txt;
структура) в браузере 1С осуществляется с помощью файла С помощью параметра $Stream.Mode осуществляется уп-
v8ib.lst (рис. 2). С помощью второго файла – 1Cv8strt.pfl ре- равление режимом работы с данными файла. Основные
ализовано манипулирование такими параметрами, как раз- принимаемые значения – 1 (чтение – по умолчанию), 2 (за-
мер и положение браузера 1С на экране, сортировка спис- пись) и 3 (чтение/запись).
ка баз и т.д. В файле usr.def содержится имя пользователя,
который последний открывал данную информационную ба- Структура файла v8ib.lst
зу. Все три файла имеют кодировку utf-8, и соответственно В файле v8ib.lst содержащиеся данные описывают один из
создавать их необходимо именно в этой кодировке. В про- двух объектов: папку или ссылку на базу. Существуют ссыл-
Синтаксис баз
Как уже говорилось, название разделов должно совпадать
с соответствующими именами баз. В каждом разделе при-
сутствует пять обязательных параметров, описания кото-
рых приведены в таблице 1.
Таблица 1. Описание параметров, используемых в файле
v8ib.lst
{"N",1},"ShowIBsAsTree", …
{"B",1},"AutoSortIBs", $DefaultBaseName=readproÞlestring("$conÞg _ ini","1c8", ↵
{"B",0},"ShowRecentIBs", "DefaultBaseName")
{"B",0},"LRInfoBaseIDList", $meta _ 1c8=readproÞlestring("$conÞg _ ini","1c8", ↵
50
администрирование
"base1c8preÞx") $fso = CreateObject("Scripting.FileSystemObject")
$ShowAsTree=readproÞlestring("$conÞg _ ini","1c8", ↵ $fso.DeleteFile($f _ name)
"ShowAsTree") $fso.close
$AutoSort=readproÞlestring("$conÞg _ ini","1c8","AutoSort")
… Имеющиеся данные необходимо разбить на подстро-
где переменная $config_ini содержит имя и полный путь, в ки и записать в массив, затем, проанализировав их, вы-
случае необходимости, к конфигурационному файлу. Вто- членить локальные базы. В качестве признака, по кото-
рой параметр – название раздела, третий – соответственно рому будут формироваться подстроки, рекомендуется ис-
параметра, значение которого возвращает функция. пользовать символ «[». При таком преобразовании эле-
Ранее описывалась структура этого файла. ID-номер ба- ментами массива будут содержать описания баз цели-
зы по умолчанию определяется в двойном цикле Do…Loop ком, например:
и зафиксируется в переменной $default_guid.
a[0]= "[Тестовая сетевая база]" + chr(13) + chr(10) + ↵
"Connect= File = " + chr(34) + "С:\Base" + chr(34) + ↵
… ";" + chr(13) + chr(10) + ↵
if instr(ucase($des), ucase($DefaultBaseName))<>0 "ID=28f15724-3c41-4753-b5a4-42bb454b8be3" + chr(13) + ↵
$default _ guid=right( $infos[1],len( $infos[1])-3) chr(10) + "OrderInList=16384" + chr(13) + chr(10) + ↵
Endif "" + chr(13) + chr(10) + "Folder=/" + chr(13) + ↵
… chr(10) + "OrderInTree=32768"
Перед записью в файл данные накапливаются в пере-
менную, в данном случае $cfg. Полностью листинг генера- Затем просмотрите и отберите элементы массива, ха-
ции файла 1cv8strt.pfl приведен в приложении. В данном рактеризующие локальные базы. Признаком локальности
примере покажем лишь принцип, лежащий в основе фор- базы является значение элемента connect, начинающегося
мирования. Использование кавычек вносит коррективы в с file=. Накопление данных осуществляется в переменную,
механизм генерации файла: в листинге скрипта кавычка которая потом также будет разложена в массив, но уже по
выглядит следующим образом: « + chr(34) + ». другому признаку: переводу и возврату каретки на новую
строку, а именно chr(13)+chr(10):
$en=chr(13)+chr(10)
… $en=chr(13)+chr(10)
$cfg = $cfg + "{"+$en
$cfg = $cfg + "{" + chr(34) + "LRInfoBaseIDListSize" + ↵ …
chr(34) + ","+$en $temp=""
$cfg = $cfg + "{" + chr(34) + "N" + chr(34) + ","+ ↵ ' расчленение строки на элементы массива.
$ShowAsTree+"}," + chr(34) + "ShowIBsAsTree" + ↵ ' Признак – наличие "["
chr(34) + ","+$en $array _ 0=split($GetFile,"[")
$cfg = $cfg + "{" + chr(34) + "B" + chr(34) + ","+ ↵ for each $element in $array _ 0
$AutoSort+"}," + chr(34) + "AutoSortIBs"+ ↵ ' "connect=Þle=" – признак локальности БД
chr(34) + ","+$en if instr(ucase($element),ucase("connect=Þle="))<>0
… $element="["+$element
$cfg = $cfg + "}"+$en $temp=$temp+$element
endif
next
После наполнения переменной данными осуществля-
ется запись ее содержимого в файл. Напомним, что файл $array _ base=split($temp, $en) ' массив локальных баз
1cv8strt.pfl находится в каталоге «Documents and Settings\
%username%\Application Data\1C\1Cv8». Поскольку нумерация баз меняется, существующие
локальные базы данных необходимо переместить в отде-
$FSO = CreateObject("Scripting.FileSystemObject"). ↵ льную виртуальную папку, например, «Локальные базы»,
GetFile($path _ to _ base+"1cv8strt.pß")
if @error=0 поэтому значения параметров OrderInList и OrderInTree не-
$FSO.Delete обходимо обнулить, значения параметра Folder исправить
endif
$FSO.close на Folder=/ Локальные базы. Для этого необходимо обно-
вить значения элементов массива:
$Stream = CreateObject("ADODB.Stream")
$Stream.CharSet = "utf-8"
$Stream.Mode = 3 $virtual _ local _ folder="Локальные базы"
$Stream.Open
$Stream.WriteText($cfg) for $i=0 to ubound($array _ base)
$Stream.SaveToFile($path _ to _ base+"1cv8strt.pß") $element=$array _ base[$i]
$Stream.Closeendif
if instr(ucase($array _ base[$i]),ucase("orderin"))<>0
$array _ base[$i]=left($element, ↵
instr($element,"="))
Скрипт: файл v8ib.lst endif
if instr(ucase($element),ucase("folder="))<>0
Локальные базы $array _ base[$i]=left($element, ↵
На первом этапе осуществляется чтение существующего instr($element,"=")+1)+ ↵
$virtual _ local _ folder
файла и вычленение списка локальных баз. Пример чте- endif
ния файла был приведен ранее, поэтому сразу перейдем
next
к обработке считанных данных в переменную, например,
$GetFile: после того как данные считаны, файл необходи- После переприсвоения элементы массива $array_base
мо удалить: могут иметь следующий вид:
$1c8 _ group=right($group,len($group)-instrrev($group,"\"))
$i=ubound($array _ base)
DO
…
$array _ base[$i]="["+$des+"]"
$infos = split($St.Fields("info").Value,chr(13)+chr(10))
$array _ base[$i+1]= "Connect="+$infos[0]
$array _ base[$i+2]= $infos[1]
$array _ base[$i+3]= "OrderInList="
$array _ base[$i+4]= $infos[2]
$array _ base[$i+5]= "OrderInTree="
$i=$i+6
…
52
администрирование
1Cv8». Расположение данного каталога на рабочей стан- Из примера видно, что максимальное значение парамет-
ции не фиксировано, поэтому для каждого пользовате- ра OrderInTree=32768. Ранее отмечалось, что начало нуме-
ля путь необходимо определять индивидуально с помо- раций и шаг значений параметров OrderInList и OrderInTree
щью функции: не имеют значения. Этот факт подтвержден многочислен-
ными экспериментами. В качестве начала отсчета были вы-
$path _ to _ base=CreateObject("WScript.Shell").↵ браны число 16384 и такой же шаг (заимствовано из 1С).
SpecialFolders(5)+"\1C\1Cv8\"
Для удобства корректировки значений введены два коэф-
Определив ID сетевой базы, в том же цикле Do..Loop фициента $w_1 и $w_2. Один из них управляет значениями
(см. листинг скрипта на сайте www.samag.ru в разделе «Ис- OrderInList, а второй – OrderInTree соответственно. При та-
ходный код»), необходимо создать соответствующую базе ком способе установки нумерации получится, что в одном из
файловую структуру. каталогов нумерация параметра OrderInList начнется с од-
В каталоге «Documents and Settings\%username%\Ap- ного числа, например, 32768, а в другом – 65536. В каждом
plication Data\1C\1Cv8» для каждой базы необходимо со- из разделов нумерация произвольна и содержимое файла
здать папку, название которой совпадает с ID этой базы, будет корректно считано браузером 1С. Листинг корректи-
а в нем файл usr.def в кодировке UTF-8 со следующим со- ровки данных следующий:
держанием: {«У Вас нет доступа. Обратитесь к системно-
му администратору»}. Это сообщение будет появляться в $const _ w=16384
$w _ 1=1
том случае, если у пользователя нет прав доступа к дан- $w _ 2=3
ной базе данных 1С.
for each $element in $array _ base
if instr(ucase($element),ucase("orderintree"))<>0
… $s=$s+$element+cstr($const _ w*$w _ 2)+$en
$id _ dir _ name=$path _ to _ base+right( $infos[1], ↵ $w _ 2=$w _ 2+1
len( $infos[1])-3) else
… if instr(ucase($element), ↵
ucase("orderinlist"))<>0
md $id _ dir _ name ; создание каталога $s=$s+$element+cstr ↵
($const _ w*$w _ 1)+$en
; создание файла def.usr $w _ 1=$w _ 1+1
$FSO = CreateObject("Scripting.FileSystemObject"). ↵ else
GetFile($id _ dir _ name+"\def.usr") $s=$s+$element+$en
if @error=0 endif
$FSO.Delete endif
endif next
$FSO.close
$Stream = CreateObject("ADODB.Stream") После того как все данные к записи приготовлены, мож-
$Stream.CharSet = "utf-8"
$Stream.Mode = 3 но приступить к записи в файл. В него следует записать со-
$Stream.Open держание трех переменных: две переменные содержат ин-
$Stream.WriteText("{"+chr(34)+"У Вас нет доступа. ↵
Обратитесь к системному администратору."+chr(34)+"}") формацию о создаваемых каталогах в браузере 1С, тре-
$Stream.SaveToFile($id _ dir _ name+"\def.usr") тья – накопленные элементы массива $array_base (пере-
$Stream.Close
… менная s). Напомню, что файл v8ib.lst находится в катало-
ге «Documents and Settings\%username%\Application Data\
1C\1Cv8».
Запись данных в файл
На последнем этапе осуществляется запись сформиро- $en=chr(13)+chr(10)
…
ванных данных в файл. В решении данной задачи есть не- $Stream = CreateObject("ADODB.Stream")
сколько нюансов: помимо сформированных данных в фай- $Stream.CharSet = "utf-8"
$Stream.Mode = 3
ле необходимо в него записать информацию, касающую- $Stream.Open
ся каталогов, и обновить нумерацию параметров OrderIn- $Stream.WriteText($local _ folder+$en+$test _ folder+$en+$s)
$Stream.SaveToFile($path _ to _ base+"v8ib.lst")
List и OrderInTree. $Stream.Close
Листинг описания папок для тестовых и локальных баз
выглядит следующим образом: Таким образом, мы создали компонент сценария ре-
гистрации пользователей в сети, который позволил нам
$local _ folder = "[Локальные базы]" + $en + ↵ в автоматическом режиме управлять подключением се-
"ID=7fa1d5a9-d087-4026-9eea-f18a233d618f" + $en + ↵
"OrderInList=-1" + $en + "Folder=/" + $en + ↵ тевых баз данных, при этом локальные базы остаются
"OrderInTree=16384" неприкосновенными. Также выполняется сортировка су-
$test _ folder = "[Тестовые базы]" + $en + ↵
"ID=7fa1d5a9-d087-9636-9eea-f18a233d618f" + $en + ↵ ществующего списка по локальным, сетевым и тесто-
"OrderInList=-1" + $en + "Folder=/" + $en + ↵ вым базам.
"OrderInTree=32768"
УСТАНАВЛИВАЕМ И НАСТРАИВАЕМ
WINDOWS SERVER UPDATE SERVICES
СЕРГЕЙ СЕРГЕЕВ
В компьютерной сети любого масштаба обновление всех программных продуктов
без специального средства будет занимать значительную часть вашего рабочего времени.
Внедрение службы управления этим процессом освободит ваше время для решения других
задач, облегчит отслеживание выхода новых версий программ, позволит своевременно
устанавливать обновления и, как следствие, повысит уровень безопасности информационной
системы вашей компании.
В
июне этого года вышла офици- вающего до 500 клиентов, Microsoft ре- ! Семейство Microsoft Windows 2000
альная версия службы Windows комендует использовать компьютер с с пакетом обновления 3 или вы-
Server Update Services (WSUS), процессором частотой не ниже 1 ГГц, ше;
предназначенной для централизо- оперативной памятью не менее 1 Гб. ! Microsoft Windows XP Professional
ванного управления обновлениями и Для установки WSUS файловая с пакетами обновления SP1 и SP2
исправлениями корпоративных про- система сервера должна соответство- или без них;
дуктов Microsoft: Windows XP Profes- вать следующим требованиям: ! Семейство серверов Microsoft
sional, Windows 2000, Windows Server ! системный раздел и раздел, пред- Windows Server 2003.
2003, Office XP, Office 2003, SQL Server назначенный для установки WSUS,
2000, Exchange Server 2000 и Exchange должны быть отформатированы в Приступаем к установке
Server 2003. файловой системе NTFS; Установку WSUS могут выполнить
С большинством возможностей ! для системного раздела требует- только члены локальной группы «Ад-
WSUS мы уже познакомили читате- ся не менее 1 Гб свободного про- министраторы». Размер дистрибути-
ля в обзоре «Windows Server Update странства; ва WSUS – около 125 МБ. Для запуска
Services» (см. №4, 2005 г). А сегод- ! необходимо не менее 6 Гб свобод- мастера установки необходимо выпол-
ня займемся установкой и первона- ного пространства на диске, где нить файл WSUSSetup.exe.
чальной настройкой сервера WSUS на хранятся данные WSUS; рекомен- После принятия лицензионного со-
компьютер с операционной системой дуется 30 Гб; глашения вам будет предложено вы-
Windows Server 2003 в среде Active Di- ! необходимо не менее 2 Гб свободно- брать источник обновлений клиентских
rectory. Установка на компьютер с Win- го пространства на диске, куда про- компьютеров: либо они будут храниться
dows 2000 Server несколько отличает- граммой установки WSUS устанав- локально на сервере, либо каждый раз
ся. Так, Microsoft SQL Server 2000 Desk- ливается Windows SQL Server 2000 по запросу клиента будут загружаться
top Engine (MSDE) для Windows 2000 Desktop Engine (WMSDE). с узла Microsoft Update. Гораздо рацио-
Server не входит в состав дистрибути- нальнее представляется хранить обнов-
ва WSUS, в отличие от Microsoft Win- На компьютере, предназначенном ления локально. Во-первых, в этом слу-
dows SQL Server 2000 Desktop Engine для сервера WSUS, предварительно чае уменьшаются затраты на интернет-
(WMSDE) для Windows Server 2003. необходимо установить следующие трафик. Во-вторых, клиентские ком-
Подробнее об этом можно прочитать компоненты Windows Server 2003: пьютеры будут обновляться быстрее. В
в документации к WSUS. ! Microsoft Internet Information Services любом случае при желании эту настрой-
Ссылки на все необходимые для (IIS) 6.0; ку вы сможете позже изменить.
установки WSUS программы и доку- ! Microsoft .NET Framework 1.1 с В следующем окне необходимо вы-
ментацию (в основном на английском пакетом обновления 1 для брать параметры базы данных: можно
языке) можно найти на домашней стра- Windows Server 2003; установить WMSDE вместе с WSUS
нице WSUS (http://www.microsoft.com/ ! Background Intelligent Transfer или использовать существующий
windowsserversystem/updateservices/ Service (BITS) 2.0. Microsoft SQL Server 2000. Поскольку
default.mspx). WMSDE входит в состав дистрибути-
На клиентских компьютерах долж- ва WSUS и является бесплатным про-
Готовим все необходимое на функционировать служба автома- дуктом, вряд ли найдутся причины от-
к установке тического обновления. Она существу- казаться от его установки.
Для работы сервера WSUS, обслужи- ет для операционных систем: Следующее окно позволяет вы-
54
администрирование
брать веб-узел для использования Для начала нужно настроить спо- параметров службы автоматического
сервером WSUS. Microsoft рекоменду- соб назначения компьютеров в группы: обновления клиентских компьютеров.
ет использовать существующий веб- либо они будут добавляться в группы
узел IIS по умолчанию и 80-й порт. Ес- со стороны сервера (т.е. вручную через Параметры синхронизации
ли этот порт уже занят, потребуется со- консоль WSUS), либо со стороны кли- Теперь необходимо настроить типы за-
здать отдельный узел IIS (специально ента (т.е. с помощью групповых поли- гружаемых обновлений. Для этого на
для WSUS), работающий по настраи- тик или настроек реестра Windows). странице консоли администрирования
ваемому порту. Для этого откроем страницу «Па- WSUS щёлкаем по ссылке «Парамет-
В окне «Параметры зеркального раметры компьютеров», щелкнув по ры → Параметры синхронизации». От-
обновления» можно указать управля- ссылке «Параметры» в верхней части кроется страница с настройками синх-
ющую роль этого сервера. Если это консоли администрирования WSUS, ронизации WSUS (рис. 1).
первый сервер WSUS в сети, пропус- затем «Параметры компьютеров». В разделе «Расписание» можно вы-
каем это окно. Иначе, ставим флажок На открывшейся странице можно вы- брать ручную либо автоматическую
и вводим имя сервера верхнего уров- брать способ назначения компьютеров ежедневную синхронизацию в опре-
ня в поле «Имя сервера». После уста- в группы. Если сеть небольшая и ко- деленное время. Пока оставляем руч-
новки WSUS будет предложено запус- личество групп WSUS невелико, мож- ной режим запуска процесса синхро-
тить консоль администрирования, ко- но оставить значение по умолчанию. низации.
торая также доступна с других ком- (Использовать задание «Переместить В разделе «Продукты и классы»
пьютеров сети по адресу: http://<имя компьютеры» в Windows Server Update можно указать программные продук-
сервера WSUS>/wsusadmin. Для запус- Services.) ты и типы обновлений для них. Щёлк-
ка консоли администрирования необ- Для создания группы необходимо нув по кнопке «Изменить» в левой час-
ходимо быть членом группы «Админис- щелкнуть по ссылке «Компьютеры» в ти раздела, открываем окно со спис-
траторы WSUS» или членом локальной консоли администрирования WSUS. ком программ, для которых можно за-
группы безопасности «Администрато- Затем на открывшейся странице на- гружать обновления (рис. 2). Отмеча-
ры» на сервере WSUS. жать на ссылку «Создать группу ком- ем продукты, которые есть в нашей се-
пьютеров» и ввести ее имя. В нашем ти и которые хотим обновлять.
Настраиваем WSUS случае назовем группу Тест. В нее не- Таким же образом, щелкнув по
Теперь мы выполним первоначальную обходимо включить несколько типич- кнопке «Изменить» под перечнем клас-
настройку сервера WSUS: создадим ных по конфигурации компьютеров, на- сов обновлений, в открывшемся окне
группу компьютеров, на которых бу- ходящихся в сети. Однако сделать это (рис. 3) отмечаем нужные типы (клас-
дем тестировать обновления, устано- можно будет только после настройки сы). Для загрузки доступны следую-
вим параметры синхро-
низации и автоматичес-
кого одобрения. А за-
тем с помощью группо-
вых политик настроим
службу автоматическо-
го обновления клиент-
ских компьютеров.
Создаём группы
компьютеров
Важным моментом в на-
стройке WSUS является
создание групп компью-
теров. Хорошей практи-
кой является тестирова-
ние вновь полученных с
узла Microsoft Update об-
новлений на небольшой
группе типичных для се-
ти компьютеров. Затем в
случае успешного функ-
ционирования тестовых
компьютеров в течение
некоторого времени,
распространение об-
новлений на остальные
компьютеры сети. Рисунок 1. Параметры синхронизации
56
администрирование
поненты Windows → Windows Update» мещение службы
(рис. 6). Если этого узла нет, то не- обновлений Micro-
обходимо самостоятельно добавить soft в интрасети»
административный шаблон wuau. (рис. 8). Включа-
adm. Каждый из параметров доста- ем и вводим путь
точно подробно описан, поэтому ос- к серверу WSUS в
тановимся только на тех, которые не- виде: http://<Имя
обходимы для первоначальной на- сервера WSUS>.
стройки. Параметр Раз-
Откройте свойства параметра «На- решать пользова-
стройка автоматического обновления» телям, не являю-
(рис. 7). Во включенном состоянии щимися админис-
этот параметр может принимать одно траторами, полу-
из четырех значений: чать уведомле-
! Уведомлять перед загрузкой об- ния об обновлени-
новлений и уведомлять повторно ях. Не стоит обре-
перед их установкой. При выборе менять пользова-
этого варианта зарегистрирован- телей лишней ин-
ный в системе пользователь с пра- формацией, они и
вами администратора уведомляет- без того постоян-
ся перед началом загрузки и уста- но загружены ра- Рисунок 5. Параметры автоматического одобрения
новки обновлений на компьютер. ботой. Отключим этот параметр. За- на домашней странице консоли WSUS
! Загружать автоматически и уве- одно уменьшим количество входящих или на странице настройки параметров
домлять перед установкой. Если ус- телефонных звонков на наше рабо- синхронизации. Сервер WSUS подклю-
тановить это значение параметра, чее место. чится к узлу Microsoft Update для про-
обновления начинают загружаться Теперь откроем страницу Компью- верки новых доступных обновлений.
автоматически, а зарегистрирован- теры консоли WSUS. Через некоторое После окончания синхронизации сер-
ный в системе пользователь с пра- время, после применения рабочими вер начнет процесс обнаружения. От-
вами администратора оповещает- станциями групповых политик, на этой кроем страницу со списком обновле-
ся перед началом установки. странице начнут появляться имена ком- ний, щелкнув по ссылке «Обновле-
! Загружать автоматически и уста- пьютеров. После этого можно перемес- ния» (рис. 9).
навливать по заданному расписа- тить несколько в созданную ранее груп- В соответствии с нашими настрой-
нию. В этом случае нужно указать пу Тест для установки и проверки об- ками автоматически были одобрены
дни и время принудительной уста- новлений. Для этого выделим нужные для обнаружения все синхронизируе-
новки обновлений на клиентские компьютеры в списке, нажмём ссылку мые обновления для всех компьюте-
компьютеры. Выберем это значе- «Перемещение выбранных компьюте- ров. А для группы Тест автоматически
ние параметра и назначим время, к ров» и в открывшемся окне выберем разрешена установка критических па-
примеру, на начало обеденного пе- группу Тест. кетов и обновлений системы безопас-
рерыва (12:00). Это позволит нам ности (у них в столбце «Одобрение»
выполнять установку обновлений Синхронизация указан тип «Смешанное»). После тес-
в часы наименьшей загрузки сети После настройки параметров щелкаем тирования эти обновления можно уста-
и компьютеров, и без вмешательс- по ссылке «Синхронизировать сейчас» новить на остальные компьютеры сети.
тва и лишних вопро-
сов со стороны поль-
зователей.
! Разрешить локаль-
ному администра-
тору указывать на-
стройки. Если вы ре-
шите доверить ло-
кальным админист-
раторам самим на-
страивать парамет-
ры автоматического
обновления, выбе-
рите это значение.
Следующий пара-
метр – «Указать раз- Рисунок 6. Настройка автоматического обновления
58
bugtraq
ПАВЕЛ ЛЕБЕДЕВ
O
pen-Xchange (OX) базируется на компонентах с от- тифицировать продукты или услуги, их соответствующих
крытым исходным кодом, таких как веб-сервер, поч- владельцев.
товый сервер c IMAP, база данных и сервер дирек-
торий. Сервер почти целиком написан на JAVA с присутс- Подготовим окружение для OX
твием элементов на языке С для участков, которые требу- Введем переменные для простоты написания и понима-
ют большей безопасности. OX предоставляет пользовате- ния:
лю такие модули: портал, календарь, контакты, адреса, за- ! OX_home=/usr/local/openxchange – папка, в которую бу-
дачи, проекты, документы, знания, закладки, доска голо- дет установлен OX;
сований, форум, веб-интерфейс для почты. Доступ к сер- ! OX_install=/home/user/OX – в эту папку будем склады-
веру OX можно получить из многих браузеров и програм- вать файлы, требуемые для установки;
мных пакетов, например: KDE Kontact, Apples iCAL, Konquer- ! p_dir=/usr/ports – папка, где лежит дерево портов Free-
or, Mozilla Suite и многих других, основанных на открытых BSD.
стандартах и интерфейсах. Также можно подключаться из
MS Outlook или Palm-устройств с помощью OX-клиента, ко- Для компиляции, инсталляции и работы OX потребуется
торый доступен для скачивания с сайта. установить такие программы из коллекции портов:
В данной статье как операционную систему для OX бу- ! shells/bash – мощный интерпретатор команд, требует-
дем использовать FreeBSD версии 5.3, с локально уста- ся для запуска OX и просто в повседневной жизни ад-
новленными пакетами: Apache2/Tomcat, Postfix/Cyrus, Post- мина;
greSQL, OpenLDAP и т. д. Но это не говорит о том, что вы ! security/sudo – программа для ограниченной раздачи
жестко привязаны к такому набору компонентов. OX пре- прав администратора пользователям, нужна для запу-
красно работает на многих UNIX/Linux-подобных системах. ска OX-сервера;
Связки пакетов можно менять по вашему вкусу или основы- ! java/jdk15 – Sun’s Java Development Kit под FreeBSD;
ваясь на уже установленных программных комплексах. На- ! www/jakarta-tomcat5 – веб-сервер, позволяющий запус-
пример, Apache2/Tomcat можно заменить на Apache1.3/jserv, кать Java Servlet и JavaServer Pages;
Postfix/Cyrus на Exim/Сourier, использовать внешние базы ! lang/perl5.8 – язык программирования Perl;
данных, серверы директорий, почтовые серверы и т. д. ! www/apache2 – очень распространенный веб-сервер;
До того как вы приступите к установке OX, чтоб луч- ! devel/apache-ant – основанная на Java утилита для сбор-
ше представлять себе, как выглядит система, ее возмож- ки приложений;
ности, интерфейс пользователя, рекомендую посмотреть ! net/openldap22-server – сервер директорий LDAP.
скриншоты (http://mirror.open-xchange.org/ox/EN/community/
screenshots.htm), поработать в demo-режиме с порталом и Java
веб-интерфейсом для почты (http://mirror.open-xchange.org/ Мы будем устанавливать Native JDK для FreeBSD (http://www.
ox/EN/community/online.htm). freebsd.org/java/install.html). Напомню, что при установке Java
Будьте внимательны! Автор не несет ответственнос- понадобится около 2 Гб свободного места для раздела, на
ти за возможную потерю данных при использовании дан- котором будет происходить компиляция пакета. Также для
ной статьи. этого потребуются исходники и бинарные архивы Java.
Все бренды и названия продуктов являются или мо- Замечание: файлы надо скачать самостоятельно в свя-
гут быть торговыми марками и используются, чтобы иден- зи с лицензионными ограничениями. Для этого надо заре-
60
администрирование
гистрироваться на сайте www.sun.com, а потом со страни- > tar xzvf jdom-1.0.tar.gz
> sudo mv ./jdom-1.0 /usr/local/jdom
цы http://www.sun.com/software/java2/download.htm, выбрав
платформу Java(TM) SDK 1.5.0, скачать:
! jdk-1_5_0-src-scsl.zip Tomcat
! jdk-1_5_0-bin-scsl.zip Установим сервлет-сервер и проверим его работу, для
этого нужно запустить сервис Tomcat и пройти по ссылке
Со страницы http://www.eyesbeyond.com/freebsddom/ja- http://127.0.0.1:8180. В результате должна появиться стра-
va/jdk15.html: ница с информацией о Tomcat:
! bsd-jdk15-patches-1.tar.bz2
> cd $p _ dir/www/jakarta-tomcat5
> sudo make install clean
И положить архивы в папку $p_dir/distfiles. > sudo /usr/local/etc/rc.d/020.jakarta-tomcat50.sh start
Как написано в BUILD, для начала процесса компиля- > lynx http://127.0.0.1:8180
ции нужен рабочий javac-компилятор. По умолчанию порт
ставит java/linux-sun-jdk14, но можно использовать и род-
ной java/jdk14 и java/linux-blackdown-jdk14: Perl + модули, требуемые для OX
Из дерева портов нам нужно установить следующие ком-
> cd $p _ dir/java/jdk15 поненты:
> sudo make install
! devel/p5-Storable
Замечание: если процесс завис, нужно остановить его ! devel/p5-Time-Local
нажатием <Ctrl-C> и добавить Linux proc-файловую систе- ! net/p5-URI
му командами: ! net/p5-perl-ldap
! www/p5-CGI.pm
> sudo kldload linprocfs
> sudo mount -t linprocfs linprocfs /compat/linux/proc
! converters/p5-MIME-Base64
! converters/p5-Convert-ASN1
Запускаем процесс компиляции еще раз, предвари- ! security/p5-Net-SSLeay
тельно почистив порт java/jdk15 от уже скомпилирован- ! security/p5-Digest-MD5
ного кода. По окончании проверяем, если вывод команды ! security/p5-Authen-SASL
java -version похож на приведенный ниже, значит, установ- ! security/p5-IO-Socket-SSL
ка прошла успешно: ! textproc/p5-XML-NamespaceSupport
! textproc/p5-XML-SAX-Base
> sudo make clean && sudo make install clean
> java -version
Установка perl-модулей происходит так же, как и обыч-
java version "1.5.0-p1"
Java(TM) 2 Runtime Environment, Standard Edition
ных портов, например, установим devel/p5-Storable:
(build 1.5.0-p1-root_08_apr_2005_22_00)
Java HotSpot(TM) Client VM > cd $p _ dir/devel/p5-Storable
(build 1.5.0-p1-root_08_apr_2005_22_00, mixed mode) > sudo make install clean
Кроме этого, для работы OX с PostgreSQL надо скачать Далее делаем такие операции:
JDBC (http://jdbc.postgresql.org).
В портах есть версия 8.0 databases/postgresql-jdbc, но > cd $OX _ install
> tar xzvf open-xchange-0.7.5.tar.gz
мы предлагаем использовать коннектор версии pg74.215. > cd open-xchange-0.7.5
jdbc3.jar, скачать который можно с сайта http://jdbc.post-
gresql.org/download.htm: Чтобы посмотреть возможные опции конфигурации, вы-
полняем команду:
> sudo mkdir /usr/local/jdbc
> sudo cp pg74.215.jdbc3.jar /usr/local/jdbc > ./conÞgure -help
62
администрирование
DTD Web Application 2.3//EN" worker.list=test
"http://java.sun.com/dtd/web-app _ 2 _ 3.dtd"> worker.test.port=8009
worker.test.host=localhost
<web-app> worker.test.type=ajp13
<display-name>Servlet OpenXchange</display-name> worker.test.lbfactor=1
<description>Servlet OpenXchange 0.7.5</description> workers.tomcat _ home=/usr/local/jakarta-tomcat5.0
workers.java _ home=/usr/local/jdk1.5.0
<servlet>
<servlet-name>intranet</servlet-name>
<servlet-class>intranet</servlet-class>
<display-name>OX Groupware</display-name>
<description>OX</description> PostgreSQL
</servlet> С базой данных PostgreSQL проведем те же операции, кото-
<servlet-mapping> рые написаны в [1], сначала инициализируем базу, а потом
<servlet-name>intranet</servlet-name> наполним данными из файла, который идёт с пакетом OX:
<url-pattern>/intranet</url-pattern>
</servlet-mapping>
> sudo su -l -m pgsql
<servlet>
<servlet-name>webmail</servlet-name> %psql -U openxchange openxchange < $OX_home/share/init_database.sql
%psql -U openxchange openxchange
<servlet-class>webmail</servlet-class>
openxchange=>INSERT INTO sys_gen_rights_template values
<display-name>OX Webmail</display-name>
openxchange->('now','admin','now','','default_template','y','y','y','y',
<description>OX</description>
openxchange(>'y','y','y','y','y','y','y','y','y','y','y','y','y','y','y',
</servlet> openxchange(>'y','y','y','y','y','y','y','y','y','y','y','y','y','y','y',
openxchange(>'y','y','y','y','y','y','y','y','y','y','y','y','y');
<servlet-mapping> openxchange=> \q
<servlet-name>webmail</servlet-name>
<url-pattern>/webmail</url-pattern>
</servlet-mapping> Также потребуется изменить файлы конфигурации
servers.conf в папках:
</web-app>
! /usr/local/openxchange/etc/groupware
Скопируем jar-файлы для Tomcat из установленно- ! /usr/local/openxchange/etc/webmail
го пакета OX и проверим правильность работы Tomcat,
просмотрев в браузере вывод http://127.0.0.1:8180/servlet/ Для того чтобы OX получил доступ к созданной нами
intranet: базе данных, нужно изменить:
В этой строке newmailadminpass меняем на вывод ко- Добавление первого пользователя и группы успешно
манды: завершено.
64
администрирование
> rm -r ./opt ps axwww | grep -E '.*java.*-DappName=groupwareApp' | ↵
> tar xzvf ./OX-RU-Webmail.0.7.5.tar.gz grep -v grep | awk '{print $1}'
> sudo cp -r ~/opt/html/RU ↵
$OX _ home/share/webmail/data/templates/ и
> sudo cp -r ~/opt/locales/RU.dlc ↵
$OX _ home/etc/webmail/locales/
> rm -r ./opt su $USER -s /bin/bash $OX _ BIN >> $LOGFILE 2>&1 &
Теперь надо открыть файл login.pm. в папке /usr/local/ Далее можно пробовать запустить openxchange:
www/cgi-bin и для добавления возможности выбора языка
интерфейса изменить строку: > sudo $OX _ home/etc/init.d/openexchange start
Linux
inuxBIOS
BIOS – ФУНДАМЕНТ ДЛЯ LLinux
inux??
L
inuxBIOS является альтернативой му используют промежуточные чипы, но, по мере инициализации определен-
обычным BIOS [1], выполняет те известные как мосты. Первая шина – ных ресурсов.
же самые функции, что и выпус- это FSB (Front Side Bus) – системная Фазы запуска LinuxBIOS (рис. 2):
каемые фирмами AMI (American Mega- шина, на большинстве персоналок она ! Обрабатываются инструкции, ко-
trends), Phoenix (Phoenix Technologies), соединяет процессоры между собой и торые инициализируют процессор,
IBM, DELL и некоторыми другими, толь- между северным мостом. Серверный лишнюю виртуальную память в ми-
ко на порядок быстрее, т.е. в 10-20 раз. мост в свою очередь соединяет про- нимальной конфигурации (32-бит-
LinuxBIOS производит инициализацию цессор с шиной памяти и PCI-шиной. ную адресацию), а также другие
оборудования, проверку на исправ- На диаграмме показан только один се- ресурсы, необходимые для вклю-
ность модулей памяти и собственно на- верный мост, хотя их может быть и не- чения памяти (например, I2C-ши-
чинает загрузку операционной систе- сколько. На платформах с процессо- ну). Затем производится сброс ке-
мы уже после 3 секунд (!) после вклю- рами AMD Opteron, например, исполь- ша процессора.
чения питания. Многие коммерческие зуется свой северный мост к каждому ! Происходит старт кода, отвечаю-
изделия затрачивают на эту же проце- процессору, и системная шина соеди- щий за дальнейшую настройку про-
дуру от 30 до 60 секунд. В дополнение няет только конкретный процессор к цессора и установку параметров
ко всему, LinuxBIOS может быть скон- своему северному мосту. Другими сло- памяти.
фигурирован уже из-под самого Linux вами, не существует общей системной ! Загружается объектный «C»-код
во время работы. шины для Opteron. из Flash-памяти в оперативную па-
Южный мост, который почти всегда мять. Объектный код может быть
Структура LinuxBIOS расположен на 0-й PCI-шине, является сжатом виде (заархивирован).
Прежде чем начать, проведем неболь- следующим мостом в схеме. Задача ! Выполняется код, который функ-
шой экскурс в современную архитекту- южного моста – соединять PCI-шину с ционирует только при настроенной
ру персональных ЭВМ. ПЭВМ состоит устройствами с набором более медлен- памяти. Происходит сканирование
из набора чипов, в первую очередь са- ных устройств и отвечать за функции и инициализация всех аппаратных
мого большого и любимого – процес- записи/чтения BIOS Flash (рис. 1). ресурсов.
сора, затем чипа с графическим про- Когда ПЭВМ включается или же ! Дополнительная фаза, в ходе ко-
цессором и контроллера клавиатуры, идет на перезагрузку, процессор пе- торой происходят финальная на-
далее из соединяющих всё это богатс- редает управление на адрес, который стройка и затем старт операцион-
тво шин данных. традиционно располагается на самой ной системы.
Шина – это набор одного или не- вершине памяти (TOM – Top Of Memo-
скольких проводников, которые сое- ry) за вычетом 16 байт. То есть на архи- LinuxBIOS содержит опциональ-
диняют между собой два или более тектурах 8086 это был адрес 0xffff0, на ную возможность старта при наличии
чипа. Некоторые шины используют платформах с современными процес- проблем с обычным BIOS. Такая под-
два провода – сигнальный и «землю», сорами этот адрес – 0xfffffff0. На пер- держка добавляется при компиляции
другие используют десятки или сотни воначальном этапе единственным язы- проекта. Дополнительный код прове-
проводников. ком, который понимает машина – это ряет сохранность CMOS-памяти и оп-
Сильно упрощенная схема PC-архи- машинный код (Ассемблер). Маши- ределяет, был ли удачным старт ПЭВМ
тектуры представлена на рис. 1. Раз- на активируется в несколько этапов. в предыдущей попытке. Если нет, то ис-
ные типы шин не могут быть напря- В результате, LinuxBIOS переходит из пользуется альтернативная загрузка. В
мую соединены между собой, поэто- одной фазы в другую последователь- таком случае используется LinuxBIOS-
66
hardware
Так получилось, что некоторые тех- открытие Джефом Гарзиком (Jeff Gar-
нологические разработки 1999 года zik) следующего факта – автор проек-
послужили толчком для начала проек- та STPC BIOS предоставляет в обще-
та. В какой-то степени это и появление ственный доступ свой труд. Так, STPC
1 Мб модулей FLASH-памяти на систем- BIOS становится фундаментом новой
ных платах и широкое использование структуры LinuxBIOS. Дальнейшая ра-
PCI-шины, которая заменила устарев- бота над кодом потребовала постоян-
шую ISA-шину. Также показательно, что ной реорганизации, чтобы проект смог
Linux начал работать на таких машинах, поддерживать многие системные пла-
как SGI Visual Workstation, на которых ты и логику, таким образом был зало-
использовался свой вариант BIOS. жен хороший фундамент для дальней-
Что казалось ясным на том этапе, шего развития.
так это то, что если бы удалось скре- Следующие шесть месяцев были
Рисунок 1. Упрощенная схема стить Linux с кодом в BIOS, то цели бы- посвящены запуску LinuxBIOS на но-
классической PC-архитектуры. ли бы достигнуты. Linux настраивает вых платформах. Первой платфор-
Мосты – это логика, которая соединяет
одну шину с другой аппаратные средства намного лучше, мой без использования графических
нежели варианты BIOS того дня. Тре- средств настройки (как в классических
бовалось написать простейший загруз- программах BIOS Setup) стала систем-
чик BIOS, который бы в свою очередь ная плата Intel L440GX+, за которой
пускал ядро Linux. Дальнейшая иници- последовала SiS 630. Именно с этого
ализация была бы прерогативой Linux. момента, т.е. с приходом фирмы SiS в
Таким образом, возникло выражение – проект, началась новая эра. Компания
«Пусть этим займется Linux!» предоставляла схемотехнику, техниче-
Прежде чем начался полномасш- скую поддержку, ассемблерный код,
табный LinuxBIOS проект, в декабре т.е. действительно серьезно подошла
1999 года была продемонстрирова- к тому, чтобы запустить LinuxBIOS на
на работа под названием «LOBOS», в своем продукте.
ходе которой ядро Linux грузилось из Вскоре выяснилось, что Linux мо-
Flash-памяти и дальше передавало уп- жет делать, а чего нет. Выяснилось,
равление опять Linux-ядру, но находя- что ядро 2.2, с которым тогда работа-
щемуся на жестком диске. ли в проекте, не способно с нуля про-
извести инициализацию PCI-шины.
Проще и быстрее Этим пришлось заниматься LinuxBIOS.
Самый простой способ достичь резуль- Пришлось вытащить код из Linux и с
тата в Open Source-среде – это найти небольшими изменениями использо-
решения, которые уже работают. Поэ- вать непосредственно в LinuxBIOS, до-
тому следующим логическим шагом в бавляя по мере необходимости расши-
развитии проекта стал поиск програм- рения. Также вскоре выяснилось, что
много обеспечения схожей тематики. загрузка происходит настолько быст-
Джеймс Хендрикс (James Hendricks) ро, что IDE-диски не успевают старто-
вместе с Дейлом Вебстером (Dale вать. Но вскоре и эта проблема была
Рисунок 2. Фазы запуска LinuxBIOS Webster) нашли нечто похожее в про- успешно решена.
образ, который позволяет загрузиться екте OpenBIOS. После ознакомления По истечении следующих девяти
с другого, гарантированного источни- с проектом за пять дней удалось со- месяцев LinuxBIOS успешно работал
ка, например, по сети. здать тестовый вариант на платформе на двух платформах, будучи написан-
Intel L440GX+. Она загружалась, прав- ным почти полностью на C. Корпора-
Корни и эволюция да, не с холодной загрузки (когда сис- ции стали проявлять интерес к разра-
LinuxBIOS тема первоначально выключена и за- батываемому продукту. Так, VIA и Acer
Проект LinuxBIOS был начат в Нацио- тем включается), а с горячего старта. предоставили спецификации на свои
нальной Лаборатории Лос Аламос (Los Чтобы добавить эту функциональность новые продукты, таким образом так-
Alamos National Lab – LANL) в сентя- (возможность холодного старта) при- же была включена поддержка для их
бре 1999 года под руководством Рона шлось затратить пять месяцев. плат. Джеймс Хендрикс начал работу
Минниха (Ron Minnich). В предыдущие Выяснилось, что ассемблерный код над SMP-поддержкой тем же летом.
восемь лет он занимался построени- не сможет стать языком LinuxBIOS-про- Патчи стали включаться в разработку
ем кластеров всех видов, в частности екта. Проект OpenBIOS почти полно- Linux-ядра, а не как расширения в Linux-
в 1994 году он подготовил свой пер- стью состоял из ассемблерных вста- BIOS. С этой стороны Linux-ядро стало
вый кластер на базе PC. Всё это вре- вок, и было проблематично добавить походить на унипроцессорное – добав-
мя BIOS был краеугольным камнем в что-то новое, свое. Неудивительно, ление поддержки новых процессоров
создании больших кластеров. что следующим шагом было удачное стало занимать меньше времени.
68
hardware
УДАЛЕННО УПРАВЛЯЕМ
BIOS SETUP
КРИС КАСПЕРСКИ
Каждый из вас хотя бы раз в жизни сталкивался с необходимостью войти в BIOS Setup
и слегка его «подкрутить» или починить «рухнувшую» Windows NT, Linux/FreeBSD.
Традиционно эта задача решается при помощи мыши и клавиатуры, но что делать,
если сервер физически недоступен?
К
омпьютеры семейства IBM PC тановки очередного пакета обновле- ем своей работы BOOT-block распако-
долгое время рассматривались ния операционная система «умерла», вывает основной код BIOS (так назы-
как недорогие рабочие станции стала жертвой хакерской атаки или ваемый BIOS extensions, или вторич-
и сервера на их основе начали стро- просто зависла. Во всех этих случаях ный загрузчик) и передает ему управ-
ить лишь недавно. Разработчики уве- стандартные средства удаленного уп- ление. Вторичный загрузчик сканиру-
личили количество процессоров, до- равления уже не работают и приходит- ет PCI-шину и выполняет окончатель-
бавили поддержку коррекции памяти, ся приближаться к серверу вплотную, ную инициализацию оборудования –
отказоустойчивые дисковые массивы что достаточно затруднительно. Даже распознает IDE-диски, при необходи-
и прочие прелести, однако полное пре- если сервер расположен на соседнем мости выводит интерактивный редак-
вращение в сервер так и не наступи- этаже, намного предпочтительнее уп- тор BIOS Setup, распределяет систем-
ло. В частности, сохранилась пробле- равлять им без отрыва от своего лю- ные ресурсы между PnP-устройства-
ма удаленного администрирования. бимого кресла, чем бегать с дискетами ми и, наконец, считывает boot-сектор
Операционные системы семейства (лазерными дисками) туда-сюда. с гибкого или жесткого диска.
Windows NT поддерживают удален- И это действительно можно сде- Таким образом, BIOS, установлен-
ный контроль лишь формально. Да- лать! Существуют по меньшей мере три ные на картах расширения, получа-
же такие программы, как Remote Ad- пути, о которых я и хочу рассказать. ют управление на самой ранней ста-
min, выполняют ограниченный спектр дии инициализации, задолго до того,
простейших операций, и на полноцен- Удаленный контроль как начинается подсчет контрольной
ное обслуживание сервера по сети не за BIOS суммы CMOS или распаковка вторич-
способны. В мире UNIX дела обстоят Порядок загрузки BIOS в общих чер- ного загрузчика. Кстати говоря, боль-
чуть-чуть получше, но проблемы все тах выглядит так. Первым получает шинство утилит «прожига» BIOS не
равно есть. управление BOOT-block (загрузочный трогают BOOT-block и даже если про-
Вот, например, BIOS отказывает- блок или первичный загрузчик, не пу- жиг прошел неудачно, ISA-слоты рас-
ся грузиться, предлагая нажать <F1> тать с boot-сектором!). Он выполняет ширения все-таки инициализируют-
для входа в BIOS Setup или <F2> для инициализацию основного оборудова- ся. С PCI-слотами все обстоит намно-
загрузки с параметрами по умолча- ния (оперативная память, контроллер го сложнее, и в общем случае они до-
нию (см. рис. 1). Но сервер находится прерываний, системный таймер и т. д.), ступны только из вторичного загруз-
в другом конце города, да еще в по- сканирует ISA-шину и подключает BIOS чика (а он гибнет при неудачном про-
мещении, ключей от которого у адми- всех обнаруженных устройств (напри- жиге). Некоторые производители, на-
нистратора нет. Знакомая ситуация, не мер, SCSI-контроллеров, видео-, се- пример ASUS, включают в BOOT-block
правда ли? Другой вариант: после ус- тевых карт и т. д.). Перед завершени- специальный драйвер для работы с
70
hardware
PCI-шиной, чтобы материнс- Все управление происхо-
кая плата могла инициализи- дит либо через telnet, либо
ровать видеокарту и хоть что- через веб-браузер. Как бу-
то вывести на экран, даже ес- дет удобнее администратору.
ли основной код BIOS повер- На сервере может быть уста-
жен. Но мне не известен ни новлена практически любая
один BIOS, BOOT-block кото- операционная система: Win-
рого мог бы работать с шиной dows 2000/2003 (Advanced
AGP или PCI-express. Server, Data Center, Terminal
Следовательно, все, что Server, Standard или Enterprise
нам нужно, – изготовить «фик- Рисунок 1. BIOS отказывается грузиться до тех пор, Edition), Novell NetWare 5.1, 6.0,
пока не будет нажата клавиша <F1> или <F2>
тивную» ISA- или PCI-кар- Red Hat Advanced Server2.1,
ту, установить на ней «свой» BIOS и имеется возможность подключать уда- Red Hat Linux 7.3/8.0, SuSE Linux En-
запрограммировать его на удален- ленный дисковод и привод CD-ROM, terprise Server V7/V8 и некоторые дру-
ное управление. Когда-то я «дораба- без которых не обходится ни одна пе- гие (см. рис. 4).
тывал» древние сетевые карты (кото- реустановка системы. Это просто фан- Карту можно приобрести в магази-
рые просто выбрасывались), превра- тастика! Всегда можно загрузиться с не или заказать по Интернету непос-
щая их в «пульт» удаленного управле- Live CD и посмотреть, что случилось с редственно в самой Hewlett-Packard.
ния, позволяющий редактировать на- сервером и сохранить уцелевшие дан- Она обойдется в $399, которые явно
стройки BIOS по локальной сети. Это ные на любой носитель, который толь- стоят того! В принципе можно найти
совсем несложно сделать! Достаточно ко будет под рукой. Это усиливает бе- производителя и подешевле, но в от-
уметь программировать на Ассембле- зопасность системы, поскольку сер- ношении цена/функциональность этой
ре и чуть-чуть разбираться в архитек- вер, оснащенный «Remote Insight», мо- карте равных нет, тем не менее она да-
туре «железа» (см. рис. 2). жет вообще не иметь никаких съемных лека от идеала. Исходных текстов про-
Впрочем, корпеть над отладчиком носителей! шивки нам никто не даст, и дорабо-
совсем необязательно, все можно ку- Кстати, о безопасности. Remote In- тать «напильником» под свои конкрет-
пить и готовое. Такие платы (они назы- sight поддерживает SSL и 128-битное ные нужны ее не удастся (теоретичес-
ваются Remote Boards) выпускает мно- шифрование, что позволяет ему фун- ки это возможно, но очень затрудни-
жество фирм. Обычно они представ- кционировать даже на незащищенных тельно). К тому же качество реализа-
ляют из себя стандартную VGA-кар- каналах (а других каналов в распоря- ции протоколов шифрования находит-
ту с интегрированным COM-портом, к жении рядового администратора за- ся под большим вопросом. Возможно,
которому подключается внешний мо- частую просто не оказывается). в карте присутствуют отладочные лю-
дем. В некоторых моделях ки или переполняющиеся бу-
имеется Ethernet-порт. Его феры, которые позволят ата-
можно воткнуть в DSL-модем кующему захватить штурвал
или соединить со Switch. Че- управления в свои руки ( см.
рез эти порты передается ко- рис. 5)!
пия экрана на удаленный мо- Этих недостатков лише-
нитор и принимаются коман- на PC Weasel 2000 от одно-
ды от клавиатуры, в результа- именной компании. Вместе с
те чего IBM PC превращается самой платой покупатель по-
в самый настоящий «мейн- лучает полный исходный код
фрейм» и физического до- прошивки и лицензию на пра-
ступа к нему уже не требует- во его изменения. Это все та
ся (см. рис. 3)! Рисунок 2. Удаленное редактирование настроек BIOS Setup же самая VGA-плата, только
по терминалу — это реальность!
Большой популярностью вместо Ethernet-порта на ней
пользуется модель Remote In- находится контроллер UART
sight от Hewlett-Packard, кото- (он же стандартный COM-
рая вставляется в PCI-слот и порт типа 16550). К сожале-
управляется через 10/100 Мбит нию, ее функциональность на-
Ethernet-порту. Она подде- много беднее. Поддержива-
рживает как текстовые, так и ются только текстовые виде-
графические режимы (вплоть орежимы и отсутствуют уда-
до 1280х1024/256 цветов), пи- ленные приводы, правда, со-
тается от внешнего источни- храняется возможность «на-
ка, что позволяет ей «нажи- жать» серверу на «Reset» или
мать» на кнопки «Power» и посмотреть POST-коды, что-
«Reset». В дополнение к уда- бы сразу оценить масштабы
ленной мыши и клавиатуре Рисунок 3. Удаленная настройка дисков неисправности (см. рис. 6).
72
hardware
ведь нам ничего, кроме BIOS, не грабить весь вывод на экран и
нужно! Поэтому, даже дешевая передавать его на удаленный
модель будет работать ничуть компьютер («грабить» – вполне
не хуже дорогой. Заботиться о легальный термин, позаимство-
сохранении работоспособнос- ванный у англоязычных инжене-
ти контроллера не обязатель- ров, которые говорят в этом слу-
но. Намного проще переписать чае «grab», звучит грубовато, за-
BIOS с чистого листа, чем до- то почестному).
бавлять свои собственные моду- Разумеется, без сложностей
ли в уже существующий (одна- здесь не обходится. Поскольку в
ко при желании это можно сде- процессе инициализации BIOS
лать) (см. рис. 11). вектора прерывания могут пе-
Дополнительный UART-кон- реустанавливаться многократ-
троллер приобретать не нужно. но, одной лишь модификации
Лучше воспользоваться тем, что таблицы прерываний (т.е. клас-
встроен в материнскую плату, сического способа перехвата)
а при желании можно задейс- Рисунок 9. Схема подключения KVM-коммутатора будет явно недостаточно. Да,
для удаленного управления через Интернет
твовать еще и интегрирован- или по модемному соединению мы можем изменить far-указа-
ный Ethernet или любое другое тель по адресу: 0000h:10h*size
средство коммуникации. of(DWORD) == 0000h:0040h,пе
Разработка прошивок обыч- ренаправив его на свой собс-
но ведется на Ассемблере, но твенный обработчик, но… че-
при желании можно использо- рез некоторое время контроль
вать и высокоуровневые языки за INT 10h будет утерян. Чтобы
типа Си/Си++. Только ни в коем Рисунок 10. Внешний вид некоторых KVM-коммутаторов
этого избежать, необходимо ус-
случае не используйте стандар- тановить аппаратную точку ос-
тные библиотеки ввода/выво- танова на запись этой ячейки
да и прикажите линкеру отклю- памяти. В этом нам помогут от-
чить Start-Up. Для этого доста- ладочные регистры семейства
точно переименовать функцию DRx. Регистры Dr0-Dr3 хранят
main в нечто вроде MyMain. Пос- линейный физический адрес
кольку Си не поддерживает ба- Рисунок 11. SCSI-контролер с несъемным BIOS (слева), точки останова, а Dr7 опреде-
зирования, откомпилированный он нам не подходит. Справа SCSI-контроллер со съемным ляет условия, при которых она
BIOS, который легким движением руки превращается
код должен быть полностью пе- в плату удаленного управления срабатывает, заставляя про-
ремещаем (то есть выполнять- цессор генерировать прерыва-
ся независимо от базового адреса за- ние должно быть инициализировано ние INT 01h, на котором должен нахо-
грузки в память). Этого можно добить- вручную. В частности, интегрирован- диться наш обработчик, выполняющий
ся, отказавшись от глобальных пере- ный COM-порт еще не имеет ни базо- повторную «экспроприацию» INT 10h
менных и выключив все опции ком- вого адреса, ни IRQ, ведь PnP-менед- у системы.
пилятора, которые могут генериро- жер, распределяющий системные ре- Пример работы с отладочными ре-
вать неперемещаемый код, о котором сурсы, еще не получил управления! гистрами приведен ниже.
мы даже не подозреваем (например, Приходится открывать документацию
контроль «срыва» стека). Если вы не на южный мост чипсета и программи- Листинг 1. Перехватчик передает
управление нашему коду в момент
уверены, что хорошо знаете «задний ровать все железо с нуля. Это самый загрузки Boot-сектора
двор» компилятора, – не используйте низкий уровень «общения» с аппара-
; перехватываем INT 01h
его! Программируйте на Ассемблере. турой! Необычайно сложный, но в то MOV ax, CS
Он не подведет! же время захватывающе интересный! XOR bx,bx
MOV DS,bx
Код прошивки исполняется в 16- К счастью, серверный мост уже час- ; смещение нашего обработчика
разрядном сегменте реального режи- тично инициализирован, поэтому на- MOV [bx], offset our _ vx _ code
; относительно сегмента 0000h
ма, однако никто не запрещает нам пе- страивать контроллер памяти не обя- MOV [bx+2],bx
реходить в защищенный режим и вы- зательно. MOV DS, ax
ходить оттуда, правда, не совсем по- Теперь поговорим о методиках эму- ; устанавливаем точку останова
нятно, зачем это нужно. Использовать ляции и перехвата. Для вывода ин- ; на исполнение
MOV eax,302h
служебные функции BIOS недопусти- формации на экран BIOS использует ; линейный физический адрес
мо, поскольку часть аппаратуры еще свою собственную сервисную службу ; точки останова
MOV ebx,7С00h
не инициирована, да и сам BIOS еще INT 10h. Она же используется на ста-
не распакован. Работайте только че- дии первичной загрузки операционных ; Заносим значения в отладочные
; регистры
рез порты ввода/вывода, однако пе- систем семейства Windows и UNIX. Пе- MOV dr7,eax
ред этим не забудьте, что оборудова- рехватив это прерывание, мы сможем mov dr0,ebx
74
администрирование hardware
Скорее всего, мы увидим что-то вро- каких проблем с его исправлением не
де CALL xxx, где xxx – адрес функции- возникает. Главное – определить нуж-
обертки. Для достижения задуманно- ные адреса. В этом нам поможет тот
го мы должны заменить CALL xxx на факт, что сам BIOS свой образ не за-
«MOV AX,scan-code», указав скэн-код тирает и в момент загрузки boot-сек-
требуемой клавиши. Например, клави- тора он присутствует в памяти. Доста-
ша <F2> в большинстве BIOS означа- точно написать крошечную ассемблер-
ет «загрузку с настройками по умол- ную программу, считывающую первые
чанию», однако в некоторых случаях 640 Кб нижней памяти и записываю-
может потребоваться нажать <Enter> щую их на гибкий диск, а затем вне-
или <Esc>. дрить ее в boot-сектор. После переза-
Проблема в том, что основной об- грузки системы мы станем обладате-
раз BIOS упакован и защищен конт- лями распакованного BIOS, лежащего
рольными суммами. Практически все по своим «родным» адресам.
разработчики BIOS распространяют Остается только прожечь обнов-
утилиты для распаковки/упаковки и ленный BOOT-block и можно наслаж-
пересчета контрольных сумм, одна- даться бесперебойной работой сер-
ко никакой гарантии, что модифици- вера!
рованный BIOS будет исправно рабо-
тать, у нас нет. Ошибки могут появ- Заключение
ляться в самых неожиданных местах. Полноценный удаленный контроль за
Работа системы становится нестабиль- системой – это реальность! Ассорти-
ной, материнская плата без всяких ви- мент возможных решений необычайно
димых причин начинает зависать и т. д. широк: от готовых (и весьма дорогос-
Разумеется, для серверов это непри- тоящих!) KVM-устройств до более де-
емлемо, поэтому приходится идти дру- шевых, но вместе с тем и более функ-
гим путем. циональных (!) плат расширения, кото-
Вместо того чтобы модифициро- рые большинство программистов лег-
вать упакованный образ основного ко- ко изготовят самостоятельно. Физи-
да BIOS, мы возьмем неупакованный ческий доступ к серверу будет требо-
BOOT-block и добавим в него автомати- ваться только при его ремонте (здесь
ческий патчер, правящий нужные бай- без него никак не обойтись, ведь плос-
ты прямо в памяти, когда распаковка когубцы с отверткой по модему не пе-
уже завершена. Поскольку основной редашь), однако фатальные отказы
код BIOS распаковывается в RAM, ни- происходят не так уж и часто.
Ссылки:
1. Remote Insight «Lights Out» boards – 5. Raritan IP-Reach TR364 – описа-
обзор систем удаленного управле- ние KVM-коммутатора TR364 (на
ния (на англ.): http://www.paul.slad- англ.): http://www.42u.com/tele-
en.org/lights-out/riloe.html; reach_bk.htm;
2. Remote Insight Lights-Out Edition II – 6. Архитектура ввода-вывода персо-
описание платы удаленного управ- нальных ЭВМ IBM PC – электрон-
ления от Hewlett-Packard с возмож- ная версия книги, посвященной
ностью заказа по Интернету (на устройству IBM PC, которую на-
англ.): http://h18004.www1.hp.com/ стоятельно рекомендуется прочи-
products/servers/management/riloe2/ тать перед разработкой собствен-
server-slot-matrix.html; ной системы удаленного управ-
3. PC Weasel 2000 – описание аль- ления (на русском языке): http://
тернативной платы удаленного уп- redlib.narod.ru/asmdocs/asm_doc_
равления, микрокод, который рас- 07.zip;
пространяется по открытой лицен- 7. Ralf Brown Interrupt List – электрон-
зии (на англ.): http://www.realweasel. ный справочник по всем прерыва-
com/intro.html; ниям, портам ввода/вывода, «вол-
4. Технические характеристики ог- шебным» адресам памяти, вклю-
ромного количества систем уда- чая нестандартные расширения и
ленного управления (преимущес- недокументированные возможнос-
твенно KVM-коммутаторов, на ти (на англ.): http://www.ctyme.com/
англ.): http://www.kvms.com; rbrown.htm.
Если вы часто создаете веб-приложения на языке PHP, вам приходится выбирать средства
разработки под свои задачи. Некоторых устраивает Блокнот, другие предпочитают Zend Studio
или Macromedia Dreamweaver. Мы предлагаем вам инструмент, позволяющий в ряде случаев
строить PHP-код целых информационных систем в автоматическом режиме.
ЕВГЕНИЙ ВОЯКИН
Как построить новку клиентских программ и на него. модулями функционального расшире-
информационную систему Поэтому в последнее время у разра- ния, на клиентской – веб-браузером в
Ни для кого не секрет, что в последнее ботчиков все четче заметно стремле- качестве универсального клиентского
время автоматизированные инфор- ние перенести максимально возмож- программного обеспечения. Этот уро-
мационные системы (ИС) стали сер- ную часть специализированного про- вень реализует возможность инфор-
дцем многих бизнес-процессов пред- граммного обеспечения с клиентских мационного обмена в сети.
приятий и основой общедоступных се- рабочих станций на серверы.
тевых сервисов. Как известно, в боль- Такой подход позволит вам исполь- Какой инструмент
шинстве информационных систем дан- зовать менее сложные компьютеры выбрать разработчику
ные хранятся в БД. Одновременный с минимальным набором программно- Учитывая эти тенденции, многие фир-
доступ к ИС нескольких пользовате- го обеспечения в качестве клиентских. мы направляют свои усилия на разви-
лей реализуется с помощью специа- А это в свою очередь означает сниже- тие и совершенствование технологий
лизированного программного обеспе- ние затрат на аппаратную составляю- и инструментария в области веб-про-
чения, ориентированного на работу в щую системы. При этом разработчи- граммирования. Примерами могут слу-
сети. Чтобы поддержать такое взаимо- ки все чаще основываются на исполь- жить технологии от Microsoft, под кото-
действие, программное обеспечение зовании веб-технологий для доступа рые созданы мощные средства разра-
должно располагаться на обеих сто- к информационным системам. В ар- ботки (к примеру, Interdev), среда Zend
ронах сети – на сервере и на компью- хитектуре системы между клиентским Studio, созданная разработчиками
тере клиента. Безусловно, такой под- программным обеспечением и сервер- языка PHP (см. [1]). Познакомившись
ход имеет недостаток: помимо одно- ной СУБД появляется дополнительный с этими пакетами и осознав, насколько
кратной установки ПО на сервер под- уровень, который можно назвать уров- отличаются их функциональные воз-
ключение каждого нового клиентско- нем веб-транспорта. На стороне сер- можности, у меня сложилось ощуще-
го компьютера подразумевает уста- вера он представлен веб-сервером с ние некой ограниченности в средствах
76
программирование
доброй части программистов, пишу- зуальную среду программирования. Dreamweaver, позволяющий осущест-
щих на PHP. Действительно, предла- Эта среда дает возможность разраба- влять визуальную разработку веб-
гаемая компанией Microsoft среда In- тывать интерфейсы доступа к базам форм и поддерживающий подключе-
terdev содержит всё необходимое для данных посредством веб-технологий ние к MySQL.
построения динамических веб-стра- и в ряде случаев комплексно автома- Технология визуального програм-
ниц, поддерживает визуальное про- тизирует создание ИС в целом. мирования даст вам возможность су-
граммирование интерфейса, параме- щественно сократить время создания
тры оформления документов и работу Что следует программного модуля. Представьте
с базами данных. автоматизировать любой веб-интерфейс к базе данных в
В то же время почти все представ- Разработка любой информационной некой информационной системе. При
ленные на рынке средства разработ- системы не является простой зада- традиционном написании кода с увели-
ки на языке PHP, включая даже доста- чей. Вне зависимости от того, какую чением числа элементов в веб-форме
точно мощную среду Zend Studio, пред- информационную систему бы вы ни время, затраченное вами на создание
ставляют собой лишь развитые текс- проектировали, будьте готовы стол- такой страницы, будет возрастать не
товые редакторы, ориентированные кнуться с некоторыми «классически- линейно, а более стремительными тем-
на работу с текстами на языках про- ми» этапами разработки, а именно пами. Это объясняется тем, что для ре-
граммирования. Тем не менее, имен- вам придется: ализации тех или иных особенностей
но язык PHP, СУБД MySQL или Post- ! спроектировать базу данных (а пе- вам потребуется вводить все больше
greSQL, как показывает практика, на- ред этим будет изучение предмет- переменных, циклов, ветвлений. Ста-
иболее часто выбираются нами при ной области, построение ее моде- нет сложнее отслеживать синтаксис и
разработке целого ряда информацион- ли, разработка логической, а затем логику сценария. Кроме того, при этом
ных систем, особенно на *nix-платфор- физической модели данных в сред- возрастет и сложность базы данных –
мах. Эти средства обоснованно заслу- ствах той или иной СУБД, нормали- наличие большого числа интерфейс-
жили популярность своей простотой и, зация базы и т. д.); ных элементов означает существова-
одновременно с этим мощностью и на- ! запрограммировать базу данных ние соответствующего числа полей та-
дежностью. Кроме того, они доступны непосредственно в СУБД; блиц для хранения значений.
бесплатно, что немаловажно для мно- ! выбрать, как пользователи будут Применение визуальной интегри-
гих разработчиков. получать доступ к данным – то есть рованной среды может снять с вас все
С моей точки зрения, современ- спроектировать интерфейсы (оп- эти трудности. В идеале время должно
ные инструменты разработки на PHP ределить их количество и функци- затрачиваться лишь на определение
должны предоставлять следующие ональные требования к ним, вы- связи интерфейсного элемента веб-
возможности: брать средства и инструменты про- формы с теми или иными данными в
! максимальная автоматизация раз- граммирования, разработать алго- базе. Остальные задачи – включение
работки веб-документов; ритмы); в код сценария тегов HTML, реализу-
! комплексная поддержка разработ- ! осуществить программирование ющих элемент, функций, осуществля-
ки приложений, ориентированных интерфейсов; ющих запросы к базе данных для ото-
на работу с базами данных, воз- ! отладить ИС в целом. бражения значений в элементе, разра-
можно, с поддержкой создания са- ботка структуры базы данных, проце-
мих баз данных; Нетрудно заметить, что данная ра- дуры верификации и во многом отлад-
! поддержка визуальной методики бота потребует от вас значительных ки создаваемого программного кода –
программирования (как у «боль- знаний в как минимум трех областях – должны выполняться для вас средой.
ших братьев» – Delphi, C Builder). программирования, проектирования
баз данных и знания веб-технологий. «Визуализируем»
Частичное решение этих задач Безусловно, если вы гуру в SQL и по- программирование
в той или иной мере успешно дости- стоянно занимаетесь разработками в Как перенести концепцию визуально-
галось различными разработчиками данной сфере, решение этих задач не го программирования в, казалось бы,
средств программирования, но пол- составит труда. Однако для начинаю- изначально «невизуальную» область?
ного комплексного решения этих за- щего программиста, сталкивающегося Ведь по своей сути PHP не является
дач в едином инструменте мне до сих с такой задачей время от времени, ее языком программирования широко-
пор не встречалось. решение займет много времени. го назначения и не позволяет строить
Имея определенный опыт разра- Как я заметил ранее, почти все при- пользовательские интерфейсы. Но в
ботки информационных систем, я опи- званные помочь разработчику в дан- нашем случае от него это и не требу-
шу некоторые методы, которые позво- ной ситуации средства программи- ется. Как известно, основу для инте-
лят перенести технологию визуальной рования на языке PHP по сути пред- рактивного взаимодействия посред-
разработки в область программирова- ставляют собой лишь развитые тек- ством веб-технологий содержит сам
ния на языке PHP. Объединение этих стовые редакторы, поддерживающие язык HTML, позволяющий строить веб-
методов и алгоритмов по работе с ин- работу с текстами на языках програм- формы. Следовательно, «визуализи-
формацией в базе данных позволи- мирования. Исключением, пожалуй, ровав» работу с интерфейсными эле-
ло мне создать интегрированную ви- может являться только Macromedia ментами формы и разработав систе-
78
программирование
Рисунок 1. Пользовательский интерфейс среды «Синбад». Рисунок 2. Это окно позволит вам управлять
Режим построения формы свойствами списков выбора
щего эти свойства, в PHP-код приведет Панель инструментов редактора ! выполнять все необходимые опе-
к формированию следующего фраг- содержит кнопки, позволяющие вам рации, связанные с элементом: на-
мента кода (для СУБД MySQL): открыть файл в редакторе или сохра- полнение исходными данными, вы-
нить редактируемый файл, работать бор исходного значения и т. п. – для
<SELECT NAME="place» SIZE="1"> с буфером обмена, редактором ша- сценария с формой; манипуляция
<?php
$rz = mysql _ query("select id, ↵ блонов. Для ввода тегов языка HTML с определенными пользователем
caption from place ↵ редактор имеет дополнительную па- данными в базе данных – для вы-
where id>10 order by 1;");
while ($row = ↵ нель с кнопками (на рис. 4, в левой зываемого сценария.
mysql _ fetch _ row($rz)) { части окна), нажатие на которые при-
print ("<OPTION VALUE=$row[0]> ↵
$row[1]</OPTION>\n"); водит к вставке HTML-тега в позицию Среда начинает построение сценари-
} курсора. ев с файла, в котором будет находиться
?>
</SELECT> Среда предоставляет возможность веб-форма. Прежде всего в текст буду-
создавать свои шаблоны кода, имеет щего сценария включаем шаблон заго-
Нижняя часть окна позволяет опре- систему предиктивного набора иден- ловка, позволяющий определить единые
делить связь с базой данных. В данном тификаторов. Список последней сис- для всех сценариев параметры оформ-
случае выбор строки списка, сделан- темы вы можете изменить по своему ления. Далее определяем взаимное рас-
ный будущим пользователем этой усмотрению. положение друг относительно друга ин-
страницы, повлияет на значения столб- Процедура построения файлов на терфейсных элементов и элементов, от-
ца place_id таблицы events. языке PHP, которую по аналогии с дру- носящихся к языку HTML. Для этого ис-
Возможности визуального пост- гими средами визуального програм- пользуется специально разработанный
роения сценариев не ограничивают- мирования можно назвать компиля- алгоритм. При обработке элементов веб-
ся только элементами веб-форм. Для цией, запускается по окончании поль- форм для них осуществляется генера-
элементов палитры HTML-тегов окна зователем проектирования интерфей- ция кода на языке PHP, отображающего
свойств в первую очередь позволяют са. Вы можете запускать эту проце- элемент в браузере, а также кода, реали-
определить параметры отображения в дуру всякий раз, когда хотите прове- зующего связанные с элементом опера-
браузере или предоставляют нагляд- рить целостность проекта и правиль- ции по наполнению его исходными дан-
ный интерфейс для определения тега ную связанность интерфейсных эле- ными и т. п. Для объектов языка HTML
(например, для параграфов текста). ментов с теми или иными полями ба- генерируем текст тега в соответствии с
При построении кода страницы на зы данных. заданными параметрами.
языке PHP результат помещается в ре- В результате компиляции вы по- При компиляции кода элемента
дактор кода для проверки и корректи- лучите готовый программный код на Синбад проверяет, достаточно ли за-
ровки. Этот редактор (см. рис. 3) со- языке PHP и требуемые теги HTML, дано для этого данных. Если при об-
держит в свою очередь четыре заклад- отображающие всю страницу в целом работке в свойствах встретится ссыл-
ки для работы с текстами. Первые две в соответствии с ее функциональным ка на поле несуществующей таблицы
предназначены для редактирования назначением. или на несуществующее поле (напри-
основного (с формой) и подчиненного Для генерируемого кода опреде- мер, таблица или поле были переиме-
(вызываемого из формы) сценариев, ляются следующие требования. Код нованы после определения связи эле-
образующих страницу. В окно третьей должен: мента с ними), преобразование приос-
помещается текст дампа базы данных, ! отображать все элементы страни- тановится. Вы получите соответствую-
а последняя предназначена для работы цы в таком же порядке, как они бы- щее уведомление с указанием элемен-
в интерфейсе среды с любыми файла- ли расположены вами на рабочем та, а также поля или таблицы, которые
ми по усмотрению пользователя. поле среды при проектировании; не были обнаружены.
Рисунок 3. Пользовательский интерфейс среды «Синбад». Рисунок 4. Так выглядит спроектированная страница
Режим редактора кода в окне браузера
По окончании обработки всех эле- 2) Применение максимально простых дополнен параметрами оформления с
ментов генерация главного сценария шаблонов кода, упрощающее пони- помощью стилей и т.п.
завершается включением в него тек- мание технологии создания страни- Именно в силу этих особенностей
ста шаблона концевика файла. цы разработчиком и облегчающее (и мой опыт практического примене-
Генерация вызываемого сценария дальнейшую их модификацию; ния Синбада подтверждает это) рабо-
происходит по похожей схеме. Основ- 3) Использование строго ограничен- та с программой значительно ускоря-
ным отличием от описанного механиз- ного набора функций на языке PHP ет разработку интерфейсов к инфор-
ма является то, что в тело подчиненного для работы с базами данных. Име- мационным системам в целом.
сценария встраивается операция по ма- на функций хранятся во внешних
нипуляции данными непосредственно в текстовых файлах, редактирова- Доступ к данным
БД. В случае, когда назначением стра- ние которых позволит вам работать Для проектирования базы данных
ницы является ввод данных, среда про- в среде с практически любой СУБД, Синбад требует наличия в операцион-
верит, достаточно ли информации для поддерживаемой языком PHP. ной системе подключения к СУБД че-
добавления новой записи в таблицу. Ес- рез источник ODBC с именем Sinbad.
ли с каким-либо полем записи не связа- Первый критерий, как может снача- Следует отметить, что вы должны со-
но элемента, то это поле, в зависимости ла показаться, идет в ущерб функци- здать такой источник в операционной
от типа, заполняется либо нулем, либо ональным качествам и возможностям системе до начала работы с програм-
пустой строкой. При этом вам также вы- среды. Однако эта особенность вклю- мой. Среда имеет интерфейс для руч-
водится соответствующее предупреж- чена в программу намеренно. Как по- ного управления структурой базы дан-
дающее сообщение (см. рис. 5). казывает практика, опытные дизайне- ных (см. рис. 6), позволяющий добав-
Пример того, как в окне браузера ры даже после оформления страницы лять и удалять таблицы в базе, управ-
отображается страница, проектирова- с помощью тех или иных автоматизи- лять полями таблиц – удалять ненуж-
ние которой показано на рис. 1, пока- рованных средств «шлифуют» стра- ные, создавать новые, задавать их тип,
зан на рис. 4. ницы вручную, уже после разработки вводить, изменять и удалять данные в
При разработке среды в качестве и отладки программной части. любой из таблиц и т. п.
параметров оптимизации генерируе- Учет данных критериев позволит В случае если непосредственное
мого кода на языке PHP я выбрал сле- вам достичь получения в результате подключение к серверу базы данных
дующие критерии: «компиляции» легкочитаемого высо- посредством источника ODBC невоз-
1) Не требуется сохранять параметры конадежного кода на языке PHP. Этот можно (отсутствует доступ, в вашей
оформления генерируемой страни- код не требует дальнейшей верифи- системе нет источника ODBC требуе-
цы в максимально возможной сте- кации и может быть легко модифици- мого типа и т. п.), можно определить
пени. В результате компиляции ко- рован и использован в качестве осно- источник любого типа, например, Mi-
да в полученной странице не гаран- вы при разработке сложной страницы, crosoft Access Driver (*.mdb), ссыла-
тируется расположение элемен- ющийся на пустую базу данных.
тов точно так же и с такими же При разработке в ней будут со-
расстояниями между элемента- зданы необходимые таблицы. Во
ми, как они располагались на время построения кода сценари-
этапе проектирования. Однако ев (при компиляции) среда также
среда обеспечит соблюдение автоматически выполняет генера-
взаимного расположения эле- цию дампа полученной к моменту
ментов друг относительно дру- Рисунок 5. Выполняется преобразование в PHP-код.
компиляции базы данных. Вы мо-
га; Отладочные сообщения жете перенести этот дамп непос-
80
программирование
редственно в сервер СУБД. тогда с этими данными авто-
Универсальность и перено- матически будут связаны от-
симость дампа достигает- дельные таблицы. Осталь-
ся за счет применения в нем ные атрибуты концерта мо-
для управления структурой гут быть введены через тек-
базы и данными операторов стовые поля и автоматичес-
на языке SQL. ки попадут в главную табли-
Среда предусматривает цу, содержащую помимо этих
возможность определения атрибутов и первичный ключ,
автоматической связи меж- и ключ места проведения.
ду элементом и столбцом од- Разумеется, при постро-
ной из таблиц базы данных. ении сложных многоуровне-
При этом у вас возникает воз- вых систем или при «класси-
можность автоматизировать ческом» подходе к проекти-
процесс разработки структу- Рисунок 6. Встроенный интерфейс управления базой данных рованию информационной
ры базы данных, основываясь на ин- сколько этапов, среди которых мож- системы такой подход является невер-
формации, получаемой из визуально- но выделить: ным – проектирование базы данных
го программирования. 1) изучение предметной области, в ко- должно предшествовать разработке
Пример структуры автоматически торой производится разработка; интерфейса. Но я хочу отметить, что
разрабатываемой базы данных при- 2) построение модели предметной об- такая функциональная возможность
веден на рис. 7. В качестве примера ласти; вполне может быть использована в
приводится интерфейс для базы дан- 3) разработка логической модели целом ряде случаев, когда структура
ных «афиши концертов». данных; базы данных не очень сложна или из-
Таким образом, при построении 4) разработка физической модели начально очевидна.
нового проекта некой информацион- данных в средствах той или иной
ной системы Синбад позволяет пол- СУБД; Что дальше
ностью снять с вас задачу проектиро- 5) программирование базы данных На текущий момент остаются нерешен-
вания базы данных – она будет разра- непосредственно в СУБД. ными некоторые задачи, касающиеся
ботана автоматически. Единственной функциональных возможностей среды
рекомендацией в данном случае будет Создание БД на этапе построения разработки. Требуется разработка ме-
необходимость задавать для элемента интерфейса к ней по сути является ме- ханизма сохранения результатов ком-
осмысленное имя до назначения ему тодом, позволяющим вам в целом ря- пиляции с учетом изменений, сделан-
автопривязки к БД, так как при созда- де случаев получить готовую физи- ных программистом в конечном коде
нии полей таблиц будет использовано ческую модель БД непосредственно программного модуля на языке PHP.
имя элемента. из модели предметной области. Дейс- На текущий момент, если вы отредак-
В классическом случае проектиро- твительно, на этапе создания интер- тировали полученный в результате
вание базы данных выполняется в не- фейса достаточно представлять се- компиляции код, то при последующей
бе лишь модель пред- компиляции его изменения будут по-
метной области. Так, теряны. Также необходима доработка
в нашем примере БД, редактора кода. В среде пока нет сис-
содержащей концерт- темы выделения синтаксических эле-
ную афишу, вам доста- ментов языка различными цветовыми
точно разработать эле- схемами и нумерации строк.
менты интерфейса для Возможно, отмеченные недостатки
ввода свойств пред- будут исправлены в последующих вер-
метной области – на- сиях среды. Также планируется доба-
звания концерта, вре- вить возможность проверки вводимых
мени и места его про- пользователем в элемент значений с
ведения, перечня ар- помощью скриптов на JavaScript.
тистов и прочее. Зада- Разрабатываемый продукт будет
ча проектирования ко- бесплатным, бета-версии в скором
нечных таблиц, ключей времени будут доступны по адресу
и связей в них и т. п. с http://evgy.opennet.ru.
вас снимается. В дан-
ном случае целесооб- Литература:
разно для выбора мес- 1. Воякин Е. Zend Studio 4.0 – новая
та проведения концер- версия, новые возможности. – Жур-
Рисунок 7. Схема автоматизации разработки структуры
та и артиста использо- нал «Системный администратор»,
базы данных вать списки выбора, №2, 2005 г. – 75-79 с.
АЛЕКСЕЙ МОИСЕЕВ
WWW является одним из наиболее динамично развивающихся сервисов глобальной сети
Интернет. За 14 лет развития сайтостроения была проделана большая работа по созданию
существующих стандартов, обеспечивающих не просто существование, а развитие WWW,
благодаря чему можно строить планы на будущее, не совершая ошибок прошлого.
Только полная картина всего, что было и есть, позволит понять, чего именно не хватает
на рынке в данный момент, а значит и определить дальнейший путь веб-разработок.
К
настоящему времени в Интер- Первые шаги «вырос» из более сложного языка
нете уже существует около двух В 1992 году была создана Всемирная SGML (Single Generalized Markup Lan-
миллиардов страниц. Ни одна информационная сеть (World Wide Web guage, ISO 8879) [1]. HTML как стандарт
из возможных тем не ускользнула от или просто Web). Разработчиком тех- для разметки веб-страниц вышел в
упоминаний в Web. Каждую секунду нологии был Тим Бернерс-Ли (Tim Ber- свет в ноябре 1995 года под названием
в Сети добавляется примерно 25 но- ners-Lee). Задача Сети заключалась в «HTML 2.0». После чего были предпри-
вых сайтов. распространении информации посред- няты попытки его модернизации, одна-
ством сетевой компьютерной техноло- ко проект «HTML 3.0» так и не был ре-
Рождение гии. Технология WWW стала развити- комендован интернет-консорциумом.
Со времён создания сети Интернет од- ем идей Gopher. Возможно, тогда потребностям веб-
ним из наиболее известных его серви- В истории было немало учёных, чьи разработчиков вполне отвечал преды-
сов стала «Всемирная паутина» – World мысли опережали время, в котором дущий стандарт. С течением времени
Wide Web. В 1991 году Пол Линдер (Paul они живут. Среди них был и Тед Нель- число пользователей WWW увеличи-
Linder) и Марк П. МакКейгил (Mark P. сон (Ted Nelson), который первым пред- валось, что привело к появлению сре-
McCahill) из Университета Миннесоты ложил концепцию гипертекста в своей ди разработчиков всё более талантли-
создали Gopher (полное название Go- книге «Computer Lib/Dream Machines», вых людей, которых возможности вто-
pher State – штат сусликов, шутливое опубликованной в 1974 году. В середи- рой версии HTML явно не устраивали.
название штата Миннесота). Техноло- не 90-х годов понятие гипертекста рас- То есть паутина всего за два года раз-
гия организации файлов в логическую ширилось и включило в себя идею ги- вилась до «HTML 4.0», который прак-
систему меню обусловила его немед- пермедиа, то есть добавление ссылок тически в неизменном виде использу-
ленное принятие как стандарт в сети на графические видеоклипы и музы- ется и по сей день с незначительными
Интернет. Протокол Gopher является кальные ролики. изменениями.
непосредственным предшественником На основе результатов работ Теда В конце 90-х интернет-консорциуму
концепции и функций WWW. Серверы Нельсона, а также концепции гипер- стало ясно, что HTML не отвечает пот-
Gopher быстро распространились в се- текста он сделал возможным включе- ребностям Web, и любая новая версия
ти Интернет, хотя в них не было гипер- ние графики, типографских текстовых HTML быстро устареет. Поэтому было
текстовых ссылок и графических эле- стилей и самое главное – гипертексто- предложено развивать расширяемый
ментов. Через короткий отрезок време- вые ссылки в веб-страницы. язык разметки: XML (eXtensible Markup
ни стало ясно, что возможностей таких Language) – новый стандарт оформле-
серверов не хватает. «Три кита» ния самых разнообразных докумен-
Самый большой сервер Gopher новой технологии тов, в том числе и веб-страниц. Уни-
принадлежал европейской организа- Основой Web стали три новых техно- кальность XML заключается в его не-
ции CERN (Европейская лаборатория логии: ограниченной расширяемости в си-
физики частиц высокой энергии). Эта HTML (HyperText Markup Language, лу четкой структурированности дан-
организация стала движущей силой язык разметки гипертекста) – язык ло- ных, возможности определения сво-
подключения Европы к Интернету. гической разметки веб-страниц. HTML их тегов и т.д.
82
web
XML так сильно отличается от HTML, Mozilla и недавно открытого кода Inter- ! Хранилище данных представляет
что был разработан XHTML (это осно- net Explorer. собой совокупность сервера уп-
ванный на XML язык разметки гипер- равления базами данных и самой
текста, максимально приближенный к Быстрое развитие базы данных. Однако в некоторых
текущим стандартам HTML. Был опуб- Число пользователей WWW лавино- случаях можно использовать фай-
ликован консорциумом в первый день образно увеличивалось, благодаря лы на жёстком диске.
2000 года как переформулирование чему всё большую роль в развитии
(Reformulation) HTML в XML. паутины стал играть бизнес. Каждый Благодаря шаблонам количество
HTTP (HyperText Transfer Protocol, день создавалось множество интер- HTML-кода сокращается в десятки
протокол передачи гипертекста) ис- нет-представительств компаний, ра- раз. К шаблонам обычно относят так-
пользуется для передачи веб-стра- ботающих в различных сферах рынка. же CSS-код и JavaScript-код.
ниц от сервера к пользовательскому Каждый отдельный сайт представлял Программная часть вполне может
браузеру. собой набор статических HTML-стра- быть написана на любом языке про-
Веб-браузер – программа, необхо- ниц, CSS-таблиц стилей, а также гра- граммирования, однако при этом по-
димая для просмотра веб-страниц. фических файлов. Для оперативного явится чрезмерная сложность отлад-
Практически сразу после создания обновления и своевременного добав- ки и платформозависимость. В начале
Web был создан первый браузер, при- ления новых разделов на сайт было развития CMS использовали Perl (для
чём он распространялся совершенно необходимо держать в штате компа- UNIX-хостингов) и ASP (для Windows-
бесплатно. Браузер назывался Mosa- нии группу веб-разработчиков. Сде- хостингов). Популярность Perl (Prac-
ic, его создали в Национальном цен- лать переоформление (редизайн) та- tical Extraction and Report Language) в
тре суперкомпьютерных приложений кого сайта вообще не представляется те времена можно было объяснить це-
при университете Иллинойса в 1993 возможным, так как для этого необхо- лым рядом причин: простота синтакси-
году. Ничто в истории информацион- димо отредактировать каждую стра- са, большие возможности интерпрета-
ных технологий не распространялось ницу в отдельности. Например, если тора, а главное – каждый администра-
с такой же быстротой. на одну страницу уходит 20 минут, то тор UNIX использовал его для управле-
Более подробную информацию о на 1000 страниц уйдёт примерно 42 ния и настройки системы. То есть люди,
WWW можно найти по ссылке [2], где рабочих человеко-дня, что составля- чья работа хоть как-то связана с UNIX-
есть ответы на все наиболее часто ет чуть более двух недель работы не- подобными системами, уже владели
встречающиеся вопросы. большой группы веб-разработчиков практически всеми необходимыми зна-
Нововведением в стандарте W3C при условии, что в это время им не ниями для веб-разработки. Однако Perl
HTML 4.0 явились листы стилей (style будут давать срочных заданий. В ито- изначально не был предназначен для
sheets), позволяющие отделять содер- ге для переоформления ресурса от- этого. Поэтому параллельно существо-
жание HTML-документов от их пред- дел информационных технологий бу- вали более адаптированные для Web
ставления. Связывая один сценарий дет полностью парализован на отно- языки (интерпретаторы). К ним можно
со всеми страницами ресурса, вы мо- сительно длительное время, что недо- отнести PHP (раньше понималось как
жете изменять внешний вид сразу все- пустимо, за редким исключением. На Personal Home Pages, однако в послед-
го сайта, даже если со страницами в рынке сформировалась потребность нее время расшифровывается как Hy-
данный момент работают пользова- в автоматизированной системе пост- pertext Preprocessor), Python, KixtArt,
тели. В настоящее время существует роения страниц сайта на основе напи- Yo-Script (скриптовый язык, который
стандарт Cascade Style Sheets Level 2 санных статей и HTML-шаблонов. Та- длительное время использовался для
(CSS2), однако полностью его не под- кие системы были названы CMS (Con- отображения страниц в www.yahoo.
держивает ни один браузер. Элемен- tent Management System, системы уп- com) и множество других. Работа над
ты, поддержка которых реализована равления контентом), они, как прави- большинством таких языков прекра-
в тех или иных браузерах, как прави- ло, состоят из трёх частей: щена, однако остальные начали раз-
ло, по разному «понимаются». Даль- ! Статическая часть – HTML-шабло- виваться быстрыми темпами. Напри-
ше всех в этой области продвинулись ны. мер, PHP до 4-й версии обладал рядом
браузеры, выпускаемые под маркой ! Программная часть – в большин- недостатков, не позволявших ему по-
Mozilla (Mozilla, Mozilla ForeFox, Mozil- стве случаев интерпретируемые лучить абсолютную популярность (на-
la ThunderBird). В ближайшее время модули, которые также можно раз- пример, первые версии PHP позволя-
выйдет стандарт Cascade Style Sheets делить по назначению ли писать лишь небольшие скрипты),
Level 3 (CSS3). Исследования [3] пока- ! Пользовательские скрипты, по- однако в 4-й версии все они были уст-
зывают, что в текущее время наибо- казывающие информацию по- ранены. В текущий момент большинс-
лее популярным браузером является сетителям, используя шаблоны тво проектов работают именно на PHP-
Internet Explorer, им пользуются около страниц и информацию из хра- скриптах, однако также встречаются и
89% пользователей WWW. На втором нилища данных. Perl/ASP-движки.
месте Mozilla, у которого около 6,8%. ! Администраторские скрипты
Среди остальных браузеров можно вы- позволяют управлять возмож- Хранилище информации
делить: Opera, Konqueror, Lynx, а так- ностями веб-ресурса, такими В качестве хранилища данных на лю-
же браузеры, построенные на основе как: голосования, анонсы и т. п. бом, сколько бы то ни было весомом
84
web
наук, а также развития навыков эф- нако ни одно такое решение, на- контентом, кроме рассматриваемой).
фективного использования инфор- сколько мне известно, так и не В принципах работы этой организа-
мационных ресурсов. Таких систем смогло по возможностям и эрго- ции можно почерпнуть наиболее удач-
существует не много: ATutor, Claro- номике хоть немного приблизить- ные идеи: если брать деньги не за са-
line, LogiCampus, Moodle, Segue, ся к вышеупомянутым системам. му CMS, а за её аренду, причём раз-
Site@School. Например, админ. панель хостинга мещать её на своём сервере (тут важ-
8. Базы знаний (KnowledgeBase) net.ru даёт лишь простейшие фун- но учесть все условия к хостингу по-
позволяют накапливать опыт мно- кции управления и способна пока- тенциальных будущих заказчиков), то
жества разработчиков, работаю- зать только то, что может сделать это даст возможность предоставлять
щих (или работавших) в какой-ли- администратор за день работы. более эффективную поддержку кли-
бо одной организации. Каждая та- ентам, постоянно повышать безопас-
кая база знаний имеет свою специ- Альтернатива CMS ность и улучшать качество работы как
фичную структуру, поэтому общих Для того чтобы перевести статический самой системы, так и всего сервера в
решений на данный момент пред- ресурс под управление одной из CMS, целом. При увеличении числа поль-
ложено крайне мало, а точнее толь- необходимо создать его заново. Если зователей такой организации, рабо-
ко одно – Wiki. На этом «движке» на сайте уже имеются сложная струк- ты программистами добавляется ми-
работает широко известная элек- тура и большие объёмы данных, то це- нимум, что позволяет снижать плату
тронная энциклопедия Wikipedia. на вопроса становится ощутимой да- для всех пользователей, а самое глав-
Наиболее известная из существу- же для относительно богатых органи- ное – постоянно расширять возмож-
ющих ныне баз знаний – RFC (Re- заций. Так как продолжение существо- ности системы. Если в первые дни су-
quest For Comment, запрос на ком- вания в старом формате уже не пред- ществования IPI.CONTROL могла лишь
ментирование, обычно описание ставляется возможным, то формирует- управлять содержимым сайтов, теперь
работы с каким-либо протоколом и ся спрос на продукт, позволяющий уп- это полноценный рабочий кабинет ад-
тому подобное, публикуется в виде равлять существующим статическим министратора сайта. В системе реали-
небольшого документа, как прави- сайтом. Спрос порождает предложе- зован принцип единой администратор-
ло, с примером программы.). ние, и вот уже около пяти лет на рын- ской панели. Это можно связать с тем
9. Биллинг (Billing). Программное ке существует продукт IPI.CONTROL фактом, что за последние четыре го-
обеспечение, позволяющее про- (www.ipi.ru). В первом приближении он да в BugTraq не раз появлялись уязви-
вайдерам и реселлерам работать выполняет функции «насадки» на сайт, мости PHPNuke и других CMS, одна-
со счетами клиентов. Такие CMS позволяющей приблизить возможнос- ко о взломах сайтов на базе IPI.CON-
являются неотъемлемой частью ти такого ресурса к функциональности TROL не было ни одного сообщения.
крупной системы учёта потребле- CMS. Текущие возможности системы Безусловно, использование IPI не яв-
ния услуг пользователями. Зада- (в плане CMS) для больших проектов ляется столь массовым, как PHPNuke,
ча же CMS данной категории – в оставляют желать лучшего – IPI пред- по той причине, что последний беспла-
визуализации информации о пре- назначена для малого и среднего биз- тен, а IPI.CONTROL стоит больших де-
доставленных услугах, подключе- неса. Однако профессиональные мар- нег, однако в случае появления бреши
нии новых услуг, изменении теку- кетологи сделали своё дело, что дало в PHPNuke её будут устранять некото-
щих параметров, приёме плате- системе некоторое число постоянных рое (возможно, продолжительное) вре-
жей и т. п. Во всех случаях такие потребителей, ежемесячно пополня- мя, а в случае с IPI можно связаться по
системы пишутся своими силами. ющих бюджет компании, из которого сотовому телефону с директором и вы-
Для примера можно привести бил- идут деньги на дальнейшие разработ- сказать всё, что наболело.
линг-панель RuWEB. В ней созда- ки. Важно отметить, система сделана В следующей части, на основе ана-
но огромное количество тарифных таким образом, что позволяет в лю- лиза текущего состояния WWW, будут
планов, позволяющих пользовате- бой момент прекратить пользоваться сформулированы требования к CMS,
лям платить только за те парамет- её услугами. В этом смысле её мож- отвечающие потребностям пользо-
ры хостинга (трафик, место на жёс- но сравнить с некоторым инструмен- вателей (как бизнеса, так и частных
тком диске, MySQL, PHP, Perl), кото- том (например, отвёрткой), взятым в лиц) завтрашнего дня. Благодаря ко-
рые используются в полном объё- аренду. Пока пользуетесь – платите, личественной и качественной оцен-
ме. Пока ни одна другая фирма (ра- если чувствуете, что некоторое время ке ошибок, появлявшихся в истории
ботающая в этой секторе рынка ИТ- (больше двух-трёх месяцев) вы не бу- развития ресурсо-строения, быть мо-
услуг) не воспользовалась этой, не- дете использовать её, – то можно вре- жет, обозначенный в следующей час-
сомненно, удачной идеей. менно отключиться… или вообще пе- ти путь развития CMS окажется наибо-
10. Администраторская панель хос- рестать пользоваться услугами ком- лее правильным.
тинга. К этому классу относятся та- пании. Возможно, в этом заключается
кие продукты, как «Direct Admin» и одна из причин, почему скрипты сис- Ссылки:
«Control Panel». Немало хостинг- темы не продаются, а сдаются в арен- 1. http://www.w3.org/pub/WWW/Mark-
провайдеров стараются написать ду. Описанное свойство является боль- Up/SGML.
панель управления для пользова- шим плюсом, который пока не реали- 2. http://www.boutell.com/faq.
теля хостинга своими силами, од- зован ни в одной системе управления 3. http://www.securitylab.ru/54639.html.
ДЕНИС ГОРОДЕЦКИЙ
Практически на каждом веб-сайте работает счетчик посещений. И это неудивительно:
всем нам интересно, а кому-то еще и важно для бизнеса, сколько раз пользователи всемирной
паутины посещали наш сайт.
86
web
# огромного. Данная опция полезна для больших сайтов,
# период ротации журналов которых меньше, чем период
# ротации обыкновенных веб-серверов.
Incremental
Достоинства Webalizer:
! Доступность пакета.
! Простота и гибкость настройки.
! Достаточная информативность.
Недостатки Webalizer:
! Не очень удобный интерфейс отображения статистики.
! Нет возможности обновлять статистику из браузера. Рисунок 3. Статистика по дням месяца
88
web
Рисунок 4. Общая статистика по времени суток Рисунок 5. Эта таблица показывает 30 сайтов, с которых
чаще всего приходят пользователи
! Для поддержки русского языка необходимо «пропат- SiteDomain="www.domain.com"
чить» библиотеку GD и пересобрать пакет заново. # Разрешать или нет обновлять статистику через браузер
# (Wbalizer такого не позволяет)
AllowToUpdateStatsFromBrowser=1
AWStats
AWStats (http://awstats.sourceforge.net) – это система пред- А также при работе awstats_configure.pl в конфигураци-
ставления расширенной статистики по веб-сайту. Мощная онный файл веб-сервера добавляются строки:
и удобная программа, которая генерирует статистику на
основе логов веб-сервера и представляет ее графически. Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
Этот анализатор работает как через интерфейс CGI, так и в Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
командной строке и отображает всю возможную информа- ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"
цию, содержащуюся в логах, в виде графиков на нескольких <Directory "/usr/local/awstats/wwwroot">
страницах. AWStats анализирует log-файлы таких серверов, Options None
AllowOverride None
как Apache, WebStar и многих других веб-, прокси-, wap-, ftp- Order allow,deny
, почтовых и других серверов. В отличие от Webalizer, раз- Allow from all
</Directory>
работанного на С, AWStats написан на Perl, поэтому и рабо-
тает помедленнее, но этот недостаток компенсируется ку- После создания своего конфигурационного файла и
да большей информативностью полученных результатов. размещения awstats.pl в /cgi-bin (права на файл необходи-
Более прост и понятен в установке. мо сделать 755) можно начать работать двумя способами:
Пакет можно взять по адресу http://awstats.sourceforge.net. ! обновить статистику через командную строку:
Последовательность действий при установке очень проста,
скачиваете архив, распаковываете, затем запускаете про- # ./awstats.pl -conÞg=www.domain.com
грамму awstats_configure.pl. С ее помощью создается файл
типа awstats.www.domain.com.conf, в котором необходимо ! напрямую обратившись к файлу www.domain.com/cgi-
будет явно указать следующие параметры: bin/awstats.pl.
90
web
Рисунок 8. Так выглядитотображаемая статистика в AWStats Рисунок 9. Пример отображения cтатистики Analog
! Подойдет для тех, кому не нужна слишком большая ин- ! Существует проблема с русскими поисковыми строка-
формативность. ми.
94
подписка на II полугодие 2005
Российская Федерация ! Казахстан – по каталогу «Российская Пресса» через
! Подписной индекс: 81655 ОАО «Казпочта» и ЗАО «Евразия пресс»
Каталог агентства «Роспечать» ! Беларусь – по каталогу изданий стран СНГ через РГО
! Подписной индекс: 87836 «Белпочта» (220050, г.Минск, пр-т Ф.Скорины, 10)
Объединенный каталог «Пресса России» ! Узбекистан – по каталогу «Davriy nashrlar» российские
Адресный каталог «Подписка за рабочим столом» издания через агентство по распространению печати
Адресный каталог «Библиотечный каталог» «Davriy nashrlar» (7000029, Ташкент, пл.Мустакиллик,
! Альтернативные подписные агентства: 5/3, офис 33)
Агентство «Интер-Почта» (095) 500-00-60, курьерская ! Армения – по списку номенклатуры «АРЗИ» через ГЗАО
доставка по Москве «Армпечать» (375005, г.Ереван, пл.Сасунци Давида, д.2)
Агентство «Вся Пресса» (095) 787-34-47 и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул.Сарьяна,
Агентство «Курьер-Прессервис» 22)
Агентство «ООО Урал-Пресс» (343) 375-62-74 ! Грузия – по списку номенклатуры «АРЗИ» через АО
! Подписка On-line «Сакпресса» ( 380019, г.Тбилиси, ул.Хошараульская, 29) и
http://www.arzy.ru АО «Мацне» (380060, г.Тбилиси, пр-т Гамсахурдия, 42)
http://www.gazety.ru ! Молдавия – по каталогу через ГП «Пошта Молдавей»
http://www.presscafe.ru (МД-2012, г.Кишинев, бул.Штефан чел Маре, 134)
по списку через ГУП «Почта Приднестровья» (МD-33-
СНГ 00, г.Тирасполь, ул.Ленина, 17)
В странах СНГ подписка принимается в почтовых отделе- по прайслисту через ООО Агентство «Editil Periodice»
ниях по национальным каталогам или по списку номен- (2012, г.Кишинев, бул. Штефан чел Маре, 134)
клатуры АРЗИ: ! Подписка для Украины:
! Азербайджан – по объединенному каталогу российских Киевский главпочтамп
изданий через предприятие по распространению печа- Подписное агентство «KSS»
ти «Гасид» (370102, г. Баку, ул. Джавадхана, 21) Телефон/факс (044)464-0220
Подписные
индексы:
81655
по каталогу
агентства
«Роспечать»
87836
по каталогу
агентства
«Пресса
России»
РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец
В СЛЕДУЮЩЕМ
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
НОМЕРЕ:
Технический редактор
Владимир Лукин
Редакторы DSPAM: некоторое количество серверов, на
Андрей Бешков персонифицированная всех установлена AIDE, базу которой
Алексей Барабанов система фильтрации рекомендуется хранить на сменном но-
Михаил Платов спама сителе с целью не допустить попада-
Фильтрация почты, особенно на сер- ния ее в чужие руки. Как реализовать
РЕКЛАМНАЯ СЛУЖБА вере провайдера, затруднена тем, что это требование? Не вручную ведь ко-
тел./факс: (095) 928-8253 администратор не может брать на се- пировать базу с каждого сервера? Для
Константин Меделян бя вынесение вердикта, что доставить автоматизации этой задачи и был раз-
reсlama@samag.ru абоненту, а что нет. Система DSPAM работан скрипт AIDEControl.
позволяет переложить принятие тако-
Верстка и оформление го решения на пользователя. SAP + MySQL = MaxDB
maker_up@samag.ru При выборе СУБД для проекта перед
Дизайн обложки Asterisk и Linux: нами часто встаёт проблема выбора
Николай Петрочук миссия IP-телефония между низкой (часто нулевой) стои-
Действие 3 мостью открытых БД, таких как MySQL
По вопросам распространения Мы достаточно подробно изучили воз- или PostgreSQL, и мощью и широтой
обращайтесь по телефону: можности Asterisk в сопряжении с го- возможностей «серьёзных» СУБД –
(095) 928-8253 (доб. 120) родской телефонной сетью. Теперь, Oracle, DB2, MSSQL. MaxDB от компа-
после того как в нашем распоряже- нии MySQL AB, наследница SAP DB –
107045, г. Москва, нии оказалась полноценная мини-АТС, прекрасная альтернатива такому вы-
Ананьевский переулок, дом 4/2 стр. 1 самое время приступить к плановому бору. Это промышленная, SAB-серти-
тел./факс: (095) 928-8253 улучшению ее возможностей. Начнем с фицированная база данных, распро-
Сайт журнала: www.samag.ru вещей наиболее приятных – облегчим страняемая под лицензией GPL. Уста-
процесс администрирования. новим MaxDB и познакомимся побли-
РУКОВОДИТЕЛЬ ПРОЕКТА же с возможностями, которые она пре-
Петр Положевец Управление удаленными доставляет.
УЧРЕДИТЕЛИ базами AIDE
Владимир Положевец Программа AIDE предназначена для Копирование без границ
Александр Михалев контроля за изменениями файловой Копировщики лазерных дисков совер-
ИЗДАТЕЛЬ системы посредством создания отде- шенствуется с каждым днем, но и раз-
ЗАО «Издательский дом льной базы, содержащей информацию работчики защитных механизмов не
«Учительская газета» об атрибутах файлов – дате и време- дремлют, тем не менее, новые защи-
ни создания и модификации, размере, ты тут же ломаются. Почему? Предла-
Отпечатано типографией владельце, а также контрольную сумму гаем вам обзор наиболее популярных
ГП «Московская Типография №13» содержимого файла для проверки его ошибок и конструктивных просчетов
Тираж 8400 экз. на неизменность содержимого. Пра- с рекомендациями по их устранению,
вильное использование AIDE гаранти- а так же законченный алгоритм чрез-
Журнал зарегистрирован рует в достаточной степени неизмен- вычайно стойкой защиты, не копируе-
в Министерстве РФ по делам печати, ность файлов. Но, допустим, имеется мой никаким копировщиком.
телерадиовещания и средств массо-
вых коммуникаций (свидетельство
ПИ № 77-12542 от 24 апреля 2002 г.) Уважаемые читатели!
За содержание статьи ответствен- Спешите оформить подписку
ность несет автор. За содержание на второе полугодие 2005 года!
рекламного обьявления ответствен-
ность несет рекламодатель. Все пра- Приобрести новые и старые номера журнала
ва на опубликованные материалы за- вы можете через интернет-магазины LinuxCenter.ru и Allsoft.ru.
щищены.
Доставка почтой в любую точку России.
96