на NTFS-разделах
Пакетные команды интерфейса ATAPI
PHP 5 – пришествие неизбежно
оглавление
АДМИНИСТРИРОВАНИЕ БЕЗОПАСНОСТЬ
BUGTRAQ 29, 85
АНДРЕЙ МАРКЕЛОВ
Думаю, в настоящее время никто уже не станет спорить с ! Гибкие настройки планирования архивации данных.
утверждением, что процесс вхождения Linux в корпоратив- ! Оповещения о выполненных действиях администрато-
ный мир стал необратимым, а процент установок этой опе- ра и пользователей посредством электронной почты.
рационной системы на серверах в различных организаци- ! Поддержка клиентов, работающих под управлением
ях постоянно возрастает. Linux, Freenix, Solaris Win95, Win98, Win2000 и WinXP.
Можно бесконечно спорить о преимуществах одних опе- Сервер тестировался на Linux, Freenix и Solaris.
рационных систем над другими, но когда у меня возникло ! Очень подробная документация.
желание сделать единое хранилище для ежедневных архи-
вов информации с более десяти серверов своей организа- В данной статье я хочу обобщить свой опыт установки,
ции, работающих под управлением нескольких различных настройки и эксплуатации этой системы, а также поделиться
ОС, я свой выбор остановил на платформе Linux. До сих решением нескольких проблем, которые возникли в про-
пор каждый сервер с помощью уникальных для него скрип- цессе установки.
тов в назначенное время сбрасывал по сети на сервер ре- Я проверял работу BackupPC версии 2.1.0, последней на
зервного копирования или stand by-сервер какие-то свои момент написания статьи, при помощи тестовой машины под
данные, например, пользовательские файлы с сетевых дис- управлением Fedora Core 2, и на «боевых» серверах, рабо-
ков, или дампы базы данных. Для этого использовались раз- тающих на Red Hat Linux 9 и White Box Enterprise Linux 3.
личные протоколы: ftp, SMB или штатные средства СУБД. Операционная система, стоящая на тестовом сервере фак-
При этом приходилось следить за уникальным для каждого тически является альфа-версией будущего Red Hat Enterprise
сервера лог-файлом, и в случае каких-либо изменений в Linux 4, а White Box Enterprise Linux 3 перекомпиляцией из
стратегии резервного копирования править скрипты на каж- свободно доступных исходных текстов текущей, третьей вер-
дой машине. сии коммерческого Linux-дистрибутива от Red Hat.
Чтобы как-то упростить администрирование и сократить Необходимость использовать не поддерживающуюся
время, затрачиваемое на поддержку и мониторинг всего более «девятку» возникла при установке RAID-контролле-
этого «зоопарка», я начал искать систему, которая бы под- ра Promise SuperTRAX SX6000, для которого существова-
держивала копирование информации по сети, умела делать ли драйвера только под эту операционную систему.
инкрементальные бэкапы, поддерживала бы удаленное
администрирование и не требовала установки клиентского Требования к установке
программного обеспечения. Кроме того, было важно, что- Прежде чем приступить непосредственно к инсталляции и
бы система умела работать по протоколу SMB, так как часть настройке самой системы резервного копирования
серверов, в частности основной файл-сервер, работали под BackupPC, необходимо определиться с требованиями к про-
управлением ОС Windows. граммному окружению, в котором должен работать сервер.
Спустя непродолжительное время такая система была Во-первых, как я уже писал, это операционная система,
найдена. Ею оказалась открытая, распространяющаяся по в роли которой может выступать Linux, Solaris либо другая
лицензии GNU система архивирования данных масштаба UNIX-подобная система. Во-вторых, необходимо предусмот-
предприятия BackupPC. Сайт расположен по адресу http:// реть наличие вместительного RAID-массива, или исполь-
backuppc.sourceforge.net. зовать LVM. Кроме того: Perl версии 5.6.0 или выше, Samba-
Основные особенности рассматриваемой программы: и Apache-сервер.
! Язык программирования, на котором написана систе- В этой статье я не буду касаться настройки клиента
ма, – Perl. Samba, в частности, работы в составе Active Directory. Я
! Минимизация хранимой информации за счет того, что предполагаю само собой разумеющимся, что если вы пла-
идентичные файлы из разных резервных копий хранят- нируете производить архивацию информации с Windows-
ся только в одном экземпляре. серверов, работающих в составе домена, то и должны обес-
! Настраиваемая степень сжатия данных. печить к ним доступ вашей Linux-машины. Отсутствие опи-
! Поддержка работы по протоколам smb/ssh/rsh/nfs. сания процесса конфигурирования Samba-сервера в дан-
! Мощный CGI-интерфейс, позволяющий управлять сер- ной статье, думаю, компенсируется многочисленными ма-
вером по сети посредством веб-браузера. териалами на эту тему в Интернете.
! Поддержка архивирования информации с машин, полу- Также предполагается, что вы используете кодировку
чающих настройки сети через DHCP, разрешая имена KOI-8 вместо установленной по умолчанию в большинстве
при помощи nmblookup. современных дистрибутивов UTF-8. Red Hat, в частности,
2
администрирование
перешла на ее использование с версии 8.0 своего продук- теля (httpd или apache), требуется Suid Perl. В Red Hat дис-
та. Но дело в том, что поддержка русского языка при помо- трибутивах соответствующий пакет называется perl-suidperl.
щи UTF-8 во многих приложениях далека от совершенства. Ну и, наконец, добавим пользователя, из-под которого
Безусловно, лучшим решением была бы работа с UTF-8, будет выполняться запуск системы резервного копирования:
но в данном случае я предпочел пойти по пути «наимень-
шего сопротивления» и воспользоваться уже существую- #useradd backuppc
щими у меня наработками.
Соответственно должен быть настроен и веб-сервер, у После окончания тестирования системы нелишним бу-
которого в качестве кодировки по умолчанию должно быть дет убрать для пользователя backuppc возможность инте-
указано KOI8-R. рактивного входа.
Приступая к установке BackupPC, в системе необходимо
иметь следующие perl-модули: Compress::Zlib, Archive::Zip и Установка BackupPC
File:RsyncP. Проверить наличие установленных модулей Теперь можно приступить непосредственно к установке
можно, дав команду: BackupPC. Развернем архив и запустим конфигурационный
скрипт:
perldoc <èìÿ ìîäóëÿ>
#tar zxvf BackupPC-x.x.x.tar.gz
#cd BackupPC-x.x.x
Если в ответ будет получено сообщение вида: #perl configure.pl
4
администрирование
! $Conf{CgiAdminUserGroup} и $Conf{CgiAdminUsers} – #chkconfig - -add backuppc
пользователи и группы, которым доступен CGI-интерфейс. #chkconfig - -level 35 backuppc on
К сожалению, данные действия приходится делать вруч-
Обратите внимание, что параметры, относящиеся к кон- ную, так как разработчики не включили эти операции в ус-
кретной машине, могут быть переопределены машинно- тановочный скрипт.
зависимым файлом Config.pl, который хранится в подди- В лог-файле messages вашего сервера должно появить-
ректории каталога с данными /BackupPC/pc/<имя_компью- ся сообщение об успешном старте сервиса, а в директории
тера>/. Действительно, на каждой машине могут быть свои с данными /BackupPC/log будет создан подробный лог са-
конкретные папки общего доступа, списки исключений, свой мого сервиса. После успешного старта можно попробовать
локальный пользователь с паролем, для которого установ- запустить браузер, и обратиться по адресу http://имя_сер-
лены свои разрешения. вера/cgi-bin/BackupPC_Admin. Если вы сделали все правиль-
Теперь настроим список компьютеров, данные с кото- но, то должны получить нечто подобное тому, что изобра-
рых необходимо архивировать. Файл с настройками нахо- жено на рисунках. В случае проблем с доступом к CGI-ин-
дится в том же каталоге, где и основной конфигурацион- терфейсу рекомендую обратиться к FAQ на сайте http://
ный файл, и называется hosts. Собственно, синтаксис фай- backuppc.sourceforge.net. В большинстве случаев в первую
ла максимально прост. Каждая строчка содержит три па- очередь необходимо проверить права доступа к файлам и
раметра: имя машины, имя (e-mail) ее хозяина и признак, директориям BackupPC. Однако, если вы следовали при-
получает ли данный компьютер сетевые настройки по DHCP веденному порядку установки, таких проблем возникнуть
или нет. не должно.
Теперь осталось скопировать скрипт старта и останов-
ки сервиса из дистрибутива /init.d/linux-backuppc в /etc/rc.d/ Русификация
init.d/backuppc, в случае Red Hat дистрибутива, а затем Еще одной проблемой при работе с CGI-интерфейсом, ре-
можно попробовать стартовать BackupPC командой: шение которой, однако, пришлось искать самому, может
стать некорректное отображение русских имен файлов и
#service backuppc start папок. Для исправления этой ситуации придется внести не-
большие изменения в файл Lib.pm, расположенный в подка-
Кроме того, нелишне добавить автоматический старт талоге /CGI директории с исполняемыми файлами програм-
при загрузке сервера в консоль и в X-Window: мы. Данный файл содержит системные процедуры BackupPC.
6
администрирование
8
администрирование
лов, новичкам советую воспользоваться утилитой pppsetup. orinoco и linux-wlan-ng. Некоторые изготовители подобных
После чего попробовать дозвониться, введя ppp-on, оста- устройств отказываются от производства драйверов для
новка при ppp-off. Аналогично для настройки ADSL-моде- систем, отличных от Microsoft Windows, некоторые из них
ма используем adsl-setup и запускаем/останавливаем adsl- (вроде Intel Centrino 2100, 3Com 3CRSHPW796) можно зас-
start/adsl-stop. Команда iptables -L -v выдает пустые цепоч- тавить работать при помощи утилиты ndiswrapper (http://
ки, что вполне естественно, т.к. по умолчанию все строки в ndiswrapper.sourceforge.net), в качестве входного парамет-
файле /etc/rc.d/rc.firewall закомментированы, если планиру- ра которой указывается inf файл. Дополнительно к упоми-
ется выход в Интернет, то это надо подправить. Firewall наемой выше утилите frottle, статус работы которой можно
Shorewall настроен (конфигурацию можно просмотреть в просмотреть, набрав http://192.168.1.1/frottle/frottle.html, в
файлах, расположенных в каталоге /etc/shorewall) на рабо- комплект включена и утилита мониторинга WiFi-сетей
ту с двумя ethernet-адаптерами eth0 и eth1, и в такой кон- wavemon. Имеется и веб-сервер Apache, поэтому если про-
фигурации можно ничего не трогать, а только запустить. сто набрать в браузере IP-адрес LiveCD Router, то получите
Настроив один раз все параметры, естественно, не хо- доступ к документации по настройке утилит, входящих в
чется повторять эту процедуру сначала, поэтому их можно комплект, и статистике MRTG, Frottle. Интересно, что при
сохранить на дискету, воспользовавшись командами через загрузке система обнаруживает разделы ext3 и FAT и мон-
Webmin или вручную. тирует их в режиме чтение-запись в каталог /mnt. Из кли-
ентских приложений присутствуют веб-браузеры links и
#configsave /dev/fd0 lynx, почтовые клиенты mutt nail и пакеты для работы по
протоколу ftp – ncftp и lftp, так что в случае крайней необхо-
Восстановить настройки. димости можно использовать LiveCD Router для получения
информации из Интернета. Для тех же, кто решится исполь-
#configrestore /dev/fd0 зовать дистрибутив в качестве постоянного маршрутиза-
тора, может пригодиться наличие демона genpowerd, рабо-
Хотя если вставить дискету во время загрузки систе- тающего в паре с UPS и позволяющего оперативно реаги-
мы, то параметры будут считаны автоматически. ровать на нарушения электропитания.
Со списком поддерживаемых WiFi-устройств можно оз- Скорее всего совет использовать LiveCD-дистрибутив
накомиться на странице http://www.wifi.com.ar/doc/wifi/ для организации постоянного доступа в сеть вряд ли кто-
wlan_adapters.html. Поддерживается большое количество то воспримет всерьез, но в случае непредвиденных обсто-
адаптеров, как внешних (USB, pcmcia), так и внутренних, ятельств это может быть тот единcтвенный инструмент, ко-
на чипах prism2 и Hermes, используются драйвера hostap, торый поможет быстро решить проблемы.
СЕРГЕЙ СУПРУНОВ
Недавно мне пришлось столкнуться с такой задачей: име- Прежде всего нужно было поднять на FreeBSD VPN-сер-
ется локальная сеть с адресами 10.x.x.0/24. вер. Почитав немного про такие средства, как poptop и mpd,
свой выбор я остановил на последнем как более «родном»
для FreeBSD. Mpd использует интерфейс netgraph, благо-
даря чему большинство операций выполняется на уровне
ядра системы, тем самым повышая скорость работы. Как
правило, специально включать поддержку netgraph в ядро
не требуется – она подгружается и отлично работает в виде
модулей, в чем можно убедиться с помощью команды kldstat
(после того, как mpd будет установлен и запущен):
10
администрирование
можно будет найти в /usr/local/etc/mpd – стандартная для котором сервер будет ожидать входящие соединения (в
FreeBSD раскладка. Сценарий автозапуска будет находить- моем случае это «внутренний» интерфейс FreeBSD, смот-
ся в /usr/local/etc/rc.d. Сразу после инсталляции файлы кон- рящий в локальную сеть). В качестве адреса сервера для
фигурации и сценарий будут иметь расширение «.sample», соединения VPN задан адрес «внешнего» интерфейса, мар-
следовательно, их нужно переименовать, убедившись, что шрутизируемого в Интернет.
никакие исправления (например, другие пути) в них вно- Поскольку со стороны VPN-сервера никуда дозванивать-
сить не нужно. Единственное, что от нас теперь требуется, – ся не требуется, то настройки в mpd.script для нас несуще-
отредактировать конфигурационные файлы для нашей за- ственны. Остальные два конфигурационных файла будут
дачи и запустить серверный процесс mpd. Файл mpd.conf выглядеть примерно так:
примет примерно следующий вид:
#--------------------- mpd.links -----------------------
#------------------- mpd.conf -------------------------- pptp0:
default: set link type pptp
# Óêàçûâàåì, êàêóþ êîíôèãóðàöèþ ãðóçèòü (â ïðèíöèïå âñå #------------------- mpd.secret ------------------------
# ïàðàìåòðû ìîæíî çàäàòü è íåïîñðåäñòâåííî â ñåêöèè default):
load pptp0 username "userpassword" *
ВЗАИМОДЕЙСТВИЕ SHELL-СКРИПТОВ
С ПОЛЬЗОВАТЕЛЕМ ПОСРЕДСТВОМ ZENITY
АНДРЕЙ УВАРОВ
В данной статье речь пойдёт о том, каким образом можно бразить сообщение об ошибке, достаточно выполнить сле-
без особых усилий сделать графический интерфейс к shell- дующее:
скриптам.
Если вы хотите сделать взаимодействие ваших про- # zenity --error
грамм с пользователем более простым, то эта статья для
вас, и не важно, какой язык вы используете, будь то bash, В результате мы увидим сообщение об ошибке:
perl, python и т. п.
Итак, Zenity является утилитой отображения диалогов.
Программа имеется в составе большинства распостранён-
ных дистрибутивов Linux, хотя ее можно скомпилировать
или найти уже в бинарном виде практически для любой *nix- Все диалоги имеют некоторые свойства, значения кото-
системы. рых также определяются параметрами запуска. Общие для
Взаимодействие с X-сервером производится с помощью всех диалогов свойства, то есть те, которыми обладают все
библиотеки GTK+. диалоги, такие: title, window-icon, width, height. Очевидно, что
Рассмотрим функциональные возможности данной про- title определяет заголовок окна, window-icon – пиктограмму,
граммы. Имеется десять видов диалогов. а width и height – ширину и высоту окна соответственно.
1. Calendar – календарь (date-picker). Теперь можно поговорить о каждом из диалогов под-
2. Entry – однострочное текстовое поле ввода. робнее.
3. Text-info – диалог отображения многострочной тексто-
вой информации, который может применяться и как поле Info, question, warning и error
ввода. Хотя, по всей видимости, это не является его ос- Text – выводимое сообщение. Различаются данные диало-
новным назначением. ги лишь пиктограммой, находящейся напротив сообщения.
4. Error – сообщение об ошибке. Question имеет две кнопки, соответствующие положитель-
5. Info – сообщение общего характера. ному и отрицательному ответу на сообщение.
6. Warning – предупреждение.
7. Question – вопросительное сообщение с возможностью
ввода утвердительного или отрицательного ответа.
8. File-selection – выбор файла.
9. List – список с возможностью выбора и редактирования
его элементов. Calendar
10. Progress – Progress bar dialog. Отображает статус вы- ! Text – сообщение, выводимое над полем выбора даты.
полнения текущей операции. ! Day, month и year – день, месяц и год, которые будут
установлены по умолчанию.
Заставить утилиту делать то, что мы пожелаем, мож- ! Date-format – строка, определяющая формат возвраща-
но посредством запуска программы с соответствующими емой даты. Формат строки эквивалентен формату вы-
параметрами. Имя любого из параметров состоит более зова функции strftime.
чем из одного символа и, следовательно, имеет префикс
«--» – «два минуса». При завершении выполнения будут Попробуем написать простое приложение, запрашива-
выведены результирующие данные в stdout или же код ющее дату рождения пользователя.
будет просто возвращён в stderr. Например, чтобы ото- Файл birthdate.pl:
12
администрирование
#! /usr/local/bin/perl Progress
do
! Text – сообщение над progress bar.
print `zenity --info --text "You may not enter real ↵ ! Percentage – начальное состояние, указываемое в про-
birth date" --title=birthday`; центах.
while(!($birthdate = `zenity --calendar ↵
--date-format=%d.%m.%y`)); ! Auto-close – автоматическое закрытие диалога после до-
`zenity --info --text "Your birth date is $birthdate" ↵ стижения 100%.
--title "Your Bitrh Date"`;
! Pulsate – определяет отображение «пульсирующего»
прогресса.
PostgreSQL:
ГРАФИЧЕСКИЙ КЛИЕНТ pgAdmin
СЕРГЕЙ СУПРУНОВ
В предыдущей статье, посвященной СУБД PostgreSQL (см. Professional затруднений не вызвала. После традиционно-
июльский номер журнала), упоминался графический кли- го вопроса о согласии с условиями лицензионного согла-
ент pgAdmin. В этой статье рассмотрим его основные фун- шения (пакет распространяется бесплатно) и нескольких
кции и возможности. секунд инсталляционных процедур программа была гото-
Для тестирования с сайта www.pgadmin.org был скачан ва к работе.
пакет pgAdmin III версии 1.0.2 для Windows 2000/XP (в виде При первом запуске было предложено выбрать предпо-
msi-архива). Размер дистрибутива составляет менее 5,5 Мб. читаемый язык интерфейса. Среди нескольких десятков
Установка пакета на операционную систему Windows XP поддерживаемых языков отыскался и русский.
14
администрирование
Открывшееся далее главное окно (рис. 1) своими очер- СУБД PostgreSQL версии 7.4.1 у меня была запущена
таниями вызвало в памяти образ входящего в состав СУБД на другой машине (под управлением FreeBSD), что и было
Oracle клиента PL/SQL Developer. Правда, некоторый аске- указано при добавлении сервера (рис. 2). Поясню отсут-
тизм панели инструментов навевал мысль, что в функцио- ствие пароля: моя рабочая машина прописана в файле
нальном плане различия будут более заметны, и никак не в pg_hba.conf (файл настройки доступа PostgreSQL) как до-
пользу pgAdmin. веренный хост, что позволяет соединяться с сервером БД,
как мне заблагорассудится. Своя рука – владыка. Есте-
ственно, на рабочем сервере такая халатность не привет-
ствуется.
Ðèñóíîê 1 Ðèñóíîê 2
Ðèñóíîê 3
Ðèñóíîê 6
Для работы с наполнением таблиц служит инструмент
«Просмотр данных» (рис. 6). Выполненный в стиле «старого
доброго» MS Access, он позволяет просматривать содержи-
мое таблицы, добавлять новые строки, изменять и удалять
существующие. Причем изменение данных возможно толь-
ко в случае, если таблица создана с установленным флагом
«Имеет OID». Как ни странно это выглядит, но в обоих слу-
чаях инструмент называется именно «Просмотр данных» (в
англоязычном варианте «View Data»), несмотря на возмож-
ность редактирования, хотя заголовок окна гласит «pgAdmin
III Edit data», и тоже в обоих случаях. Таким образом, этот
Ðèñóíîê 5 недочет, допущенный при проектировании интерфейса, спо-
16
администрирование
собен ввести в заблуждение, и сразу отыскать возможность времени, затрачиваемого на каждую операцию – незаме-
работы с данными таблиц довольно трудно. нимый инструмент для оптимизации запросов. В пункте
меню «Запрос» – «Опции режима объяснения» можно вклю-
чить и подробный разбор каждого запроса.
Ðèñóíîê 7
Более широкие возможности по работе с запросами
предоставляет «Инструмент запросов» (рис. 7). Тут уже есть Ðèñóíîê 8
куда ввести любой SQL-запрос и посмотреть его резуль- Функция обслуживания БД позволяет выполнить деф-
тат. Закладка «Сообщения» внизу окна позволяет ознако- рагментацию и анализ структуры базы данных либо отдель-
миться с такой информацией, как количество выбранных ных таблиц. Регулярная дефрагментация нужна для повы-
запросом записей и время выполнения запроса. Весьма шения скорости доступа к данным, а анализ поставляет
полезная функция – «Объяснить запрос» (рис. 8), выводя- служебную информацию оптимизатору СУБД, на основа-
щая последовательность действий, которые будет выпол- нии которой последний способен обрабатывать запросы бо-
нять PostgreSQL, обрабатывая данный запрос, с расчетом лее эффективно.
Ðèñóíîê 9
Ðèñóíîê 10
18
администрирование
МИХАИЛ ПЛАТОВ
Наконец-таки случилось – самый популярный продукт про- кет критических обновлений. Он включает в себя массу раз-
шлого и как минимум нескольких последующих месяцев, личных обновлений широкого характера, затрагивающих
имеющий непосредственное отношение к безопасности – практически все компоненты операционной системы
Windows XP Service Pack 2 – пакет обновлений, выпуск ко- Windows XP. Дабы не быть голословным, приведу доста-
торого несколько раз переносили и откладывали, был пре- точно полный список изменений, вносимых в систему па-
дан достоянию компьютерной общественности. Произош- кетом обновлений SP2.
ло это событие достаточно тихо (прямых ссылок в первые
дни не было). 9 августа на сайте загрузки корпорации Исправления для Windows XP
Microsoft, в разделе для IT-специалистов появился файл В состав SP2 входят все обновления SP1, все критические
WindowsXP-KB835935-SP2-ENU.exe – английская версия обновления, вышедшие после SP1, а также исправления,
Service Pack2, общим размером чуть меньше 300 Мб. касающиеся работы различных компонент ОС Windows XP.
Естественно, многие тут же принялись его скачивать, Полный список исправлений (а их более 800) можно найти по
устанавливать и тут же наткнулись на проблемы… Однако адресу: http://support.microsoft.com/default.aspx?kbid=811113.
обо всем по порядку.
Брандмауэр Windows Firewall
А что, собственно, нового? По мнению MS, это одно из самых значительных нововве-
В те времена, когда SP2 ждали, многие говорили: «А зачем дений SP2. Фактически он является улучшенной версией
он мне? Все обновления у меня есть, а эти тупые картинки Internet Connection Firewall (ICF), доступного в Windows XP.
для начинающих пользователей мне и не нужны». Действи- Теперь у него есть собственный графический интерфейс
тельно, у многих знакомых мне людей, в том числе и адми- конфигурирования, поддерживается задание глобальных
нистраторов, Service Pack 2 прежде всего ассоциируется с настроек для всех соединений, списков исключений (как для
«Центром безопасности», брандмауэром «Windows Firewall» IP-адресов, так и для приложений), различные режимы ра-
и наличием всех критических заплаток для Windows XP. боты (в домене и за его пределами, со списком исключе-
Однако даже поверхностное изучение соответствующей ния и без), а также работа в сетях IPv6. Кроме того, Windows
документации от Microsoft показало, что на самом деле все Firewall тесно интегрирован с ОС Windows – запускается на
как минимум немного не так. SP2 больше, чем просто па- ранней стадии загрузки ОС, до завершения инициализа-
20
администрирование
ции стека TCP/IP и выключается на одной из последних И если какой-либо из компонентов отсутствует или не
стадий завершения работы системы, что должно обеспе- работает, то центр безопасности выводит в системном трее
чить безопасность не только во время работы компьютера, соответствующее предупреждение:
но и во время его включения и выключения.
После установки SP2 Windows Firewall будет включен,
практически вся сетевая активность будет запрещена. Так,
при попытке обращения к сети какого-либо приложения
появится всплывающее окно:
Ðèñóíîê 3
На данный момент «Центр безопасности» не признает
брандмауэры и антивирусы третьих фирм. В скором вре-
мени, как только производители выпустят соответствующие
обновления, ситуация, скорее всего, изменится, а пока ад-
министраторы могут временно отключить соответствующие
напоминания, используя апплет «Центр безопасности», на-
ходящийся в панели управления Windows.
22
администрирование
можны случаи, в которых после установки SP2 некоторые Установка через групповые политики
приложения перестанут работать, однако совершенно оче- Для установки пакета обновлений используются возмож-
видно, что рано или поздно всем нам придется обновиться ности установки ПО в доменах Active Directory (технология
до уровня SP2, так что постараемся уменьшить негатив- IntelliMirror). Для того чтобы воспользоваться этим методом,
ные влияния этого процесса. Для этого попробуем просто не нужно ничего, кроме Active Directory, поэтому большин-
последовать рекомендациям самой Microsoft. Итак. ство организаций, особенно тех организаций, у которых нет
существующей инфраструктуры SUS или SMS, скорее все-
Варианты установки Service Pack 2 го, будут использовать именно его.
Для установки Service Pack 2 домашними пользователями Как известно, при установке ПО с использованием груп-
Microsoft рекомендует использовать узел Windows Update. повых политик, применяются файл-серверы. Именно на них
Сначала с сайта обновлений скачивается экспресс-установ- размещаются устанавливаемые программы. Поэтому при
щик, который затем загружает и устанавливает только те установке SP2 необходимо убедиться в том, что на всех ис-
файлы, которые нужно обновить на данном компьютере. пользуемых файл-серверах есть необходимое дисковое про-
Несколько иначе обстоит ситуация с пользователями странство для хранения распакованного SP2. Кроме того,
корпоративными. Для них у софтверного гиганта есть мас- так как в процессе установки файлы загружаются на клиен-
са рекомендаций и инструкций относительно того, как нуж- тский компьютер, необходимо, чтобы все клиенты имели на-
но устанавливать Service Pack 2. Согласно этим рекомен- дежное и быстрое сетевое соединение со своими файл-сер-
дациям процесс установки должен быть тщательно спла- верами. Так, в случае крупной организации при установке
нирован и документирован (график и список работ, распре- Service Pack 2 может использоваться следующая схема:
деление обязанностей, тесты, отчеты и т. д.). Так, на одном
из этапов предлагается создать тестовую лабораторию и
проверить в ней работоспособность системы с установлен-
ным SP2. Не будем более подробно останавливаться на всех
тонкостях, предлагаемых MS (благо для этого уже есть ме-
габайты соответствующей документации) и перейдем к
практической части – установке SP2. Для корпоративных
пользователей предусмотрено 3 варианта установки1:
! Software Update Services (SUS) – свободно распростра-
няемая платформа от Microsoft для установки критичес-
ких обновлений.
! Systems Management Server (SMS) – коммерческая сис-
тема от Microsoft для полного контроля над Windows-
машинами, в том числе и установки обновлений и про-
грамм.
! Group Policy (GP) – стандартный компонент доменов
Active Directory, также позволяющий установку ПО.
1
Во всех трех способах предполагается, что администратор сначала загружает пакет обновления с сайта Microsoft, а
затем устанавливает его на все необходимые компьютеры, используя наиболее приемлемый для него метод.
2
После установки SP2 можно освободить 350 Мб свободного места, удалив файлы отката SP2 (находится в %WINDIR%\
$NtServicePackUninstall$). Однако после этого удалить SP2 будет невозможно. Во время установки настоятельно ре-
комендуется отключить антивирусные программы.
3
В принципе Microsoft допускает публикацию SP2 для пользователей. В этом случае пакет становится доступным в
диалоге Установка и удаление программ → Установка программ. Однако такой способ не является рекомендуемым,
и для его реализации администратору придется самому создать соответствующий zap-файл.
24
администрирование
! Используя исполняемый файл или скрипт Visual Basic. зывается включен. Однако ситуация более чем исправи-
Этот способ подходит для организаций, в которых нет ма – работу Windows Firewall можно легко и быстро настро-
инфраструктуры Active Directory. Запрет или разреше- ить, используя методы, предлагаемые производителем.
ние установки SP2 определяется параметрами, с кото- В отличие от своего предшественника (ICF) у Windows
рыми запускается исполняемый файл. Firewall есть не один, а несколько интерфейсов для настрой-
! C помощью электронной почты. Администратор посыла- ки. Самый простой в использовании и доступный для боль-
ет письмо, содержащее URL, пользователи (с правами шинства пользователей – графический интерфейс, вызывае-
локального администратора), открыв это письмо и перей- мый через Панель управления → Брандмауэр Windows:
дя по ссылке, блокируют установку SP2. Для того чтобы
опять разрешить установку (после того как все возмож-
ные проблемы будут решены), достаточно послать новое
письмо с другим URL, отменяющим запрет установки.
Windows Firewall
Windows Firewall является одним из основных, и как пока-
зывает практика, одним из самых проблемных нововведе-
ний SP2. Многие неудобства, возникающие при работе про-
грамм на Windows XP SP2, вызваны именно тем, что пере-
даваемые ими данные блокируются новым брандмауэром
Windows, который после установки SP2 по умолчанию ока- Ðèñóíîê 6
Ðèñóíîê 7
Ðèñóíîê 8
26
администрирование
чить Windows Firewall после установки SP2 (например, если ! Откройте для редактирования (правая кнопка, Edit) все
в организации не используются host-firewall или использу- политики, шаблоны которых вы хотите обновить.
ются firewall третьих фирм) нужно добавить в этот файл сле-
дующую строку в секцию стандартного профиля: Через некоторое время (20-30 минут) новые шаблоны
будут реплицированы на остальные контроллеры домена.
HKLM,"SYSTEM\CurrentControlSet\Services\SharedAccess\ ↵ Если вы хотите ускорить этот процесс, то можете вручную
Parameters\FirewallPolicy\DomainProfile", ↵
"EnableFirewall",0x00010001,0 провести репликацию контроллеров домена Active Directory
с помощью оснастки Active Directory Sites and Services, ко-
Подробное описание по возможным настройкам, опре- торая имеется на всех компьютерах домена, а также на
деляемым в inf-файле, можно найти в документе «Using the рабочих станциях с установленными «Windows Server 2003
Windows Firewall INF File in Microsoft Windows XP Service Administration Tools Pack» (adminpack.msi, находится на ус-
Pack 2»: http://www.microsoft.com/downloadsdetails.aspx?Family тановочном компакт-диске Server 2003)4. После обновления
ID=cb307a1d-2f97-4e63-a581-bf25685b4c43&displaylang=en. шаблонов групповой политики компьютеры с Windows 2000,
Если же SP2 уже установлен на компьютеры пользова- 2003, XP, XP SP1 не смогут их редактировать.
телей, используемые программы перестали работать и в Описание решения этой проблемы и соответствующие
организации нет домена, то можно воспользоваться интер- исправления можно найти в следующей статье knowledge
фейсом конфигурирования через сетевую оболочку base: http://support.microsoft.com/default.aspx?kbid=842933.
netsh.exe (Пуск → Выполнить → netsh.exe).
Для конфигурирования брандмауэра используется кон- Новые возможности
текст firewall. Используя эту утилиту, можно изменять все Для управления новыми компонентами Windows XP при-
параметры, доступные для настройки через групповые по- меняются обновленные административные шаблоны. С их
литики. Кроме того, можно написать cmd-скрипт, после вы- помощью можно глобально определить используемые в
полнения которого на компьютере будут установлены кор- организации расширения Internet Explorer, правила рабо-
поративные настройки брандмауэра. Далее этот файл мож- ты с зонами безопасности, отображать или нет информа-
но разместить на сетевом диске или отправить по почте ционную панель и т. д. (Administrative templates → Windows
администраторам подразделений. Components → Internet Explorer → Security Features). Также
К сожалению, Windows Firewall не лишен недостатков. имеются возможности настройки параметров безопаснос-
Так, с его помощью невозможно блокировать исходящий ти RPC/DCOM, клиента автоматического обновления, ме-
трафик (правда, это можно сделать с помощью IPSec). неджера управления почтовыми вложениями (AES), цент-
ра безопасности, Windows Firewall, клиента служб терми-
Групповые политики налов, проигрывателя Windows Media 9, новых сетевых ком-
понентов Windows XP (BITS 2.0, P2P) и т. д. Документ, под-
Обновление шаблонов робно описывающий новые возможности настройки груп-
После установки SP2 в Windows XP появляются новые ком- повых политик Windows XP SP2, можно найти по адресу:
поненты, управлять которыми можно через групповые по- http://go.microsoft.com/fwlink/?LinkId=31974.
литики. Дополнительные настройки (более 600 настроек) Подробное описание всех параметров, конфигурируе-
содержатся в новых административных шаблонах. мых через групповые политики в формате Excel, можно най-
Администратор сможет использовать новую функцио- ти здесь: http://go.microsoft.com/fwlink/?linkid=22031. Этот
нальность SP2 сразу же после обновления административ- файл по праву можно считать «библией» администратора,
ных шаблонов на контроллерах домена. Для проведения использующего групповые политики. Помимо полного опи-
обновления воспользуемся консолью управления группо- сания действий всех политик в нем также приводятся пути
выми политиками (Group Policy Management Console), дос- реестра, используемые при конфигурации того или иного
тупной для загрузки по адресу: http://go.microsoft.com/fwlink/ компонента Windows.
?LinkId=21813 (см. рис. 8).
! Установите SP2 на одном из компьютеров домена. Проблемы с Service Pack 2
! Перезагрузите компьютер и войдите в систему под учет- Согласно информации из базы знаний Microsoft, подавля-
ной записью администратора домена, администратора ющее большинство проблем, связанных с SP2, вызваны
предприятия или члена группы «Владельцы и создате- Windows Firewall. Точнее говоря, не с самим Windows
ли групповой политики». Firewall, а сетевыми программами, которые он блокирует.
! Установите gpmc.msi. Путь решения таких проблем прост – либо настроить firewall,
! Откройте консоль gpmc (Пуск → Панель управления → добавив в него разрешение (в стандартной конфигурации
Администрирование → Group Policy Management). firewall сам покажет соответствующий диалог) для соответ-
! Подключитесь к домену, шаблоны на котором необходи- ствующей программы, либо, если политика безопасности
мо обновить. Для этого нажмите Действие → Add Forest предприятия это позволяет, попросту его отключить или ис-
и в появившемся окне введите имя домена. пользовать firewall от третьей фирмы.
! Откройте папку Group policy objects, содержащую все Из серьезных проблем, не связанных с брандмауэром,
объекты групповой политики домена. можно отметить несовместимость с программами SonicWALL
4
Для обновления также можно использовать обычную консоль mmc и оснастку Group Policy Object Editor.
Ðèñóíîê 10
Ðèñóíîê 9
На вкладке «Label» для полей Volume label, System
Identifier, Volume Set и Application введите WXPVOL_EN. В Ðèñóíîê 11
поля Publisher и Data Preparer введите MICROSOFT Если все было сделано правильно, то полученный диск
CORPORATION. будет загрузочным, однако лучше все же сначала прове-
На вкладке Burn выберите метод записи Disc-At-Once/96 рить работоспособность дистрибутива на диске CD-RW.
и нажмите New. Вместе с Service Pack2 также вышли обновленные
Далее перетаскиваем файлы дистрибутива в окно ком- support tools и deploy tools. Поэтому перед записью диска
пакт-диска, записываем (если нужно) свои файлы и папки не забудьте обновить эти утилиты новыми версиями с сай-
(например с MUI) и нажимаем burn (см. рис. 11): та Microsoft.
28
bugtraq
НАСТРАИВАЕМ СОЕДИНЕНИЕ
ПО ВЫДЕЛЕННОЙ ЛИНИИ
АНТОН БОРИСОВ
Сегодня мы займемся реализацией связи между двумя уда- Ключи «sos», «bootlog» добавлены исключительно для
ленными точками. А именно, будем устанавливать соеди- повышения информативности процесса загрузки.
нение между удаленной машиной под управлением ОС се- Переходим к стыковке двух модемов между собой.
мейства Windows 2000 и Access Server Cisco AS 2511. Не- Замечание. Необязательно применять именно эти мо-
обходимо связать в единое информационное пространство демы. Так получилось, что реализовывать соединение мне
филиал и офис фирмы. пришлось на их базе.
Для этого нам потребуется: выделенная линия (Leased В процессе работы очень пригодится справочник [1].
Line – LL), 2 модема ZyXEL серии U1496, собственно Access Приступим. Для тестирования на стенде нам потребует-
Server (AS) – его роль будет выполнять Cisco AS 2511 и ма- ся найти (или спаять самим) 2-проводной кабель с разъема-
шина с ОС Windows 2000. Мы ознакомимся с процессом ми RJ-11 на обоих концах. Соединим оба модема этим кабе-
установки связи как для Windows 2000 Professional, так и лем. У этих модемов есть гнезда LINE, PHONE. Используем
для Windows 2000 Server. Главное условие, которое мы бу- гнезда LINE, т.к. PHONE предназначены для подключения
дем иметь в виду – постоянное соединение с удаленной се- не напрямую в телефонную линию, а через телефонный ап-
тью, выход в которую обеспечивает Cisco. парат. Далее через коммуникационную программу настраи-
Когда основными являются требования установить со- ваем модемы. Станция управления работает у меня под
единение, передать информацию по каналу, разорвать со- Linux1, поэтому в роли коммуникационной программы выс-
единение, для таких случаев в комплекте с Windows 2000 тупает minicom (в случае если вы используете Windows, это
Server существует служба RRAS (Remote Routing and Access может быть HyperTerminal из стандартной поставки).
Server). В несколько иной (урезанной) форме данная служ- Консоль от Cisco подключена на COM2, а модем, кото-
ба есть и в Windows 2000 Professional. рый мы будем настраивать, подключен на COM1.
Задачу разбиваем на несколько этапов. На первом эта-
пе установим ОС Windows (серверный вариант и вариант # cat /usr/local/minicom/etc/minirc.ttyS0
Professional), на втором этапе свяжем между собой два мо- pr port /dev/ttyS0
дема, на третьем настроим AS и на последнем увяжем все pu baudrate 19200
pu bits 8
в единое целое. pu parity N
Первый этап, я считаю, можно доверить нашим читате- pu stopbits 1
лям. Отмечу, что нам потребуется поставить две ОС
Windows на один и тот же раздел, но в разные директории. Опции для minicom:
Условимся, что серверную ОС ставим в директорию ! -o – не производить инициализацию модема (то есть не
C:\WINNT.SRV, а Pro-версию – в директорию C:\WINNT.PRO. посылать строчки типа ATZ и т. п.)
Если у читателя имеется большой опыт установки ОС на ! -8 – использовать 8-битный ввод/вывод (для русского
разные разделы, то желательно их установить и на раз- интерфейса программы)
ные разделы (хотя это не принципиально). После установ- ! ttyS0 – название инициализационного файла (представ-
ки файл C:\boot.ini (он имеет атрибут hidden) должен выг- лен в виде minirc.MyName)
лядеть примерно так:
# minicom -o -8 ttyS0
[boot loader]
timeout=3
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT.PRO Программу minicom следует запускать с правами обыч-
[operating systems] ного пользователя (предварительно установив необходи-
multi(0)disk(0)rdisk(0)partition(2)\WINNT.PRO="Microsoft ↵
Windows 2000 Professional RUS" /fastdetect /sos /bootlog мые права доступа на нужные нам устройства ttyS).
multi(0)disk(0)rdisk(0)partition(2)\WINNT.SRV="Microsoft ↵ Включаем питание модема и в терминальной програм-
Windows 2000 Server" /fastdetect /sos /bootlog
ме подаем ему последовательность символов «+++» (3 зна-
1
Linux-машина, которая фигурирует в данной статье, предназначена для настройки модемов и для получения/отправ-
ки файлов на Cisco по tftp-протоколу.
30
администрирование
ка плюс). Этим самым мы переходим в командный режим Надо установить устройство «Модем». Снимите галку в
модема. Как узнать, что мы находимся в командном режи- диалоге, где система предложит определить тип модема
ме? Очень просто – модем выдает приглашение AT. сама. Далее выбираем «Стандартные изготовители».
Теперь мы должны послать в модем строку следующе-
го типа:
AT&F&L1*M1&H3S38.3=1S20=3S18=3S35.1=1S10=020*E1*Q1M0L0
AT&F&L1*M0&H3S38.3=1S20=3S18=3S35.1=1S10=020*E1*Q1M0L0
32
администрирование
Переходим к настройке AS (Cisco AS 2511). ком режиме. На этом шаге все проходит гладко, можно про-
В ходе работы потребуется tftp-сервер. Людям, рабо- сматривать некоторые параметры, однако вносить измене-
тающим под UNIX, немного удобнее. Почти наверняка tftp- ния нельзя. Список команд в IOS можно просмотреть на-
сервер уже есть в системе. Осталось только его запус- брав «?». Получить информацию по аппаратному обеспе-
тить. чению можно так:
Для Linux Slackware-систем следует отредактировать
>show version
/etc/inetd.conf.
Cisco Internetwork Operating System Software
IOS (tm) 2500 Software (C2500-I-L), Version 12.0(5)T, RELEASE SOFTWARE (fc1)
tftp dgram udp wait root /usr/sbin/in.tftpd ↵
in.tftpd -s /home/anthony/tftpd -u anthony -c C2500 uptime is 2 days, 23 hours, 36 minutes
System returned to ROM by power-on
где: System restarted at 14:37:27 MSD Tue Jul 6 2004
System image file is "flash:C2500-i-l.120-5.T.bin"
! ключ «-c» – разрешить создание файлов в домашней
директории; cisco 2511 (68030) processor (revision L) with 14336K/2048K bytes of memory.
! ключ «-u user» – запускать tftp-сервер от имени пользо- 1 Ethernet/IEEE 802.3 interface(s)
2 Serial network interface(s)
вателя user; 16 terminal line(s)
! ключ «-s path» – домашняя директория для tftp-сервера
32K bytes of non-volatile configuration memory.
находится в каталоге path. 8192K bytes of processor board System flash (Read ONLY)
Configurationregister is 0x2102
Подаем сигнал процессу inetd, чтобы он прочитал на-
стройки в /etc/inetd.conf и учел изменения в них. Здесь приведены некоторые принципиально важные
строки: точное название Access Server, количество интер-
# kill -1 inetd фейсов, название системного файла-образа операционной
системы.
Подключаемся через коммуникационную программу Команды можно сокращать до значимых букв, напри-
minicom в консольный порт Cisco. Скорость подключения мер, полная строка show users аналогична sh us. Клави-
равна 9600 бит/с. ша [TAB] позволяет не набирать полностью команду, а выб-
рать имеющийся вариант, т.е. работает как «расшири-
# cat /usr/local/minicom/etc/minirc.cisco тель».
pr port /dev/ttyS1 Для перехода в режим администрирования требуется
pu baudrate 9600 ввести команду enable.
pu bits 8
pu parity N В зависимости от текущей настройки Cisco, может по-
pu stopbits 1 требоваться административный пароль. Для выхода из ре-
# minicom -o -8 cisco жима администрирования служит команда disable.
Для настройки Cisco следует иметь настроенный tftp-
Для Windows-платформы также существуют tftp-серве- сервер, и ethernet-соединение.
ра. В частности, для Windows 2000 Server есть оригиналь- В первую очередь это необходимо, чтобы сохранить кон-
ный сервер от Microsoft, доступный как компонент RIS-сер- фигурацию.
вера. Помимо этого, можно воспользоваться программами Итак, переходим на административный уровень в Cisco.
сторонних производителей [9, 10, 11]. В частности, tftp-server
> enable
[9] поддерживает такие опции при передаче файлов, как
# setup
«tsize», «blocksize» и «timeout». Содержит встроенный
firewall. Может выполняться как на NT, так и на машине с На этом шаге предлагается с помощью меню настроить
Windows 2000. базовую (basic management) конфигурацию. В общем-то,
Некоторое время назад Cisco выпускала свой собствен- следует настроить ethernet-интерфейс, а затем по сети за-
ный tftp-сервер под Windows-платформу. Собственно, ком- писать готовую конфигурацию.
пания была первой, кто предоставлял программу в свобод- Скопировать текущую конфигурацию на tftp-сервер мож-
ный доступ. На сегодняшний день родной Cisco-сервер бо- но так:
лее не поддерживается. C2500#copy running-config tftp
Включаем Cisco. Администрирование будет происходить Address or name of remote host []? 1.2.3.4
через консольный порт Cisco. По идее, в терминале minicom Destination filename [running-config]? C2500-Config
!!
вы должны увидеть процесс загрузки IOS (Internetwork 2233 bytes copied in 7.424 secs (319 bytes/sec)
Operating System) – операционную систему, находящуюся C2500#
внутри Cisco. Если не увидели, меняйте скорость, отклю- Скопировать конфигурацию с tftp можно так:
чайте четность. Стоит обратить внимание на консольный
C2500#copy tftp: running-config
кабель, вполне возможно, что он от другой серии Cisco. Address or name of remote host []? 1.2.3.4
Настройка через HyperTerminal аналогична настройке че- Source filename []? C2500-Config
рез minicom. Destination filename [running-config]? running-config
Accessing tftp://1.2.3.4/C2500-Config...
В случае когда вы видите приглашение, например, Loading C2500-Config from 1.2.3.4 (via Ethernet0): !
«C2500>» это значит, что вы находитесь в пользовательс- [OK - 2233/4096 bytes]
34
администрирование
! ppp authentication pap – использовать аутентификацию end
pap;
! group-range 1 16 – применять настройки для портов с При подключенных модемах мы можем видеть следую-
номерами от 1 по 16-й; щую картину:
! async mode dedicated – используется режим выделен-
C#sh line
ной линии; Tty Typ Tx/Rx A Modem Roty AccO AccI Uses Noise Overruns Int
! member 1 peer default ip address 1.2.3.11 – если соедине- * 0 CTY - - - - - 0 0 0/0 -
1 TTY 19200/19200 - inout - - - 0 0 0/0 -
ние происходит с 1-й линии (с первого порта), то выдать 2 TTY 19200/19200 - inout - - - 0 0 0/0 -
IP-адрес 1.2.3.11. 3 TTY 19200/19200 - inout - - - 0 0 0/0 -
A 4 TTY 19200/19200 - inout - - - 1 0 0/0 -
5 TTY 19200/19200 - inout - - - 0 0 0/0 -
На этом с интерфейсами Async разбирательства закон- 6 TTY 19200/19200 - inout - - - 0 0 0/0 -
7 TTY 19200/19200 - inout - - - 0 0 0/0 -
чены. Продолжаем идти дальше. 8 TTY 19200/19200 - inout - - - 0 0 0/0 -
Даем команду – роутинг по умолчанию заворачивать на 9 TTY 19200/19200 - inout - - - 0 0 0/0 -
10 TTY 19200/19200 - inout - - - 0 0 0/0 -
Ethernet0. Не запускаем веб-интерфейс (с него тоже можно 11 TTY 19200/19200 - inout - - - 0 0 0/0 -
администрировать). 12 TTY 19200/19200 - inout - - - 0 0 0/0 -
13 TTY 19200/19200 - inout - - - 0 0 0/0 -
14 TTY 19200/19200 - inout - - - 0 0 0/0 -
ip classless 15 TTY 19200/19200 - inout - - - 0 0 0/0 -
ip route 0.0.0.0 0.0.0.0 Ethernet0 16 TTY 19200/19200 - inout - - - 0 0 0/0 -
no ip http server 17 AUX 9600/9600 - - - - - 0 0 0/0 -
! 18 VTY - - - - - 1 0 0/0 -
19 VTY - - - - - 1 0 0/0 -
20 VTY - - - - - 1 0 0/0 -
Теперь посмотрим, как задать скорость работы с моде- 21 VTY - - - - - 0 0 0/0 -
VTY - - - - - 0 0 0/0 -
мами. Асинхронные линии, как вы видели, уже настроены.
При этом линия №4 была активна. Администрирование
no cdp run происходит через консольный порт Cisco. Посмотрим бо-
banner login _Welcome to Cisco->Metaframe Gateway_
! лее подробно на эту линию.
line con 0
exec-timeout 0 0 C#sh line 4
transport input none Tty Typ Tx/Rx A Modem Roty AccO AccI Uses Noise Overruns Int
A 4 TTY 19200/19200 - inout - - - 1 0 0/0 -
Осталось провести наладку линий от 1 по 16. Конструк- Line 4, Location: "Leased Line Discipline for OutDoor Offices", Type: ""
ция используется следующая: Length: 24 lines, Width: 80 columns
Baud rate (TX/RX) is 19200/19200, no parity, 1 stopbits, 8 databits
Status: Ready, Active, Async Interface Active
line 1 16 Capabilities: Hardware Flowcontrol In, Hardware Flowcontrol Out
autoselect ppp
modem InOut
Modem Callout, Modem RI is CD, Line is permanent async interface
transport input all
stopbits 1 Modem state: Ready
speed 19200 Line is running PPP for address 192.168.15.14.
flowcontrol hardware 0 output packets queued, 1 input packets.
line aux 0 Async Escape map is 00000000000000000000000000000000
line vty 0 Modem hardware state: CTS DSR DTR RTS
exec-timeout 0 0 Interface Async4: (passive, compression on)
password cisco Rcvd: 0 total, 0 compressed, 0 errors
linevty 1 4 0 dropped, 0 buffer copies, 0 buffer failures
! Sent: 0 total, 0 compressed,
0 bytes saved, 0 bytes sent
Connect: 16 rx slots, 16 tx slots, 0 long searches, 0 misses
По мере получения входящего соединения выбирать
Special Chars: Escape Hold Stop Start Disconnect Activation
протокол ppp (autoselect ppp). ^^x none - - none
Более подробно об опциях модема смотрите по коман- Timeouts: Idle EXEC Idle Session Modem Answer Session Dispatch
00:10:00 never none not set
де «modem ?». Idle Session Disconnect Warning
! transport input all – использовать все протоколы (pad, never
Login-sequence User Response
rlogin, telnet, udptn, v120) при подключении к Access 00:00:30
Server; Autoselect Initial Wait
! stopbits 1 – использовать один стоповый бит; not set
Modem type is unknown.
! speed 19200 – скорость на линии выставить в 19200 (та- Session limit is not set.
кую же скорость надо выставить и на модеме); Time since activation: 00:02:18
Editing is enabled.
! flowcontrol hardware – аппаратное управление потоком. History is enabled, history size is 10.
DNS resolution in show commands is enabled
Full user help is disabled
Идем далее по конфигурации. Allowed transports are pad v120 telnet rlogin. Preferred is telnet.
Сервер времени находится по адресу 1.2.3.128: No output characters are padded
No special data dispatching characters
ntpserver 1.2.3.128 На этом с Cisco можно завершать.
Неплохим клиентом по управлению Cisco является
Завершение конфигурации: Telconi Terminal [8].
set MyCMD=Cisco2RAS
set PINGER=1.2.3.128
if exist %ERR% (
echo No Leased Line link found. STOP IFACE....
%IFSTOP%
echo Sleeping %TIMEDROP% seconds before dropping ↵
IFACE one more time.
sleep.exe %TIMEDROP%
)
@Echo Off
REM =======================================================
REM 'Cisco2RAS' service (Win2K Pro) echo Sleeping %TIME% seconds in this turn;
REM Auto-connecting / disconnecting RAS engine Sleep.exe %TIME%
REM Anton Borisov, a.borisov@tesv.tmb.ru
REM 28 Jun 2004 goto 1
REM =======================================================
36
администрирование
секунд, еще одно контрольное сбрасывание интерфейса и
засыпание на %TIMEIF% секунд. Последний показатель –
это время, которое нужно обоим модемам, чтобы устано-
вить между собой режим выделенной линии. После этого
происходит регистрация интерфейса командой %IFSTART%.
Обратите внимание, что в строке «set IFSTART=rasdial
CiscoHub user pass» указаны имя и пароль пользователя,
прописанные в Cisco AS 2500. Имя интерфейса CiscoHub
мы с вами уже создавали. Вот в этом командном файле
оно и используется.
Для того чтобы не устанавливать вручную сервис, я со-
здал данный регистрационный файл. Импортируйте его в
реестр и перегрузите машину.
Файлras.reg:
REGEDIT
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ras.cmd]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000001 На этом решение для установки связи между офисом и
"ImagePath"="C:\\WINNT.PRO\\srvany.exe" удаленным филиалом на основе Windows 2000 Professional
"DisplayName"="Cisco2RAS"
"ObjectName"="LocalSystem" и Cisco AS 2500 реализовано.
"MyVersionSftw"="Cisco2RAS Service" Теперь обратимся к варианту на основе RRAS для
"MyVersionInfo"="Auto-connecting / disconnecting RAS engine"
"MyVersionMail"="Anton Borisov, a.borisov@tesv.tmb.ru" Windows 2000 Server. Настраивается RRAS почти что анало-
"MyVersionDate"="28 Jun 2004" гичным образом, что и RAS под Windows 2000 Professional.
"Description"="Auto-connecting / disconnecting RAS engine"
"FailureActions"=hex:00,00,00,00,00,00,00,00,00,00,00, ↵ Выбираем Start → Settings → Control Panel → Administrative
00,03,00,00,00,98,10,0e,00,01,00,00,00,e0,93,04, ↵ Wizards → Routing and Remote Access Server.
00,01,00,00,00,e0,93,04,00,00,00,00,00,00,00,00,00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ ↵
ras.cmd\Parameters]
"Application"="C:\\WINNT.PRO\\ras.cmd"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ ↵
ras.cmd\Enum]
"0"="Root\\LEGACY_RAS.CMD\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001
Как вы видите, используется то же устройство, что и в А также добавим статический роутинг для интерфейса
Windows 2000 Pro. CiscoHub.
38
администрирование
)
echo "Sleeping %TIME% seconds in this turn";
Sleep.exe %TIME%
goto 1
Файл rras.reg:
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\rras.cmd]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000001
"ImagePath"="C:\\WINNT.SRV\\srvany.exe"
"DisplayName"="Cisco2RRAS"
"ObjectName"="LocalSystem"
"MyVersionSftw"="Cisco2RRAS Service"
Аналогично выглядит командный файл сервиса и reg- "MyVersionInfo"="Auto-connecting / disconnecting RRAS engine"
"MyVersionMail"="Anton Borisov, a.borisov@tesv.tmb.ru"
файл этого сервиса. "MyVersionDate"="28 Jun 2004"
Файл rras.cmd: "Description"="Auto-connecting / disconnecting RAS engine"
"FailureActions"=hex:00,00,00,00,00,00,00,00,00,00,00, ↵
00,03,00,00,00,98,10,0e,00,01,00,00,00,e0,93,04, ↵
@Echo Off 00,01,00,00,00,e0,93,04,00,00,00,00,00,00,00,00,00
REM =======================================================
REM 'Cisco2RRAS' service [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ ↵
REM Auto-connecting / disconnecting RRAS engine rras.cmd\Parameters]
REM Anton Borisov, a.borisov@tesv.tmb.ru "Application"="C:\\WINNT.SRV\\rras.cmd"
REM 28 Jun 2004
REM ======================================================= [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ ↵
rras.cmd\Enum]
set PINGTIMEOUT=2000 "0"="Root\\LEGACY_RRAS.CMD\\0000"
"Count"=dword:00000001
set LOG=%SystemRoot%\cisco2rras.log "NextInstance"=dword:00000001
set ERR=%SystemRoot%\cisco2rras.err
Отличия от версии для RAS выделены красным.
REM // 30 seconds lasts each cycle
set TIME=30 Любознательный читатель спросит, а в чем преимуще-
ство описанной модели? Дело в том, что при плохом каче-
REM // 8 seconds to raise new interface in Leased Line
set TIMEDROP=8 стве самой линии часто возникают разрывы соединения.
Восстановить соединение про требованию (Call-on-Demand),
REM // 15 seconds for new interface to establish connection
set TIMEIF=15 когда инициатором выступает машина удаленного офиса,
при использовании RRAS, несложно. Задача усложняется,
set IFSTOP=netsh interface set interface name = ↵
CiscoHub connect = DISCONNECT когда требуется исключить влияние оператора на ход со-
set IFSTART=netsh interface set interface name = ↵ единения, а также требуется иметь на удаленной стороне
CiscoHub connect = CONNECT
set IFROUTE=netsh routing ip add persistentroute ↵ автономную систему, восстанавливающую свои свойства
192.168.0.0 255.255.0.0 CiscoHub (в данном случае соединение) при аварийных случаях.
set MyCMD=Cisco2RRAS Штатными средствами решить это сложновато, особенно,
set PINGER=192.168.0.100 когда стоит финансовая дилемма использовать Windows
Echo "========[ %MyCMD% Service startup! ]=======" >> %LOG% 2000 Professional или же Windows 2000 Server.
time /t >> %LOG% Из опыта – при тестовых испытаниях восстановление
date /T >> %LOG%
интерфейса происходило менее чем за 45 секунд. Таким
:1 образом, предлагается полностью автоматическое управ-
echo "Erasing statistics file %ERR% in this cycle" ление полетом.
del %ERR% Можно включать и пользоваться.
ping %PINGER% -n 7 -w %PINGTIMEOUT% | find "TTL" || ↵
echo DOWN > %ERR%
if exist %ERR% (
Источники:
echo "No reliable route found. Dropping down IFACE...". 1. http://www.zy.com.pl/ftp/MIRROR-FTP-ZYXEL/u1496s/
%IFSTOP% document/u1496s_v1_UsersGuide.pdf
echo "Sleeping %TIMEDROP% seconds before new IFACE ↵ 2. http://www.rsdn.ru/article/net/rasadmindll.xml
is raised up". 3. http://labmice.techtarget.com/networking/ras.htm
sleep.exe %TIMEDROP%
4. http://www.petri.co.il/configure_tcp_ip_from_cmd.htm
echo "Sleeping %TIMEIF% seconds before Leased Line is set". 5. http://www.dynawell.com/reskit/microsoft/win2000/sleep.zip
sleep.exe %TIMEIF%
6. http://www.dynawell.com/reskit/microsoft/win2000/srvany.zip
echo "Establishing new route. Raising up IFACE...". 7. Cisco 2500 Series Access Server User Guide
%IFSTART%
%IFROUTE% 8. http://www.telconi.com/download.html
9. http://www.tftp-server.com
echo "_________start log________" >> %LOG%
echo "new IFACE is set ... " >> %LOG% 10. http://www.solarwinds.net/Tools/Free_tools/TFTP_Server/
time /t >> %LOG% 11. http://www.cisco.com/pcgi-bin/tablebuild.pl/tftp
date /T >> %LOG%
echo "__________end log_________" >> %LOG% 12. http://www.lulu.com/content/66928
СЕРГЕЙ ЯРЕМЧУК
Интернет сегодня не является дружеcтвенной средой и, кро- Установка
ме посетителей, желающих ознакомиться с ресурсом, к вам В документации самими разработчиками установка назва-
наверняка наведываются и те, кто считает своим долгом на как грязная, неудобная, недружественная, и сказано, что
проверить узел на защищенность. В журнале уже много при неаккуратном обращении может привести к потери дан-
писалось о том, как собрать защищенную систему, но на ных. Посмотрим, может, это действительно так. Поначалу ни-
самостоятельную сборку таких систем подчас уходит боль- чего необычного: записываем скачанный образ размером
шое количество времени, особенно при использовании не- 230 Мб на CD, загружаемся, жмем Enter и попадаем в кон-
стандартных приложений, параметры к которым приходит- соль. Для ознакомления с особенностями следует прочесть
ся подбирать экспериментальным путем. Сегодня мы по- файлы FAQ, INSTALL, README и WARNING в каталоге /root.
знакомимся с дистрибутивом, разработчики которого пы- Для установки запускаем скрипт аdamantix-install, после
таются решить две противоречивые задачи: сделать мак- этого в сотый раз предупреждают об уничтожении данных,
симально защищенную, но в то же время простую (я не ска- выбираем раскладку, программу, при помощи которой бу-
зал легкую) в использовании систему. дем разбивать диск (fdisk, cfdisk, parted), после чего выби-
Проект Adamantix (http://www.adamantix.org) занимается раем точку монтирования для корневого и остальных раз-
разработкой одноименного дистрибутива, который по заве- делов, файловую систему для вновь созданных разделов
рениям разработчиков способен противостоять большинству (XFS, ReiserFS, ext2/3), прописываем параметры сетевых
самых распространенных в Интернете атак и предохранить интерфейсов, которые нашла программа установки, IP-ад-
от некоторых возможных проблем с безопасностью в буду- реса шлюза и DNS-сервера, временной пояс и сервер для
щем. Началом проекта послужил другой проект Trusted обновлений, место установки загрузчика. При этом для пе-
Debian (http://www.trusteddebian.org), но т.к. Debian является рехода к следующему пункту выбираем continue. И под ко-
зарегистрированной торговой маркой, было принято реше- нец вводим пароли для root и so (security officer). На этом
ние изменить название. В Adamantix стараются реализовать все. Ничего страшного не произошло, человек, умеющий
все достижения Linux: графический десктоп, в будущем, воз- обращаться с указанными программами и знающий необ-
можно, и графический инсталлятор, автоматическое опре- ходимые параметры, вопреки всем предупреждениям ус-
деление железа, настройка звука, мультимедиа, но только с тановить систему все-таки сможет. И, кстати, можно уста-
одним отличием – это будет более безопасная система. Для новить Adamantix поверх Debian 3.0 (Woody), установлен-
достижения этой цели применяются различные патчи к ядру ного в минимальной инсталляции. При этом для возможно-
и компилятору, более защищенные и специально протести- сти установки приложений при помощи apt-get советую за-
рованные версии программ и другие технологии, повышаю- нести один из выбранных на http://www.adamantix.org/
щие общую защищенность системы. Используется только mirrors.html серверов в файл /etc/apt/sources.list, т.к. паке-
свободное программное обеспечение, поэтому лицензион- ты из Debian не перекомпилированы и не могут противо-
ных отчислений не требуется, хотя в последнее время стал стоять атакам переполнения буфера подобно пакетам
активно развиваться и коммерческий проект, расположен- Adamantix. Перезагружаемся. Нас встречает GRUB, в кото-
ный по адресу http://www.adamantix.com. ром на выбор предлагается несколько вариантов загрузки.
40
безопасность
Сердца Adamantix лее в появившемся меню устанавливаем AUTH May Setuid
Сейчас для работы используется версия 2.4.22-3 ядра, взя- в On, иначе система вас попросту не пустит, т.к. процесс не
тая от Debian unstable. В результате наложения тех или сможет сменить uid, примерно такие действия придется про-
иных патчей получилось три ядра (в более ранних верси- делать затем и для остальных команд, которым необходи-
ях было и четвертое) в шести вариантах (подробнее смот- мо изменение uid.
рите http://www.adamantix.org/documentation/kernel.html/
view): normal, softmode kernel (с префиксом -soft) и secure Работа
mode kernel (-sec). Все ядра скомпилированы с поддерж- Конечно же, в объем 230 Мб вошло только то, что нужно
кой SSP (Stack Smashing Protector), обеспечивающей не- для установки и первоначальных настроек, все остальное,
которую защиту от переполнения буфера, включена под- необходимое для работы, придется доустанавливать и на-
держка XFS, AES-loop, добавлены патчи защиты RSBAC страивать самому. Это сделано специально для того, что-
(http://www.rsbac.org) и PaX (http://pageexec.virtualave.net), бы администратор сам мог выбрать только то, что ему дей-
модуль MS (Malware Scan) с поддержкой ClamAV, включе- ствительно необходимо, лишние приложения в защищен-
ны transparent proxy и модуль MPPE (encrypted PPP) и не- ной системе обычно не приветствуются. Да и, как мне ка-
которые другие опции. В normal kernel отключен RSBAC, жется, установить требуемое все-таки легче, чем убрать
хотя здесь небольшая путаница в документации, так, в FAQ лишнее. Для установки и обновления приложений исполь-
сказано, что он отключен, а в документе «Adamantix Kernel зуется знакомая пользователям Debian утилита apt-get с
Information» сказано, что включен, но, судя по надписям указанием нужного пакета. Если вы устанавливаете
при загрузке, поддержки RSBAC все-таки нет. Ядро soft Adamantix поверх Debian, то в первую очередь установите
предназначено в основном для первоначальной отладки необходимые для настройки RSBAC пакеты: rsbac-
или обкатки технологии RSBAC, т.к. оно не обеспечивает adamantix, rsbac-admin, rsbac-klogd и rsbac-secpolic. Если
защиту, а лишь заносит все нарушения политик в журнал. с установкой новых приложений проблем быть не долж-
Для возможности отключения режима управления досту- но, apt-get уже давно заслужил похвалу у пользователей,
пом оставлена возможность работы в режиме rsbac_ то вот с его настройкой под RSBAC придется повозиться.
softmode, для перехода в защищенный режим достаточно Что поделаешь, Adamantix не относится к тем дистрибу-
убрать строку в загрузчике. Также оставлена включенной тивам, которые настраиваются за пол-дня, здесь в каж-
опция ядра CONFIG_MAGIC_SYSRQ, позволяющая комби- дом конкретном случае требуется индивидуальный под-
нацией <ALT + SysRq> + <command key> производить не- ход, да и построение защищенной системы не любит спеш-
которые операции, к которым, правда, не всегда полезно ки. Кстати, за логи отвечает пакет rsbac-klogd, который
иметь доступ пользователю (подробнее см. в /usr/src/linux/ пишет все данные по защите в /so/log/security-log, находя-
Documentation/sysrq.txt). В ядре sec, предназначенном для щийся в домашнем каталоге пользователя so (uid=400),
максимальной защиты, изначально отключено и запреще- куда имеет доступ только пользователь so, root при пол-
но все, что есть в soft, поэтому перейти в режим soft изме- ной защите в него не допускается. Так что ответы на воп-
нением параметров, передаваемых ядру, не удастся. Если росы, почему не запускаются те или иные сервисы, смот-
не хотите возиться с настройками RSBAC, то можно ис- рите там.
пользовать ядро без префикса, все равно защищенность Далее для информации по применению RSBAC почи-
будет выше благодаря применению PaX, который обеспе- тайте документы «RSBAC on Adamantix HOWTO» (http://
чивает защиту памяти. Разработчики PaX, в отличие от www.adamantix.org/documentation/rsbac.html/view) и «Apache
других подобных проектов вроде OpenWall, в которых ре- with RSBAC Role Compatibility» (http://www.adamantix.org/
ализована защита от конкретных атак, сосредоточивают documentation/rsbac.html/view), информацию на сайте про-
свои усилия на защите от целых классов атак и, вероят- екта RSBAC, где найдете много готовых примеров, а также
но, этот проект может стать единственным, о котором будeм мою статью «RSBAC для Linux» в январском номере жур-
говорить в будущем. Для сомневающихся в эффективнос- нала за 2004 год и статью Станислава Иевлева «RSBAC для
ти этой технологии на странице http://www.adamantix.org/ начинающих» (http://linux.ru.net/~inger/RSBAC-DOC.html). И
demo.html приведены некоторые примеры и, главное, име- остается открытым вопрос цены такой защиты. Конечно же,
ются инструменты, позволяющие проверить правдивость она имеется. Так, за PaX, который используется во всех
этих доводов. ядрах, придется отдать 1-2% производительности, Stack
Smashing Protector (SSP) забирает в зависимости от кода
Загрузка до 8%, и на долю RSBAC приходится 4-5%. Последняя за-
При первой загрузке выскочило сообщение: «Error 15: File висит от количества и состава запущенных модулей (под-
not found». Диск был разбит на такие разделы: hda1 swap робнее о модулях в документации).
hda2 /boot hda3 /var hda4 /. Все решилось изменением строки Единственный недостаток Adamantix – это молодость и,
root hd(0,1) в конфигурации GRUB, для этого, выбрав нуж- как следствие, отсутствие документации, в которой можно
ный пункт, нажимаем «e», и после внесения изменений для найти готовые на все случаи рецепты, но остается только
загрузки «b», затем, чтобы не нажимать это каждый раз, надеяться, что это ненадолго. И конечно же, Adamantix –
редактируем конфигурационный файл загрузчика /boot/ дистрибутив не для всех (по крайней мере пока), но если
grub/menu.lst, используя vi или GNU/nano. В случае приме- необходима максимальная защищенность будущей систе-
нения RSBAC первоначально необходимо загрузиться в soft мы и одновременно легкость в обновлении и совмести-
mode и выполнить команду rsbac_fd_menu /bin/login и да- мость, то, наверное, стоит обратить на него внимание.
СЕРГЕЙ ЯРЕМЧУК
Первые упоминания о системах обнаружения атак (IDS) от- ции. Естественно, такое положение дел не могло не остаться
носятся к 1980 году, и начались с публикации Джона Ан- незамеченным, и были предприняты попытки найти реше-
дерсона (John Anderson) «Computer Security Threat Monitoring ния, помогающие уменьшить объем выводимой информа-
and Surveillance». Сегодня же их применяют как в сетях, так ции и увеличить точность систем обнаружения атак.
и устанавливают на отдельные компьютеры, как правило,
в качестве второй дополнительной линии защиты (после Компьютеры и IDS (настоящее время)
firewall) для сигнализации о действиях, которые являются Существует несколько классификаций IDS, некоторые из
злонамеренными по своему содержанию, и остановки втор- них были затронуты в статье Павла Заклякова [13], под-
жения. Открытость инструментов для атаки и доступность робно останавливаться не буду, но для понимания общего
соответствующей информации помогает не только адми- вопроса, возможно, кое-где придется повториться. Систе-
нистраторам в изучении уязвимости систем, но и приводит мы обнаружения атак можно грубо поделить на системы,
к тому, что у некоторых злоумышленников, как говорят, руки реагирующие на аномалии (например, HostSentry, исполь-
чешутся. Постоянные сканирования, проверки в действии зующий технологию Login Anomaly Detection), и системы, ис-
эксплоитов, попытки подбора паролей, сетевые черви – да- пользующие технологии anomaly detection и misuse detection,
леко не полный список того, с чем сегодня приходится иметь например Snort. Первые, собирая некоторую статистику
дело администратору. И к сожалению, в этой ситуации IDS (продолжительность сеансов telnet, IP-адреса и пр.), отсле-
не всегда являются помощниками, а даже наоборот, под- живают все измения и в случае существенного отклонения
час только мешают нормальной работе. В последнее вре- от некоторой нормы бьют тревогу. Хотя, если быть точнее,
мя их работа все больше и больше вызывает критику за то, сейчас различают два типа подобных систем: statistical
что они генерируют большое количество данных, в кото- analysis system и adaptive system. Пример выше описывает
рых истинные предупреждения смешаны с большим коли- статистические системы, адаптивные же, применяя слож-
чеством ложных сообщений. Учитывая, что какая-нибудь ные математические модели, строят некие правила для
сотня предупреждений в день на сегодня – далеко не фан- среды и обучаются, изучая поведение пользователей и си-
тастическая цифра (а реально она гораздо больше, и рас- стемы. Детекторы систем misuse detection реагируют на из-
тет постоянно), перебрать и проанализировать поступаю- вестные атаки и уязвимости, предварительно занесеные в
щий поток информации не в силе ни один админ, на анализ базу данных системы в виде сигнатур. Проблемы есть у
информации тратится большое количество времени, а ав- обеих систем. Первые требуют серьезных статистических
томатическое принятие решений может повлечь за собой исследований и обучения, и не всегда могут отличить нор-
любые последствия вплоть до отключения всей сети от мальные действия от злонамеренных, хотя надо отметить,
Интернета. Кроме того, такие системы не различают атаки это довольно перспективное направление развития систем
по степени угрозы и реагируют на малоопасные (а то вооб- IDS, и за ними, очевидно, будущее. Вторые не могут обна-
ще безопасные для данного узла) атаки или аномалии и руживать новые, не занесенные в базу атаки, при этом при
выдают сообщения без разбора, независимо от наличия обнаружении новых разновидностей атак существует не-
связи между некоторыми действиями. Как пример после которая латентность, пока ее изучат и занесут в базу, а учи-
сканирования портов далеко не всегда происходит атака. тывая, что за полчаса сетевой вирус способен заразить
Дошло дело до того, что некоторые просто отказываются около 100 тысяч компьютеров, эта задержка делает беспо-
от использования сетевых IDS или ограничивают количе- лезной такие системы в самом начале эпидемии. Далее IDS
ство датчиков, чтобы не потонуть в этом море информа- делятся на Network-based IDS и Host-based IDS. NIDS про-
42
безопасность
сматривают сетевой трафик и реагируют на сетевые ата- статочно точный набор последствий довольно тяжело. Хотя
ки, в то время как HIDS защищают отдельный узел. При- в общем такие системы позволяют уменьшить объем вы-
чем такое разделение обязанностей привело к тому, что водимой информации, собирая в один вывод все возмож-
NIDS не понимают, что происходит непосредственно на ком- ные предупреждения, соответствующие некоему возмож-
пьютере и оказываются бесполезны при шифровании тра- ному последствию. Поэтому в данном классе наиболее пер-
фика и наоборот, системе, защищающей хост, абсолютно спективным мне кажется вариант модели самообучающихся
все равно, что там творится в сети. Выходом из этой ситуа- систем. Такой подход позволит автоматически формиро-
ции послужило создание гибридных IDS, сочетающих в себе вать модели для корреляции данных, однако это потребует
достоинства тех и других. В последнее время все чаще IDS обучения в каждом отдельном случае.
разделяют на собственно IDS, отвечающие за сбор статис- И последний класс применяет более комплексный под-
тики, и IPS (Intrusion Prevention Systems, система предотв- ход, используя как предпосылки, так и последствия атак.
ращения атак) – системы, позволяющие реагировать на ата- При этом предпосылка атаки определяет то, что должно
ки. Если в первом случае админ будет просто завален боль- быть удовлетворено для успешной атаки, а последствие
шим количеством (в том числе ложных, отвлекающих пре- атаки описывает то, что должно произойти в том случае,
дупреждений), то во втором случае ошибка в определении когда атака действительно удается. При таком подходе этот
может иметь более неприятные последствия вроде отказа класс позволяет раскрыть зависимости между предупреж-
в доступе вполне лояльным пользователям. И не секрет, дениями и, главное, не ограничен только известными сце-
что сегодня именно IDS благодаря своим «достоинствам» нариями атаки, хотя некоторые методики не отличают не-
подчас подвергаются атаке, атакующий таким образом ста- сколько реализаций одной и той же атаки. Все используе-
рается сбить администратора с толку, ввести дезинформа- мые методы третьего класса основаны на предположении,
цию, отвлечь внимание. что атака узла связана в несколько часто изолируемых ста-
дий с подготовкой в начале и переходит к более активным
Некоторые модели действиям в конце. Так, например, сканирование и сбор бан-
повышения точности систем неров (т.е. предпосылка атаки) должны указать злоумыш-
Можно выделить три класса корреляции результатов. На- леннику на используемые (и возможно, уязвимые) серви-
пример, возможно отобрать все предупреждения, основы- сы, действия же вслепую могут привести к успеху только в
ваясь на подобии неких атрибутов атаки. Как пример один довольно небольшом количестве случаев (для конкретной
и тот же IP-адрес, такой метод позволяет обнаружить скры- системы). Существование уязвимых сервисов является хо-
тое сканирование сетей, но, скорее всего, такой подход не рошей предпосылкой для начала атаки и получения досту-
сможет полностью обнаружить все зависимости между пре- па к системе. Эту ситуацию в самой простой форме можно
дупреждениями, хотя бы по причине того, что некоторые представить как Host(IP, Port). Но для успешной атаки тре-
параметры очень легко изменить во время атаки, но все буется, чтобы компьютер с такими параметрами был дос-
равно все угрозы, исходящие из одного адреса, будут рас- тупен для нападающего, т.е. не был прикрыт firewall. Отсю-
сматриваться как одна, а не несколько угроз, от ложных да условие, необходимое для успешной атаки, приобрета-
тревог такая схема не спасет. Но средства вывода инфор- ет такой вид: Host(IP, Port) && AccessibleFirewall(IP, Port), и
мации IDS-систем позволяют рассмотреть собранные дан- чтобы атака удалась, как вариант необходимо наличие
ные под любым углом, каким только ни пожелает ее про- VulnerableWeb Server(IP). Учитывая, что IDS, прослушивая
смотреть и проанализировать админ (IP-адресам, сервисам трафик и анализируя результат, «не знает» о настройках
и пр.), так что проблемы этого класса, можно сказать, уже firewall и запущенных сервисах, поэтому сигнализирует обо
решены. Также, кроме IP-адреса, сюда можно включить и всем, что обнаруживает, поэтому если отфильтровать не-
подобие пакетов, так, например, некоторые реализации про- нужную информацию, можно убрать часть ложных тревог.
грамм для DoS-атак подменяют только IP-адрес отправите- При описании последствий атаки (действительно возмож-
ля, поэтому, захватив такие пакеты, можно обнаружить их ного исхода) используется набор предикатов вроде
почти полную идентичность (установленые флаги, ttl, раз- RootAccess(IP), DOSAttask(IP), SystemCompromised(IP) и т. д.
мер окна приема/передачи), отсюда можно сделать вполне Но атака не обязательно может генерировать заявленное
логичное заключение о том, что это одна угроза, а не не- последствие. Например, сервис выполняется в изолирован-
сколько, и не засорять вывод. Хотя подобные атаки доволь- ной chroot-среде или на сервере установлен один из паке-
но хорошо описываются отдельными методами следующих тов, защищающих от возможных последствий переполне-
далее классов. При отборе результатов возможно следо- ния буфера libsafe, LIDS и пр. Но все равно в моделях ис-
вание хорошо изученным методикам атак, это так называ- пользуется понятие возможных последствий, а не факти-
емые механизмы последствия, но при отклонении в сцена- ческих, по причине того, что IDS не может иметь достаточ-
рии атаки такая система может и не отреагировать. К тому но информации, чтобы принять решение об эффективнос-
же механизмы последствия используют методы, которые ти атаки. Для того чтобы отслеживать повторяющиеся с
распознают предупреждения, уровень серьезности атаки и течением времени атаки и не засорять вывод, к отслежи-
временной интервал между двумя связанными предупреж- ваемым параметрам возможно добавление временного ин-
дениями, что не дает достаточно информации, позволяю- тервала. Также в некоторых моделях позволяется частич-
щей собрать воедино всевозможно связанные предупреж- ное удовлетворение предпосылок и последствий, что по-
дения. Кроме того, непросто предсказать, как нападающий вышает точность, позволяя определить и соединить в одно
может производить атаку или ее части, т.е. разработать до- предупреждение, в том числе и случайные атаки, когда на-
44
безопасность
Transition Analysis Technique, http://www.cs.ucsb.edu/~kemm/ система способна к самообучению, работе в режиме ре-
netstat.html/projects.html), в котором имеется все, что необ- ального времени, возможно обнаружение в том числе и
ходимо для нормальной работы системы и коррелляции комплексных атак, растянутых во времени, двумя способа-
поступающих данных: сетевые и хост scenario-based-дат- ми anomaly и misuse detection, построение затем сценария
чики, и в том числе уже разработан один датчик уровня при- атаки. Сам проект разделен на подпроекты, в которых раз-
ложений (application-based) для веб-сервера Apache, ана- рабатывается один из компонентов (привожу здесь для того,
лизаторы логов, менеджер и специальный модуль для ана- чтобы вы смогли оценить размах и сравнить с имеющими-
лиза, предназначенный для идентификации атак, в том чис- ся системами):
ле и многоступенчатых. Подробнее о работе STAT – в сле- ! HoBIDS – Host Based IDS – контролирует процессы и логи
дующем номере журнала. на отдельном хосте, поставляет данные для дальней-
Из других разработок стоит отметить работу Колумбий- шего анализа.
ского университета MADAM ID – Mining Audit Data for ! HAUNT – Network Based IDS – осуществляет анализ па-
Automated Models for Intrusion Detection(Columbia IDS), яв- кетов и обнаружение атак на основе точно установлен-
ляющуюся частью большого пректа JAM – (Java Agents for ных правил.
Meta-Learning) (http://www.cs.columbia.edu/jam), уже, кстати, ! AMG – Adaptive Model Generation – формирует и при не-
тоже успевшего лицензировать свою технологию для ком- обходимости обновляет модель поведения системы в ре-
мерческой разработки компанией System Detection, INC. альном масштабе времени, используя данные датчика.
http://www.sysd.com/, которая, в свою очередь, обещает в ! DIDS – Distributed IDS System – координирует действия
скором выпустить готовые продукты, умеющие распозна- HoBIDS и HAUNT и, основываясь на полученных сооб-
вать аномальные явления в сети, устранять ложные сраба- щениях, принимает решения об атаках и генерирует
тывания и пр. Основная идея проекта JAM состоит в том, предупреждающие сообщения.
чтобы, используя данные, полученные от нескольких раз- ! MEF – Malicious program E-mail Filter – просмотр e-mail
нородных датчиков, используя свои модели, коррелировать вложений, при нахождении вируса останавливает рас-
их в некий набор правил, способных произвести общее опи- пространение. В работе использует различные, в том
сание среды, в которую они включены. Судя по описанию, числе и адаптивные алгоритмы.
Ðèñóíîê 1
46
безопасность
GRSecurity
КИРИЛЛ ТИХОНОВ
GRSecurity – система безопасности для Linux, состоящая GRSecurity предлагает в помощь администратору, же-
из патча к ядру и управляющей программы. На момент на- лающему обезопасить свои сервера, следующие возмож-
писания статьи актуальными были версии: ности:
! grsecurity-2.0-2.4.26.patch ! Защита от атак типа «переполнение буфера» с помо-
! gradm-2.0.tar.gz щью проекта PaX.
48
безопасность
! Role-Based Access Control – контроль доступа на осно- ! low
ве ролей. ! medium
! Случайные ID процессов. ! hard
! Защищенный просмотр процессов. ! custom
! Change root hardening – защита смены корневого ката-
лога. Выбираем уровень custom, после его активации станут
! Защита /tmp. доступными несколько подменю:
50
безопасность
! Chroot jail restrictions ON – при включении этой опции ! Fork failure logging ON – протоколирование всех попы-
станет доступна группа опций, реализующих защиту ток fork().
chroot. Все последующие опции относятся к процессам ! Time change logging ON – протоколирование попыток из-
внутри chroot. менения системного времени.
! Deny mounts ON – процессы не смогут монтировать фай- ! /proc/<pid>/ipaddr support OFF – к информации о процес-
ловые системы. се добавится IP-адрес пользователя, его запустившего.
! Deny double-chroots ON – процессы не смогут сделать ! ELF text relocations logging OFF – только для разработ-
двойной chroot за пределы первого. чиков.
! Deny pivot_root in chroot ON – запрет на использование
функции pivot_root(). Эта функция способна разрешить Executable Protections
выход процессу за пределы chroot. (Защита бинарных файлов)
! Enforce chdir(“/”) on all chroots ON – корневой каталог Здесь надо указать опции, относящиеся к созданию про-
chroot будет установлен в качестве текущей рабочей ди- цессов и доступу бинарных файлов к системе.
ректории для всех chroot-программ. ! Enforce RLIMIT_NPROC on execs ON – для пользовате-
! Deny (f)chroot +s ON – процесс не сможет выполнить лей с ограничениями на количество процессов значе-
chmod и fchmod для файлов с целью установить suid или ния этих ограничений будут проверяться в процессе вы-
sgid бит. зова execve(). Без этой опции система будет проверять
! Deny fchdir out of chroot ON – запрет на использование значения ограничений только при вызове fork().
известной технологии прерывания chroot с помощью ! Dmesg(8) restriction ON – запрет на пользование dmesg
fchdir. пользователям без прав root.
! Deny mknod ON – запрет на использование mknod. ! Randomized PIDs ON – генерирование PID случайным
! Deny shmat() out of chroot ON – запрет на присоединение образом.
к сегменту памяти процессов, запущенных вне chroot. ! Trusted path execution OFF – включение этой опции по-
! Deny access to abstract AF_UNIX sockets out of chroot ON – зволяет определить недоверенных пользователей. Эти
процессы внутри chroot не способны подсоединяться к пользователи не будут способны запускать файлы, на-
сокетам вне chroot. ходящиеся вне принадлежащей root директории, но дос-
! Protect outside processes ON – запрет на посыл спецсиг- тупной на запись только root. Вот простой пример.
налов процессам вне chroot. Возьмем Linux-машину, в которой есть пользователь
! Restrict priority changes ON – запрет на повышение при- admin. Файловая система для этого пользователя смон-
вилегий процессов. тирована с опцией noexec. Пользователь скачивает эк-
! Deny sysctl writes in chroot ON – запрет на использова- сплоит «local kernel panic». Если он запустит этот эксп-
ние sysctl. лоит (/lib/...so ~/exploit), то ядро упадет. Однако если
! Capability restrictions within chroot ON – всем процессам, включена опция TPE, то ядро выдаст segmentation fault,
принадлежащим пользователю root, запрещается рабо- машина будет продолжать нормально работать, а в ло-
та с модулями, сырым вводом-выводом, системными и гах появится такая запись:
сетевыми задачами и т. д.
denied untrusted exec of “~/exploit”: “admin”’s uid...
52
безопасность
subject /bin/su o { ! M – аудит успешного создания и модификации setuid/
/etc/passwd r
setgid файлов и каталогов;
/etc/shadow r ! с – позволить создание файлов и каталогов;
-CAP_ALL ! С – аудит успешного создания файлов и каталогов;
}
! d – разрешить удаление файлов и каталогов;
Субъекту (subject) доступны следующие режимы: ! D – аудит успешного удаления файлов и каталогов;
! h – процесс скрыт и может быть прочитан только про- ! p – сбросить все ptrace.
цессом с флагом v;
! v – процесс может видеть скрытые процессы; Помимо доступа к файлам и каталогам процессу иног-
! p – процесс защищен, он может быть завершен только да необходимы специальные права на смену владельца,
процессом с флагом k или процессом, принадлежащим конфигурирование сетевых интерфейсов и т. д. Эти права
этому же субъекту; реализованы в виде так называемых способностей или
! k – процесс может завершать защищенные процессы; свойств (capability). В ACL они предваряются знаками «+»
! l – режим обучения для данного процесса; и «-», соответственно знак «+» разрешает использование
! d – защитить /proc/<pid>/fd и /proc/<pid>/mem для про- данной «способности», знак «-» запрещает.
цессов в этом субъекте; Ниже приведены несколько наиболее интересных и ча-
! b – включить process accounting для процессов в этом сто используемых «способностей», полный список можно
субъекте; найти в официальной документации.
! P – отключить PAGEEXEC для этого субъекта (PaX); ! CAP_ALL – используется как заглушка для запрета или
! S – отключить SEGMEXEC для этого субъекта (PaX); разрешения всех capability.
! M – отключить MPROTECT для этого субъекта (PaX); ! CAP_CHOWN – в системе с установленной опцией
! R – отключить RANDMMAP для этого субъекта (PaX); [_POSIX_CHOWN_RESTRICTED_] эта «способность»
! G – включить EMUTRAMP для этого субъекта (PaX); разрешает процессу изменять владельца.
! X – включить RANDEXEC для этого субъекта (PaX); ! CAP_SETGID – разрешает выполнение функций setgid,
! O – переписать расширенные restriction mmap() и ptrace() setgoups.
для этого субъекта; ! CAP_SETUID – разрешает выполнение функции setuid.
! A – защитить общую память для этого субъекта, только ! CAP_NET_BIND_SERVICE – разрешает привязку на
входящие в этот субъект процессы могут получить дос- TCP/IP-сокет ниже 1024, привязку к ATM VCIs ниже 32.
туп к памяти этого субъекта; ! CAP_NET_ADMIN – разрешает:
! K – если процесс создает опасную ситуацию, завершить ! конфигурирование интерфейсов;
процесс; ! администрирование межсетевого экрана, трансля-
! C – если процесс создает опасную ситуацию, завершить цию адресов;
этот процесс и все процессы, запущенные с того же IP- ! установку опций отладки для сокетов;
адреса; ! изменение таблиц маршрутизации;
! T – процесс не сможет выполнить никакой троянский ! привязку к любому адресу для прозрачного прокси-
код; рования;
! o – отменяет ACL-наследование. ! установку TOS (type of service);
! установку неразборчивого (promiscuous) режима для
Объект поддерживает следующие режимы: сетевой карты;
! r – объект может быть открыт для чтения; ! очистку статистики драйвера;
! w – объект может быть открыт для записи; ! мультивещание;
! x – объект может быть выполнен (executed); ! чтение/запись в определенные регистры устрой-
! a – объект может быть открыт для добавления; ства.
! h – объект скрыт (к нему нельзя получить доступ); ! CAP_SYS_ADMIN – разрешает:
! s – при запрете доступа к этому объекту в логи не будет ! администрирование устройства random;
идти информация; ! конфигурирование дисковых квот;
! i – применяется только к бинарным файлам. Когда ! конфигурирование syslog ядра;
объект выполняется, он наследует ACL субъекта, в ко- ! установку доменного имени (domainname);
торый входит; ! установку имени хоста (hostname);
! l – режим обучения, поддерживается только для бинар- ! вызов bdflush();
ных файлов; ! монтирование и размонтирование, установку нового
! R – аудит успешного чтения объекта; smb-подключения;
! W – аудит успешной записи в объект; ! блокирование/разблокирование общедоступной па-
! X – аудит успешного исполнения объекта; мяти (shared memory);
! A – аудит успешного добавления в объект; ! включать/выключать подкачку (swap);
! F – аудит успешного поиска объекта; ! установку геометрии для флоппи-дисковода;
! I – аудит успешного наследования объекта; ! включение/выключение режима DMA;
! m – разрешить создавать и модифицировать setuid/ ! настройку IDE-драйверов;
setgid файлы и каталоги; ! доступ к устройству nvram;
54
безопасность
Для активации GRSecurity надо задать пароли доступа. таком случае для этих действий тоже будет сформирован
Если этого не сделать, GRSecurity выдаст сообщение об ACL, что будет дырой в системе безопасности. Вообще чем
ошибке: меньше написано различных ACL – тем лучше.
Ручная настройка ACL происходит следующим образом.
# gradm –E ! Активируем GRSecurity:
Error opening: /etc/grsec/pw
open: no such file or directory
# gradm –E
Задаем главный пароль, служащий для отключения и
перезагрузки системы GRSecurity: ! Ждем некоторое время (для начала – несколько секунд).
! Отключаем GRSecurity:
# gradm –P
Setting up grsecurity RBAC password
Password: # gradm –D
Re-enter password:
Во второй версии GRSecurity появился режим полного обу- ! Смотрим протокол ядра, в моем случае – /var/log/kern.log.
чения системы. Для его активации необходимо выполнить: В нем будут примерно такие записи:
# gradm –F –L /var/log/grsec Jul 22 14:57:00 admin kernel: grsec: Loaded grsecurity 2.0
Jul 22 14:57:02 admin kernel: grsec: denied access to hidden file
/bin/ping by /bin/bash[bash:9717] uid/euid:0/0 gid/egid:0/0,
Все попытки любых программ получить доступ к каким- parent /bin/su[su:14540] uid/euid:0/0 gid/egid:0/0
Jul 22 14:57:02 admin kernel: grsec: use of CAP_DAC_OVERRIDE
либо объектам будут фиксироваться в файле /var/log/grsec. denied for /bin/bash[bash:9717] uid/euid:0/0 gid/egid:0/0,
Через некоторое время отключаем GRSecurity: parent /bin/su[su:14540] uid/euid:0/0 gid/egid:0/0
Jul 22 14:57:02 admin kernel: grsec: use of CAP_DAC_READ_SEARCH
# gradm –D denied for /bin/bash[bash:9717] uid/euid:0/0 gid/egid:0/0,
Password: parent /bin/su[su:14540] uid/euid:0/0 gid/egid:0/0
Jul 22 14:57:05 admin kernel: grsec: denied access to hidden file
/etc/ld.so.preload by /sbin/gradm[gradm:30057] uid/euid:0/0
и с помощью следующей команды из протокола получаем gid/egid:0/0, parent /bin/bash[bash:9717] uid/euid:0/0 gid/egid:0/0
файл /etc/grsec/acl: Jul 22 14:57:10 admin kernel: grsec: shutdown auth success for
/sbin/gradm[gradm:30057] uid/euid:0/0 gid/egid:0/0,
parent /bin/bash[bash:9717] uid/euid:0/0 gid/egid:0/0
# gradm –F –L /var/log/grsec –O /etc/grsec/acl
После анализа логов исправляем /etc/grsec/acl и начи-
примерно такой структуры: наем все сначала.
Для справки – ACL на моем сервере составляет 2500
role default строк. В качестве примера приведу ACL для mysql. В моем
subject / {
/ h случае mysql работает из-под пользователя mysql, посему
-CAP_ALL необходима отдельная пользовательская роль:
connect disabled
bind disabled
} role mysql u
subject / {
role root uG / h
subject / { -CAP_ALL
/ h bind disabled
/bin h connect disabled
………………. }
}
subject /usr/sbin/mysqld o {
……………….. / h
/etc r
/etc/grsec h
Этот ACL будет мало пригоден для работы, его придет- /etc/mysql/my.cnf r
/lib rx
ся долго настраивать. Это, с одной стороны, связано с не- /proc/sys/kernel/version r
совершенством режима обучения, а с другой стороны – с /tmp rwcd
/usr/lib rx
тем, что за время обучения какие-либо программы частич- /usr/share/zoneinfo r
но не выполняли свои функции. Например, за время обуче- /usr/share/mysql r
/var/run/mysqld w
ния DNS-сервер ни разу не запустил процесс передачи зоны, /var/lib/mysql rw
в связи с чем впоследствии возникнут ошибки доступа к /var/lib/mysql/* rw
-CAP_ALL
файлам зон, которые придется исправлять вручную. Здесь +CAP_SETGID
напрашивается вывод – почему бы не оставить режим обу- +CAP_SETUID
}
чения на несколько дней, тогда можно быть уверенным, что
все функции выполнились хотя бы один раз. Однако такой Расскажу еще об одной проблеме, с которой мне при-
подход не верен. Дело в том, что помимо выполнения нуж- шлось столкнуться. Для подсчета трафика я использую
ных функций (той же передачи зоны) могут быть выполне- NeTAMS. После обучения получил такой ACL для netams:
ны и ненужные. Например, администратор зашел в консоль
и произвел какие-либо нестандартные действия, для кото- subject /usr/bin/netams o {
/
рых впоследствии будет применяться специальная роль. В /var rwc
вер работает из-под пользователя apache. Для обучения си- Задаем пароль:
стемы добавляем в /etc/grsec/acl следующие строки:
# gradm –P
Setting up grsecurity RBAC password
role apache ul Password:
Re-enter password:
Запускаем GRSecurity в режиме обучения (не полного!): Активируем GRSecurity и переходим в роль sysadmin:
# gradm –E
# gradm –E –L /var/log/grsec # gradm –a sysadmin
Password:
Через некоторое время отключаем: Теперь можно выполнять любые действия на сервере:
# gradm –D
формируем ACL:
subject /bin/su lo {
/ h
-CAP_ALL
connect disabled
bind disabled
}
Ðèñóíîê 2
и аналогично запускаем режим обучения. Здесь есть один В заключение хочу сказать, что GRSecurity во много раз
тонкий момент – в процессе обучения GRSecurity не исправ- повышает защищенность компьютера, поэтому смело могу
ляет допущенные человеком ошибки, поэтому запускать рекомендовать ее использование на всех серверах, рабо-
режим обучения для роли или субъекта, в которые уже что- тающих под управлением Linux.
то добавлено, не имеет смысла. Поэтому прежде чем запу- Отдельная благодарность Алексею Коршунову и Анд-
стить режим обучения, рекомендуется полностью очистить рею Бешкову за помощь в подготовке статьи.
субъект или роль.
56
итоги конкурса
Больше месяца на страницах каталога программного обес- Оказалось, что сайт для общения системных администра-
печения SOFT@Mail.Ru (http://soft.mail.ru) проводился кон- торов просто необходим, и месяц, отведенный на конкурс, –
курс для системных администраторов и пользователей «Си- это очень-очень мало. Поэтому организаторы решили не
садмин тоже человек». закрывать сайт «Сисадмин тоже человек» после подведе-
3 августа 2004 года организаторы конкурса компании ния итогов конкурса, чтобы дать возможность прочитать то,
SoftLine и Mail.Ru подвели итоги. Победителями стали 7 что уже опубликовано на сайте, и то, что еще может быть
системных администраторов и 5 авторов открыток. опубликовано. Теперь сайт «Сисадмин тоже человек» дос-
Напомним, что по условиям конкурса авторы открыток тупен по адресу http://sysadmin.mail.ru. Сайт снабжен более
размещали свои творения в честь сисадминов, оставивших удобной навигацией, классификатором жалоб, поиском,
свои сообщения в Жалобной книге. Самые популярные жа- удобным функционалом для добавления новых жалоб. Мож-
лобы принесли их авторам победу. Открытки разместились но оставить отзыв на сообщения своих коллег, поставить
на сайте Открытки@Mail.Ru (http://cards.mail.ru). С этого сай- оценку, просмотреть рейтинг. Работает форум сайта.
та все желающие посылали поздравления своим знакомым
сисадминам. Самые популярные открытки, лидирующие по
числу отправлений, принесли победу и призы авторам.
Целый месяц системные администраторы делились про-
блемами и забавными историями из своей богатой практи-
ки общения с пользователями, а дизайнеры и просто не-
равнодушные люди создавали для них тематические от-
крытки. Присланные на сегодняшний день участниками
конкурса материалы представляют собой практически го-
товый сборник баек, историй, остроумных высказываний,
посвященных нелегкой работе системных администраторов.
Подведение итогов и торжественное вручение призов
происходило 3 августа в уютном кафе «Маскафе» на Цвет-
ном бульваре в Москве, где собрались победители, орга-
низаторы, спонсоры и самые активные участники форума.
Победители получили призы от спонсоров конкурса (Учеб-
ный Центр SoftLine, интернет-магазин Allsoft.ru (http://
allsoft.ru), журнал «Системный администратор», портал
Sysadmins.Ru, hardware-портал Jelezka.Ru, 3DNews). Глав-
ный приз для победителя Алана Габуева – бесплатное обу-
чение программе подготовки Microsoft Certified Systems
Administrator (MCSA 2003) – предоставил генеральный спон-
сор конкурса Учебный Центр SoftLine (http://softline.ru/edu).
Из жалоб сисадминов
«В общем, господа сисадмины! Позитивнее смотрите на
жизнь и помните: «Юзвери существуют не для того, чтобы
отравлять нам жизнь, а для того, чтобы своими выходками
доводить нас до смеха. А смех, как известно, продляет
жизнь...»
58
образование
КРИС КАСПЕРСКИ
Долгое время главным козырем противников NTFS был Не используйте никаких автоматизированных «лечи-
следующий аргумент – чем вы будете ее восстанавливать, лок», если полностью в них не уверены. Последствия тако-
если она умрет? А мрет она, как показывает практика, до- го лечения могут быть катастрофическими, а результаты
статочно часто. При всей своей надежности NTFS не заст- «восстановления» – необратимыми. То же самое относит-
рахована от потрясений. Ошибки оператора, вирусы, сбои ся и к «специалистам», обитающим в фирмах непонятного
питания, зависания ОС, дефекты поверхности, отказ элек- происхождения и орудующих все теми же автоматизиро-
троники… С каждым днем человечество все сильнее и силь- ванными утилитами, которыми вы можете воспользовать-
нее становится зависимо от компьютеров, объемы жестких ся и без них. Некоторые пытаются создавать необходимый
дисков стремительно растут, а вместе с тем растет и цен- инструментарий самостоятельно. Чаще всего он оказыва-
ность содержащихся на них данных, потеря которых зачас- ется неработоспособным еще с рождения, но зато какая
тую невосполнима. гордость для фирмы! Какое впечатляющее средство демон-
Спрос рождает предложение и на рынке как грибы пос- страции собственной крутизны! Поверьте, утилиты типа
ле дождя вылупляются фирмы, специализирующиеся на Easy Recovery и Get Data Back далеко не дураки писали (да
восстановлении данных, однако по-настоящему хороших еще и при участии непосредственных разработчиков ори-
специалистов можно встретить только в двух, ну от силы в гинального драйвера NTFS, хорошо знающих все его тон-
трех из них, а все остальные лишь создают видимость ки- кости и особенности поведения). Это лучшее из того, что
пучей деятельности, выставляя астрономические счета при есть на рынке, и пока еще никому не удалось их превзойти!
довольно посредственном качестве восстановления. Но (Разумеется, речь идет лишь об автоматизированном вос-
время кустарей уже ушло. Рабочая атмосфера изменилась. становлении.)
Хакеры разобрались со строением NTFS и документирова- Ничего не записывайте на восстанавливаемый диск и
ли ее ключевые структуры. Начал формироваться достой- не позволяйте этого делать остальным приложениям! Если
ный инструментарий для ручного восстановления. Наконец, вы случайно удалили файл с системного диска, ни в коем
за минувшее время накопился огромный опыт по борьбе случае не выходите из Windows «культурным» способом.
за спасение данных, частью которого автор и хочет поде- Лучше нажмите RESET (при штатном завершении сеанса
литься с читателями. система сохраняет на диске текущую конфигурацию, суще-
ственно увеличивая риск необратимого затирания удален-
Если вдруг случился сбой и данные ного файла).
оказались утеряны… Не пытайтесь «насиловать» сбойные сектора многократ-
Прежде всего – не паникуйте! Заниматься восстановлени- ными чтениями – это лишь расширяет дефектную область
ем можно только на трезвую голову. Непродуманные, ли- на соседние сектора и здорово уродует магнитную голов-
хорадочные действия только усугубляют ваше и без того ку, после чего здоровые сектора не смогут читаться тоже.
незавидное положение! Лучше выполните длинное (long) чтение с диска с отклю-
60
образование
ченными контролирующими кодами, тогда контроллер воз- ем дисковый контроллер виртуализует геометрию винчес-
вратит все, что осталось от сектора (зачастую сбой затра- тера, что ставит нас в зависимость от выбранной схемы
гивает только несколько байт). трансляции (а схема трансляции – дело сугубо внутреннее
Если винчестер издает подозрительные звуки типа по- и потому не стандартизированное). Параметры диска, со-
стукивания или скрежета, немедленно выключите питание общаемые устройством и напечатанные на этикетке, все-
компьютера (опять-таки, не позволяя системе ничего пи- гда виртуальные, и никакой возможности узнать реальное
сать на диск ), поскольку в любой момент винчестер может положение дел у нас нет.
доломаться окончательно, и тогда ему уже никакой элект- IDE-диски благодаря наличию интегрированного кон-
ронщик не поможет. троллера внутри в наименьшей степени зависимы от внеш-
Восстанавливайте SCSI (и в особенности RAID!) диски него мира и могут свободно мигрировать от одной машины
только на «родном» контроллере (различные контроллеры к другой (при условии корректного поведения BIOS, но об
используют различные схемы трансляции адресов). Если этом чуть позже). Некоторые винчестеры поддерживают
же контроллер сдох, то либо ремонтируйте его, либо ищите специальную ATA-команду «Initialize device parameters», ус-
точно такой же. С IDE-дисками в этом плане намного про- танавливающую текущую виртуальную геометрию диска,
ще – их контроллеры более или менее стандартизованы, а точнее выбранное количество головок и число секторов
однако с дисками большого объема (свыше 528 Мб) уже на дорожку. Количество цилиндров вычисляется контрол-
начинается неразбериха и путаница, ставящая их в зави- лером самостоятельно, на основании общего объема дис-
симость от конкретной BIOS и выбранного режима работы ка, который, кстати говоря, также можно изменять про-
(NORMAL, LBA или LARGE). Если восстанавливаемый диск граммными средствами (за это отвечает ATA-команда
работает под управлением нестандартных драйверов типа SET MAX ADDRESS). Некоторые драйвера (и BIOS) изме-
Rocket, OnDisk и т. д., они должны присутствовать и на заг- няют геометрию диска, привязывая винчестер к себе проч-
рузочном диске (загрузочном CD), с которого производит- ными брачными узами, и в другом окружении такой диск
ся восстановление. работать уже не будет, ну во всяком случае до установки
Наконец, если данные восстановить так и не удалось – правильной геометрии.
не расстраивайтесь. Во всем в жизни надо видеть и хоро- Со SCSI-устройствами ситуация обстоит гораздо хуже,
шие стороны, даже когда ничего хорошего нет. и диск соглашается работать только с тем контроллером,
под которым он был отформатирован. Различные контрол-
Структура диска. Базовые концепции леры используют различные схемы трансляции, и потому
Физически жесткий диск представляет собой запечатанную подключение диска к несовместимому контроллеру произ-
банку с одной или несколькими одно- или двухсторонними вольным образом «перемешивает» сектора. Редактор дис-
пластинами, насаженными на шпиндель. Чтение/запись ка с таким винчестером работать еще будет, а вот штат-
данных осуществляется блоком магнитных головок, каж- ные средства операционной системы (и большинство «док-
дая из которых обслуживает одну из поверхностей пласти- торов») – нет.
ны. Информация хранится в форме концентрических колец, Продвинутые контроллеры автоматически замещают
называемых треками (track) или дорожками. Треки, распо- плохие сектора, либо сохраняя эту информацию в свой энер-
ложенные на равном расстоянии от центра всех пластин, гонезависимой памяти, либо записывая ее в инженерные
образуют цилиндр (cylinder). Фрагмент трека, образован- сектора самого диска. Это еще сильнее привязывает нако-
ный радиальным делением, называется сектором (sector). питель к его контроллеру (правда, некоторые SCSI-диски
В современных винчестерах количество секторов на трек выполняют переназначение секторов собственными сред-
не остается постоянным и дискретно растет по мере удале- ствами). Таким образом, выход SCSI-контроллера из строя
ния от центра пластины, поддерживая более или менее фактически приравнивается к отказу самого диска. Никог-
постоянные линейные размеры сектора. Треки и головки да не приобретайте SCSI-контроллеры неизвестных произ-
нумеруются начиная с нуля, сектора – начиная с единицы. водителей – в любой момент они могут кануть в Лету, и
Размер сектора для жестких дисков – 512 байт. тогда поставки новых контроллеров прекратятся. Контрол-
Первой схемой адресации секторов, доставшейся жес- леры, интегрированные в материнские платы, – это вооб-
тким дискам в наследство от дискет, стала так называемая ще песня. Ненадежные, ни с чем не совместимые… а что
CHS-адресация, представляющая собой сокращение от вы еще хотели за такую цену?
Cylinder/Head/Sector (Цилиндр/Головка/Сектор) и возникшая Сложнее всего приходится RAID-массивам, схема транс-
под давлением экономических причин. Когда-то координа- ляции адресов которых полностью определяется контролле-
ты адресуемого сектора напрямую соответствовали физи- ром. Массивы уровня 1 (mirroring, или зеркала) чаще всего
ческой действительности, что упрощало (а значит, и уде- транслируются всквозную и без особых проблем могут быть
шевляло!) дисковый контроллер, не требуя от него никакой перенесены на любой другой контроллер или даже подклю-
интеллектуальности. Помимо того, что такая схема адре- чены в обход его. Массивы остальных уровней (и в особен-
сации чудовищно неудобна для программистов (последо- ности RAID 3/RAID 5) на других типах контроллеров по обык-
вательное чтение диска растягивается на три вложенных новению неработоспособны. Программные RAID, монтируе-
цикла!), она еще и до неприличия косна! Количество секто- мые Windows NT, содержат информацию о своей геометрии
ров в треке должно быть постоянным для всего диска, а в в системном реестре и не могут быть непосредственно пе-
новых винчестерах это не так. Поэтому для сохранения со- ренесены на другие системы. Переустановка Windows NT
вместимости с существующим программным обеспечени- (равно как и крах оной) уничтожает программный RAID. К
Ëèñòèíã 2. Èíòåðôåéñ ñ ïðåðûâàíèåì INT13h BIOS Ëèñòèíã 3. Èíòåðôåéñ ñ IDE-äèñêîì â ðåæèìå LBA
62
образование
линдр, головку, сектор), опять-таки отсчитывающуюся от величина кластера, выбираемая по умолчанию, составляет
стартового сектора. Так, если раздел начинается с адре- всего 4 сектора. В отличие от секторов, кластеры нумеру-
са 123/15/62, то первой его головкой все равно будет го- ются, начиная с нуля.
ловка 0!
На уровне файловой системы операционная система Инструменты
адресует диск кластерами (cluster). Каждый кластер об- Даже если у вас золотые руки и светлая голова, при вос-
разован непрерывной последовательностью секторов, ко- становлении данных ни за что не обойтись без инструмен-
личество которых равно степени двойки (1, 2, 4, 8…). Раз- тов. В идеале вы должны быть готовыми разработать все
мер кластера задается на этапе форматирования диска и необходимое самостоятельно. Восстановление данных –
в дальнейшем уже не меняется. Основное назначение кла- довольно кропотливая и рутинная работа, и при реанима-
стеров – уменьшение фрагментации файлов и уменьше- ции 80 – 120 Гб диска без автоматизации никуда. Недоста-
ние разрядности служебных файловых структур. В част- ток всех известных дисковых докторов – отсутствие встро-
ности, FAT16 нумеруют кластеры двойными словами и енного языка или хотя бы развитой системы макрокоманд.
потому может адресовать не более 10000h∗sizeof(cluster) Естественно, прежде чем что-то автоматизировать, необ-
дискового пространства. Легко видеть, что уже на 80 Гб ходимо разобраться в ситуации, и выполнить эту работу
диске размер кластера составляет 1 Мб, и десяток фай- может только человек. Компьютеру доверять ее ни в коем
лов по одному байту каждый сожрут 10 Мб! Впечатляет, случае нельзя – для этого он недостаточно интеллектуа-
не правда ли? NTFS, оперирующая 64-битными величи- лен. Только человек может надежно отличать, где лежат
нами, не страдает подобными ограничениями, и типичная актуальные данные, а где мусор.
64
образование
Как вариант можно воспользоваться загрузочным дис- бочее состояние и многое-многое другое. К сожалению,
ком от компании Active@Data Recovery Software (http:// непосредственными средствами для восстановления раз-
download2.lsoft.net/NtfsFloppySetup.exe) или загрузочным рушенного диска ERD Commander не располагает, и в ос-
CD-ROM диском от нее же (http://download2.lsoft.net/boot-cd- новном он применим для реанимации операционной сис-
iso.zip). Центральным звеном каждого из них является не- темы (правда, из-под ERD Commander вы можете вызвать
зависимый NTFS-драйвер, работающий из под MS-DOS и дискового доктора или любую другую Windows-утилиту, в
монтирующий NTFS-тома даже при полном разрушении таком случае никакого смысла в его приобретении нет –
вспомогательных файловых структур и серьезном повреж- второй винчестер будет дешевле).
дении таблицы MFT и полном разрушении корневого ката- Начиная с Windows 2000, Microsoft наконец-то включи-
лога. Драйвер самостоятельно сканирует диск в поисках ла в операционную систему некоторую пародию на заг-
уцелевших записей в MFT, показывая в том числе и уда- рузчик, способную стартовать с CD-ROM и поддерживаю-
ленные файлы, предлагая их восстановить. Естественно, щую NTFS. Называется эта штука консоль восстановле-
возможность записи на диск реализована только в коммер- ния, или по-английски Recovery Console. Это действитель-
ческой версии, а демонстрационная позволяет лишь ско- но консоль, ничего не знающая о GUI и способная запус-
пировать файлы на внешний носитель (жесткий диск, раз- кать только консольные приложения (типа chkdsk.exe и
меченный под FAT или дискету). Динамические диски, к подобных им).
сожалению, не поддерживаются. Помимо этого в комплект Для ее активации загрузитесь с дистрибутивного CD-
входит утилита для создания/восстановления образа дис- ROM и сделайте вид, что хотите переустановить систему,
ка, средство избавления диска от данных (полезно, когда но на определенном этапе установки нажмите <R> для
вы сдаете диск с конфиденциальными данными назад про- вызова консоли восстановления. Вас запросят пароль ад-
давцу), программу для работы с патрициями1 (восстанов- министратора (если вы его забыли или системный реестр
ление разрушенных таблиц разделов и их заблаговремен- поврежден, войти в консоль не удастся!), при успешной
ная архивация), и автономный энурез – утилиту unerase для регистрации запустится командный интерпретатор, позво-
NTFS. ляющий (теоретически!) скопировать уцелевшие файлы
Если приобретение второго жесткого диска вам не по на другой диск. Практически же по умолчанию доступна
карману, а возможности MS-DOS-загрузчиков вас не уст- только папка WINNT, причем копирование на съемные
раивают, воспользуйтесь другой утилитой Марка Русси- носители запрещено. Хорошенькое начало! Вам нужна
новича – ERD Commander, позволяющий запускать усе- WINNT? Личные документы намного нужнее! К счастью,
ченную версию Windows с дискет (5 штук) или CD-диска. доступ можно разблокировать. Для этого необходимо
В настоящее время ERD Commander распространяется присвоить системным переменным AllowAllPaths и Allow
только на коммерческом основании, хотя в сети до сих пор RemovableMedia значение true («SET AllowAllPaths = true»,
можно найти предыдущие, бесплатные версии, хотя их «SET AllowRemovableMedia = true»), или локальных пара-
функциональные возможности весьма ограниченны. В метрах безопасности» (папка Администрирование в Па-
частности, опробованный мной EDR Commander 2000 вы- нели Управления) заблаговременно найти пункт «Консоль
зывал смесь разочарования с удивлением. Во-первых, он восстановления: разрешить копирование дискет и доступ
забросил на дискету многопроцессорное ядро (а у меня ко всем папкам» и перевести рубильник во включенное
однопроцессорная машина!). Как следствие, при загруз- состояние. Смысл этой защиты не совсем понятен. Про-
ке с дискеты Windows не нашла нужного ядра и умерла стые пользователи до консоли восстановления все равно
еще в зачатье. Пришлось менять ядро вручную. Затем не дотянутся, а профессионалов подобные манипуляции
всплыли и другие ошибки инсталлятора, и пришлось не- ужасно раздражают. Находясь в консоли восстановления,
мало попотеть, прежде чем Windows все-таки загрузилась. вы можете: запускать chkdsk2, создавать и удалять разде-
Подготовленный инсталлятором образ CD-ROM также был лы на жестком диске, перезаписывать главную запись и
в сильно разобранном состоянии – просто папка с файла- boot-record, форматировать логические диски, управлять
ми и bootsector.bin, который еще не каждой утилитой прож- службами и драйверами, удалять/копировать/переимено-
жешь (я пользовался CDRTOOLS, также подходит и CDRWIN, вывать/изменять атрибуты файлов (включая те, что бло-
а вот популярный Нерон, сжигающий Рим, для этой цели, кируются при запуске системы), а также выполнять дру-
увы, непригоден). Тем не менее ERD Commander стоит гие сервисные операции. При желании вы можете запус-
всех мучений! С его помощью вы можете: менять админи- кать и свои собственные консольные приложения, при ус-
страторский пароль в системе, редактировать реестр упав- ловии, что они не используют никаких динамических биб-
шей системы, управлять сервисами и драйверами, восста- лиотек за исключением NTDLL.DLL, однако технику их
навливать удаленные файлы, копировать и модифициро- создания мы обсудим как-нибудь в другой раз, т.к. это
вать любые системные и пользовательские файлы (в том очень обширный вопрос.
числе и по сети), редактировать таблицу разделов и уп- В Windows XP идея консоли восстановления получила
равлять динамическими дисками, сравнивать файлы упав- дальнейшее развитие, в конце концов вылившееся в
шей и рабочей системы, производить откат системы в ра- Windows PE. Это слегка усеченная версия Windows XP,
1
Английское partition (раздел) в русской транскрипции изначально произносилось как «партитио» и «патриция», но
затем язык это переварил в более благозвучную и легко выговариваемую «патрицию».
2
Полезность которого, кстати говоря, весьма сомнительна, т.к. он зачастую лишь усугубляет разрушения.
66
образование
Ðèñóíîê 4. Disk Probe çà ïîèñêîì ñåêòîðà Ðèñóíîê 7. Acronis DiskEditor îòîáðàæàåò NTFS boot-ñåêòîð
Автоматизированные доктора
Более убогой утилиты, чем ChkDsk – стандартный дисковый
«доктор», входящий в штатный комплект поставки
Windows, – по-видимому, не придумать даже сценаристам
из Голливуда. Система диагностики ошибок упрощена до
минимума – доктор лишь информирует о факте их наличия,
но отказывается говорить, что именно, по его мнению, по-
вреждено и что он собирается лечить, поэтому последствия
такого «врачевания» могут носить фатальный характер.
68
образование
ту намного больше. Обычно он используется неквалифи- Демонстрационную копию программы можно найти по
цированными пользователями (и администраторами) для следующему адресу http://www.diydatarecovery.nl/~tkuurstra/
периодической проверки разделов и исправления мелких downloads/Demo/iRecoverSetup.exe.
искажений файловой системы.
GetDataBack от создателя Disk Explorer. Полная автома-
тизация и никакой ручной работы. Сканирует MFT и выво-
дит все файлы, которые только удалось найти (включая уда-
ленные), рассовывая их по директориям (при условии, что
соответствующие индексы не повреждены). Если споткнет-
ся о BAD-сектор – вылетит, не прощаясь. Зато поддержи-
вает удаленное восстановление, создание образов дисков,
и мощную систему поиска по файлам (дата/размер), но по-
чему-то нет поиска по содержимому, что не есть хорошо.
Допустим, вы хотите восстановить файл со своей диссер-
тацией, ключевые слова которой вам известны, а вот в ка-
ких секторах они располагаются, – неведомо. Тоже самое
относится и к поиску файла записной книжки с телефоном
приятеля. Тем не менее, для большинства рядовых задач
по восстановлению возможностей GetDataBack хватает с
лихвой. Демонстрационную версию программы под NTFS Ðèñóíîê 13. Ïîëçóùàÿ çìåéêà DIY Recover
можно раздобыть по адресу (http://www.runtime.org/ EasyRecovery Professional от OnTrack Data Recovery
gdbnt.zip). Она все показывает, но восстанавливать ничего (www.ontrack.com) – симпатичный, но на проверку доволь-
не дает. Однако позволяет открывать файлы ассоцииро- но бестолковый инструмент, к тому же работающий полно-
ванным с ними приложениям. Важно отметить, GetData Back стью в автоматическом режиме, интеллектуальность кото-
не является доктором, таким как NDD или ChkDsk. Она не рого находится на зачаточном уровне. Не рекомендуется
лечит разделы, а всего лишь позволяет скопировать из них для использования (ну разве что вы хотите восстановить
уцелевшие файлы. только что отформатированный том, на который еще ниче-
го существенного не писалось).
ПАКЕТНЫЕ КОМАНДЫ
ИНТЕРФЕЙСА ATAPI
ВЛАДИМИР МЕШКОВ
Общая характеристика интерфейса Устройство ATAPI поддерживает минимальный набор ко-
ATA/ATAPI. Регистры ATAPI-контроллера манд ATA, который неограниченно расширяется 12-байтным
Интерфейс ATA – AT Attachment for Disk Drives – разраба- командным пакетом, посылаемым хост-контроллером в ре-
тывался в 1986-1990 гг. для подключения накопителей на гистр данных устройства по команде PACKET. Структура
жестких магнитных дисках к компьютерам IBM PC AT с командного пакета пришла от SCSI (www.t10.org), что обес-
шиной ISA. Стандарт, разработанный комитетом X3T10, печивает схожесть драйверов для устройств со SCSI и
определяет набор регистров и назначение сигналов 40-кон- ATAPI.
тактного интерфейсного разъема. Интерфейс появился в Регистры ATAPI-контроллера:
результате переноса контроллера жесткого диска ближе к
накопителю, на плату электроники с сохранением регист-
ровой модели, т.е. создания устройств со встроенным кон-
троллером – IDE (Integrated Device Electronic).
Для подключения к интерфейсу ATA накопителей CD-
ROM набора регистров и системы команд ATA недостаточ-
но. Для них существует аппаратно-программный интерфейс
ATAPI (ATA Package Interface – пакетный интерфейс ATA).
70
программирование
Регистр данных (DR) используется так же, как и регистр ройству необходимо послать пакетную команду START/
данных ATA. STOP UNIT, которая представляет собой 12-байтный блок
Регистр ошибки (ER) определяет состояние контролле- данных следующего формата (см. спецификацию INF-8020i,
ра устройства ATAPI после выполнения операции и досту- п. 10.8.25, стр. 197):
пен только для чтения. Назначение разрядов регистра сле-
дующее:
! бит 0 (ILI) – недопустимая длина командного пакета или
блока данных;
! бит 1 (EOM) – обнаружен конец дорожки на носителе;
! бит 2 (ABRT) – аварийное прекращение выполнения ко-
манды;
! бит 3 – не используется;
! бит 4-7 (Sense Key) – код состояния устройства.
72
программирование
пакетную команду PLAY AUDIO (полный листинг находится
в файле RAW/play_audio.c): /* Îæèäàåì ñáðîñà áèòîâ BSY è DRQ */
for(;;) {
do {
void play_audio() IN_P_B(status, port);
{ } while(status & BSY);
__u8 cmd_buff[12]; if(!(status & DRQ)) break;
}
/* Âîñïðîèçâîäèì ôðàãìåíò ðàçìåðîì 5000 ñåêòîðîâ,
* íà÷èíàÿ ñ 10-ãî /* Âûáèðàåì óñòðîéñòâî Secondary Master */
*/ port = 0x176;
__u32 start_lba = 10; // ñòàðòîâûé ñåêòîð OUT_P_B(0xA0, port);
__u16 lba_len = 5000; // äëèíà âîñïðîèçâîäèìîãî ó÷àñòêà
/*  ìëàäøèé áàéò ñ÷åò÷èêà áàéòîâ (CL) çàíîñèì
memset((void *)cmd_buff, 0, 12); * ðàçìåð çàïðàøèâàåìûõ äàííûõ
cmd_buff[0] = 0x45; // êîä êîìàíäû PLAY AUDIO */
port = 0x174; OUT_P_W(data_len, port);
/* Ìåíÿåì ïîðÿäîê ñëåäîâàíèÿ áàéò ïðè ïîìîùè ìàêðîñà
* __swab32. Ýòîò ìàêðîñ îïðåäåë¸í â ôàéëå /*  ðåãèñòð êîìàíä çàïèñûâàåì êîä ïàêåòíîé êîìàíäû */
* <linux/byteorder/swab.h> port = 0x177; OUT_P_B(0xA0, port);
*/
start_lba = __swab32(start_lba); /* Æä¸ì óñòàíîâêè áèòà DRQ */
memcpy((void *)(cmd_buff + 2), (void *)&start_lba, 4); for(;;) {
lba_len = __swab16(lba_len); do {
memcpy((void *)(cmd_buff + 6), (void *)&lba_len, 2); IN_P_B(status, port);
send_packet_command(cmd_buff); } while(status & BSY);
if(status & DRQ) break;
return; }
}
port = 0x170;
Следующий класс пакетных команд, который мы рас- /* Â ðåãèñòð äàííûõ çàïèñûâàåì 12-áàéòíûé êîìàíäíûé ïàêåò */
for(i = 0; i < 12; i += 2) {
смотрим в данной статье, требует передачи данных от уст- memcpy((void *)&a, (cmd_buff + i), 2);
ройства к хосту в режиме PIO. Алгоритм выполнения таких OUT_P_W(a, port);
}
команд следующий (см. п. 5.8, спецификация INF-8020i):
! хост считывает регистр состояния устройства, дожида- /* Æä¸ì çàâåðøåíèÿ êîìàíäû - óñòàíîâëåííîãî áèòà DRQ.
* Åñëè ïðîèçîøëà îøèáêà - ôèêñèðóåì ýòîò ôàêò
ясь нулевого значения битов BSY и DRQ. После этого */
хост заносит в регистр выбора устройство байт, бит DEV port = 0x177;
for(;;) {
которого указывает на адресуемое устройство, в регистр do {
счетчика байтов (старший и младший) заносится число IN_P_B(status, port);
} while(status & BSY);
передаваемых от устройства байт; // îøèáêà âûïîëíåíèÿ êîìàíäû!
! хост записывает код пакетной команды 0xA0 в команд- if(status & ERR) return -1;
if(status & DRQ) break;
ный регистр; }
! устройство устанавливает бит BSY в регистре состоя- return 0;
ния и готовится к приёму пакетной команды; }
! подготовившись к приёму пакетной команды, устройство
сбрасывает бит BSY и устанавливает бит DRQ в регис- В качестве примеров пакетных команд, требующих пе-
тре состояния; редачи данных от устройства к хосту, рассмотрим следую-
! хост записывает 12-байтный командный пакет в регистр щий список:
данных устройства; ! INQUIRY
! устройство устанавливает бит BSY и приступает к вы- ! READ CD
полнению поступившей команды. После выполнения ко- ! REQUEST SENSE
манды устройство сбрасывает бит BSY и устанавлива- ! READ TOC
ет бит DRQ. Если во время выполнения команды про- ! SEEK
изошла ошибка, в регистре состояния будет установ- ! READ SUB-CHANNEL
лен бит CHK;
! хост опрашивает регистр состояния, дожидаясь единич- По команде INQUIRY устройство выдаёт блок инфор-
ного значения бита DRQ. После этого хост считывает мации о своих параметрах. Формат команды INQUIRY сле-
из регистра данных результат выполнения команды. дующий:
! байт 0 – код команды INQUIRY, значение 0x12;
Функция send_packet_data_command() реализует этот ! байт 4 – размер выделенной области для считываемых
алгоритм. Параметры функции – размер запрашиваемых данных.
данных и указатель на 12-байтный командный пакет:
Формат стандартной справки, выдаваемой по команде
int send_packet_data_command(__u16 data_len, __u8 *cmd_buff) INQUIRY, приведен на рис. 3 (INF-8020i, п. 10.8.1.1, стр. 94.).
{
int i; Функция read_inquiry() считывает идентификатор изго-
__u8 status = 0; товителя (Vendor Identification), идентификатор изделия
__u16 port, a;
(Product Identification) и версию изделия (Product Revision
port = 0x177; Level):
74
программирование
ческий номер сектора, содержимое которого мы хотим про-
читать.
В нашем примере, Minute = 00, Second = 15, Frame = 25. Поле Format девятого байта не используется.
Подставив значения в формулу, получаем LBA = 1000. Имен- Формат данных TOC для Format = 00b, представлен на
но этот сектор мы считывали. рис. 12.
Теперь проверим, как обрабатываются ошибочные си- Первые четыре байта – это заголовок, содержащий дли-
туации. Удалим из привода компакт-диск и запустим про- ну данных TOC и номера первого и последнего треков. За
грамму на выполнение. В результате программа выдаст заголовком следуют дескрипторы треков. Первым распо-
следующее: ложен дескриптор трека, номер которого задан в поле
76
программирование
Starting Track. Максимальная длина данных TOC, согласно * ïî êîìàíäå READ TOC áóäåò âûäàíà èíôîðìàöèÿ îáî âñåõ
спецификации INF-8020i (рис. 12), составляет 804 байта, * òðåêàõ äèñêà, íà÷èíàÿ ñ ïåðâîãî
*/
или 100 TOC track descriptors. memset((void *)cmd_buff, 0, PACKET_LEN);
cmd_buff[0] = READ_TOC;
cmd_buff[6] = 0;
/* Ðàçìåð îáëàñòè ïàìÿòè, âûäåëåííîé äëÿ äàííûõ TOC */
a = MAX_TOC_LEN;
a = __swab16(a);
memcpy((void *)(cmd_buff + 7), (void *)&a, 2);
Извлечь из сформированного списка дескриптор трека Первый параметр – дескриптор файла устройства. Вто-
можно при помощи следующей функции: рой параметр, CDROM_SEND_PACKET – спецификатор,
указывающий на необходимость передачи устройству па-
struct toc_entry * get_toc_entry(int trk_num, struct toc *t) кетной команды. Третий параметр – структура следующего
{
struct toc_entry *t_entry; типа:
int i = 1;
/* for CDROM_PACKET_COMMAND ioctl */
for(;i < trk_num; i++) t = t->next;
78
программирование
struct cdrom_generic_command printf("CD-ROM îòêðûò. Íàæìèòå ENTER äëÿ çàêðûòèÿ");
{ getchar();
unsigned char cmd[CDROM_PACKET_SIZE];
unsigned char *buffer; /* Çàêðûâàåì ëîòîê */
unsigned int buflen; memset((void *)&cgc, 0, ↵
int stat; sizeof(struct cdrom_generic_command));
struct request_sense *sense; cgc.cmd[0] = GPCMD_START_STOP_UNIT;
unsigned char data_direction; cgc.cmd[4] = 0x3;
int quiet; cgc.data_direction = CGC_DATA_NONE;
int timeout;
void *reserved[1]; ioctl(fd, CDROM_SEND_PACKET, &cgc);
};
printf("CD-ROM çàêðûò\n");
Эта структура определена в файле <linux/cdrom.h>. На- return 0;
}
значение полей структуры:
! cmd[CDROM_PACKET_SIZE] – 12-байтный командный Следующий пример – функция read_cd, выполняющая
пакет; чтение RAW-сектора, при этом вместе с данными основно-
! buffer – указатель на буфер, куда будут помещены счи- го канала считываются данные Q-субканала сектора. Фор-
танные данные. Также в этом буфере хранятся данные, мат данных Q-субканала приведен на рис.9, формат коман-
которые будут переданы устройству; ды READ CD – на рис. 8. Входной параметр функции – ло-
! buflen – размер передаваемых (принимаемых) данных; гический номер сектора.
! sense – структура, содержащая информацию о состоя-
нии устройства (см. команду REQUEST SENSE и рис. int read_cd(__u32 lba)
{
10). Эта структура также определена в файле <linux/ int fd, out_f;
cdrom.h>; struct cdrom_generic_command cgc;
struct request_sense sense;
! data_direction – направление обмена данными. Может
принимать следующие значения: #define QSCH_LEN 16 // ðàçìåð äàííûõ Q-ñóáêàíàëà
Полный листинг программы чтения RAW-секторов ком- Поле point определяет тип информации, которую содер-
пакт-диска с использованием системного вызова IOCTL жит запись TOC. Значение этого поля определяет назначение
находится в файле IOCTL/read_sector.c. остальных полей, таких как min, sec, frame, pmin, psec, pframe.
После запуска на выполнение программа сохранит дан- Считывание TOC выполняет функция read_toc():
ные основного канала в файле sector, данные Q-субканала –
в файле qsch и выведет значения координат сектора в MSF int read_toc()
{
формате, считанные из поля Header. Для сектора номер int i = 1;
1001 получим следующий результат: // áóôåð äëÿ õðàíåíèÿ ðåçóëüòàòîâ ÷òåíèÿ TOC
__u8 *data_buff;
/* Çàäàåì ðàçìåð îáëàñòè ïàìÿòè äëÿ õðàíåíèÿ äàííûõ ÒÎÑ.
* Ò.ê. çàðàíåå îáúåì äàííûõ íàì íå èçâåñòåí, òî çàäàäèì
* ìàñêèìàëüíîå çíà÷åíèå - 64 Êá
Результаты чтения данных Q-субканала программой */
__u16 buff_size = 0xFFFF;
read_sector зависят от используемой модели CD-ROM. Для __u16 toc_data_length = 0; // äëèíà çàïèñåé TOC
сравнения посмотрим на результаты чтения приводами __u32 lba;
int toc_entries = 0; // ÷èñëî çàïèñåé â TOC
TEAC и MITSUMI Q-субканала сектора номер 1001. struct cdrom_generic_command cgc;
struct request_sense sense;
struct toc *t;
80
программирование
cgc.cmd[2] = 2; // ïîëå Format Field = 10b /* Ïåðåñ÷èòûâàåì êîîðäèíàòû èç MSF â LBA ïðè ïîìîùè ìàêðîñà
cgc.sense = &sense; * MSF2LBA
cgc.data_direction = CGC_DATA_READ; */
cgc.buffer = data_buff; #define MSF2LBA(Min, Sec, Frame) \
cgc.buflen = buff_size; (((Min * 60 + Sec) * 75 + Frame) - 150)
buff_size = __swab16(buff_size); lba = MSF2LBA((t + i)->pmin, (t + i)->psec, ↵
memcpy((void *)(cgc.cmd + 7), (void *)&buff_size, 2); (t + i)->pframe);
printf("%u\n", lba);
/* Ïîñûëàåì êîìàíäíûé ïàêåò óñòðîéñòâó */ }
if(ioctl(fd, CDROM_SEND_PACKET, &cgc) < 0) { free(t);
perror("ioctl"); return 0;
printf("Sense key - 0x%02x\n", sense.sense_key); }
printf("ASC - 0x%02x\n", sense.asc);
printf("ASCQ - 0x%02x\n", sense.ascq);
Полный листинг программы чтения TOC находится в
return -1; файле IOCTL/read_toc_full.c.
}
Устанавливаем в устройство компакт-диск, на котором
/* Îïðåäåëÿåì ðàçìåð äàííûõ TOC */ создано 2 сессии, и запускаем на выполнение программу
memcpy(&toc_data_length, data_buff, 2);
toc_data_length = __swab16(toc_data_length); read_cd_full. Вывод направим в файл toc:
printf("TOC data length - %d\n", toc_data_length);
/* Âû÷èñëÿåì ÷èñëî çàïèñåé â ñîäåðæèìîì TOC (cì. ðèñ.13) */ # ./read_cd_full > toc
toc_entries = (toc_data_length - 2)/11;
printf("TOC entries - %d\n", toc_entries);
В результате в файле toc будут собраны данные Q-суб-
/* Íîìåð ïåðâîé è ïîñëåäíåé ñåññèè */ каналов всех Lead-In областей компакт-диска:
printf("First: %d\t", data_buff[2]);
printf("Last: %d\n", data_buff[3]);
TOC data length - 123
TOC entries - 11
/* Âûäåëÿåì ïàìÿòü äëÿ äàííûõ TOC, ðàçìåð ýòèõ äàííûõ óæå First: 1 Last: 2
* òî÷íî èçâåñòåí Entry Session Point Min Sec Frame PMin Psec PFrame LBA
*/ 0 1 A0 0 0 0 1 32 0 6750
t = (struct toc *)malloc(toc_data_length); 1 1 A1 0 0 0 1 0 0 4350
memset((void *)t, 0, toc_data_length); 2 1 A2 0 0 0 0 37 50 2675
3 1 1 0 0 0 0 2 0 0
4 1 B0 3 7 50 79 59 74 359849
/* Êîïèðóåì äàííûå TOC èç áóôåðà data_buff 5 1 C0 70 0 158 97 34 23 438923
* è îñâîáîæäàåì âûäåëåííóþ ïîä íåãî ïàìÿòü 6 2 A0 0 0 0 2 32 0 11250
*/ 7 2 A1 0 0 0 2 0 0 8850
memcpy((void *)t, data_buff + 4, toc_data_length); 8 2 A2 0 0 0 3 44 19 16669
free(data_buff); 9 2 2 0 0 0 3 9 50 14075
10 2 B0 5 14 19 79 59 74 359849
/* Îòîáðàæàåì ðåçóëüòàòû ÷òåíèÿ TOC */
printf("Entry\tSession\tPoint\tMin\tSec\ ↵ Проведем анализ полученных результатов (таблица 1).
tFrame\tPMin\tPsec\tPFrame\tLBA\n"); Для этого воспользуемся таблицей 131, которая приведе-
for(i = 0; i < toc_entries; i++) { на на стр. 175 спецификации INF-8020i (рис. 14).
printf("%d\t", i); Следующий пример – чтение данных Q-субканала сек-
printf("%d\t", (t + i)->snum);
printf("%X\t", (t + i)->point); торов компакт-диска. Для выполнения этой операции вос-
printf("%d\t", (t + i)->min); пользуемся связкой команд SEEK/READ SUB-CHANNEL.
printf("%d\t", (t + i)->sec);
printf("%d\t", (t + i)->frame); Команда SEEK перемещает оптический элемент к нужно-
printf("%d\t", (t + i)->pmin); му сектору, а READ SUB-CHANNEL производит считыва-
printf("%d\t", (t + i)->psec);
printf("%d\t", (t + i)->pframe); ние необходимой нам информации из этого сектора. Счи-
тывать мы будем данные о текущей позиции оптического
Òàáëèöà 1. Ðåçóëüòàòû ÷òåíèÿ TOC (Format Field = 10b)
struct current_position {
__u8 dfc; // Data Format Code
__u8 ctrl :4; // Control
__u8 adr :4; // ADR
__u8 tno; // Track number
__u8 ino; // Index number
Ðèñóíîê 15. Ôîðìàò êîìàíäû READ SUB-CHANNEL __u32 a_addr; // Absolute CD-ROM Address
__u32 r_addr; // Track Relative CD-ROM Address
Для чтения данных Q-субканала бит SubQ устанавли- } __attribute__ ((packed)) cur_pos;
вается в 1. Для чтения текущей позиции оптического эле-
мента устройства поле Sub-channel Data Format должно Функция, выполняющая чтение данных о текущей пози-
содержать 01h. В результате выполнения команды устрой- ции оптического элемента устройства:
ство вернет блок данных следующего формата:
void read_subch()
{
// ðàçìåð çàïðàøèâàåìûõ äàííûõ
// (4 áàéòà çàãîëîâêà + 12 áàéò äàííûõ)
__u16 buff_size = 16;
// óêàçàòåëü íà áóôåð äëÿ äàííûõ Q-ñóáêàíàëà
__u8 *data_buff;
// ðàçìåð áëîêà äàííûõ Q-ñóáêàíàëà
__u16 sch_length = 0;
struct cdrom_generic_command cgc;
struct request_sense sense;
memset((void *)&cgc, 0, ↵
sizeof(struct cdrom_generic_command));
memset(&sense, 0, sizeof(struct request_sense));
/* Âûäåëÿåì ïàìÿòü */
data_buff = (__u8 *)malloc(buff_size);
memset(data_buff, 0, buff_size);
82
программирование
memset((void *)&cur_pos, 0, 12); * òðåêà. Äëÿ ýòîãî èñïîëüçóåòñÿ ïîëå cdte_format
memcpy((void *)&cur_pos, data_buff + 4, 12); * ñòðóêòóðû struct cdrom_tocentry
*/
printf("Data format code - %d\n", cur_pos.dfc); toc.cdte_format = CDROM_LBA;
printf("ADR - %d\n", cur_pos.adr);
printf("Track number - %d\n", cur_pos.tno); /* Çàäàâàÿ â ïîëå cdte_track ñòðóêòóðû struct cdrom_tocentry
* ïîñëåäîâàòåëüíî íîìåðà òðåêîâ îò ïåðâîãî äî ïîñëåäíåãî,
/* Òåêóùàÿ ïîçèöèÿ îïòè÷åñêîãî ýëåìåíòà */ * ìû îïðåäåëÿåì èõ ñòàðòîâûå êîîðäèíàòû â ôîðìàòå LBA
cur_pos.a_addr = __swab32(cur_pos.a_addr); */
printf("Current position - %u\n", cur_pos.a_addr); for(i = FIRST; i <= LAST; i++) {
toc.cdte_track = i;
/* Îñâîáîæäàåì ïàìÿòü è âûõîäèì */ ioctl(fd, CDROMREADTOCENTRY, &toc);
free(data_buff);
return; printf("track: %d\t", i); // íîìåð òðåêà
} // LBA àäðåñ
printf("lba: %d\n", toc.cdte_addr.lba);
Полный листинг программы позиционирования оптичес- }
return 0;
кого элемента и чтения текущей позиции находится в фай- }
ле IOCTL/read_subch.c.
Результаты работы программы показали, что разные Полный листинг программы приведен в файле IOCTL2/
приводы выполняют команду позиционирования с разной get_cd_toc.c.
точностью. Из двух имеющихся в моём распоряжении при- Рассмотрим программу, которая каждые 2 секунды от-
водов лучший результат показал TEAC – из 30 попыток по- слеживает текущее положение оптического элемента, ото-
зиционирования на разные сектора не было зафиксирова- бражает координату текущего сектора (в форматах LBA и
но ни одного промаха. У MITSUMI картина прямо противо- MSF) и номер трека.
положная: из 30 попыток ни одного точного попадания в
заданный сектор, постоянные перелеты. Результаты рабо- #define CD_DEVICE "/dev/cdrom"
int main()
ты программы для разных типов привода находятся в ката- {
логе IOCTL/RESULT, файлы TEAC и MITSUMI. int fd, current_track;
Кроме спецификатора CDROM_SEND_PACKET, в фай- /* Êîîðäèíàòû òåêóùåãî ñåêòîðà íàõîäÿòñÿ â Q-ñóáêàíàëå.
ле <linux/cdrom.h> определён целый набор специализиро- * Äëÿ ÷òåíèÿ äàííûõ Q-ñóáêàíàëà èñïîëüçóåòñÿ ñïåöèôèêàòîð
* CDROMSUBCHNL, ñ÷èòàííûå äàííûå ïîìåùàþòñÿ â ñòðóêòóðó
ванных команд, выполняющих определенное действие и не * struct cdrom_subchnl (ñì. <linux/cdrom.h>)
требующих формирования командного пакета в том объе- */
struct cdrom_subchnl sc;
ме, который был нами рассмотрен в предыдущих приме-
рах. Это в значительной степени упрощает работу с уст- /* Îòêðûâàåì ôàéë óñòðîéñòâà */
fd = open(CD_DEVICE, O_RDONLY|O_NONBLOCK);
ройством. Например, команда для открытия и закрытия
лотка CD-ROM выглядит следующим образом: /* Ïðîâåðÿåì òèï êîìïàêò-äèñêà. Ýòî äîëæåí áûòü Audio-CD */
if(ioctl(fd, CDROM_DISC_STATUS) != CDS_AUDIO) {
printf("I need Audio_CD!\n");
ioctl(fd, CDROMEJECT); // îòêðûòü ëîòîê CD-ROM return 0;
ioctl(fd, CDROMCLOSETRAY); // çàêðûòü åãî }
Рассмотрим пример функции, которая считывает TOC /* Ñ÷èòûâàíèå êîîðäèíàò ïðîèçâîäèì â áåñêîíå÷íîì öèêëå */
for(;;) {
компакт-диска.
/* Çàäà¸ì ôîðìàò àäðåñà LBA è ñ÷èòûâàåì êîîðäèíàòû ñåêòîðà */
#define CD_DEVICE "/dev/cdrom" sc.cdsc_format = CDROM_LBA;
int read_toc() ioctl(fd, CDROMSUBCHNL, &sc);
current_track = sc.cdsc_trk;
{
int fd, i;
/* Îòîáðàæàåì äàííûå î òåêóùåì òðåêå è êîîðäèíàòå
* â ôîðìàòå LBA
/* Ñòðóêòóðà struct cdrom_tochdr ñîäåðæèò çàãîëîâîê */
* ñîäåðæèìîãî TOC, ñòðóêòóðà struct cdrom_tocentry –
* äåñêðèïòîð òðåêà. Îáå ñòðóêòóðû îïðåäåëåíû â ôàéëå printf("Track: %d\t", current_track);
printf("LBA: %d\t", sc.cdsc_absaddr.lba);
* <linux/cdrom.h>
*/
struct cdrom_tochdr hdr; /* Òî æå ñàìîå - äëÿ ôîðìàòà MSF */
sc.cdsc_format = CDROM_MSF;
struct cdrom_tocentry toc; ioctl(fd, CDROMSUBCHNL, &sc);
/* Îòêðûâàåì ôàéë óñòðîéñòâà */ printf("MSF: %d %d %d\n", ↵
sc.cdsc_absaddr.msf.minute, ↵
fd = open(CD_DEVICE, O_RDONLY|O_NONBLOCK); sc.cdsc_absaddr.msf.second, ↵
/* Ñ÷èòûâàåì çàãîëîâîê TOC */ sc.cdsc_absaddr.msf.frame);
memset((void *)&hdr, 0, sizeof(struct cdrom_tochdr)); /* Æäåì äâå ñåêóíäû è ïîâòîðÿåì. Âûõîä ïî Ctrl-C */
ioctl(fd, CDROMREADTOCHDR, &hdr);
sleep(2);
}
/* Ïîëå cdth_trk0 ñòðóêòóðû hdr ñîäåðæèò íîìåð ïåðâîãî return 0;
* òðåêà, à ïîëå cdth_trk1 – íîìåð ïîñëåäíåãî òðåêà.
* Îòîáðàçèì ýòè çíà÷åíèÿ }
*/
printf("First: %d\t", hdr.cdth_trk0); Полный текст программы находится в файле IOCTL2/
printf("Last: %d\n", hdr.cdth_trk1);
read_sch.c.
#define FIRST hdr.cdth_trk0 Теперь делаем вот что – в одной консоли запускаем
#define LAST hdr.cdth_trk1
проигрыватель аудиокомпакт-дисков (workbone, например),
/* Îïðåäåëèì ôîðìàò, â êîòîðîì ìû õîòèì ïîëó÷èòü êîîðäèíàòû а в другой – программу read_sch. Через каждые 10-15 се-
84
bugtraq
ОСОБЕННОСТИ ЗАПУСКА
ВНЕШНИХ КОМАНД
ИЗ ASP-СТРАНИЦ
ИВАН КОРОБКО
Создавая приложения на ASP, предназначенные для облег- всех примерах в данной статье будет использоваться
чения управления различными сервисами сети, програм- VBScript, поскольку он наиболее симпатичен автору. Каж-
мисты часто сталкиваются с необходимостью запускать из дый из этих примеров легко переписать на Jscript. Итак,
них приложения (BAT, VBS, EXE и т. д.). Читая документа- первая строка любого из сценариев на ASP выглядит сле-
цию компании Microsoft, понимаешь, что решить задачку дующим образом:
не представляет никакой сложности. Но существует ряд тон-
костей в запуске приложений из ASP-страниц, которые по- <%Script Language=”VBScript”%>
чему-то не описаны в документации. На практике сталки-
ваешься с тем, что сценарий должен работать, поскольку или
все написано правильно и встроенный обработчик ошибок
сообщает об отсутствии таковых, однако требуемый резуль- <%Script Language=”JScript”%>
тат не достигается. Эта статья посвящена запуску различ-
ных типов приложений из ASP-страниц. Программный код, находящийся между <% и %>, вы-
полняется на сервере и подчинен синтаксису одного из
Active Server Pages выбранных языков. Весь остальной код представляет со-
ASP-страницы – это сценарии, программный код которых бой HTML-страницу в явном виде.
выполняется при их запросе. Результатом действия скрип- Листинг типовой ASP-страницы выглядит следующим
та является HTML/DHTML-страница, которая отображает- образом:
ся у клиента. Структура документа на ASP очень проста. В
первой строке всегда указывается язык, с помощью кото- Ïðèìåð 1:
рого созданы скриптовые вставки ASP-страница. Таким <%@ Language=VBScript CODEPAGE=1251%>
языком программирования может быть один из двух, под- <HTML>
<TITLE> Çàãîëîâîê ñòðàíèöû </TITLE>
держиваемый всеми браузерами: Jscript или VBScript. Во <HEAD>
86
программирование
<LINK href="../style.css" type=text/css rel=stylesheet> обладать соответствующими правами. IIS представляет со-
<meta http-equiv="Content-Type" content="text/html" ↵ бой трехзвенную систему.
charset=windows-1251>
</HEAD> <BODY>
<FONT FACE="Arial">
…
<%
… Ðèñóíîê 1
Response.write variable ‘ îòîáðàæåíèå íà ýêðàíå ↵
ñîäåðæèìîãî ïåðåìåííîé Пусть IIS имеет настройки по умолчанию. В этом случае
%> при загрузке любой ASP-страницы она стартует от имени
После обработки интерпретатором IIS программного кода встроенного пользователя (см. рис. 2). Если страница ра-
и преобразования результатов его работы в HTML/DHTML ботает с некими базами данных, например с Active Directory,
необходимо дать команду на отображение страницы в бра- то пользователь, запускающий данную страницу должен об-
узере клиента. Такой командой является Response.Write q, ладать правами администратора. Существует несколько
где q – имя переменной, содержащей фрагмент HTML-кода. способов выполнить эти условия. Первый – вместо учет-
ной записи встроенного пользователя прописать имя учет-
Методы запуска приложений из VBS ной записи администратора сети. При таком раскладе лю-
Рассмотрим вызов приложений непосредственно из фай- бой пользователь в сети сможет посетить данную страни-
ла VBS, для этого можно использовать один из методов – цу, т.к. она будет запускаться от имени системного адми-
Run или Exec. Необходимо отметить, что в VBScript не су- нистратора. Этот способ предоставляет всем доступ к дан-
ществует функции, с помощью которой можно запустить ной странице, что, согласитесь, неправильно. Это еще пол-
приложения, однако она существует в WSH, который под- беды. Главное, что таким образом резко снижается безопас-
держивает VBSscipt и JScript . Создание экземпляра объек- ность всей системы. В случае ошибок на странице злоумыш-
та WSH осуществляется с помощью команды Create ленник запросто запустит вредоносный код с правами ад-
Object(“WScript.Shell”). министратора. Поэтому предлагается другой способ реше-
ния проблемы, с помощью которого можно ограничить дос-
Ïðèìåð 2: туп к ресурсам. В настройках IIS необходимо сбросить фла-
Set Wshell = CreateObject("Wscript.shell") жок (см. рис. 2) с Enable anonymous access и установить
Set Proc = Wshell.Exec("application.exe") его напротив Basic Authentication. Также следует изменить
' Æäàòü, ïîêà íå çàâåðøèòñÿ âûïîëíåíèå ïðîãðàììû
Do While Proc.Status = 0 права на файловую структуру используемого сайта, исклю-
WScript.Sleep 100 чив оттуда группу Everyone и добавив соответствующую
Loop
группу безопасности. При такой настройке IIS только сис-
Set Wshell = Nothing темные администраторы получат доступ к данной страни-
MsgBox Proc.StdOut.ReadAll
це. При попытке любого пользователя, не являющегося ад-
Ïðèìåð 3: министратором сети, получить доступ к странице IIS будут
Set Wshell = CreateObject("Wscript.shell") запрошены имя и пароль пользователя.
Set Proc = Wshell.Run("application.exe")
Запуск скриптов
Запуск скриптов имеет ряд особенностей. Рассмотрим два
вида скриптов, которые, на взгляд автора, используются
наиболее часто в данной ситуации: VBS-скрипты и BAT-
файлы.
Запуск приложения
c графическим интерфейсом
Запуск приложения осуществляется с использованием од-
ного из вышеописанных методов (см. примеры 2, 3). Един- Ðèñóíîê 4
ственной особенностью является необходимость указывать Чтение значений элементов массива, содержащего ар-
88
программирование
гументы скрипта, можно осуществлять другим способом. в том случае, если осуществляется чтение несуществую-
Оба варианта дают один и тот же результат. Поэтому его щих параметров.
выбор зависит от пристрастий программиста. Отметим
лишь, что первый вариант компактнее. Однако, если необ- Ïðèìåð 7:
ходимо использовать нумерацию объектов, то второй ва- Set objArgs=Wscript.Arguments
риант окажется удачнее, поскольку в первом придется вво- Coun = Wscript.Arguments.Count
q = InputBox (“Ââåäèòå íîìåð ñ÷èòûâàåìîãî àðãóìåíòà”, ↵
дить дополнительно счетчик: “×òåíèå íîìåðà àðãóìåíòà”)-1
t = ””
Ïðèìåð 5: if q> Coun then
t= objArgs(q)
else
Set objArgs=Wscript.Arguments t=”ERROR”
Coun = Wscript.Arguments.Count
t="Êîëè÷åñòâî çàäàííûõ ïàðàìåòðîâ - " & Coun & chr(13) ↵ End if
Msgbox t
& "Ïàðàìåòðû:" & chr(13)
For i=0 to Coun-1
t = t & i+1 & ": "& objArgs(i) & chr(13)
Next
MsgBox t Запуск BAT-файлов
При использовании BAT-файлов необходимо помнить, что
Иногда необходимо получить значение определенного отдельный процесс порождается не только в момент запус-
аргумента. Это проиллюстрировано в примере 6. Необхо- ка такого типа файлов, но и при выполнении каждой из ко-
димо помнить, что нумерация элементов начинается с 0: манд, находящихся внутри него. По той же самой причине не
стоит выполнять взаимосвязанные команды, поскольку мо-
Ïðèìåð 6: жет сложиться ситуация, когда первая еще не успела отра-
Set objArgs=Wscript.Arguments ботать, а вторая, содержащаяся в следующей строке и ис-
Msgbox objArgs(2) ' ×òåíèå òðåòüåãî àðãóìåíòà. пользующая результат работы первой команды, уже начала
выполняться. В результате произойдет ошибка. Чтобы избе-
Приведенный пример не является образцом програм- жать этого, вызывайте команды из кода ASP-страницы и
мирования, поскольку в примере отсутствует обработчик осуществляйте проверку результата отработанной команды.
ошибок. Подводя итог, кратко отметим, что при работе с внешни-
Предугадывание возможных ошибок, имитация простей- ми файлами из ASP-страниц необходимо учитывать осо-
шего интеллекта у программы является хорошим тоном в бенности работы IIS. Надеюсь, что прочитав эту статью, у
программировании. Поэтому создадим для этого примера программистов не будет проблем с запуском приложений
обработчик ошибок. В данной ситуации ошибка возникает из ASP-страниц.
КИРИЛЛ СУХОВ
90
программирование
Итак, свершилось. 13 июля 2004 г. вышла пятая версия са- <?
мого популярного на сегодняшний день языка веб-разра- class foo {
function __clone() {
ботки – PHP. Его создатель, Расмус Лердорф, подчёркива- print "Cloned!";
ет, что изменения, привнесённые в язык, не революцион- }
}
ны, а скорее эволюционны, но беглое знакомство с новыми
возможностями PHP заставляет усомниться в словах мэт- $obj =new foo();
clone $obj;
ра. За недолгое время своего существования PHP из набо-
ра скриптов для придания интерактивности домашней стра- ?>
нички автора сумел вырасти в мощное средство разработ- Разумеется, на этом нововведения не закончились. По-
ки веб-приложений и теперь – новый шаг вперед. Насколь- явилась полноценная реализация конструкторов и деструк-
ко этот шаг важен и какие последствия перехода на новую торов классов (__constuct, __destruct), стали доступны мо-
версию грозят программисту и системному администрато- дификаторы Private, Public, Protected; (В PHP 4 все методы
ру, можно оценить, ознакомившись с основными нововве- и переменные внутри объекта были открытыми), введены
дениями PHP 5 и возможными проблемами, связанными с абстрактные классы (то есть классы, используемые только
его использованием. как базовые).
Появились специальные методы (__call, __get, __set),
Объектная модель предназначенные для «отлова» всех нереализованных в
Наиболее радикальные изменения языка связаны с введе- данном классе методов, попыток изменения или доступа к
нием новой объектной модели – Zend Engine II. неопределённым (или недоступным) переменным. Откры-
Формально элементы ООП появились ещё до выхода лась возможность передать методу тип передаваемого ар-
четвёртой версии PHP и были значительно расширены в гумента.
пятой. Объектно-ориентированная модель позволяла рабо-
тать с классами и объектами, объединяя методы и свой- <?php
function expectsMyClass(MyClass $obj) {
ства, поддерживала наследование, но имела весьма серь- }
ёзные ограничения. Прежде всего это необходимость при ?>
каждом использовании объекта обращаться к нему по ссыл-
ке, в противном случае получалась его копия, и при любом Хотя множественное наследование в стиле С++ в PHP 5
изменении объекта или его свойств происходило копиро- не поддерживается, классы могут наследовать множествен-
вание в новый объект. Поясню на примере: ные контакты через ещё одно нововведение – интерфейсы.
Естественно, программистам, знакомым с Java, объяснять,
<?php что это такое, не надо, для остальных приведу пример:
class foo {
var $name;
function getName() { <?php
return $this->name; interface Display {
} function display();
function setName($name) { }
$this->name = $name; class Circle implements Display {
} function display() {
function foo($name) { print "Displaying circle ";
$this->setName($name); }
} }
} ?>
92
программирование
Базы данных COM
Так уж сложилось, что наиболее «php-совместимым» сер- Как известно, в PHP 4 (а точнее немного раньше) в языке
вером баз данных является СУБД MySQL. Эта связка была появилась поддержка COM-технологии.
поставлена под угрозу зимой 2004 года, когда MySQL AB На практике это означало возможность работы с любы-
изменила лицензию своего продукта, основанного на GPL. ми объектами, имеющими COM-интерфейс, в том числе и
Если не вдаваться в юридические тонкости, можно про- с приложениями Microsoft Office (что особо ценно, когда твои
сто сказать, что клиентская библиотека MySQL по умолча- отчёты требуются бухгалтерии или шефу).
нию в PHP больше не присутствовала. Её, конечно, можно Правда, данная реализация имела существенные не-
было установить, но предварительно тщательно ознакомив- удобства, связанные с недостатками объектной модели
шись с лицензией. Честно говоря, в среде PHP-программи- РНР 4, которая накладывала ограничения и на сами скрип-
стов это известие вызвало некоторый шок (и это несмотря ты, и на использование СОМ-расширений.
на то, что связка PHP 4.x и MySql 3.x оставалась вполне В пятой версии все, что связано с работой COM-рас-
легитимной). Часть разработчиков устремилась в сторону ширений, было полностью переписано (причём такие, не-
PostgreSQL, а часть просто обратила внимание на появив- сколько несвойственные идеологии COM-модели функции,
шееся уже в версии 4.3x новое расширение MySQLite. как com_addref(), com_release(), com_get(), com_set(), com_
Была ещё одна причина заинтересоваться этой библио- isenum() и com_load() попросту ликвидированы, что, стро-
текой. Периодически на форумах разработчиков поднима- го говоря, порождает некоторые проблемы обратной со-
ется вопрос – можно ли написать веб-приложение, «управ- вместимости). Добавлено много возможностей, из кото-
ляемое данными», без использования сервера баз данных. рых наиболее полезными (лично мне), представляются
Вообще мне всегда казалось, что эта экономия (ну, разуме- следующие:
ется, на хостинге) совершенно неуместна, но вот встроен- ! Обработка исключительных ситуаций (в PHP 4, внутри
ная библиотека SQLite, пожалуй, добавляет плюсов подоб- COM-кода это было невозможно). Она осуществляется
ному подходу. Во всяком случае средство работы с данными с помощью класса com_exception, который является рас-
(как бы удачней этот софт назвать?), поддерживающее та- ширением базового класса обработки исключений
кие возможности, как транзакции, вложенные запросы и exception, предоставляемого РНР, и включает все его
представления, по крайней мере заслуживает интереса. методы.
А что же с MySQL? ! Для перебора теперь доступна функция foreach(), тем,
В общем, юридические проблемы благополучно разре- кто имел опыт работы с COM посредством PHP, поймут
шились. Товарищи из MySQL AB, похоже, опомнились, и всё удобство этого новшества.
теперь ограничения на клиентскую библиотеку снято (во- ! Тип variant, наконец, обрёл нормальный, работоспособ-
обще понять их можно, популярность MySQL во многом ный вид, впрочем, об этом тоже можно довольно много
была основана на широком распространении PHP). Более говорить.
того, введено новое расширение, mysqli (Improved MySQL ! Модель OO в PHP 5 позволяет РНР-препроцессору са-
Extenrsion), поддерживающее новые возможности MySQL, мостоятельно получать от COM-объекта информацию о
появившиеся в версии 4.1 и выше, такие как транзакции, методе, который будет вызван.
репликация и т. д. (правда, стоит оговориться, что многие
из них ещё не реализованы). .Net
В РНР 5 встроена поддержка .Net. Точнее, есть возмож-
Прочее ность работать с экземплярами объектов, определенных в
.Net через взаимодействия с COM-оберткой.
Автозагрузка То есть можно считать, что PHP «видит» объекты .Net
Как известно, работая с PHP, приходится мириться с тем так, как если бы они были объектами COM, что даёт разра-
фактом, что препроцессор не держит приложение в памя- ботчику доступ к библиотеке .Net-классов.
ти целиком, а подгружает все файлы при обращении к каж-
дой странице. При использовании какого-нибудь популяр- Standard PHP Library (SPL)
ного движка совершенно очевидна избыточность получа- SPL, по сути, является средством расширяемости Zend
емого кода, но настройка подключения только необходи- Engine, это альтернативное расширение для Zend Engine 2,
мых классов или файлов – довольно кропотливое и не- которое определяет стандартный набор интерфейсов.
благодарное занятие. В PHP 5 эта проблема решена с по- Ваш объект использует интерфейс из SPL, и, когда осу-
мощью функции-события _autoload(). Суть её работы в сле- ществляется доступ к объекту через встроенные конст-
дующем: при обращении к неизвестному классу или ин- рукции PHP, вызываются различные методы, определён-
терфейсу автоматически подгружается файл, содержащий ные интерфейсом. Данная возможность основана на но-
их описание. Данная функция также снимает проблему вых внутренних свойствах Zend Engine 2, позволяющих
включения файлов в порядке иерархии наследования. создавать собственные и перезаписывать существующие
Надо сказать, что реализация автозагрузки на настоящий машинные коды (то есть opcodes – наборы инструкций, в
момент вызывает много нареканий, но останавливаться которые компилируется PHP-скрипт). На мой взгляд, SPL –
на них не буду, поскольку, скорее всего, к моменту выхо- самая спорная по полезности возможность PHP 5, так
да статьи большинство обнаруженных ошибок будут ис- как сильно затрудняет работу с вашим кодом других раз-
правлены. работчиков.
94
подписка на I полугодие 2005
Российская Федерация ! Узбекистан – по каталогу «Davriy nashrlar» российские
! Подписной индекс: 81655 издания через агентство по распространению печати
Каталог агентства «Роспечать» «Davriy nashrlar» (7000029, Ташкент, пл.Мустакиллик,
! Подписной индекс: 87836 5/3, офис 33)
Объединенный каталог «Пресса России» ! Азербайджан – по объединенному каталогу российских
Адресный каталог «Подписка за рабочим столом» изданий через предприятие по распространению печа-
Адресный каталог «Библиотечный каталог» ти «Гасид» (370102, г. Баку, ул. Джавадхана, 21)
! Альтернативные подписные агентства: ! Армения – по списку номенклатуры «АРЗИ» через ГЗАО
Агентство «Интер-Почта» (095) 500-00-60, курьерская «Армпечать» (375005, г.Ереван, пл.Сасунци Давида, д.2)
доставка по Москве и ЗАО «Контакт-Мамул» (375002, г. Ереван, ул.Сарья-
Агентство «Вся Пресса» (095) 787-34-47 на, 22)
Агентство «Курьер-Прессервис» ! Грузия – по списку номенклатуры «АРЗИ» через АО
! Подписка On-line «Сакпресса» ( 380019, г.Тбилиси, ул.Хошараульская, 29)
http://www.arzy.ru и АО «Мацне» (380060, г.Тбилиси, пр-т Гамсахурдия, 42)
http://www.gazety.ru ! Молдавия – по каталогу через ГП «Пошта Молдавей»
http://www.presscafe.ru (МД-2012, г.Кишинев, бул.Штефан чел Маре, 134)
по списку через ГУП «Почта Приднестровья» (МD-3300,
СНГ г.Тирасполь, ул.Ленина, 17)
В странах СНГ подписка принимается в почтовых отделе- по прайслисту через ООО Агентство «Editil Periodice»
ниях по национальным каталогам или по списку номенкла- (2012, г.Кишинев, бул. Штефан чел Маре, 134)
туры АРЗИ: ! Подписка для Украины:
! Казахстан – по каталогу «Российская Пресса» через Киевский главпочтамп
ОАО «Казпочта» и ЗАО «Евразия пресс» Подписное агентство «KSS»
! Беларусь – по каталогу изданий стран СНГ через РГО Телефон/факс (044)464-0220
«Белпочта» (220050, г.Минск, пр-т Ф.Скорины, 10)
Подписные
индексы:
81655
по каталогу
агентства
«Роспечать»
87836
по каталогу
агентства
«Пресса
России»
РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец
В СЛЕДУЮЩЕМ
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
НОМЕРЕ:
Технический редактор
Владимир Лукин
Редактор Установка и настройка перь появился еще один способ «под-
Андрей Бешков W2K Server – Step-by-Step ружить» две самые популярные опера-
Данная статья – попытка автора систе- ционные системы – Linux и Windows.
РЕКЛАМНАЯ СЛУЖБА матизировать свой опыт по установке Для достижения поставленной цели
тел./факс: (095) 928-8253 и настройке Windows 2000/2003 Server разработчики использовали довольно
Константин Меделян для начинающих технических специали- интересное решение – запуск Linux-
reсlama@samag.ru стов. Она не претендует на полноту и ядра как отдельного процесса Windows.
абсолютную однозначность методов, а Последняя доступная на момент на-
Верстка и оформление предназначена исключительно для пре- писания статьи stable-версия coLinux –
imposer@samag.ru доставления начального опыта по на- 0.6.1, именно о ней и пойдет речь в дан-
maker_up@samag.ru стройке серверных систем на основе ной статье.
Дизайн обложки Windows 2000/2003 Server по принципу
Николай Петрочук пошаговой инструкции. STAT – совсем другая IDS
Сегодня основную нагрузку по защи-
103045, г. Москва, Знакомство те сетей принимают на себя firewall и
Ананьевский переулок, дом 4/2 стр. 1 с Cooperative Linux приложения уровня домена, предназ-
тел./факс: (095) 928-8253 25-27 января 2004 года новостные лен- наченные для подтверждения подлин-
Е-mail: info@samag.ru ты большинства информационных из- ности пользователей. Несмотря на то
Internet: www.samag.ru даний, так или иначе посвященных что эти приложения в основном справ-
компьютерной тематике, пестрили та- ляются со своей задачей, они не могут
РУКОВОДИТЕЛЬ ПРОЕКТА кими сообщениями: «Linux теперь мож- полностью решить все проблемы по
Петр Положевец но запускать в Windows», «Linux и защите сетей и отдельных хостов. И
Windows без перезагрузок», «Револю- как следствие, на помощь приходят
УЧРЕДИТЕЛИ ционное изобретение 21-летнего ге- системы обнаружения атак (СОА или
Владимир Положевец ния» и т. д. Мир узнал о новом проекте – Intrusion detection systems – IDS).
Александр Михалев Cooperative Linux (сокращенно coLinux). В статье речь пойдет о проекте State
В анонсах сообщалось о том, что те- Transition Analysis Technique (STAT).
ИЗДАТЕЛЬ
ЗАО «Издательский дом
«Учительская газета» Вы можете приобретать журналы в магазинах
и торговых точках г. Москвы по адресам:
Отпечатано типографией
ГП «Московская Типография №13» ! Магазин «Компьютерная и деловая книга» (Ленинский проспект, строение 38)
Тираж 7000 экз. ! Дом технической книги (Ленинский проспект, 40)
! Московский дом книги (Улица Новый Арбат, 8)
Журнал зарегистрирован ! Выставочный компьютерный центр «Савеловский» (Киоск у главного входа)
в Министерстве РФ по делам печати, ! Выставочный компьютерный центр «Буденовский»
телерадиовещания и средств мас- ! Книжная ярмарка в СК «Олимпийский» (Нижний этаж, место 70А)
совых коммуникаций (свидетельство График работы: с 9-00 до 14-00 ежедневно, кроме пн. и вскр.
ПИ № 77-12542 от 24 апреля 2002г.) ! Книжная ярмарка «Центральная». Mагазин «Деловая и учебная литерату-
ра» (м. Тульская, Варшавское шоссе, д.9. эт. 5, павильон 515-09).
За содержание статьи ответствен- ! ТЦ «Электроника на Пресне». Mагазин «Техкнига» (павильон 8-9).
ность несет автор. За содержание ! Редакция «Учительская газета» (Ананьевский переулок, д. 4/2, стр. 1).
рекламного обьявления ответствен-
ность несет рекламодатель. Все пра- On-line магазины:
ва на опубликованные материалы за-
ОТКРЫТА ПОДПИСКА
щищены. Редакция оставляет за со- ! www.linuxshop.ru
на первое полугодие 2005 года
бой право изменять содержание сле- ! www.linuxcenter.ru
дующих номеров. ! www.bolero.ru
96