Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #99, МАРТ 2007 г.

Держи все под контролем!

Крис Касперски

Хакер, номер #099, стр. 158

Неограниченные возможности удаленного администрирования по доступной цене

В настоящее время широко используемые программные средства удаленного администрирования годятся лишь для подсобных работ. Ни залезть в настройки BIOS, ни переустановить операционную систему они не в состоянии. Для этого нужен физический доступ к серверу, а ведь до него еще добраться нужно! Но если обзавестись системой аппаратного администрирования, то никуда добираться и не потребуется…

Введение, или попытка классификации

Системы удаленного администрирования делятся на программные и аппаратные. Первые, как и следует из них названия, являют собой простые программы, работающие «поверх» операционной системы и опирающиеся на предоставляемые ею ресурсы (выделение памяти, установка сетевых соединений и т.д.). Если же при загрузке Windows вспыхивает голубой экран (ядро Linux впадает в панику) или система работает нестабильно, то утилиты удаленного администрирования оказываются бесполезным балластом, не говоря уже о том, что все они представляют потенциальную брешь в безопасности. Но не будем критиковать то, на чем сидим…

Удаленные системы аппаратного администрирования достаточно разнообразны и образуют, по меньшей мере, две обособленные группы, функционирующие на разных физических принципах. Среди них с большим отрывом лидируют KVM'ы — устройства, подключаемые к разъемам VGA, PS/2 Keyboard, PS/2 Mouse и заворачивающие сигнал либо в простой экранированный кабель (протяженностью до нескольких сотен метров), либо в Etheet-порт (доступный из любой точки локальной сети), или же (в самом сложном случае) реализующие собственный TCP/IP-стек, который позволяет администрировать сервер как из соседней комнаты, так и с побережья Флориды.

Менее популярны ISA/PCI-платы, встраиваемые непосредственно внутрь компьютера и перехватывающие клавиатурный ввод/вывод вместе с текстовыми (реже — графическими) видеорежимами. Главное их достоинство в том, что они способны работать и при отказе одного или нескольких узлов компьютера, в частности перешивать слетевший Flash-BIOS, даже если материнская плата не реагирует ни на клавиатуру, ни на что другое. К тому же если KVM'ы вынуждены передавать аналоговый видеосигнал, требующий широких каналов, то передача содержимого видеопамяти в нативном режиме (точнее, даже не самой видеопамяти, а ее изменений) позволяет транслировать 1280x1024 по хлипкому модемному каналу на 19.200, сохраняя при этом до 13-16 fps, что вполне достаточно для комфортной работы. Плюс ко всему, цифровой видеоряд довольно хорошо сжимается по алгоритму MPEG4 с коэффициентом квантования, равным единице, при котором он превращается в lose-less алгоритм.

Теперь, после краткого введения в курс дела, рассмотрим каждую из этих систем во всех подробностях.

Усы, лапы и хвосты KVM-систем

Аббревиатура KVM расшифровывается как Keyboard, Video-monitor & Mouse. Первоначально эти устройства предназначались для объединения нескольких компьютеров в одну консоль (что намного удобнее, чем держать несколько мониторов и клавиатур на одном столе). Они выпускаются многими компаниями, и их довольно часто можно увидеть на витрине магазинов. Так что у продавцов спрашивай KVM-switcher'ы (по-русски, свитчи, или переключали).

Самые простые свитчи — механические — состоят из простого переключателя, обвешанного такими же простыми фильтрами, призванными предотвратить помехи, возникающие при переключении. Но, как показывает практика, помехи все-таки возникают и часто интерпретируются компьютером как мусорный клавиатурный или мышиный ввод, создающий вполне реальную угрозу потери данных (надеюсь, не нужно объяснять почему?).

Чуть более сложные (а значит, и дорогие) свитчи основаны на электронных ключах и помех уже не вызывают, однако и электронным, и механическим свитчам присущи серьезные недостатки, а именно крайне ограниченная длина кабеля, в среднем составляющая пару десятков метров. При этом на мониторе наблюдается устойчивая рябь, и 1280х1024 — это предельное разрешение. При увеличении длины кабеля до 100 метров, помехи существенно возрастают, и приходится переключаться в режим 800x600 или даже хуже. CRT-мониторам хорошо - они работают на (практически) любом разрешении. А вот LCD изначально затачиваются под одно конкретное разрешение и под всеми остальными либо показывают экран размером с почтовую марку, либо занимаются экстраполяцией, что тоже не добавляет качества.

Короче говоря, для удаленного администрирования KVM-свитчи не пригодны, так как радиус их действия не выходит за стены конторы, в которой установлен сервер. И хотя теоретически возможность кинуть кусок кабеля в соседний корпус существует, при попытке ее реализации сразу же возникают проблемы с безопасностью, поскольку никакой защиты от несанкционированного доступа тут нет и злоумышленнику ничего не стоит захватить управление сервером.

Продвинутые KVM-свитчи имеют встроенный Etheet-контроллер, позволяющий передавать информацию по локальной сети в открытом или зашифрованном виде. Естественно, они стоят намного дороже и, что самое неприятное, съедают львиную долю пропускной способности 100-мегабитного Etheet. И даже если в локальной сети установлен сервер, обеспечивающий выход в интернет, администратору (для управления из дома) потребуется как минимум DSL-модем (Dial-Up соединения будет уже недостаточно).

На рынке присутствуют десятки, если не сотни, моделей KVM-свитчей с поддержкой Etheet и даже со встроенным TCP/IP-стеком. Достаточно набрать в Гугле слово «KVM» и поискать в Sponsored Links модель подешевле и посимпатичнее.

К слову, существует даже открытый проект Opengear, бесплатно распространяющий референсную схему вместе с печатной платой и встраиваемой операционной системой, под которой все это хозяйство работает: linuxdevices.com/news/NS8120924667.html.

Как бы там ни было, KVM-свитчи с поддержкой Etheet реализуют удаленное администрирование в полном объеме. Вставляем в CD-ROM диск с любимым дистрибутивом, а в дисковод дискету с образом Flash-BIOS и… отключаем дисковод в BIOS (в самом деле, зачем дисковод серверу?!). Он не будет мешать нормальной работе сервера, но если вдруг что-то случится с BIOS (который, кстати, можно перешивать удаленно с помощью KVM), система после перезагрузки увидит флоп и после подтверждения администратора, переданного все через тот же KVM, совершит откат к правильному образу.

Некоторые модели матерей реализуют процедуру восстановления BIOS путем переключения перемычки на плате. Тут KVM отдыхают, и единственное, что можно посоветовать администратору, — это не выбирать такую плату или использовать интегрированные устройства удаленного управления, о которых речь пойдет ниже.

Интегрированные ISA/PCI-платы или Remote Boards

Недостатки KVM-свитчей особенно очевидны при администрировании *nix-серверов, управляемых преимущественно из командной строки, весь ввод/вывод которой свободно вмещается в 9600 бод/сек. Однако даже в текстовом видеорежиме аналоговый видеосигнал требует достаточно широкой полосы пропускания и высококачественных АЦП/ЦАП на свитче, видеокарте и мониторе, в противном случае текст читать будет невозможно. Иногда некоторые модели свитчей не совместимы с определенными мониторами/видеокартами или страдают хронической термонестабильностью, то есть меняют свои свойства в зависимости от температуры, вынуждая подстраивать LCD-монитор по мере нагревания/охлаждения всех устройств. Кому это нужно?!

К тому же при тяжелых зависаниях сервера спасает только «Reset», а его через KVM-свитч никак не нажмешь. Про прочие переключатели, расположенные на плате, мы уже говорили. Выход - вставить внутрь компьютера специальную плату, имеющую физический доступ к видеопамяти и прочему оборудованию.

Такие платы не имеют устоявшегося названия и производятся сравнительно небольшим количеством фирм (преимущественно размещенных внутри гаража), обычно маркирующих их как «Remote Board». Но это ничего не говорящее название может быть присвоено практически любому устройству, так что при заказе товара через интернет следует соблюдать особую осторожность.

А что же гиганты? Почему они до сих пор игнорируют этот сектор рынка? А потому, что не хотят составлять конкуренцию своим же серверам. Ведь настоящий сервер отличается от PC, в первую очередь, тем, что изначально поддерживает обширные возможности удаленного управления. Физический доступ требуется только в критических случаях (или при плановом техническом обслуживании).

Чтобы понять, как устроена и как работает Remote Board, необходимо хотя бы в общих чертах разобраться, что происходит в процессе загрузки машины и какую роль при этом играет BIOS. Материнские платы от EPOX хороши тем, что отображают ход загрузки в виде быстро сменяющих друг друга шестнадцатеричных цифр на двухразрядном восьмисегментном индикаторе. Нет, следить за ходом загрузки с помощью индикатора мы не предлагаем (для этого потребовалось бы снимать его на высокоскоростную камеру). Намного проще открыть приложение к мануалу, где перечислены все цифры вместе с соответствующими им стадиями загрузки системы.

Первым получает управление загрузочный блок (boot-block), который, выполнив инициализацию критически важных узлов, приступает к сканированию ISA-шины, отыскивая контроллеры устройств и проецируя ПЗУ каждого из них на адресное пространство процессора. На поздних стадиях загрузки подключается модуль, ответственный за поддержку шины PCI, инициализирующий PCI-устройства.

Ладно, забудем об ISA-шине и сосредоточим все внимание на PCI. Любое PCI-устройство имеет полный доступ к адресному пространству ЦП, на которое всегда отображается видеопамять текстового режима, причем делает это она заранее определенным образом. То же самое относится и к графическим VGA-режимам. А вот с появлением SVGA начинается полный разброд и чехарда. На адресное пространство отображается лишь часть внутренней памяти видеокарты, и нет никакой возможности спроецировать ее всю целиком. Единственный путь — воздействуя на PCI-регистры карты (с точки зрения процессора, порты ввода/вывода), переключать банки, но стратегия переключения банков не стандартизирована и варьируется от одной карты к другой.

Следовательно, мы вынуждены либо встраивать драйверы всех (или не всех, но хотя бы самых популярных) видеокарт в ПЗУ нашей Remote Board (представляющей собой обыкновенную PCI-плату), либо довольствоваться только текстовыми и VGA-режимами. С некоторой натяжкой можно замахнуться на работу в VESA, но тут свои проблемы. Хотя формально все современные видеокарты являются VESA-совместимыми, далеко не все из них поддерживают VESA-режимы правильно.

Можно встроить систему удаленного управления в ПЗУ видеокарты. Некоторые производители именно так и поступают. Но этот путь связан со многими патентными и лицензионными ограничениями, поэтому не очень-то популярен.

Кроме доступа к видеопамяти, нам необходимо перехватывать мышь и клавиатуру. В случае PS/2-шины это решается без проблем, поскольку ее порты проецируются на адресное пространство ввода/вывода процессора, доступное для чтения/записи остальным PCI-устройствам. С USB-клавиатурами и мышами ситуация намного более напряженная, поскольку они еще плохо стандартизированы, к тому же оседлать USB в техническом плане намного сложнее, чем PS/2. Однако поскольку речь идет о внутреннем перехвате управления, то плате удаленного управления совершенно все равно, какие физические устройства подключены к компьютеру. Главное, чтобы BIOS (и/или драйвер операционной системы) был настроен на работу с PS/2, что всегда можно сделать.

Остается только прицепить к плате удаленного управления COM-порт, повесить на него модем, запитать их обоих от внешнего источника питания, и мы почти у цели. Для администрирования всего лишь потребуется модем и терминал. Модем - это, конечно, хорошо (тем более для прокладки модемного кабеля можно воспользоваться незадействованными проводами в витой паре, которые, собственно говоря, для телефона и предназначены), однако во многих случаях удобнее администрировать сервер через локальную сеть. Ну, это не проблема! Достаточно встроить систему удаленного управления в сетевую карту, благо большинство из них снабжено Flash-BIOS и свободное место в нем есть!

Таким образом, существующие модели Remote Board базируются либо на автономной PCI-плате, имеющей доступ к PCI-регистрам остальных устройств, либо на видео- или сетевой карте с доработанным BIOS. Наличие внешнего источника питания позволяет «нажимать» на «Reset» через реле или электронный ключ, аналогичным образом поступая с кнопкой «Power» и перемычками на плате.

Разобравшись с матчастью, обратим свой взор к витринам магазинов и посмотрим, что хорошего из готовых изделий нам предлагают.

Remote Insight

По соотношению функционала и цены бесспорным лидером является модель Remote Insight (от Hewlett-Packard) для PCI-слота, несущая на своем борту интегрированный 10/100-мегабитный Etheet-контроллер. Поддерживаются как текстовые, так и графические видеорежимы. Причем графические — вплоть до 1280х1024 и 256 цветов в придачу - это, конечно, не True Color, но мы же не «Шрека» собираемся смотреть! Управление — мышь, клавиатура и традиционная (для этого класса устройств) возможность удаленного нажатия на «Power» и «Reset». В качестве приятного бонуса предлагается виртуальный дисковод и CD-ROM, образ которого можно заранее положить на жесткий диск или передать по Etheet. Вроде бы мелочь, а приятно. Компьютер, оснащенный Remote Insight, может вообще не иметь никаких съемных носителей, что существенно усиливает безопасность, а к безопасности в Hewlett-Packard подходят с головой, не забывая о шифровании. Как говорится, свинья не выдаст, а 128-битный SSL будет сниться хакерам в ночных кошмарах. Внешний источник питания также входит в комплект, и заботиться о его приобретении не нужно.

Удаленное администрирование осуществляется либо через telnet, либо через web-браузер. Список поддерживаемых операционных систем довольно велик и включает в себя: Windows 2000/2003 (Advanced Server, Data Center, Terminal Server, Standard или Enterprise Edition), Novell NetWare 5.1/6.0, Red Hat Advanced Server 2.1, Red Hat Linux 7.3/8.0, SuSE Linux Enterprise Server V7/V8 и многие другие клоны *nix.

Карту можно приобрести в магазине или заказать по интернету непосредственно в Hewlett-Packard. Все это удовольствие обойдется в $399 (цена указана на момент написания статьи и может варьироваться).

Существуют и открытые платы удаленного управления, например PC Weasel 2000, поставляемая в ISA- и PCI-вариантах вместе с принципиальной схемой и исходным кодом прошивки по цене в $250 и $350 соответственно. Причем вместо Etheet-контроллера имеется только тормозной UART (то есть контроллер COM-порта), а блок питания в комплект не входит, в связи с чем становится непонятно, за что платить такие деньги.

Впрочем, не будем навязывать выбор читателю. Open source имеет столько же прав на существование, сколько корпорация Hewlett-Packard со всеми своими патентами.

WWW

Описание устройства и принципов работы различных типов KVM-свитчей в Wikipedia: en.wikipedia.org/wiki/KVM/IP.

Описание альтернативной платы удаленного управления PC Weasel 2000, микрокод, который распространяется по открытой лицензии: www.realweasel.com/intro.html.

Технические характеристики огромного количества систем удаленного управления (преимущественно KVM-коммутаторов): www.kvms.com.

Описание хорошего KVM-коммутатора Raritan IP-Reach TR364: www.42u.com/telereach_bk.htm.

INFO

При наличии некоторого усердия и умения держать паяльник в руках, спаять Remote Board можно и самостоятельно, но далеко не всякий шеф позволит поставить в важный сервер несертифицированный агрегат, да еще собранный в кустарных условиях.

Содержание
ttfb: 58.809041976929 ms