Академический Документы
Профессиональный Документы
Культура Документы
СЬ
www.samag.ru
ЛИ
Почему MS SQL медленно работает?
Ищем причины
ЛИ
ТЯ Е
Ж ПИ
Строим защищенную беспроводную сеть:
ЗА ДНИ
РА КУ
Настраиваем UPS под Linux
ЛЫ ГО
ТИ РАС
Как восстановить
удаленные файлы под BSD
К У ВО
О
танавливаем Symantec Antivirus 9.0
НИ НО
ТР
в корпоративной сети
Эффективно управляем
С
подписной индекс 20780
полями пользователей в AD
БЫ
Контролируем безопасность сети
с помощью OSSIM
КА
И
ЬГ
ЬД О
РА СКА
ТЕ
К
ИС НН
ЕН
установленного софта
УС
БО
НА ТПУ
ИЛ ДА
ТП
НЧ ЖИ
ВО
РА Е О
КО НЕО
АВ СЛ
Л
Л
ХА
ПО
Мультизагрузка:
УЕ
ЗА
стелим соломку
Так видит журнал читатель, оформивший подписку: Архитектура современных
№5(30) май 2005
почтовых систем
подписной индекс 81655
www.samag.ru
Защищаем электронную
Эффективно управляем
полями пользователей в AD
Контролируем безопасность сети
с помощью OSSIM
Интервью с Ларри Уоллом –
Настраиваем
Cisco PIX Firewall 520
Размещаем несколько сайтов
на одном веб-сервере
Летим скорее
Лучше каждому Информация
Оформили на почту!
получать отдельный о подписке
подписку! экземпляр журнала на 94 стр.
Принес номер
Мужики, Почему я до сих пор на работу, И у меня А можно ещё Как же я без
Я забыл
где журнал этого не сделал?! «увели» почитать такая же беда успеть? любимого журнала?
подписаться!
взяли?
Кирилл Сухов,
Максим Востренков
7 и 8 декабря в Москве, в здании президиума Академии наук, прошла седьмая ежегодная
конференция Microsoft – «Платформа 2006. Определяя будущее». Двухдневная программа
мероприятия состояла из технических докладов, практических занятий, «круглых столов»
и лабораторных классов, посвящённых продуктам Microsoft.
В
рамках конференции были пред- представленным на конференции, был tempdb и переходят непосредственно
ставлены новые продукты фир- MSSQL Server. в нужную таблицу в тот момент, когда
мы – Microsoft SQL Server 2005, К сожалению, два дня в одно заканчивается обработка всех запро-
Microsoft Visual Studio 2005 и Microsoft и то же время проходило сразу 5 сов к этой таблице, которые начали
BizTalk Server 2006. лекций в разных залах, поэтому по- выполняться до операции изменения.
Очень сложно сразу по оконча- пасть на все было просто невозмож- Причем учитываются в данном случае
нии события внятно и полно изложить но. Одного из нас, Максима Вострен- только те строки, которые подверглись
свои впечатления. Огромное количес- кова, больше всего интересовал имен- изменению.
тво информации, полученной на кон- но этот продукт, и то, что изложено ни- Например, начал выполняться за-
ференции, предстоит ещё перерабо- же, – его отчет о прослушанных докла- прос 1 (SELECT), затем запрос 2 из-
тать и осмыслить. Невозможно было дах и участии в практических заняти- менил какие-то строки в таблице
всюду успеть – интереснейшие докла- ях по данной теме. (UPDATE), затем запрос 3 начал фор-
ды проходили одновременно в разных Основное впечатление заключает- мировать отчет – в этом случае за-
залах РАН, и приходилось буквально ся в том, что все нововведения в SQL прос 1 будет работать со своим набо-
разрываться. Server 2005 призваны обеспечить ком- ром данных (до UPDATE), а запрос 3
Открытие конференции поразило фортную совместную работу с дан- со своим (после UPDATE) и соответс-
не столько лазерным шоу, на которое, ным продуктом при большом коли- твенно после завершения запроса 1
впрочем, стоило посмотреть (на сце- честве подключений и значительных данные из временной базы перейдут
не гремела гроза и лился настоящий объемах базы. Перечислим основные в основную таблицу.
дождь), сколько эффектной демонс- моменты.
трацией совместной работы вышепе- Поддержка
речисленных продуктов, показанной Версионность многопроцессорности
сотрудниками Microsoft. Ранее любая операция чтения по умол- Не секрет, что MSSQL Server под-
Поставленная для демонстрации чанию блокировала всю таблицу, а при держивает несколько процессоров.
задача (расчёт эффективности но- исполнении инструкции JOIN – все таб- Но теперь появилась новая деталь –
вой бизнес-стратегии продаж аль- лицы, упоминающиеся в запросе. В ре- процессоры можно разбивать на груп-
бомов рок-группы Windows и её ре- зультате даже на современном мощ- пы в произвольном порядке с услови-
ализация) была за несколько десят- ном сервере некоторые отчеты мог- ем, что 1 процессор может входить
ков минут решена. Это стало возмож- ли приостановить работу всех поль- только в 1 группу. Группу, используе-
ным благодаря новым продуктам кор- зователей на 10-15 минут. Выход, ко- мую при выполнении запроса, можно
порации, применяемым в них эффек- нечно, был – разрешить «грязное чте- указывать в самом запросе. Чрезвы-
тивных средств анализа и разработки ние», но это, разумеется, не самый чайно удобно для построения «тяже-
и, самое главное, глубокой интегра- правильный вариант. Теперь же табли- лых» отчетов.
ции MSSQL Server, MSVS и MS BizTalk ца остается свободной, и если во вре-
Server между собой и другими компо- мя обработки такого запроса в табли- Service Broker
нентами платформы. це производятся изменения, они со- Service Broker – новая технология
Безусловно, ключевым продуктом, храняются во временной базе данных для разработки распределенных при-
2
тенденции
ложений. По сути это служба очере- седских запросов. Что нам даст пере- ботать со старыми версиями клиента.
ди сообщений. Что она дает? Приведу ход на использование Service Broker? Плюс – цена компьютера для сервера-
пример, показанный на лекции, немно- Microsoft SQL Server 2005 выпускает- агента гораздо ниже цены внешнего
го его расширив. Предположим, на- ся в нескольких лицензиях, одна из ко- дискового накопителя для организа-
ша фирма – туроператор и занимает- торых, Express, – бесплатная. В случае ции кластера.
ся продажей туров. При продаже тура ее использования нам достаточно пос-
нам надо зарезервировать билет и за- тавить в филиалах этот самый MS SQL Business Intelligence
бронировать место в гостинице. Теперь Server 2005 Express и развернуть на Business Intelligence – это целая плат-
на наш сервер поступает сообщение нем Service Broker, который будет за- форма для работы с разнородными
от клиентского приложения о необхо- ниматься приемом сообщений от кли- данными. Она базируется на трех ки-
димости оформить тур в Иваново. Сер- ентского приложения и переправкой тах от Microsoft – Integration Services,
вер отсылает сообщение в авиакомпа- их на основной сервер. Никаких про- Analysis Services и Reporting Services.
нию о резервировании билета и в ива- стоев, поскольку все работают с ло- Integration Services – службы
новскую гостиницу о бронировании кальным сервером. И главное – ника- и н те г р а ц и и. Ес л и р а з о б р ат ь -
номера. От авиакомпании приходит ких затрат. ся, это новая версия DTS (Data
подтверждение брони, а от гостини- Transformation Services). Но, по уве-
цы – ответ о том, что мест нет. В этом Data Mirroring рениям Microsoft, весь код был пе-
случае у нас есть 2 варианта – отме- Data Mirroring – новая технология отка- реписан с чистого листа. Что дейс-
нить бронь на билет или попытаться зоустойчивости, которая сродни старо- твительно нового? Да по сути – все.
забронировать номер в другой гости- му доброму режиму репликации Log Теперь при написании сценария им-
нице. Вся прелесть данной технологии Shipping. Однако есть некоторые раз- порта или экспорта данных можно
заключается в том, что мы можем все личия. Использовать ее можно в двух воспользоваться всей мощностью
это реализовать на стороне сервера, вариантах – поддержка копии базы платформы .NET, что дает поисти-
то есть абсолютно не вдаваясь в под- в реальном времени или некоторая за- не безграничные возможности.
робности работы клиентского прило- мена кластера. Analysis Services – службы анали-
жения и не вмешиваясь в нее. Рассмотрим оба. тики. Данная компонента являет-
Второй плюс данной технологии – В первом случае нам достаточ- ся продолжением развития служб
распределение нагрузки. Допустим, но иметь 2 сервера. При изменении OLAP (On-Line Analytical Processing)
у нас есть группа серверов, выполня- данных на одном из серверов клиент- SQL Server 2000. Рассказать про ее
ющих одни и те же задачи. В этом слу- ским приложением такая же команда отличия от OLAP в SQL 2000 на се-
чае сообщение, попавшее в очередь, отправляется на выполнение второ- годняшний момент нам не пред-
отправляется на случайно выбранный му серверу. Чем это хорошо? Да хо- ставляется возможным по баналь-
сервер из группы, что дает примерно тя бы тем, что в качестве второго сер- ной причине отсутствия опыта ра-
равномерное распределение нагрузки вера можно использовать гораздо бо- боты с ней. Надеемся, что скоро
между серверами. лее слабую машину, потихоньку коман- этот опыт появится. Стоит упомя-
Третье – гарантии. Служба Service ды обработаются и никуда не денутся. нуть, что выступавшие разработ-
Broker гарантирует 100% доставку со- Зато у нас всегда будет актуальная ко- чики были ей очень горды. Осо-
общений. Даже если по каким-то при- пия данных. бенно приятно то, что руководите-
чинам сообщение доставить не уда- Теперь второй вариант. В отли- лями разработки данного направ-
лось, будут предприниматься попыт- чие от первого здесь нам понадобит- ления в Редмонде являются быв-
ки отправить его снова до тех пор, по- ся еще и сервер-агент. Выполнение шие наши соотечественники – вы-
ка результат не будет достигнут. Вдо- команд происходит следующим об- ходцы из СНГ.
бавок к этому большие сообщения разом: команда поступает на сервер- Reporting Services – службы от-
служба сама разбивает на более мел- агент, он пересылает ее на первый четности. Никакой информации об
кие и передает порциями, что в усло- сервер, первый сервер дублирует ее этих службах на конференции нам
виях российских каналов связи игра- на второй сервер, параллельно выпол- не дали, поэтому рискнем предпо-
ет немалую роль. няя ее сам, второй сервер выполняет ложить, что это прямое развитие
Четвертое – стоимость. Допустим, команду и отправляет первому серве- SQL 2000 Reporting Services, кото-
у вас есть основной офис, в котором ру подтверждение, первый сервер за- рое являлось отдельным продук-
стоят серверы, а также несколько фи- канчивает выполнение команды и ра- том, а теперь он просто интегри-
лиалов, территориально удаленных портует серверу-агенту об удачном рован его в сервер.
друг от друга. У вас есть некоторое выполнении. Что мы от этого выигры-
приложение, которое работает с ва- ваем? Сервером-агентом может слу- Доклады
шим сервером, к примеру, просто ре- жить любой самый дешевый совре- Представление Visual Studio 2005 на-
гистрирует покупки и списывает товар менный компьютер, но тем не менее чалось докладом Дмитрия Никонова
со склада. Также имеются некие «ча- это тоже расходы. Зато в случае выхо- и Анатолия Смолянинова о новом инс-
сы пик», когда из-за большого коли- да из строя одного из серверов агент трументе разработки – Visual Studio
чества покупок операторы вынуждены автоматически перенаправит запро- Team System. Были рассмотрены и про-
простаивать, ожидая выполнения со- сы на второй. Минус – он не будет ра- демонстрированы на примерах раз-
4
тенденции
Sun добавила поддержку PostgreSQL «Web Application Stack» – самая простая редакция, вклю-
в Solaris 10 чающая в себя базовые компоненты веб-сервера (Apache,
Компания Sun Microsystems начинает официальную подде- MySQL, PHP и по просьбе покупателя PostgreSQL). В «Java
ржку PostgreSQL и распространение этой открытой СУБД Web Application Stack» (помимо LAMP) добавлена подде-
в комплекте ПО, поставляемого с ОС Solaris 10. ржка Apache Tomcat, а также дополнительных Java-биб-
Также представители Sun рассказали о намерении ин- лиотек и утилит (Struts, Axis, Hibernate, Ant, Jython и т. п.),
тегрировать в проект OpenSolaris возможность запуска XML-библиотек. В самый «продвинутый» набор («Enterprise
исполняемых файлов для Linux в контейнерах Solaris 10 Java Stack») также входит поддержка полноценного серве-
(без потребности изменять эти файлы). ра Java-приложений, основанного на разработках проекта
Помимо этого в Sun сообщили об успехах в коопера- ObjectWeb JOnAS, сертифицированного по J2EE.
ции с Open Source-проектом Xen, благодаря чему теперь
доступно управление ОС Solaris в виртуальной сервер- Линус Торвальдс рекомендует KDE
ной среде. Отец открытой операционной системы Linux вмешался
Чуть раньше стало известно о появлении уже давно в диалог в почтовой рассылке GNOME, высказав свое от-
обещанной 128-битной файловой системы ZFS в соста- ношение к процессу разработки этой популярной свобод-
ве OpenSolaris. ной графической среды.
Небольшой комментарий Торвальдса, естественно, вы-
Популярность Debian растет звал настоящий шквал отзывов от пользователей, а сооб-
быстрее других щение было следующим: «Лично я просто призываю лю-
По данным Netcraft по состоянию на декабрь, популярность дей переключиться на KDE. Подход проекта Gnome: «поль-
дистрибутива Debian GNU/Linux в среде веб-серверов рос- зователи – идиоты, они смущены функциональностью» –
ла быстрее всех остальных Linux-систем. Общее число веб- это болезнь. Если вы думаете, что пользователи Gnome –
сайтов, работающих под управлением Debian (из опрошен- идиоты, только идиоты и будут пользоваться ею. Я не ис-
ных исследователями), превысило 1,2 миллиона, что в про- пользую Gnome, потому что она в своем стремлении к то-
центном соотношении чуть больше 25%. му, чтобы быть простой, дошла до такого состояния, когда
Среди крупных европейских пользователей Debian в ка- уже не делает того, что я от нее хочу. Пожалуйста, просто
честве основной платформы для хостинга Netcraft выделя- скажите людям использовать KDE. Линус».
ет Komplex, Lycos Europe, Proxad и Deutsche Telecom.
Первое место сохраняет за собой Red Hat – около 34%, Составил Дмитрий Шурупов
а тройку замыкает бесплатная версия Linux той же ком- по материалам www.nixp.ru
пании, но поддерживаемая сообществом – Fedora Core
с 16%.
Андрей Бирюков
Зачастую сбор информации об установленных на клиентских машинах приложениях является
для системных администраторов настоящей пыткой, особенно в крупных сетях. Рассмотрим
использование WSH-сценариев и групповых политик Active Directory для этой цели.
К
ак правило, в сетях большинс- ния проектами и так далее. Или же еще са на установку программного обес-
тва организаций у пользовате- более сложная ситуация: ваша компа- печения. Однако в реальности все об-
лей нет прав на установку прило- ния объединилась с другой, а у той ор- стоит не так хорошо, и администратору,
жений, и на все машины «залит» оди- ганизации корпоративным стандар- особенно в крупной сети, необходимо
наковый образ операционной систе- том антивируса является, к приме- какое-либо программное средство для
мы. Однако даже в таких строго пост- ру, Symantec, а в вашей – Trend Micro, автоматического сбора информации о
роенных сетях рано или поздно возни- и вам необходимо узнать, сколько ли- приложениях. В данной статье для ре-
кает необходимость в установке отде- цензий того и другого программного шения поставленной задачи предла-
льным пользователям программ, кото- продукта необходимо продлить в сле- гается сценарий Windows Script Host,
рые требуются им для работы. Так, на- дующем году. Конечно, идеальным ре- который с помощью групповой поли-
пример, бухгалтерам нужны различ- шением во всех описанных выше си- тики Active Directory будет запускать-
ные конфигурации 1С, а менеджерам туациях было бы четкое документи- ся на клиентских машинах, собирать
нужна определенная система управле- рование сисадмином каждого запро- в текстовый файл информацию об ус-
6
администрирование
тановленных приложениях и затем сохранять ее на разде-
ляемом сетевом ресурсе.
Теоретическая часть
Как известно, информация об установленных в ОС Windows
приложениях хранится в реестре. Точнее, в разделе
HKEY_LOCAL_MACHINE\Software. Если зайти в эту ветвь
реестра, то можно увидеть подразделы, которые содержат
информацию об установленных приложениях, в частности,
название каждого подраздела соответствует установлен-
ному приложению. Конечно, можно собирать информацию
о приложениях отсюда, однако это не самый лучший вари-
ант, так как в этой ветке реестра также содержится много
служебной информации, которая может существенно ос-
ложнить сбор данных и в конечном итоге замедлить ра-
боту системы. Гораздо удобнее воспользоваться веткой
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall. Рисунок 1. Содержимое ветки реестра Uninstall
Как парадоксально это ни выглядит, но каждое приложе- Set objNetwork = CreateObject("WScript.Network")
Set CheckDrive = objNetwork.EnumNetworkDrives()
ние после установки прописывает свои данные в эту вет- objNetwork.MapNetworkDrive "X:", "\\10.0.1.5\share"
ку реестра. Причем все данные содержат несколько обя-
зательных полей, например поле DisplayName, с помощью А отключить сетевой диск можно с помощью команды:
которого мы и будем идентифицировать приложения, уста-
новленные в системе. На рабочей машине это может вы- Листинг 2. Отключение сетевого диска
глядеть, например, вот так (см. рис. 1). WScript.Sleep 3000
Таким образом, для того чтобы собрать информацию objNetwork.RemoveNetworkDrive CheckDrive.Item(0), true
об установленных в системе пользовательских приложе-
ниях, необходимо обойти значения ветки реестра Uninstall Обратите внимание на то, что операционная система
и получить содержимое параметра DisplayName. Этот пара- не всегда может подключить сетевой диск и практически
метр является обязательным для записей об установленных сразу его отключить, иногда на это требуется определенное
приложениях данной ветки и содержит значение строково- время. Для решения данной проблемы используется коман-
го типа, которое удобно сохранять в текстовом файле. Ес- да WScript.Sleep, которая останавливает работу сценария
ли параметр ветки Uninstall не содержит поля DisplayName, на N/1000 секунд. В данном случае указаны три секунды.
то значит это не установленное приложение, а какая-то слу- Конечно, если в вашей сети уже используются сете-
жебная информация, и заносить эти данные в отчет не тре- вые диски или после подключения сетевого ресурса вам
буется. Таким вот довольно простым способом можно соб- не нужно отключать его (так как он может использовать-
рать необходимую нам информацию. ся еще для каких либо целей), то вы можете не использо-
Итак, рассмотрев теоретические аспекты написания дан- вать данные команды и сразу перейти к написанию сцена-
ного сценария, перейдем к практической части. Исходный текст рия, описанного ниже.
сценария, который был взят за основу, можно найти по адре- Ключевым моментом нашего сценария является цикл,
су http://www.computerperformance.co.uk/ezine/ezine63.htm. обходящий ветку реестра Uninstall:
strFileName = UserValue & "_" & "On" & "_" & PCValue ↵
Листинг 4. Ветки, содержащие информацию об имени & "_"& "Software" _
пользователя и имени компьютера & year(date()) & right("0" & month(date()),2) _
& right("0" & day(date()),2) & ".txt"
pcName = "SYSTEM\CurrentControlSet\Control\ ↵
ComputerName\ActiveComputerName\" Set objTextFile2 = objFSO.OpenTextFile(strPath ↵
pcNameValueName = "ComputerName" & strFileName, ForWriting, True)
userPath = "Software\Microsoft\Windows NT\ ↵ objTextFile2.WriteLine(vbCRLF & _
CurrentVersion\Winlogon\" "Current Installed Software " & vbCRLF & Time & vbCRLF ↵
userValueName = "DefaultUserName" & Date _
& vbCRLF & "Software For:" & "" & userValue & vbCRLF ↵
& "On System:" _
В результате работы описанных выше процедур мы по- & "" & pcValue & vbCRLF)
лучаем текстовый файл, в заголовке которого будут имя
For Each objItem in objDictionary2
пользователя, название, дата и время создания. strKeyPath = objDictionary2.Item(objItem)
Приведем полный текст сценария для сбора информа- objReg.GetStringValue HKLM ,strKeyPath, ↵
unValueName, strValue
ции об установленных на компьютере приложениях: objTextFile2.WriteLine (strValue)
If Err Then
Листинг 5. Полный текст сценария objDictionary2.Remove(objItem)
End If
' Объявляем константу HKEY_LOCAL_MACHINE Next
Const HKLM = &H80000002
Const REG_SZ = 1 ' End Sub
Const ForReading = 1 wscript.Quit
Const ForWriting = 2
pcName = "SYSTEM\CurrentControlSet\Control\ ↵
ComputerName\ActiveComputerName\" Такая конструкция, конечно, имеет право на жизнь, не-
pcNameValueName = "ComputerName" смотря на свою некоторую неуклюжесть. Однако для то-
userPath = "Software\Microsoft\Windows NT\ ↵
CurrentVersion\Winlogon\" го чтобы с помощью такого цикла получить информацию
8
администрирование
со всех компьютеров сети, необходимо, чтобы в момент
запуска сценария все машины были включены. Даже в не-
большой компании добиться этого не просто. Всегда есть
есть отсутствующие сотрудники, ноутбуки и удаленные фи-
лиалы, с которыми нет постоянного соединения.
Таким образом мы приходим к выводу, что вариант с од-
новременным опросом всех машин в сети нас не устраи-
вает. К тому же с помощью такой реализации практичес-
ки невозможно собрать информацию в сети, которая гео-
графически разнесена по разным регионам, когда в од-
ном офисе рабочий день только начинается, а в другом –
уже заканчивается.
Возможен еще другой вариант для запуска нашего сце-
нария на пользовательских машинах – это Logon Script.
Для доступа к нему необходимо в свойствах пользовате-
ля (или нескольких выбранных пользователей) в закладке
Profile указать путь к файлу сценария (см. рис. 2).
Тогда наш сценарий будет выполняться при входе поль-
зователя в домен. Такое решение уже более универсально,
чем предыдущее, но все равно от администратора требует- Рисунок 2. Указываем Logon Script
ся вручную выделить всех пользователей, у которых дол-
жен быть запущен сценарий. А если таких пользователей Здесь возможны два варианта «Startup» и «Shutdown».
сотни? К тому же если у нас несколько пользователей за- Логичнее будет использовать наш сценарий при запуске
ходят на один и тот же компьютер, то мы получим несколь- пользовательской машины.
ко одинаковых файлов отчета, различающихся только име- Нажимаем «Add» и добавляем файл сценария без па-
нем пользователя. Думаю, разбирать потом все это будет раметров. Все, теперь наш сценарий будет выполнен при
не слишком удобно. Так что такой вариант для больших се- следующем запуске компьютера. В случае если необходи-
тей тоже не подходит. мо использовать раздел «User Configuration», соответству-
Очевидно, что для подобных случаев лучше всего вы- ющие разделы будут «Windows Settings» и «Scripts (Logon/
полнять сценарии на клиенте с помощью групповых поли- Logoff)». Теперь остается только перетащить машины, к ко-
тик Active Directory. Групповую политику можно рассмат- торым будет применена данная групповая политика в со-
ривать как набор правил для управления пользователями зданную нами Organization Unit.
и компьютерами. Групповую политику разрешается приме- Следует сказать несколько слов о нагрузке на сеть, ко-
нять в нескольких доменах и в подгруппах внутри домена торую создаст наш сценарий в тот момент, когда пользо-
или индивидуальных системах. Параметры групповой по- ватели, придя утром на работу, начнут массово входить
литики хранятся в объекте групповой политики (Group policy в сеть. Что касается времени выполнения сценария и его
Object, GPO). К одному и тому же домену или подразделе- нагрузки на компьютер пользователя, то на средней маши-
нию можно применять несколько объектов GPO. Подроб- не с 20-30 установленными приложениями (хотя в тех ор-
нее о взаимодействии политик, свойствах Block Inheritance ганизациях, где люди прежде всего работают, таких при-
и No Override можно прочитать в [1]. ложений, как правило, меньше) время работы сценария бу-
Итак, создадим свою групповую политику и исполь- дет, не более трех секунд. По поводу трафика стоит отме-
зуем ее для автоматизации развертывания нашего сце- тить, что на той же машине с 30 установленными приложе-
нария. Для этого зайдем локально или удаленно на кон- ниями файл отчета займет около 3 килобайт, так что даже
троллер домена «Administrative Tools → Active Directory в моменты пиковой нагрузки речь может идти лишь о не-
Users and Computers → Домен». В меню «Action → New → скольких сотнях килобайт трафика.
Organization Unit» (введем название), затем в свойствах
созданной организационной единицы закладка «Group Подведение итогов
Policy», нажимаем «New», указываем имя новой политики Итак, мы собрали все необходимые нам сведения об ус-
и затем, нажав «Edit», попадаем в редактор объектов GPO. тановленных на пользовательских машинах приложениях
Для решения поставленной задачи развертывания сце- и сохранили их в виде отдельных файлов на сервере. Но та-
нария на машинах пользователей нам удобнее будет ис- кой способ хранения полученной информации не слишком
пользовать раздел «Computer Management», конечно, ес- удобен, к тому же мы не решили одну из задач, поставлен-
ли мы используем «Computer Management», ничего страш- ных в начале статьи, – сбор информации о количестве ус-
ного не произойдет, но, как и в случае с Logon Script, если тановленных приложений, необходимой для осуществления
за компьютером работают несколько пользователей, то мы лицензирования. Таким образом, нам требуется, во-первых,
рискуем получить несколько одинаковых файлов отчетов, собрать все данные в единый файл и, во-вторых, просум-
которые будут отличаться только именем пользователя мировать все одинаковые приложения. Обе эти задачи мы
в заголовке. В разделе «Computer Management» заходим решим с помощью Microsoft Excel. Напишем WSH-сценарий,
в «Windows Settings», далее «Scripts» (см. рис. 3). который необходимо будет разместить в том же каталоге,
10
администрирование
Сергей Яремчук
Администрирование большого количества компьютеров никогда не являлось простой задачей,
так как необходимо отслеживать и оперативно реагировать на происходящие события.
В качестве датчиков можно использовать жалобы пользователей, собственные скрипты
или специализированные утилиты, написанные сторонними разработчиками.
К
аждый из указанных способов предназначен для оповещения, здесь мер, об активности процесса со време-
имеет свои достоинства и не- можно выбрать несколько вариантов. ни его запуска до момента остановки.
достатки. Жалобы пользовате- Например, отсылка почтового сообще- Все собранные данные (id процесса, id
лей возникают, как правило, неожи- ния на указанный адрес. При этом со- родительского процесса, путь, имя ис-
данно, а от авральных работ не всегда общение может быть в обычном текс- полняемого файла, имя пользователя,
получаешь удовольствие. На написа- товом формате, (X)HTML и так назы- домен, время) сохраняются, и при не-
ние скриптов требуется время и опыт. ваемом MINI, подходящем для пейд- обходимости всегда можно просмот-
Значит, будем использовать утилиту, жеров и мобильных телефонов. Так- реть историю, узнать, кто, когда и с ка-
созданную другими людьми. Преем- же информация о событии может быть кой частотой запускал программу. Что-
ник EventwatchNT утилита EventSentry занесена в текстовый файл, здесь до- бы не нарушать корпоративные прави-
от netikus ltd. позволяет полностью ступны также три формата: текстовый, ла, при трассировке процесса не соби-
автоматизировать сбор информации csv и (X)HTML. Событие может быть рается информация о том, какой доку-
о состоянии компьютеров, работаю- занесено через ODBC в базу данных, мент был открыт, также не отслежи-
щих под управлением систем на базе отослано на удаленный syslog-сервер, ваются аргументы командной строки.
Windows NT/2000/XP и Windows Server SNMP, параллельный порт или выдано Можно контролировать работу всех
2003, а также контролировать работу в сеть как net send-сообщение. Кроме процессов («Track all processes except
сервисов в сети. Утилита проста в ус- того, можно проиграть звук, вывести those listed below»), исключить трасси-
тановке, понятна в настройке и ко все- сообщение на локальном компьютере ровку отдельных процессов или, на-
му прочему обладает удобным интер- или выполнить произвольную коман- оборот, указать только на те процессы,
фейсом. ду пользователя. Все эти настройки которые нуждаются в отслеживании.
производятся во вкладке Notifications Практически аналогичные по настрой-
Возможности EventSentry (Targets) после указания всех парамет- ке фильтры позволяют контролировать
Система контроля, построенная с при- ров, вывод целевого сигнала обычно регистрацию и выход пользователей
менением EventSentry, состоит из не- можно сразу же протестировать нажа- из системы. Но это еще не все. Начи-
скольких компонентов: агенты про- тием кнопки Test. ная с версии 2.30, EventSentry получил
смотра журналов, системы и сервисов, Параметры систем контролиру- возможность контролировать некото-
консоль управления (рис. 1) и веб-от- ют два агента: Event Log Agent Control рые системные параметры. Например,
четы. Запускаемые в системе в виде и Heartbeat Agent Control, каждый при помощи «Service Monitoring» адми-
сервисов агенты, собирают информа- из них отвечает за свой участок рабо- нистратор может узнать, когда и кем
цию о событиях, основываясь на сис- ты. При помощи Event Log Agent Control были добавлены, удалены или измени-
теме фильтров, которые настраивают- EventSentry отслеживает параметры ли свои параметры сервисы и драйве-
ся пользователем при помощи консоли локального компьютера, а Heartbeat ра. Сигнал поступит также и в том слу-
управления. При наступлении отсле- Agent Control предназначен для ра- чае, когда в реестр или в каталог «Ав-
живаемого события или при превыше- боты с удаленными системами. Аген- тозагрузка» будет добавлена новая
нии установленного барьера генериру- ты позволяют собрать информацию программа, а также если сервис, ус-
ется целевой сигнал. Целевой сигнал о многих основных параметрах. Напри- тановленный в автозапуск, по каким
12
администрирование
либо причинам не запустил- компьютеры рабочей груп-
ся. Вкладка «Disk Space» поз- пы или Active Directory. Даль-
воляет выставить параметры нейшую настройку парамет-
наблюдения за свободным ров сетевого контроля отде-
местом на разделах жестко- льных компьютеров, а также
го диска. Здесь указываются установленных на них агентов
логические разделы жесткого можно производить по щелч-
диска, подлежащие наблюде- ку на имени компьютера ли-
нию, процент или объем, при бо из контекстного меню. От-
заполнении которого будет сюда же можно управлять об-
выдано предупреждающее новлениями агентов. Щел-
сообщение, а также интервал чок левой кнопкой по пунк-
между проверками. ту «Computers» выдаст ре-
Идеальным дополнением зультат последней проверки.
к проверке журналов и сис- Выбор «View History» позво-
темных параметров является Рисунок 1. Внешний вид консоли управления EventSentry лит просмотреть историю за-
контроль за состоянием ком- ку предупреждения в «Full Event Log просов.
пьютеров и сетевых сервисов. Для это- Detection». На момент написания статьи бы-
го используются ICMP-запросы и про- Типичная схема контроля при по- ли доступны две версии продукта
верка работы TCP-портов, а также от- мощи EventSentry показана на рис. 2. EventSentry и EventSentry Light. Вторая
клик EventSentry-агентов, работающих Агенты собирают информацию и от- распространяется как freeware, но име-
на удаленных компьютерах. Кроме сылают по назначению для дальней- ет ограничения на количество конт-
прочего EventSentry эмулирует syslog шего анализа и принятия решений. ролируемых сервисов и параметров:
сервер, что вместе с наблюдением за При помощи одной консоли управ- не более одного параметра в каждом
сетевыми сервисами может использо- ления можно настроить и контроли- пункте контроля, и всего два вида опо-
ваться не только для контроля рабо- ровать работу не только локальных, вещения – e-mail и сообщение на рабо-
ты Windows-систем, но и доступности но и удаленных систем. Для этого нуж- чий стол также недоступны веб-отче-
сервисов, UNIX и Cisco-систем. И, на- ны права администратора, и на уда- ты. Но в принципе контролировать об-
конец, использовав внешний датчик, ленном компьютере должна быть за- щую работоспособность систем в сети
подключаемый к USB- или COM-пор- пущена служба «Удаленный реестр» даже с такими ограничениями вполне
ту, можно контролировать темпера- (REMOTE REGISTRY). Причем установ- возможно. Полная версия без регис-
туру и влажность в помещении. Если ку системы контроля можно произво- трации будет работоспособна в тече-
указанные параметры выйдут за пре- дить как локально, так и удаленно. Ес- ние 45 дней.
делы нормы, администратор получит ли нет необходимости в наличии консо- После установки, в ходе которой
предупреждение. ли управления на клиентских компью- можно ввести адрес SMTP-сервера
Всю собранную информацию мож- терах, то при установке ее можно уб- (основного и резервного), порт, почто-
но просмотреть при помощи системы рать из списка устанавливаемых ком- вый адрес, куда будут отсылаться со-
отчетов, доступных через GUI-интер- понентов. Хорошо продумана возмож- общения, данные для SMTP-аутенти-
фейс, либо ASP- или PHP-страницы, ность добавления новых компьютеров фикации (если нужно), можно присту-
через IIS или Apache. Отчеты разбиты в список контроля. Для этого щелка- пать к настройке агентов и фильтров.
по группам (Security, System, Aplication ем правой кнопкой мыши на заголов- Все настройки сохраняются в клю-
и другие), можно выбрать просмотр ке Computers и в контекстном меню вы- че реестра HKEY_LOCAL_MACHINE\
всех событий либо отсортировать бираем пункт «Add Computer/IP-адрес» netikus.net\EventSentry, который при
по типу (Error, Warning, Information, Audit для добавления одного компьютера необходимости можно экспортировать
Failure/Success). или «Import Computers» для импорти- и импортировать как через менеджер
Учитывая, что файлы журналов рования списка компьютеров. Во вто- управления, так и regedit.
имеют привычку разрастаться, при по- ром случае указать на файл, в котором
мощи консоли управления можно вы- указан список компьютеров, выбрать Заключение
ставить параметры их архивирования. Таким образом, применение EventSentry
Для их установки заходим во вкладку существенно может сэкономить время
«System Health → Backup Event Logs», и силы администратору, позволяя кон-
нажимаем «+» в «Shelude» и заполня- тролировать состояние систем и сер-
ем параметры: вид журнала (систем- висов, проводить аудит безопасности
ный, приложения и пр.), день и время и вовремя реагировать на возникаю-
операции, имя файла. Для удаления щие проблемы.
старого файла ставим галочку в пунк-
те «Clear Event Log». Для подстрахов- Ссылка:
ки, в том случае если журнал запол- Рисунок 2. Типичная схема контроля 1. Сайт программы EventSentry – http://
нится раньше, выставляем отправ- параметров компьютера www.netikus.net.
Сергей Супрунов
Любая система, прежде чем начнет работать, должна загрузиться. Если на вашей машине
установлено несколько ОС, еще нужно как-то выбрать, что именно загружать. И если при этом
возникнет проблема…
П
ожалуй, проблемы с загрузкой приятных. Ведь вы лишаетесь основно- можно было бы прояснить и исправить
и загрузочными секторами мож- го инструмента (своей любимой опера- сложившуюся ситуацию. Тем не менее,
но отнести к одним из самых не- ционной системы), с помощью которого безвыходных ситуаций не бывает…
14
администрирование
Таблица 1. Формат MBR диск может содержать только 4 раз- и передачи ему управления. Именно по
Байты Назначение дела, описанные в MBR (такие разде- такому алгоритму происходит загрузка
0-445 MBR-код лы называют первичными). Для обхо- операционных систем семейства DOS
446-461 Описание 1-го раздела
да этого ограничения используются / Windows 9x.
дополнительные (extended) разделы
462-477 Описание 2-го раздела
(довольно часто можно встретить тер- Загрузочный сектор
478-493 Описание 3-го раздела
мин «расширенный раздел», хотя это В первом секторе раздела, с которого
494-509 Описание 4-го раздела не совсем верно). Первый сектор та- предусмотрена загрузка операцион-
510-511 Сигнатура 0xAA55 кого раздела аналогичен MBR и может ной системы, обычно располагается
содержать описание логического раз- код вторичного загрузчика, а сам сек-
Таблица 2. Формат описателя раздела
дела (диска) и ссылку на следующий тор именуется загрузочным. Он (код)
Байты Назначение
дополнительный раздел. В результате уже должен уметь работать с соответс-
0 Признак активности
несколько дополнительных разделов твующей файловой системой, посколь-
1 Номер головки начала раздела создают своего рода цепочку ссылок. ку в его задачу входит загрузка про-
Номер сектора (биты 0-5) и старшие На рис. 1 показан пример разбиения граммы-«лоудера» (загрузчика 3-й сту-
2 биты (биты 6-7) номера цилиндра начала
раздела диска, поясняющий сказанное. пени) или непосредственно ядра опе-
Младшие биты номера цилиндра нача-
К слову, у логического диска, раз- рационной системы, которые, как пра-
3
ла раздела мещенного на каком-нибудь «дале- вило, являются обычными файлами.
4 Тип файловой системы ком» дополнительном разделе, гораз- Загрузка непосредственно ядра
5 Номер головки конца раздела до больше шансов оказаться недоступ- может использоваться для безуслов-
Номер сектора (биты 0-5) и старшие
ным, т.к. в этом случае мы имеем боль- ной загрузки операционных систем се-
6 биты (биты 6-7) номера цилиндра конца ше секторов, повреждение одного из мейства DOS/Windows 9x, то есть тех,
раздела
которых разорвет всю цепочку. Поэто- где пользователю не предлагается вы-
Младшие биты номера цилиндра кон- му систему старайтесь, по возможнос- бор системы или параметров загрузки
7
ца раздела
ти, инсталлировать на один из основ- ядра, а требуется просто передать уп-
Номер первого сектора раздела
8-11
от начала диска ных разделов. равление ядру системы, размещенно-
12-15 Количество секторов, занятых разделом
В DPT для каждого раздела содер- му в строго определенном месте (что-
жатся его координаты, а также тип фай- бы его не приходилось искать).
Нужно заметить, что существует не- ловой системы и признак активности В более сложных случаях 512 байт
сколько схем разметки жестких дисков, раздела. Активным должен помечать- этого сектора уже недостаточно для
помимо привычного большинству поль- ся только один раздел; о том, зачем это размещения полнофункционального
зователей деления на разделы. Напри- нужно, поговорим чуть позже. кода, и поэтому запускается вспомо-
мер, FreeBSD может быть установлена Координаты раздела записывают- гательная программа – загрузчик яд-
на целый диск без использования таб- ся двумя способами – в виде номеров ра, практически лишенная каких-ли-
лицы разделов (так называемый ре- «цилиндр-головка-сектор» (CHS) нача- бо ограничений дискового пространс-
жим «dangerously dedicated»). Windows ла и конца раздела, а также указани- тва (естественно, в разумных преде-
на платформах Itanium использует схе- ем «линейного» номера первого сек- лах) и способная решать весьма ши-
му GUID Partition Table (GPT) и так да- тора и количества секторов (см. таб- рокий круг задач.
лее. Но в данной статье речь будет ид- лицу 2). Прочтите также врезку «Ска- Рассмотрим в общих чертах ра-
ти о традиционной разметке ATA-дис- зание о 1024 цилиндре», где вопро- боту наиболее популярных загрузчи-
ков, используемой большинством сис- сы геометрии рассмотрены несколь- ков (их подробное описание оставим
тем на платформе i386. ко подробнее. за рамками данной статьи).
Наконец, программный код (в даль-
Что скрывают три буквы – нейшем для него будет использовать- Загрузка в стиле DOS
MBR? ся термин «первичный загрузчик» или Поговорим немного подробнее о том,
Наиболее важный «субъект» проце- «MBR-код»), располагающийся в на- как происходит загрузка систем DOS
дуры загрузки – первый сектор жес- чале первого сек-
ткого диска. Как правило, его обоз- тора диска, в сво-
начают аббревиатурой MBR (Master ем «каноническом»
Boot Record). Упрощенно формат MBR виде предназначен
представлен в таблице 1. для анализа табли-
То есть он содержит код MBR-загруз- цы разделов, поис-
чика, таблицу разделов (disk partition ка в ней раздела,
table, DPT) и сигнатуру, позволяющую помеченного как
распознать данный сектор как загру- активный, загруз-
зочный. ки в память кода
Таблица разделов (64 байта) отво- из первого секто-
дит по 16 байт для описания каждого ра активного раз-
раздела жесткого диска. Очевидно, что дела (boot-сектора) Рисунок 1. Пример разбиения диска на разделы
А вот в NT все немножко Сказание о 1024 цилиндре боты с диском использует функцию BIOS
сложнее С давних времен умудренные опытом сис- INT13 (которая как раз и руководствуется
В операционных системах этого се- темные администраторы передают сво- CHS-адресацией), просто не сможет «дотя-
мейства используется еще один «пос- им молодым коллегам наказ – не ставить нуться» до раздела, размещенного за ука-
редник» – NTLoader. Эта программа операционную систему за пределами 1024 занным пределом.
позволяет более гибко управлять за- цилиндра. Что же это за магический ци- В современных BIOS используется, как
грузкой, указывая расположение яд- линдр и насколько проблема актуальна правило, расширенное прерывание INT13,
ра системы или передавая управле- в наши дни? позволяющее обойти это ограничение.
ние на другие разделы диска. Ее за- Если посмотреть на структуру табли- В этом случае для доступа к разделу ис-
грузчик (вторичный применительно цы разделов (таблица 2), то будет вид- пользуется преобразование геометрии «на
к процедуре загрузки) устанавлива- но, что при CHS-адресации там отводит- лету» (например, для цилиндра 1800 и го-
ется в boot-сектор активного диска, ся 6 бит для номера сектора, 8 – для го- ловки 16 возвращается «законный» номер
а программа ntldr помещается в корне ловки и 10 – для цилиндра. В результа- цилиндра 900 и головка 32). Кроме того, не-
этого диска, в терминологии Windows те мы получаем естественное (для BIOS) которые менеджеры загрузки способны са-
это диск C: (при этом сама NT-система ограничение на адресуемое пространс- мостоятельно рассчитывать местоположе-
может быть инсталлирована на другой тво: 63 сектора * 256 головок * 1024 ци- ние разделов, основываясь на «линейных»
раздел, включая и логические диски). линдра (те самые) * 512 байт в секторе = координатах, именуемых также LBA – Linear
NTLoader руководствуется в своей ра- 8 455 716 864 байт (диск около 8,4 Гб (как Block Addressing (для указания первого
боте конфигурационным файлом boot. правило, производители винчестеров ис- сектора раздела в DPT отводится 4 бай-
ini (который размещается в корне фай- пользуют «математику» 1 Кб = 1000 байт та, что позволяет адресовать порядка 2 Тб
ловой системы активного раздела, там (а не 1024), что, безусловно, более вы- данных: 232 сектора * 512 байт). Например,
же, где и ntldr). годно по маркетинговым соображениям)). так ведет себя LILO в случае использова-
NTLoader у же умеет работать Код первичного загрузчика, если он для ра- ния опции linear в файле lilo.conf.
16
администрирование
Особенности именования терминологии разделы именуются слайса- Таблица 3. Обозначения разделов диска
разделов ми (slice), а созданные в них подразделы – Раздел GRUB Linux FreeBSD
Это было бы смешно, если бы не было так собственно разделами (partition). Эти раз- Первый раздел
(hd0,0) hda1 ad0s1
грустно… Каждая система использует свои делы обозначаются буквами (первый раз- на первом диске
наименования разделов, в которых мож- дел первого слайса будет обозначаться Второй раздел
(hd0,1) hda2 ad0s2
но и запутаться. Таблица 3 должна по- как «ad0s1a». на первом диске
мочь вам (приведены лишь некоторые при- Обратите внимание еще на одну осо- Первый раздел
(hd1,0) hdb1 ad1s1
на втором диске
меры, об остальном несложно догадать- бенность – FreeBSD и Linux привязывают
ся). Как видите, FreeBSD и GRUB нумеру- нумерацию раздела к контроллеру и ре- Таблица 4. Соответствие между
обозначением и контроллерами
ют «винчестеры» начиная с нуля, Linux ис- жиму работы диска (таблица 4), в то вре-
Диск Linux FreeBSD
пользует для их обозначения буквы «a», «b» мя как GRUB считает реально присутству-
Primary Master hda ad0
и т. д. Разделы Linux и FreeBSD считают ющие диски. Например, если вы подклю-
Primary Slave hdb ad1
с единицы, в то время как GRUB – с нуля. чите только один диск как Primary Slave,
Кроме того, FreeBSD использует собс- то Linux будет рассматривать его как hdb, Secondary Master hdc ad2
твенную разметку внутри раздела. В ее в то время как GRUB – как (hd0). Secondary Slave hdd ad3
ра, но зато привязали себя (и пользо- ете новое ядро) эти файлы не переза- ма FreeBSD. Четвертый раздел не раз-
вателей) к Linux-разделу. То есть, если писываются, сохраняя оригинальное мечен, поэтому в меню не представ-
вы на свой компьютер с Windows реши- содержимое. А вот если вы пробова- лен. В качестве загрузки по умолча-
те поставить для пробы Linux (с LILO), ли ставить GRUB, затем снова верну- нию (Default) предлагается та система,
а затем по тем или иным причинам за- лись на LILO, то при выполнении вы- которая расположена на активном раз-
хотите его удалить, то после удаления шеозначенной команды вы получите деле. Причем BSD-загрузчик, ко все-
раздела с Linux ваша система потеря- в MBR ваш старый GRUB-код. му прочему, умеет перезаписывать
ет способность загружаться. Но в любом случае потеря возмож- таблицу разделов, отмечая как актив-
Впрочем, это довольно легко обой- ности загружаться не означает поте- ный тот раздел, который был выбран
ти с помощью «организационных» ме- рю операционной системы. Просто вы пользователем. То есть если вы сейчас
тодов, например, размещая каталог должны понимать, что произошло, что- нажмете F1, то загрузится, к примеру,
/boot на отдельном небольшом раз- бы не впадать в панику… Windows 98, и в следующий раз имен-
деле (и проследив, чтобы все нуж- но она будет предлагаться как систе-
ные загрузчику файлы располага- «Самый умный загрузчик» ма по умолчанию.
лись в нем). Разработчики BSD-систем пошли дру- Обратите внимание, что эта спо-
Если же вы не были столь предус- гим путем, и им удалось каким-то чу- собность перезаписывать таблицу раз-
мотрительны и при очередной загруз- дом «втолкать» в 446 байт, оставших- делов может стать источником про-
ке видите на экране одинокое «L», ся в MBR после размещения там таб- блем. Об этом подробно рассказа-
то решить эту проблему несложно: за- лицы разделов и сигнатуры, полно- но далее, при описании использова-
грузитесь с системной дискеты DOS ценный (полноценный в том плане, что ния BSD-загрузчика при работе с не-
или Windows 98 и выполните команду способен предоставить пользовате- сколькими жесткими дисками. При не-
«fdisk /mbr» для записи стандартного лю меню выбора системы только си- обходимости вы можете отключить пе-
загрузчика в MBR вместо LILO. лами MBR-кода) загрузчик (BootEasy). резапись DPT, жестко назначив раз-
Или перед тем, как удалять раз- Он способен проанализировать таб- дел по умолчанию, переустановив
дел, деинсталлируйте LILO следую- лицу разделов и на ее основе предло- BootEasy с помощью команды boot0cfg
щей командой: жить вам меню для выбора загружае- (а заодно и изменив время ожидания
мой системы. Конечно, доступное про- выбора с 10 секунд, скажем, до 30
# lilo -u странство не позволяет заниматься ук- (на самом деле, значение 10 секунд
рашательством, поэтому выглядит ме- выбрано не с потолка, и является хо-
Правда, нужно учитывать, что ню предельно лаконично: рошо сбалансированным, предостав-
восстановление произойдет успеш- ляя пользователю достаточно време-
F1 DOS
но только в том случае, если в систе- F2 ?? ни на реагирование, и в то же время
ме есть файлы с копией MBR до уста- F3 FreeBSD не затягивает чрезмерно «умолчаль-
новки LILO (обычно они располагаются Default: F3 _
ную» загрузку)):
в каталоге /boot с именами boot.XXYY,
например, boot.0300 для MBR первого Из этого примера видно, что загруз- # boot0cfg -o noupdate -s 3 -t 550
диска). Когда вы выполняете коман- чик нашел три раздела: на первом –
ду /sbin/lilo для инсталляции загрузчи- DOS (под это же обозначение попа- Здесь опция -s задает номер разде-
ка, нужные файлы должны создавать- дают и системы Windows 9x), на вто- ла (начиная с 1), который будет исполь-
ся автоматически; при повторных ин- ром – неизвестная загрузчику система зоваться по умолчанию, -t – задержку в
сталляциях (когда вы меняете конфи- (например, так может выглядеть раз- «тиках» (1 секунда примерно соответс-
гурацию загрузчика или устанавлива- дел Linux swap), а на третьем – систе- твует 18 тикам). Будьте предельно ос-
18
администрирование
Большая тайна маленькой дискетки Кстати, эта особенность активно используется при созда-
Вы никогда не задумывались, почему дискета, забытая в дис- нии загрузочных (не системных!) дискет в Windows NT/2000/XP –
ководе, прерывает загрузку компьютера с выдачей сообщения при форматировании дискеты в этих системах в boot-сектор поме-
«Non-System disk or disk error»? Казалось бы, если дискета не за- щается свой код (см. рис. 2). Даже без дизассемблирования вид-
грузочная, то BIOS должен просто приступить к опросу следую- но, что он ищет файл ntldr и выдает сообщения об ошибке только
щего по списку устройства… в случае неудачи. Если же ntldr на дискете будет обнаружен, то он
Загрузитесь во FreeBSD или Linux и запишите в файл первый загрузится в память, получит управление, считает boot.ini (его то-
сектор чистой дискеты, только что из коробочки: же следует разместить на дискете), и выполнит загрузку системы
«как положено», даже в случае повреждения кода в MBR.
# dd if=/dev/fd0 of=floppy.bs bs=512 count=1
ка, как и в случае с LILO, будет определяться настройками Загрузившись в Linux (например, с помощью дискеты;
NTLoader (если он имеется). можно воспользоваться и LiveCD-дистрибутивом), сохра-
По цепочке может быть загружена практически любая ните первый сектор раздела hda2 в файл и скопируйте его
система, в том числе и FreeBSD, если такой способ кажет- на Windows-раздел:
ся вам более удобным, чем приведенный выше:
# dd if=/dev/hda2 of=bootsect.lnx
# mount /dev/hda1 /mnt
title FreeBSD # cp bootsect.lnx /mnt
chainloader (hd0,2)+1 # umount /mnt
Кстати говоря, по цепочке можно передать управление
не только на тот или иной сектор, но и на образ сектора, Команды монтирования в этом примере предполага-
сохраненный в файле. Например, если у вас установлены ют, что Windows-раздел у вас описан в fstab. Иначе пот-
системы Windows 98, Windows 2000 и Linux, то Windows 98 ребуется также указать тип монтируемой системы и, воз-
можно загрузить и сразу из GRUB, минуя меню NTLoader. можно, некоторые дополнительные параметры. Данный
Для этого можно использовать такую конфигурацию: фрагмент сработает только в том случае, если на диске C:
вы используете файловую систему FAT.
title Windows 98 В случае NTFS запись возможна, если файл назна-
chainloader (hd0,0)/bootsect.dos
чения уже создан и имеет нужный размер, хотя проще
Файл bootsect.dos уже должен быть на вашем диске C: и безопаснее воспользоваться «посредником», напри-
(именно его использует NTLoader, когда вы выбираете за- мер, дискетой или «флэшкой», для переноса образа на
грузку Windows 9x из меню NT-загрузчика). Если в boot.ini ус- диск C:.
тановить нулевую задержку и в качестве варианта по умол- Далее, перегрузившись в Windows, добавьте в файл
чанию выбрать загрузку Windows 2000, то вы вообще не бу- boot.ini такую строчку (описание в кавычках может быть
дете видеть второе меню, делая выбор загружаемой сис- любым):
темы только в меню GRUB.
C:\bootsect.lnx="SUSE Linux 10.0"
А если я люблю NT?
Приложив некоторые усилия, можно заставить и NTLoader Теперь, при следующей загрузке компьютера, вы обна-
загружать «альтернативные» системы. Как мы уже упоми- ружите в предложенном вам меню новый пункт, выбрав ко-
нали выше, программа ntldr способна передавать управ- торый, попадете в Linux.
ление образу загрузочного сектора, записанному в файл. В случае FreeBSD все еще проще – вам просто нужно
Например, если у вас в hda1 (в терминологии Linux) уста- скопировать файл /boot/boot1 на диск C: под именем, ска-
новлена Windows XP, а в hda2 – Linux, то вы можете проде- жем, bootsect.bsd, и добавить соответствующий пункт в ме-
лать следующее: ню boot.ini.
Рисунок 3. Работа с диском в YaST (SUSE 10.0) Рисунок 4. Управление загрузкой в YaST (консольный вариант)
Такой подход может показаться удобным тем, кто пос- первый, то и поиск будет выполняться в его MBR-секторе.
тоянно работает с Windows, а Linux предназначается прос- В результате вы вместо загрузки системы получите сооб-
то для тестирования, поскольку в случае необходимости щение об ошибке.
вы в любое время можете удалить Linux-раздел, что никак Чтобы этого избежать, можно использовать образ MBR
не отразится на процедуре загрузки Windows. второго диска, в который должен быть установлен один
из загрузчиков, и передавать управление на него. В случае
Некоторые особенности работы с Linux особых проблем возникнуть не должно – во время
с несколькими дисками инсталляции укажите, что хотите поставить LILO или GRUB
Если у вас установлено несколько жестких дисков и, на- в MBR второго диска (hdb), а после установки системы со-
пример, FreeBSD установлена на второй из них (в то вре- храните в файл образ MBR:
мя как загрузка выполняется с первого), то нужно иметь
в виду следующую особенность. Вы не всегда можете пе- # dd if=/dev/hdb of=bootsect.hdb bs=512 count=1
редать управление на какой-либо раздел второго диска,
не сделав этот диск текущим (текущим будем называть Теперь перепишите этот файл в Windows-раздел и на-
диск, номер которого хранится в данный момент в регис- стройте NTLoader, как было описано выше, и при выборе со-
тре DL процессора, впрочем, для нашей статьи это уже ответствующего пункта меню вы попадете в LILO или GRUB,
страшные дебри). который сделает всю оставшуюся работу.
Такие менеджеры загрузки как LILO или GRUB умеют Однако будьте предельно осторожны с загрузчиком
это делать прозрачно для пользователя – в зависимос- BSD – он обязательно должен быть установлен, в нашем
ти от того, какое устройство указано в соответствующей случае – в MBR второго диска, и использовать лучше об-
строке конфигурационного файла, выполняются все необ- раз этого сектора, «снятый» утилитой dd. Если это не было
ходимые действия. сделано, то файл boot0 не будет содержать таблицы разде-
BootEasy для передачи управления на другой диск пред- лов. А, как вы, должно быть, помните, BSD-загрузчик пе-
ложит вам еще один вариант выбора – F5. Если в MBR вто- резаписывает MBR, чтобы проставить признак активнос-
рого диска также установлен BSD-загрузчик, то будет вы- ти раздела, загружавшегося последним. В итоге если вы
полнен анализ его таблицы разделов и сформировано ме- просто будете использовать boot0 в качестве образа MBR,
ню для этого диска. Вернуться на первый можно той же то получите следующую схему:
клавишей <F5>. Стандартный загрузчик из MBR первого диска находит
А вот если вы используете NTLoader, то тут есть свои активный раздел и загружает его boot-сектор.
особенности… Находящийся там NTLoader при выборе пунк та
В случае с LILO вы по-прежнему можете использо- «FreeBSD» загружает bootsect.bsd (который является
вать описанную выше схему – сохраняя в файл образ со- копией boot0).
ответствующего boot-сектора и подключая его в boot.ini. Загрузчик BSD, получив управление, загружает выбран-
Но вот если на первом диске у вас установлена система ную систему, проставляет признак активности в пустой
Windows, а на втором – FreeBSD, и вы хотели бы исполь- таблице разделов и записывает ее в MBR.
зовать для загрузки NTLoader (в частности, чтобы иметь Включив в следующий раз компьютер, вы обнаружите
возможность безболезненно отключить второй диск), свой винчестер девственно чистым.
то, просто передав управление на образ загрузочного раз-
дела (файл boot1), вы поставленную задачу не решите. Де- Однако не следует впадать в панику и начинать фор-
ло в том, что boot1 обращается к таблице разделов теку- матировать диск. Ваши данные никуда не делись – все
щего диска, чтобы определить координаты сектора с сис- на месте и ждут загрузки. Сломалась только таблица раз-
темой FreeBSD. А поскольку текущим диском останется делов, которую несложно восстановить. Если, конечно,
20
администрирование
у вас будет под рукой нужный инструментарий (см. следу-
ющий раздел).
М
атериал этой статьи, наверное, ти, а иногда даже использовать без из- Другими часто используемыми за-
больше подходит для учебни- менения (см. рис. 1). головками являются:
ка по основам системного ад- Сс (carbon copy) – кому отправить
министрирования. Однако до сих пор Как создаются почтовые копию письма (адресатов может
такого учебника я не видел, а практи- сообщения быть несколько), при этом и основ-
ка показывает, что даже многие адми- С точки зрения пользователя почто- ному адресату, и дополнительным
нистраторы с практическим опытом ра- вой системы существует только один будет об этом известно.
боты с трудом представляют себе об- компонент – это MUA (Mail User Agent), Received – путь прохождения пись-
щую картину того, как в целом рабо- или, другими словами, его почтовый ма.
тают сервисы электронной почты. По- клиент (Mozilla, Outlook, The Bat!, KMail, Content-Type – информация о том,
этому мы попытаемся заложить фун- mutt, pine, mailx, а также веб-приложе- каким образом письмо должно
дамент, необходимый для понимания ния аналогичного назначения), пред- быть отображено.
механизмов работы. назначенный для создания, отправ-
Для того чтобы упростить задачу, ки, получения и чтения почтовых со- Многие MUA позволяют указать
мы откажемся от рассмотрения та- общений. заголовок Bcc (Blind carbon copy) –
ких монстров, как Microsoft Exchange Формат почтовых сообщений опи- его получатели письма не увидят ни-
или Lotus Notes/Domino, и сосредото- сан в RFC 2822 (Internet Message когда. Получатели, упомянутые в To
чим внимание на открытом програм- Format) и в серии RFC с 2045 по 2049, и Cc, ничего не узнают о получателях,
мном обеспечении и стандартных поч- которые посвящены формату MIME – упомянутых в Bcc, а последние ничего
товых протоколах – их в большинстве Multipurpose Internet Mail Extensions не узнают друг о друге, но тем не ме-
случаев более чем достаточно. Не бу- (Format of Internet Message Bodies, Media нее они получат письмо и будут недо-
дем мы рассматривать и протокол Types, Message Header Extensions for умевать: как в их почтовом ящике ока-
UUCP – многие из тех, кто знал, что это Non-ASCII Text, Registration Procedures, залось сообщение, в числе адресатов
такое, уже успели про него забыть. Conformance Criteria and Examples). которого они не упомянуты? Этот за-
Если коротко, то любое почтовое головок используется преимуществен-
Взгляд с высоты птичьего сообщение состоит из заголовков и те- но спамерами.
полета ла, разделенных пустой строкой. Каж- Имена заголовков могут содержать
Главной отличительной чертой почто- дый заголовок, в свою очередь, состо- только 7-битные ASCII-символы. Зна-
вой системы, построенной на откры- ит из имени и значения, разделенных чения заголовков не ограничены сим-
том программном обеспечении, явля- двоеточием. волами ASCII, но при наличии не ASCII-
ется ее модульность. Отдельные ком- Следующие заголовки считаются символов они должны использо -
поненты являются взаимозаменяемы- обязательными: вать MIME-кодирование в форме
ми, для каждого компонента существу- From – адрес и, возможно, полное «=?charset?encoding?encoded text?=».
ет несколько реализаций. Замена ком- имя отправителя. Существуют следующие типы ко-
понентов, предназначенных для одной To – адрес и, возможно, полное имя дирования:
цели, в большинстве случаев катаст- того, кому адресовано письмо (ад- 7bit – до 998 октетов на строку
рофой не является: базовая функци- ресатов может быть несколько). из диапазона [1..127]\{CR, LF}. Ис-
ональность заменяемых компонентов Subject – тема письма. пользуется по умолчанию.
в целом одинакова, настройки и дан- Date – локальные дата и время от- quoted-printable – используется
ные тоже, как правило, можно перенес- правления письма. в первую очередь для US-ASCII-
22
администрирование
--------------070102080309020306010600
Content-Type: text/plain;
name="file.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="file.txt"
--------------070102080309020306010600--
24
администрирование
Устаревший протокол SMTPS – это фактически тот же токолы, а как уж они устроены внутри – это их личное дело.
самый SMTP, но шифруется весь трафик, начиная от на- Соответственно, дело администратора – выбрать тот MTA,
чального приветствия MTA, при этом используется порт который проще и гибче настраивается, надежнее и быст-
465. рее работает, да и вообще, более симпатичен.
Расширение STARTTLS, описанное в RFC 2487 (SMTP Кратко перечислим несколько наиболее распростра-
Service Extension for Secure SMTP over TLS) – если кли- ненных MTA:
ент MTA (MUA, MSA или другой MTA) поддерживает Sendmail – старожил, самый первый MTA, до сих пор со-
его, то отправка сообщения может выглядеть, напри- храняющий свои позиции, отчасти по инерции (в BSD-
мер, так (при этом используется порт 25 – тот же самый, системах и во многих дистрибутивах Linux именно он ус-
что и для обмена незашифрованными сообщениями): танавливается по умолчанию), отчасти благодаря воз-
можности очень гибкой настройки. Однако процеду-
Response: 220 mail.domain1.com ESMTP Postfix
Command: EHLO host1.domain1.com ра конфигурирования, монолитная архитектура, рабо-
Response: 250-mail.domain1.com та с полномочиями суперпользователя и регулярно об-
Response: 250-PIPELINING
Response: 250-SIZE 10240000 наруживаемые уязвимости вызывают множество наре-
Response: 250-ETRN каний, поэтому его использование уже становится дур-
Response: 250-STARTTLS
Response: 250-AUTH PLAIN ным тоном.
Response: 250 8BITMIME Qmail – первая более защищенная и модульная аль-
Message: STARTTLS
Response: 220 Ready to start TLS тернатива Sendmail, за взлом которой учреждена до
Message: \026\003\001\000S\001\000\000O\003\001\000\033\2144\341\024A\
361\322EP\370yF\257\370x\273?\031<+\326\355\327\337X\347\207\305P\234\
сих пор никем не полученная премия. Однако этот MTA
000\000(\0009\0008\0005\0003\0002\000\004\000\005\000/\000\026\000\02 так и не получил широкого распространения из-за ли-
3\376\377\000
Message: \000\025\000\022\376\376\000\t\000d\000b\000\003\000\006\001\000
цензионных ограничений, благодаря которым многие
дистрибутивы Linux не включают его в свой состав. Фак-
Расширение 8BITMIME, описанное в RFC 1652 (SMTP тически, уже несколько лет Qmail не развивается авто-
Service Extension for 8bit-MIME transport), позволяет исполь- ром, и чтобы получить нормально работающую систе-
зовать тип MIME-кодирования 8bit. Оно не является обяза- му на его основе, придется собирать его с множеством
тельным, поэтому использовать заголовки, закодирован- патчей.
ные таким образом, нежелательно. Postfix – еще одна альтернатива Sendmail, получившая
Мы не будем рассматривать все расширения SMTP, значительно большее распространение благодаря вме-
скажем только, что каждому из них посвящен отдельный няемой лицензионной политике, модульной архитекту-
RFC, а искать их проще по названиям расширений в об- ре, высокой производительности, простой процедуре
щем списке RFC. конфигурирования и использованию в некоторых дис-
Кроме использования протокола SMTP существует трибутивах Linux и в Mac OS X по умолчанию. В журна-
более простой способ отправить почтовое сообщение – ле уже публиковался цикл статей Андрея Бешкова, пос-
это так называемая локальная отправка, поддерживае- вященных Postfix, поэтому детально рассматривать этот
мая почти всеми MTA. Общепринятым способом локаль- MTA мы не станем.
ной отправки является использование pipe-интерфейса Exim – монолитный MTA подобно Sendmail, однако с бе-
программы sendmail, существуют MUA, которые поддержи- зопасностью у него дело обстоит гораздо лучше. Кро-
вают этот способ отправки (KMail, mutt, pine), а mailx вооб- ме того, Exim претендует на звание MTA с максималь-
ще никаких других способов, кроме этого, не поддержива- ной функциональностью и самой логичной системой
ет. Простейший shell-скрипт, выполняющий локальную от- конфигурирования, которое, впрочем, требует боль-
правку, выглядит так: ших усилий по сравнению с аналогичной процедурой
для Postfix. Exim используется по умолчанию в Debian
#!/bin/sh Linux. В журнале уже публиковались статьи, посвящен-
/usr/sbin/sendmail -t << EOF ные этому MTA, поэтому останавливаться на нем мы
From: user1@domain1.com не будем, а пойдем дальше.
To: user2@domain2.com
Subject: Test Message
Hello! Доставка почтовых сообщений
EOF
Количество MTA, через которые пройдет письмо, пока не
найдет своего адресата, в принципе не ограничено, хотя
Кто занимается транспортировкой в большинстве случаев достаточно двух MTA, если доме-
сообщений ны отправителя и получателя обслуживаются разными MTA
До сих пор мы говорили только об интерфейсах, пре- (и между ними есть прямой TCP/IP маршрут), или одного
доставляемых MTA, но даже не произносили их на- в противном случае. Задачей MTA после получения пись-
званий. Только в протоколах ethereal видно, что на уз- ма для своего домена является сохранение письма в пос-
ле mail.domain1.com в качестве MTA используется Postfix, тоянное хранилище, откуда его сможет прочесть адресат
а на узле mail.domain2.com – Sendmail. Это именно та мо- с помощью своего MUA. Доставкой письма в это хранили-
дульность, о которой говорилось выше: существует множес- ще занимается очень широкий класс ПО, который носит об-
тво различных MTA, все они реализуют приблизительно од- щее название MDA (Mail Delivery Agent).
ну и ту же функциональность, используют одни и те же про- Когда-то в процедуре доставки ничего сложного не было.
26
администрирование
работки почты, особенно при больших объемах, поэтому его же для аутентификации используют многие MTA
MTA предлагают еще один способ получения сообщений – и Сyrus IMAP. Но в целом по функциональности Dovecot
протокол LMTP, описанный в RFC 2033 (Local Mail Transfer пока не дотягивает до Courier IMAP.
Protocol). MDA, использующий LMTP, принимает сообще- Cyrus IMAP – наиболее продвинутая почтовая система,
ния по TCP/IP или UNIX-сокету подобно MTA, поэтому со- которая помимо уже перечисленных возможностей, до-
здавать отдельный процесс на каждое сообщение не нуж- ступных в других MDA, включает возможности класте-
но. Cyrus и DBMail предлагают MDA, использующие LMTP, ризации и проксирования, быстрый и гибкий механизм
для доставки в собственные хранилища, а вот для mbox фильтрации почтовых сообщений Sieve (описанный
и Maildrop таких MDA нет. в RFC 3028). Однако все компоненты Cyrus используют
Кроме фильтрующих MDA общего назначения в про- собственный формат хранилища почтовых сообщений
цессе доставки сообщения в серверное хранилище также и не умеют работать со стандартными mbox и Maildir.
могут использоваться специализированные контент-филь-
тры. Такие фильтры могут выполнять функцию отсеива- В тех случаях, когда поддержка протокола IMAP не тре-
ния спама и вирусов, в этом качестве часто используют- буется, возможно использование более простых MDA, пре-
ся SpamAssassin и SpamOracle в связке с популярными ан- доставляющих доступ к mbox и Maildir только по протоколу
тивирусами. Они могут использовать как pipe-интерфейс, POP3: к их числу относятся Cubic Circle (cucipop), QPopper
так и интерфейс LMTP. Последний вариант, как правило, и Popa3d.
является более производительным, но затрудняет исполь-
зование контент-фильтра в MDA общего назначения – ос- Как происходит получение сообщений
тается использовать MDA из комплекта MTA. И MDA, используемые для доставки почты в mbox и Maildir,
и MDA, предоставляющие доступ к ним по протоколам POP3
Организация доступа к серверным и IMAP, взаимозаменяемы точно так же, как и различные
хранилищам MTA. MUA ничего не знает о типе хранилища и о том, с каким
Наиболее популярными MDA, предоставляющими доступ к POP3/IMAP-сервером он работает, он всего лишь использу-
mbox и Maildir по протоколам POP3 и IMAP, являются: ет протоколы POP3 и IMAP для доступа к хранилищу.
UW IMAP – самый простой из всех перечисленных. Ра- Протокол POP3, описанный в RFC 1939 (Post Office
ботает под inetd/xinetd, не имеет вообще никаких настро- Protocol – Version 3), подразумевает, что пользователи за-
ек, в качестве механизма аутентификации использует бирают сообщения из серверного хранилища и работают
только PAM, по умолчанию работает только с mbox (хотя с ними в локальном хранилище своего MUA. Продемонстри-
существует патч для поддержки Maildir). Предоставля- руем использование этого протокола с помощью telnet:
ет доступ ко всем файлам в домашнем каталоге поль-
зователя как к каталогам IMAP, даже если они не явля- # telnet localhost 110
ются mbox – обязанность отображения только нужных Trying 127.0.0.1...
Connected to localhost.
файлов (действительно являющихся mbox) возлагает- Escape character is '^]'.
ся на MUA. Да и история безопасности у него очень не- +OK Hello there.
USER user1
хорошая. +OK Password required.
Courier IMAP – часть проекта Courier, в который также PASS pwd1
+OK logged in.
входят собственный (но не слишком распространен- STAT
ный) MTA, уже упоминавшийся Maildrop, менеджер спис- +OK 1 422
LIST
ков рассылки, средства совместной работы (groupware) +OK POP3 clients that break here, they violate STD53.
и средства доступа к почте через Web. В качестве фор- 1 422
.
мата хранилища поддерживается только Maildir. Для ау- RETR 1
тентификации и Courier IMAP, и Maildrop используют об- +OK 422 octets follow.
Return-Path: <user1@domain1.com>
щую библиотеку Courier Authentication Library, которая Received: from mail.domain1.com (mail.domain1.com [xxx.xxx.xxx.xxx])
поддерживает хранение логинов, паролей, пути к Maildir by mail.domain2.com (8.13.5/8.13.1) with ESMTP id j9NCQqTZ012628
for <user2@domain2.com>; Sun, 23 Oct 2005 16:26:52 +0400 (MSD)
пользователя и квот Maildir в Berkley DB, LDAP, MySQL (envelope-from user1@domain1.com)
и PostgreSQL – таким образом, почтовые пользовате- Received: from host1.domain1.com (host1.domain.com [xxx.xxx.xxx.xxx])
by mail.domain1.com (Postfix) with ESMTP id CEA8840F0
ли не обязаны иметь системные учетные записи. Кро- for <user2@domain2.com>; Sun, 23 Oct 2005 16:33:25 +0400 (MSD)
ме того, для аутентификации возможно использование From: user1@domain1.com
To: user2@domain2.com
PAM. Subject: Test Message
Dovecot – позиционируется как сервер POP3/IMAP, Message-Id: <20051023123325.CEA8840F0@mail.domain1.com>
Date: Sun, 23 Oct 2005 16:33:25 +0400 (MSD)
при написании которого в первую очередь учитыва-
Hello!
лась безопасность: другими словами, он относится к UW .
IMAP и Courier IMAP, как Qmail и Postfix к Sendmail. В ка- DELE 1
+OK Deleted.
честве формата хранилища поддерживается как mbox, QUIT
так и Maildir, для увеличения производительности (ко- +OK Bye-bye.
торая всегда была слабым местом при работе с mbox)
используются специальные индексы. Для аутентифика- После аутентификации с помощью команд USER и PASS
ции используется уже упоминавшийся механизм SASL – мы получаем количество сообщений в почтовом ящике
28
администрирование
Алексей Коршунов
В современном мире сложно найти человека, знающего, что такое e-mail и ни разу
не столкнувшегося со спамом. Электронная почта и спам стали неотделимыми друг
от друга понятиями.
Е
сли допустить лёгкий налёт ро- чающие специальные антиспам- мере, известный) из наших соотечест-
мантики, то можно смело ут- фильтры для уменьшения потока венников – это Михаил Армалинский.
верждать – борьба со спамом нежелательной корреспонденции. В наше время, по информации
давно приобрела характер извест- Это компании и корпорации, тратя- спам-аналитиков лаборатории Кас-
ного противостояния «меча и щита». щие немалые средства на покупку, перского на 2005 год, спам составля-
По одну сторону баррикад находятся внедрение и модификацию анти- ет 70-80% от общего объёма почто-
спамеры, занимающиеся постоянным спам-технологий. вого трафика, то есть на каждые 2-3
сбором почтовых адресов пользова- Это компании – разработчики раз- обычных письма приходится 7-8 спа-
телей Интернета, изобретением и мо- личного программного обеспече- мерских. Точной цифры по ежеднев-
дификацией технологий отправки спа- ния, позволяющего в какой-то ме- ному количеству рассылаемого спама,
ма, а также обхода средств его блоки- ре сократить миллионы ежеднев- по понятным причинам, быть не может.
рования. По другую сторону находят- ных сообщений, которые попада- Но цифры, озвучиваемые различными
ся все остальные пользователи элек- ют в почтовые ящики пользовате- источниками, внушают опасение за бу-
тронной почты: лей. дущее электронной корреспонденции,
Это простые пользователи, кото- так как любая крупная компания, рабо-
рые ежедневно удаляют из своих История развития тающая с почтой, находится под угро-
ящиков от единиц до сотен спам- спамерских технологий зой быть просто погребённой под не-
сообщений, а более тесно «дружа- Родоначальницей спама можно счи- вообразимым количеством почтово-
щие» с программным обеспече- тать рассылку от 2 мая 1978 года, ког-го мусора.
нием обучают персональные поч- да было разослано 600 спам-сообще-
товые программы по возможнос- ний для приглашения на презентацию Среда передачи
ти распознавать и удалять сооб- DEC. С этого дня можно начинать от- Технологии рассылки спам-сообще-
щения (как вариант, маркировать счёт века спам-сообщений. 12 апре- ний развивались достаточно бурно.
специальным образом или изоли- ля 1994 года Лоренс Кантер и Марта Началось всё с обычной прямой от-
ровать в специально отведённом Сигель впервые использовали спе- правки респондентам, указанным
месте), содержащие мусор. циальное программное обеспечение в поле CC и BCC. Однако этот метод
Это системные администраторы для рассылки спама в конференциях быстро ушёл в историю ввиду своей
компаний, устанавливающие и обу- USENET. Первый спамер (по крайней неэффективности.
30
администрирование
Тёмная история RBL – лобы одного из пользователей сервиса rbl, ной почтовой системы для урегулирова-
средство фильтрации заканчивая проверкой самим сервисом на ния вопроса прохождения почты. Полагаю,
или помеха? Open Relay серверов, попадающих в скани- системные администраторы отказывались
В недалёком прошлом при использова- руемый диапазон IP-адресов. То есть при- от этого (ставшего уже популярным) мето-
нии общеизвестных и доступных rbl-спис- мерно по тому же принципу, как сканируют да фильтрации с лёгким сердцем, так как
ков (некоторые из наиболее популярных сеть поисковые системы. В некоторых слу- это значительно проще, чем каждый раз
указаны на сайте http://rbls.org) возника- чаях на исключение легальной системы из вести переговоры с другими сисадмина-
ли проблемы с хождением почты. Сейчас чёрного списка могло уйти от нескольких ми о проблемах прохождения почты через
крупнейшие почтовые системы (такие как дней до месяцев. Известны так же случаи, их системы. К слову сказать, именно в тот
mail.ru) используют собственные rbl-спис- когда администрацией какого-либо серви- период времени, как мне кажется, в голо-
ки, что даёт им возможность больше не ог- са rbl заносились в базу «чёрных» вполне вах многих руководителей осело неверное
лядываться на держателей какого-нибудь легальные сервера, а за исключение про- представление о борьбе со спамом. Сре-
сервиса. Разумеется, есть и те, кто по сей сили некоторую плату. ди многих известных мне руководителей
день предпочитают общедоступные ресур- После всех мытарств и приключений популярно мнение, что фильтрация спама
сы, ведь можно выбрать тот, который наибо- с rbl-сервисами, очень многие админис- ведёт к потере важной корреспонденции.
лее вам подходит (например, только список, траторы почтовых системы были вынуж- К примеру, в одной из компаний, где я ког-
содержащий пространства модемных пулов дены отключить использование rbl в сво- да-то работал, мне так и не удалось угово-
провайдеров). Проблемы прохождения поч- их системах. Пользователи были силь- рить начальство использовать фильтра-
ты были обусловлены тем, что разные поч- но недовольны «гаданием», дошла ли их цию спама (всего лишь маркируя поле те-
товые системы могли использовать неиден- корреспонденция до получателей или нет, мы сообщения меткой «SPAM») несмотря
тичные списки «чёрных адресов», хотя для так как далеко не все способны понять от- на то, что количество ежедневной нежела-
возможного отказа в доставке, разумеет- вет сервера-получателя об отказе достав- тельной корреспонденции, получаемой со-
ся, хватало применения этого метода толь- ки. Да и что таить, мало кто вообще на от- трудниками, превышало средне-месячный
ко на системе-получателе. Другими слова- чёты серверов обращал внимания. Зачас- трафик легальной почты (трафик был ус-
ми, две почтовые системы могли оказать- тую такие письма удалялись без предвари- тановлен посредством анализа лог-фай-
ся в роли своеобразных пейджеров, когда тельного прочтения, а уже спустя продол- ла почтовой системы). А в другой компа-
почта от пользователей системы А доходит жительное время, когда становилось из- нии мне пришлось сразу же после трудоус-
до системы Б, а вот в обратную сторону уже вестно, что получатель письма не получил – тройства выключить систему фильтрации,
нет. Так как система Б находится в каком- начинались «разборы полётов». В резуль- так как менеджеры буквально объявили
нибудь чёрном списке, по которому прове- тате чего и выяснялось, что пользователь забастовку из-за постоянной потери поч-
ряет отправителей система А. Причем при- получил некий отчёт, но не обратил на не- ты, в которой они обвиняли спам-оборону
чин, по которым система Б могла оказать- го внимания. После этого системные адми- компании (реальная причина потерь оказа-
ся в сколь угодно большом количестве чёр- нистраторы уже начинали выяснять причи- лась значительно прозаичнее и не имела
ных списков, было не мало. Начиная от жа- ну и связываться с администраторами нуж- никакого отношения к фильтрам).
Следующим шагом стало исполь- мившего» мерзавца. Таким образом, у ляющих любому желающему отправ-
зование модемных пулов провайде- спамера было предостаточно времени лять через себя сколь угодно много
ров. Каждому пользователю Интерне- для осуществления своих намерений. корреспонденции по абсолютно лю-
та известна система – по бесплатно- Да и реакция со стороны провайдера бым адресам. Эта проблема возник-
му гостевому доступу на сайт провай- в виде блокирования аккаунта не яв- ла из-за того, что изначально, до 90-х
дера регистрируется учетная запись, лялась проблемой. Ведь никто не ме- годов, практически все сервера были
оплачивается и пожалуйста – мож- шал заново пройти всю цепочку, опи- «открытыми». Они позволяли переда-
но приступать к отправке сколь угод- санную выше, для повторного получе- вать почтовые сообщения на другие
но большого количества спама. Разу- ния доступа через этого же провай- сервера без ограничений на отправи-
меется, среда передачи данных силь- дера или, на крайний случай, друго- теля. Эта проблема была решена мо-
но ограничивала возможности такого го. Эта проблема была отчасти реше- дификацией программного обеспече-
метода, однако на тот период времени на службами провайдеров с помощью ния почтовых серверов Интернета. Од-
этого уже было более чем достаточно установки АОН (автоматических опре- нако, как показывает сухая статистика,
для заметного всплеска нежелатель- делителей номеров) на оборудовании, даже в наше время количество Open
ной корреспонденции в ящиках поль- обслуживающем абонентов. А отчасти Relay серверов исчисляется тысячами.
зователей. Количество времени, тре- с помощью введения некоторых огра- Причин для этого множество – некор-
буемое на написание жалобы и рас- ничений на отправку сообщений поль- ректные настройки, а также несовер-
смотрение её провайдером, было до- зователями. шенство используемого программного
статочно велико. А ведь далеко не каж- Большой проблемой в тот период обеспечения. Да-да, как это ни удиви-
дый, получивший спам, станет озада- времени являлось наличие огромно- тельно, некоторые почтовые сервера
чиваться выявлением источника спа- го количества открытых для бесконт- по сей день используют сервисы, прос-
ма и обращением к службе техничес- рольной пересылки почтовых серверов то не обученные средствам предотвра-
кой поддержки провайдера, «прикор- (так называемых Open Relay), позво- щения использования их, как дойных
32
администрирование
сообщений привели даже к тому, что не устраивает имеющийся на данный меримом с уровнем рекламного спа-
появилась некая новая форма язы- момент результат. ма. Не стоит забывать и о том, что каж-
ка (как в пункте два), которую многие дое фишинговое письмо потенциально
даже понимают. Почему я делаю та- Фишинг способно причинить в сотни раз боль-
кой вывод? Ну обращаются же люди Говоря о спаме, невозможно прой- ший ущерб (в случае успешного «об-
в компании, которые рекламируют та- ти мимо такого явления, как фишинг. лапошивания» получателя), чем тыся-
ким образом. Фишинг – это мошеннические рас- чи сообщений обычного рекламного
Не стоит забывать и спам, возни- сылки («нигерийские письма», подде- спама. Если потери от чтения рекла-
кающий из-за неидеальных почтовых льные извещения о выигрыше и т. д.). мы можно свести к трафику и затратам
серверов. Имеются в виду различные Дословно фишинг можно перевести времени на его отсеивание, то потери
отчёты. Как пример можно привести как “ловля на удочку”. Как правило, та- от фишинга могут быть поистине фа-
настоящий бум отчётов от антивиру- кие письма призывают совершить ка- тальными для финансового положения
сов о найденном в теле письма виру- кое-то действие (например, пройти по «попавшегося» пользователя. К сожа-
се. Разумеется, речь идёт о тех случа- ссылке или просто заплатить деньги), лению, есть достаточно много факто-
ях, когда поле отправителя является но не за нечто реальное, как в случае ров, затрудняющих борьбу с фишин-
поддельным и пользователь получа- рекламного спама, а за нечто несу- гом, то есть при одинаковом допусти-
ет отчёты о письмах, которые в дейс- ществующее. мом проценте ложных срабатываний
твительности не отправлял. Сюда же Целью фишинг-рассылок являют- любая современная антиспам-систе-
относятся многочисленные автомати- ся персональные данные пользовате- ма пропустит меньше рекламных со-
чески генерируемые отчёты о невоз- ля (логины, пароли, пин-коды, номе- общений, чем фишинговых.
можности доставки сообщения полу- ра кредитных карт и тому подобное). Историю фишинга, скорее всего,
чателю. Ситуация та же – поле отпра- В дальнейшем, как не сложно дога- следует начинать с середины 90-х го-
вителя подделано. К этому можно от- даться, эти данные используются зло- дов. Тогда в компании AOL были силь-
носиться, как к необходимой отладоч- умышленниками для получения воз- но распространены сообщения, подпи-
ной информации, если вы работаете можной наживы. Как правило, фишин- санные якобы администрацией. В этих
системным администратором или яв- говые письма весьма талантливо ими- сообщениях предлагали (объясняя это
ляетесь продвинутым пользователем. тируют настоящие сообщения реаль- разными причинами) прислать пароль
Или же как к неизбежному, но от то- но существующих организаций. На- от своего аккаунта, который в против-
го не менее надоедливому «техничес- иболее часто они пародируют различ- ном случае угрожали закрыть.
кому» спаму, если вы руководитель ные платёжные системы (ebay, paypal). Разумеется, со временем до поль-
или менеджер, почта которого «пест- В таких письмах содержится ссыл- зователей довели информацию, что па-
рит» отчётами о письмах, которых он ка, пройдя по которой, потенциаль- роли в письмах не запрашиваются и не
не отправлял. ная жертва попадает на поддельную отсылаются, поэтому эффективность
Менялось и оформление спам- страницу, специально изготовленную этого метода стала стремиться к ну-
письма: мошенником. Страница выглядит как лю. Однако новая уловка мошенни-
Близкие по начертанию, но раз- реально существующая на сайте ком- ков не заставила себя долго ждать.
ные символы. Например, буква «А» пании, от имени которой было отправ- Немного изменив содержимое писем,
в русской и английской раскладке. лено письмо. На фальшивом сайте под они стали сообщать о каком-либо со-
Невидимый текст в HTML. тем или иным предлогом жертве пред- бытии на сервере (например, PayPal),
Картинки, зашумление картинок. лагается ввести свои личные данные требующем от пользователя некой ре-
Если сначала фильтры научились для авторизации. Как итог – личная ин- акции. В теле сообщения была ссылка,
по подсчитанной сумме выявлять формация посетителя попадает в ба- которая, как уже было сказано выше,
одинаковые сообщения, то внесе- зы мошенников. вела на поддельную страницу легаль-
ние невидимых глазу незначитель- Если верить статистике из разных ного сайта. Где ничего не подозрева-
ных изменений избавляет от этой источников, фишинг пока что не яв- ющие пользователи и оставляли свои
«проблемы». ляется чрезмерно опасным явлением. персональные данные, так как мало
Подделка технической части пись- На данный момент даже «писем счас- кто привык смотреть в адресную стро-
ма. Думаю, каждый хоть раз в жиз- тья» пользователям приходит значи- ку браузера. (Я лично несколько раз
ни видел отчёт от SpamAssassin тельно больше, чем фишинговых со- наблюдал, что у некоторых пользова-
в виде «forged outlook header». общений. Однако, наиболее вероят- телей адресная строка вообще скры-
но, что такое положение дел времен- та. На мой вопрос, как они работают,
Противостояние спамеров и ан- ное. Индустрия фишинга в России ещё был дан гениальный ответ – я сам(а)
тиспамерских технологий порождает не доросла до таких «поставленных ничего не набираю, только ссылки от-
всё больше новых ухищрений со сто- на рельсы» механизмов, как реальный крываю.) На этом возможные злоклю-
роны первых. Однако, судя по инфор- спам. Сейчас энтузиасты только обка- чения пользователей могли не закон-
мации от спам-аналитиков лаборато- тывают новые технологии на рунетов- читься, потому что на поддельной стра-
рии Касперского и других источников, ских пользователях. Но, по прогнозам нице мог оказаться троян, который
2005 год не дал новаторских техноло- mail.ru, уже к 2006-2007 году доля та- впоследствии «высасывал» из ком-
гий спамерам. По-видимому, их впол- кого спама окажется на уровне, соиз- пьютера все пароли и учётные запи-
34
администрирование
нёс стабилизацию спама по части го подражания западным «коллегам» редко называют рупором мирового
объёмов рассылок и доходов, полу- и приспособился к рунету. Спамеры терроризма.
чаемых от спам-рекламы. Однако на- начали активно предлагать услуги
ращивание темпа всё же составляет по недвижимости, полиграфическую Прогнозы на будущее
5-6% в год. продукцию и услуги, крупную быто- В 2006 году ожидается в первую оче-
Стабилизация объёмов спама обус- вую технику, различные другие услуги редь последующее увеличение коли-
ловлена близостью к границе, за ко- (например, услуги грузчиков). В запад- чества спама. Спамеры, скорее все-
торой целесообразность использова- ном спаме таких предложений практи- го, станут умнее. Так как сейчас про-
ния электронной почты как средства чески нет, так как они не находят от- исходит повсеместный отказ почтовых
коммуникации находится под сомне- клика у аудитории. серверов от принятия почты с DSL-пу-
нием. Всё чаще отправителю сообще- Настораживает явная криминали- лов провайдеров, то и использование
ния приходится уведомлять получате- зация спама. Всё больше и больше мо- зомби-машин для отсылки сообщений
ля о факте отправки или же контроли- шеннических предложений попадает напрямую на сервера станет неэффек-
ровать процесс доставки сообщения, в ящики пользователей. Наиболее из- тивным. Вместо этого, наиболее веро-
так как выкинуть нужное письмо, за- вестные и обсуждаемые сейчас виды – ятно, начнут использоваться smtp-про-
терявшееся в полусотне спам-сооб- фишинг и фарминг. (Суть фарминга вадейров, настроенных пользователя-
щений, не составляет труда. сводится к автоматическому перена- ми инфицированных машин.
Экономическая эффективность правлению пользователей на фаль- Ожидается и увеличение доли «руч-
электронной почты снижается, пос- шивые сайты. В отличие от фишин- ного» спама за счёт растущей популяр-
кольку спам наносит существенный га новый метод хищения данных поч- ности фишинга и за счёт использова-
ущерб пользователям почты. Легко ти не требует участия потенциальной ния тех же технологий «писем счастья»
представить работника, получающе- жертвы.) Очевидно, что спам как биз- в рекламном спаме. «Ручной» спам по-
го почту без предварительной её филь- нес криминализируется. Об этом го- лучил своё название от способа его от-
трации и тратящего на её просмотр ворит и слияние спамерских и хакер- правки «вручную» без использования
половину рабочего дня. А это означа- ских технологий. Современное про- специализированного спамерского
ет снижение производительности со- граммное обеспечение спамера вклю- программного обеспечения.
трудника и убытки для работодателя. чает в себя специальные модули, поз- Технология отказа от сообщений
Не говоря уже о том, что, учитывая сто- воляющие производить рассылки че- с DSL-блоков станет повсеместной.
имость трафика в регионах, некоторые рез инфицированные троянами маши- По прогнозам, эпоха такого спама за-
компании вынуждены терпеть боль- ны пользователей, то есть изначально кончится в 2006-2007 году.
шие финансовые потери из-за беспо- рассчитано на взаимодействие с тро- Использование вирусами smtp-про-
лезного по сути трафика, генерируе- янской частью. вайдеров, настроенных пользователя-
мого спам-сообщениями. За последние два года мы име- ми, скорее всего, приведёт в свою оче-
На конференции «Проблема спама ли возможноть убедиться, что спам редь к ужесточению политики провай-
и её решения» основными тенденция- превращается в мощное оружие по- деров на отправку сообщений пользо-
ми спама за 2005 год были названы: литических игр и инструмент влияния вателями. Возможно, провайдеры при-
Стабилизация количества и тема- на общественное сознание. По «зо- мут решение на установку контентной
тик спама. не покрытия» и эффективности спам фильтрации, так как в случае бездейс-
Тематическое и техническое раз- вполне сопоставим с телевизионной твия они рискуют оказаться в чёрных
деление спама на разные геозоны рекламой, однако значительно дешев- списках большинства систем, что вряд
Интернета (рунет и «западный» Ин- ле обходится. Разумеется, при усло- ли обрадует пользователей.
тернет). вии, что подобный спам обошёл анти- Дальнейшее развитие спам-бизнеса
Криминализация спама. спам фильтры. Агитационные листов- может закончиться как угодно. Вплоть
Использование спама как инстру- ки больше не ограничены своими бу- до того, что в какой-то момент будет при-
мента информационных и полити- мажными носителями и мигрировали нято решение об оплате каждого элек-
ческих войн. в мир цифровой. тронного сообщения (на манер марок
В 2005 году лабораторией Каспер- бумажной почты) или введения ценза
В 2005 году наметилось явное раз- ского был зафиксирован новый тип на почтовую переписку с тотальным её
граничение спама для западных полу- «политического» спама. Речь идёт контролем. Вполне возможно, что это
чателей и русскоязычных. Спам для о спамерских кампаниях, направлен- окажется закатом электронной почты,
русских эволюционировал от прямо- ных на формирование необходимо- как основного средства коммуникации
го общественного мнения по вопро- в Интернете. Есть ещё и другие факто-
Лидеры спамерских рассылок в этом
году сам внутренней политики государс- ры, такие как криминализация и полити-
тва. Эти спам-атаки отличает хоро- зация спам-индустрии и перевешивание
Приглашения на семинары и курсы 14%
шая спланированность. Примером та- криминальной части спама по сравне-
Предложения «для взрослых» 12%
кой информационной кампании мо- нию с его рекламной составляющей.
Компьютерное мошенничество 11% жет служить спам со ссылками на не- При подготовке статьи использо-
Предложение лекарственных препаратов 9% безызвестный сайт «Кавказ-центр», ваны материалы с конференции «Про-
Дешёвый софт 7% который российские спец-службы не- блемы спама и её решения».
Павел Закляков
Если вы сомневаетесь, где правильнее в заголовке поставить запятую, то эта статья точно
для вас. Из неё вы узнаете о сути возникновения проблемы, а мы предложим два оптимальных
варианта решений, при которых «и волки сыты, и овцы целы».
У
ж сколько раз твердили миру, ные меры и зарабатываете дополни- ты среди персонала есть возможность
что русскому человеку нельзя тельные очки как руководитель, поз- потерять кадры, также не стоит забы-
вот так просто сказать «нет» воляете сотрудникам общаться по де- вать закон Нейсдра, что «можно сде-
ни по какому вопросу, потому что мы ловым вопросам с помощью этого за- лать защиту от дурака, но только от не-
можем обидеться и пользы от этого ни- мечательного средства с партнёрами. изобретательного».
кому не будет. Также не следует забы- Экономите время фирмы и нервы со- Средств по обходу «закрытой ICQ»
вать, что мы настолько изобретатель- трудников. Общение по ICQ – это быс- на сегодня масса и постоянно приду-
ная нация и у нас столько невостребо- тро и удобно. Телефон не занят звон- мываются новые. Так, если вы закрыли
ванных талантов, что мы тут же начнём ками по мелким вопросам. Если че- стандартный для ICQ порт 5190, то про-
искать, как обойти тот или иной запрет. ловек отошёл с рабочего места – со- грамма, путём небольших усилий,
Самое интересное, что решение обя- общения попадают в очередь. Удобно без проблем умеет работать по дру-
зательно будет найдено. В то же время и выгодно общаться с оппонентами гим портам. Если вы закрыли доступ
нас легко одурачить и ввести в заблуж- из других городов, а тем более дру- к основным серверам, то всегда мож-
дение. Поэтому руководитель, решаю- гих стран. С другой стороны, вы рис- но найти альтернативные, либо вос-
щий извечный вопрос: «ICQ в офисе: куете тем, что некоторые сотрудники пользоваться прокси. Если же вы за-
быть или не быть» должен учитывать будут отвлекаться от работы личным крыли доступ к прокси на обычных пор-
все эти нюансы. общением. тах, то пользователь может использо-
Принять решение бывает очень не- Принимая противоположное реше- вать какой-нибудь CGI-proxy [1-3], уста-
просто, открывая доступ к ICQ, с од- ние и закрывая доступ, вы должны по- новленный добрым дядей на далёком
ной стороны, вы принимаете популяр- нимать, что без разъяснительной рабо- сервере. Если есть удалённый хостинг
36
администрирование
с Perl, то можно сделать ICQ самому Таблица. Основные доводы «за» и «против» использования ICQ
(http://www.gonzo.kiev.ua/projects/vicq), Разрешить ICQ Запретить ICQ
но это не так просто как воспользо- «+»: Простота, быстрота и удобство общения с посто- «+»: Сотрудники не будут отвлекаться от работы.
ваться готовым веб-сайтом, подде- янными партнёрами, меньше проблем и бюрокра- «-»: Угроза безопасности: есть вероятность появления
тии. «левых» шлюзов в Интернет, в обход основного
рживающим общение по ICQ. Именно «+»: Ниже затраты на телефонные переговоры, теле- канала.
по ICQ, а не только между пользова- фонные линии меньше заняты. «-»: Повышение уровня занятости телефонных линий
«+»: Популярная мера. и рост расходов на связь.
телями сайта. «+»: Короткое общение снимает стресс. «-»: Не популярная мера.
До последнего времени работал «-»: Угроза безопасности: возможна утечка нежела- «-»: Больше времени тратится на общение с труднодо-
тельной информации. ступными и удалёнными партнёрами.
веб-проект www.aska.ru, для того что- «-»: Угроза безопасности: если программу ICQ-клиен- «-»: Психологический момент запрета для тех, кто при-
бы воспользоваться своей ICQ, на- та ставит пользователь – возможны вирусы. вык пользоваться.
«-»: Отвлечение от основной работы и «болтовня» «-»: Затраты времени сотрудников на обдумывание
до было просто зайти на этот сайт не по делу. вопроса «Как обмануть систему?».
и ввести свой логин и пароль. Се- «-»: Есть небольшая вероятность увольнения сотруд-
ников.
годня работающим проектом являет-
ся http://911.ru. Воспользоваться им вас к выбору того или иного решения, часть на том же сервере, которая, мас-
под силу даже персоналу, далёко- ведь у вас могут быть и другие влия- кируясь под того или иного пользовате-
му от техники. Аналогичный сервис тельные факторы, однако я хотел бы ля, подключалась бы к настоящим сер-
под названием icq2go есть и на офи- предложить два возможных варианта верам от его имени. При этом клиент-
циальном сайте ICQ. Если официаль- решения проблемы. ская часть могла бы получать сообще-
ный сайт можно постараться закрыть, Первый вариант более интересный, ния и помещать их во внутреннюю БД,
то не стоит думать, что если закрыли но в то же время более сложный, поэ- делая их доступными для внутренне-
ICQ на всех портах, то и закроют все тому я про него расскажу лишь толь- го пользования. Также она бы могла
известные веб-ICQ, а также будут пос- ко в качестве идеи с задатком на воз- отправлять сообщения во внешний
тоянно отслеживать появление новых. можную будущую реализацию. мир. Клиентов, в том числе и распро-
Практика жизни показывает, что это Второй вариант решения пробле- страняемых под лицензией GNU Public
не так даже в банках. В дело вступа- мы попроще, его практическое реше- License, множество. Значит, реали-
ет человеческий фактор. Дотошных ние мы сегодня рассмотрим. зация этой идеи лишь дело времени
админов, закрывающих аськи, нет и желания.
по той причине, что все они получа- Интерактивный Теперь, если предположить что
ют либо небольшую, либо конечную фильтрующий идея реализовалась и мы имеем рабо-
зарплату, в то время как у них обыч- ICQ-прокси-сервер чий ICQ-прокси-сервер, то почему мы
но полно других дел. Однако следует Не помню, как давно я попал на стра- не можем сделать на нём фильтрацию
хорошо понимать, что уж если кто-то ничку Александра Шутко с его проек- сообщений (см. рис. 1)?
необоснованно чем-то насолил адми- том IServerd [4] по созданию ICQ-сер- Руководитель, отвечающий за то,
ну, то он скорее из принципа, с особой вера на базе Linux/*BSD с хранени- кому можно пользоваться ICQ, а кому
тщательностью и забесплатно, выпол- ем всех сообщений в БД PostgreSQL, нет, через специальную форму адми-
нит указание руководства и всё закро- но именно в тот момент я понял, на- нистрирования в определённую таб-
ет по максимуму. сколько этот проект интересен и куда личку БД прописывает разрешённые
Другие подобные сайты появля- его можно развить. Как мне кажется, ICQ-контакты. Например, для поль-
ются постоянно и регулярно и так бу- на базе данного проекта сделать пред- зователей отдела бухгалтерии, ко-
дет и дальше, поскольку это хоро- лагаемую реализацию будет гораздо му с кем можно общаться. Также про-
шая возможность привлечь посети- проще. Также на сайте [4] имеется до- писываются разрешённые контакты
телей на свой сайт, чтобы показывать статочно информации по протоколам для каждого ICQ-пользователя из от-
баннеры и зарабатывать на этом де- ICQ и всем с ними связанным. дела продаж, с кем они могут общать-
ньги. Например, на момент написа- Если можно сделать свой собствен- ся, аналогично и для всех остальных
ния статьи веб-ICQ можно было най- ный сервер ICQ и обязать пользовате- отделов. Если пользователю по дол-
ти на http://www.domeni.info, http://www. лей оправлять сообщения через него, гу службы нужна ICQ, то с разрешён-
riska.ru/modules.php?name=web_icq то почему нельзя сделать клиентскую ными контактами работа идёт в про-
и др. При этом, если эти сайты окажут-
ся закрыты, то к ним также можно об-
ращаться через всякие анонимайзеры
и cgi-proxy, которые аналогично «мно-
жатся и дохнут как мухи». В общем, это
скорее философский вопрос борьбы
оружия и брони. Для наглядности по-
дытожим всё вышенаписанное в ви-
де таблицы.
Как видно, принять однозначное
решение, где поставить запятую в за-
головке, сложно. Я не хочу склонять Рисунок 1. Схема фильтрации сообщений
38
администрирование
зами, вы быстро найдёте читаемый текст сообщений среди взять всё остальное. Библиотеку pcap можно скачать тут:
прочего нечитаемого мусора. Фактически все программы, ftp://ftp.ee.lbl.gov/libpcap.tar.Z. Все остальные perl-моду-
делающие перехват ICQ-сообщений, просматривают дан- ли стоит искать на http://search.cpan.org, вводя их имена
ные за вас, находят сообщения и выводят вам их в краси- в окошке для поиска.
вых окошках и табличках. Иногда эти функции дополняют- В результате поисков получаем конечные ссылки
ся некоторым удобным сервисом вроде поиска, фильтра- для скачивания:
ции и пр. Даже если «менюшечный» сервис очень удобен, http://search.cpan.org/CPAN/authors/id/T/TI/TIMPOTTER/
выделять отдельный компьютер для просмотра ICQ-сооб- Net-Pcap-0.04.tar.gz
щений – это дорого, поэтому проще всего перехватывать их http://search.cpan.org/CPAN/authors/id/A/AT/ATRAK/
на шлюзе. А шлюзы обычно делают на FreeBSD или Linux, NetPacket-0.04.tar.gz
поэтому для нашей задачи надо найти что-то более подхо- http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/
дящее, с открытым кодом, желательно под лицензией GPL Unicode-String-2.07.tar.gz
и умеющее работать с базами данных. http://search.cpan.org/CPAN/authors/id/E/EH/EHOOD/Proc-
Не желая писать программу, я занялся поиском, и единс- Daemon-0.03.tar.gz
твенное наиболее удачное, что я нашёл в сети, – это про- http://search.cpan.org/CPAN/authors/id/M/MS/MSCHILLI/
ект AIM Sniff [10] (автор Shawn Grimes). Поскольку ICQ была Proc-Simple-1.21.tar.gz
выкуплена фирмой America Online (AOL), то используемый h t t p : / / s e a r c h . c p a n . o r g / C PA N / a u t h o r s / i d / M / M H /
в последних версиях ICQ протокол OSCAR (Open System MHARNISCH/Syslog-0.97.tar.gz
for Communication in Realtime) и протокол AIM, как бра- http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/
тья-близнецы, очень похожи, если не сказать, что это поч- DBD-mysql-3.0002.tar.gz
ти одно и то же, поэтому слово AIM не должно вас пугать.
На сегодня AIM Sniff – это живой проект, с автором кото- Если вы решите сделать «по-своему» и не делать вы-
рого можно связаться по почте. На сайте имеется действу- вод в БД, то можете модуль DBD::mysql не скачивать
ющий форум, где не очень бурно обсуждаются различные и не ставить.
проблемы проекта. Ставим libpcap.tar.Z., для этого распаковываем архив,
например, в директорию /progi:
Реализация с помощью AIM Sniff
AIM Sniff, если говорить о версии 0.9d, – это небольшая # cat libpcap.tar.Z|tar -xvz -C /progi
(~43 Кб) программа на Perl – aimSniff.pl +6 дополнитель-
ных файлов: Заходим внутрь:
ChangeLog – изменения в версиях.
README – документация и информация об установке; # cd /progi/libpcap-0.4
aimsniff.config – шаблон конфигурационного файла.
install.pl – программа, помогающая автоматизировать Запускаем конфигурирование и создание Makefile
процесс установки AIM Sniff и необходимых для него под вашу систему:
модулей (можно обойтись и без неё).
rc.aimsniff – скрипт автоматизации запуска для помеще- # ./configure
ния в /etc/rc.d/init.d.
table.struct – SQL-файл, создающий необходимую струк- Запускаем компиляцию:
туру таблиц в БД MySQL.
# make
Несмотря на кажущуюся первоначальную простоту,
для успешного запуска потребуются, естественно, язык Perl, Устанавливаем скомпилированное:
библиотека pcap (libpcap.tar.Z) и установленные модули:
Net::Pcap DBD::mysql # make install
NetPacket::Ethernet Unicode::String
NetPacket::IP Proc::Daemon Далее ставим модули. Каждый модуль аналогичным об-
NetPacket::TCP Proc::Simple разом распаковываем:
NetPacket::UDP Unix::Syslog
DBI # cat файл_архива_модуля.tar.gz|tar -xvz -C /progi
40
администрирование
2. Создать учётную запись пользователя для работы с БД Третье, конфигурационный файл не обязателен, но его
aimsniff, установить ей пароль и дать соответствующие использование упрощает жизнь, хотя он и является потен-
права. циально уязвимым местом в том случае, если там будут хра-
3. Прописать настройки в конфигурационный файл, что- ниться пароли к БД. Проще всего воспользоваться шабло-
бы не вводить их каждый раз в командной строчке. ном aimsniff.config. Если у вас есть возможность – напиши-
те этот файл с нуля, потому как шаблон «кривой». Если же
Первая делается довольно просто, с консоли компьютера, набирать лень – найдите утилиту dos2unix и с её помощью
где установлена СУБД MySQL, запускаем две команды: исправьте символы перевода строк с «0D 0A» на «0A»:
В результате, вначале будет создана БД aimsniff, а за-Если у вас нет под рукой dos2unix, возможно, вас вы-
тем в ней четыре таблицы: ручит команда tr.
buddies logs В остальном шаблон очень простой и маленький (менее
handles versions одного экрана), поэтому заполнить все параметры, в том
числе и относящиеся к БД: host, user, password, database,
Если у вас БД находится под паролем, то вторая ко- nodb, должно быть не сложно даже при отсутствии ком-
манда будет: ментариев.
После проделанных шагов AIM Sniff можно запускать
# mysql -D aimsniff -u root -p ↵ командой:
[пароль_root_в_СУБД_MySQL]< table.struct
Автоматический запуск
Изобретать велосипед не придётся, воспользуемся стан-
дартной системой многоуровневой загрузки, взятой из UNIX
System V и используемой в RedHat Linux, Fedora Core
и других дистрибутивах Linux. Для этого поместим файл
rc.aimsniff в /etc/rc.d/init.d, переименовав в aimsniff:
# cp /progi/aimsniff-0.9d/rc.aimsniff /etc/rc.d/init.d/aimsniff
# chmod +x /etc/rc.d/init.d/aimsniff
Второй момент решается средствами СУБД при помо-
щи следующей команды: Далее, в зависимости от того, где у вас находится про-
грамма и её конфигурационный файл, правим в нём стро-
mysql> GRANT ALL ON aimsniff.* TO aimsniff@hotsname ↵ ку запуска:
IDENTIFIED BY 'пароль_к_БД_aimsniff';
# ln -s ../init.d/aimsniff /etc/rc.d/rc3.d/S89aimsniff
# ln -s ../init.d/aimsniff /etc/rc.d/rc0.d/K10aimsniff
# ln -s ../init.d/aimsniff /etc/rc.d/rc6.d/K10aimsniff
42
администрирование
к БД, содержащий в себе, например, левое внешнее объ- WAS использует упрощенные теги «<? ?>» (вместо бо-
единение: лее правильных «<?php ?>»), поэтому необходимо их
включить. Для этого надо в /etc/php.ini прописать «short_
$request="SELECT logs.id,logs.ts,logs.ip,logs.fromHandle, open_tag = On».
logs.handle,logs.direction,logs.message,
localusers.name Конфигурационный файл .config.php. Если вы не може-
FROM logs LEFT JOIN localusers ON ↵ те сменить конфигурацию во вкладке «admin», а туда
logs.ip=localusers.ip LIMIT 100";
вы, наверно, обратитесь в первую очередь, чтобы про-
Вывод будет на один столбец больше (чем в скрипте). писать вашу БД, то, скорее всего, у вас проблемы с пра-
В «лишнем» столбце будет указываться имя локального вами доступа к файлу конфигурации. Решить эту про-
пользователя. блему можно, задав для файла группу apache (так как
Для того чтобы его увидеть на веб-странице, надо прос- от этого имени скорее всего работает ваш веб-сервер,
то дописать ещё одну строчку: а значит и все выполняемые им скрипты, т.е. в том числе
и WAS) и открыть для на неё разрешение на запись:
echo "<td>".$row[6]."</td>";
# chgrp apache .config.php
# chgrp g+w .config.php
Думаю, и так понятно где. Как вариант, количество стол-
бцов можно не увеличивать. Например, в графе «local IP» Вывод сообщений, содержащих кириллицу, может не ра-
можно выводить имена, если они известны, либо IP-адре- ботать так, как вы этого ожидаете, по той причине, что
са в противном случае. Наглядно данный вопрос реализу- все php-файлы в своём заголовке содержат другую ко-
ется следующим кодом: дировку.
Кому-то может показаться более удобным использова- Вопрос решается заменой кодировки на koi8-r (или
ние имён столбцов в том виде, как они выводятся из базы windows-1251 в зависимости от вашего случая) во всех
данных, вместо подсчёта номеров начиная с нуля, тогда вы- неправильно отображающих php-файлах. Так же
вод будет выглядеть так: в aimSniff.Cyr.pl есть пара строчек, отвечающих за пе-
рекодирование русских букв, которые без проблем на-
if ($row['name']) { echo "<td>".$row['name']."</td>"; } ходятся при просмотре «вручную», либо через поиск
else { echo "<td>".$row['ip']."</td>"; }
по ключевым словам «translation» или «cp1251». Навер-
Аналогичным образом можно заменить номера ICQ ни- ное, было бы разумнее везде использовать utf-8, но про-
ками из другой таблицы. Те же, кто хорошо знаком с язы- цесс перехода на эту кодировку, особенно на старых
ком SQL, могут попробовать решить эту задачу средства- серверах, идёт со скрипом и без энтузиазма.
ми СУБД.
Замечание 1. Так как изначально планировалось раз-
Web AIM Sniff (WAS) мещать все сообщения на всеобщее обозрение, может
На сайте проекта www.aimsniff.com вы также можете най- возникнуть ситуация, когда тот же начальник, решивший
ти Web AIM Sniff (WAS) – это небольшая программка, точ- организовать у себя эту систему, может оказаться под её
нее несколько скриптов на PHP, специально написанных просмотром, чего ему или ей, естественно, не хотелось бы.
для просмотра сообщений из БД, создаваемой програм- В этом случае можно поступить двумя способами. Первый,
мой AIM Sniff. Поставляются они отдельно, и для их рабо- демократический – смириться с тем, что правила для всех
ты необходимо, чтобы у вас уже были установлены язык должны быть едины. Второй, как всегда, – сделать исключе-
PHP с поддержкой MySQL и веб-сервер Apache. По сути ние. В этом случае можно сделать небольшую фильтрацию
это то, во что может развиться написание вами собствен- по «закрытым» номерам ICQ, сообщения которых не долж-
ного скрипта. Скачать WAS можно на том же сайте в раз- ны показываться. Дописав, например, к запросу:
деле Download. Однако на сегодня программа (во всех её
версиях) является «сырой» и рекомендовать её читателям WHERE fromHandle <>'1111112' AND handle<>'1111112'
мне не хотелось бы, поскольку она адаптирована для AIM,
пока ещё не понимает русских букв и не может даже отоб- При желании можно вообще сделать два скрипта, а в иде-
разить сообщения, хотя может строить красивые графи- але, можно усложнить БД, организовав некоторое подобие
ки. Shawn Grimes не очень оперативно, но реагирует на за- мандатной политики безопасности, присвоив каждому но-
мечания и присылаемые ему патчи, так что есть надежда, меру ICQ свой уровень в отдельной таблице. Аналогичные
что в будущем (может, и благодаря вашим усилиям) ситуа- уровни можно присвоить и просматривающим. Можно коп-
ция изменится, так что следите за сайтом и форумом. нуть ещё глубже и внести изменения в AIM Sniff, тогда со-
Если же кто-то захочет рискнуть и разобраться с про- общения даже в базу данных попадать не будут. Тут тоже
ектом WAS самостоятельно, вам пригодятся несколько со- всё зависит от вашей фантазии и возможностей, например,
ветов: для удобства можно даже какое-нибудь ключевое слово или
Скачивайте CVS-версию, там исправлена ошибка деле- последовательность, встречая которые в теле сообщения
ния на 0 при отсутствии сообщений в БД. разборщик не будет вносить сообщения в базу.
<Directory /var/www/html/was>
Order deny,allow
Deny from all
Allow from 192.168.0.0/255.255.255.0
</Directory>
где 192.168.0.0/255.255.255.0 – есть адреса локальной се- Рисунок 4. Cкриншот сайта www.aimsniff.org
ти, откуда доступ разрешён. Если диапазон внутренних ад-
ресов жёстко не определён или также нужен доступ сна- Спасибо за помощь в исправлении ошибок и координа-
ружи, скажем из других филиалов, то можно организовать цию моих мыслей: Рыжакову Глебу, tuziha и Realtex-sux.
парольную защиту. Для этого необходимо создать файл
с учётными записями пользователей, куда занести инфор- Литература, ссылки:
мацию, например, о пользователе user1: 1. PHProxy – http://sourceforge.net/projects/poxy.
2. Simple Browser Proxy – http://sourceforge.net/projects/sbp.
# htpasswd -c /путь/файл_с_учётными_записями user1 3. CGIProxy – http://www.jmarshall.com/tools/cgiproxy.
4. IServerd project (Александр В. Шутко) – http://iserverd.khstu.ru.
После запуска команды необходимо ввести пароль. 5. IRC, EMail, SMB, MSN, AIM, ICQ sniffer – http://www.ufasoft.com/
(Если файл с учётными записями уже имеется, ключ -c icqsnif.
следует опустить.) После, в конфигурационном файле веб- 6. EtherBoss Monitor (for ICQ Monitoring) – http://www.etherboss.
сервера пишем: com/icq.
7. Shadow IM Sniffer – ICQ Sniffer,MSN Sniffer, AOL Sniffer, Yahoo
<Directory /var/www/html/was> Sniffer – http://www.safety-lab.com/en/products/imsniffer.htm.
AuthType Basic
AuthName "Web AIM Shiff" 8. Spy ICQ: SpyArsenal ICQ Logger – http://www.spyarsenal.com/
AuthUserFile /путь/файл_с_учётными_записями spy-icq-sniffer.
Require user user1
AllowOverride None 9. Network Sniffer: Give-Me-Too – invisible net sniffer – http://www.
</Directory> spyarsenal.com/network-sniffer.
10. Проект Aim Sniff – http://www.aimsniff.com, http://sourceforge.net/
При желании можно совместить проверку IP-адреса, от- projects/aimsniff.
куда идёт обращение с авторизацией. После перезапуска 11. ICQ2000 сделай сам – http://icq2000cc.hobi.ru/index.html.
веб-сервера изменения должны вступить в силу. Сделать 12. ICQ library icqlib – http://kicq.sourceforge.net/icqlib.shtml.
это можно командой: 13. Miranda Instant Messenger – http://www.miranda-im.org.
14. Всё для &RQ – http://andrq.org.
# /etc/rc.d/init.d/httpd restart 15. Леон Аткинсон. MySQL. Библиотека профессионала.: Пер.
с англ. – М.: Издательский дом «Вильямс», 2002 г. (ISBN-5-
После чего логин и пароль от системы просмотра надо 8459-0291-6).
раздать всем сотрудникам, например, объявив на общем 16. Поль Дюбуа. MySQL, 2-е изд.: Пер. с англ. – М.: Издательский
собрании, тогда ничьи права не будут нарушены. дом «Вильямс», 2004 г. (ISBN-5-8459-0515-X)б
17. Компания MySQL AB. MySQL. Справочник по языку. : Пер.
Заключение с англ. – М.: Издательский дом «Вильямс», 2005 г. (ISBN 5-
Хотелось бы верить, что всё изложенное выше будет ис- 8459-0804-3).
пользоваться только с благими намерениями, а моральные 18. Гмурман В.Е. Теория вероятностей и математическая статис-
качества и авторитет системного администратора останут- тика. Учеб. пособие для вузов. Изд 7-е, стер. – М.:Высш. шк.,
ся на высоте. Руководители сделают правильные выводы 2000 г. (ISBN 5-06-003464-X).
о том, разрешать пользоваться ICQ или нет, а жизнь поль- 19. phpMyAdmin MySQL Database Administration Tool – http://www.
зователей в новом году станет только лучше. phpmyadmin.net.
44
безопасность
Сергей Яремчук
Тяжело представить сегодняшний бизнес без электронной почты, которая позволяет
оперативно обмениваться информацией с минимальными затратами. В то же время
в ящик пользователя помимо полезных писем попадает спам, а почта часто используется
для распространения компьютерных вирусов.
С
егодня в качестве платформы роятно, благодаря надежности и своим ционные файлы и сценарии обновле-
для почтового сервера доволь- возможностям MailScanner заслужил ния антивирусных баз для большинс-
но часто используются различ- похвалу и стал стандартным решени- тва из них. Он совместим с наиболее
ные варианты UNIX-систем. Обладая ем, предназначенным для организа- популярными МТА – Mail Transfer Agent
большей устойчивостью и защищен- ции защиты почты на многих серверах (Postfix, Sendmail, Exim, Qmail, ZMailer).
ностью, они привлекают внимание ад- в Европе и Великобритании. Его со- Хотя в принципе этот сканер может
министраторов. Но не секрет, что вза- здатель Julian Field за свою разработ- быть легко встроен в любую почто-
мен требуются знания, опыт и время, ку стал в 2004 году обладателем Open вую систему независимо от использу-
необходимое для установки и настрой- Source Award от UKUUG (UK UNIX and емого в ней программного обеспече-
ки нужного сервиса. Open Systems User Group). Эта награ- ния. Кроме того, он очень прост в ус-
Проект, начатый в 2000 году после да ежегодно вручается наиболее вы- тановке и для своей работы практичес-
5 лет работы из простого антивирус- дающимся деятелям мира бесплатно- ки не требует переконфигурации поч-
ного сканера, превратился в мощную го и открытого программного обеспе- товых серверов, а при использовании
систему, защищающую тысячи ком- чения. А различные версии продукта Sendmail его появление в системе пол-
пьютеров от вирусов и спама. Напи- с сайта проекта были скачаны более ностью прозрачно.
сан MailScanner на Perl, распростра- полумиллиона раз. Своего антивируса MailScanner
няется по лицензии GNU GPL. Модель не имеет, как не является обязатель-
разработки все же немного отличает- Возможности MailScanner ным к употреблению любая програм-
ся от других подобных проектов. Ав- В отличие от многих коммерческих ма для защиты от спама. Хотя для эф-
тор сохраняет полный контроль над ис- решений, поддерживающих обыч- фективной идентификации спама мо-
ходным кодом, другие пользователи но 2-3 антивируса, MailScanner спо- жет использоваться SpamAssassin
не имеют доступа к архиву CVS. Объ- собен работать более чем с 20 анти- (http://www.spamassassin.org), имею-
ясняется это большим значением, ко- вирусами (Sophos, McAfee, Command, щий развитую систему контекстно-
торое придается электронной почте, Kaspersky, Inoculate, Inoculan, Nod32, го лингвистического анализа, систе-
а использование непротестированно- F-Secure, F-Prot, Panda, RAV, AntiVir, му обучения и самообучения. При же-
го кода может навредить как пользо- Clam, BitDefender, Vscan и др.). В ком- лании его можно заменить или допол-
вателям, так и репутации проекта. Ве- плекте имеются готовые конфигура- нить любым другим внешним скане-
46
безопасность
ле проведения всех проверок оно помещается уже в дру- держит ClamAV и SpamAssassin, если планируется их ис-
гую папку (Outgoing Queue Dir), откуда забирается МТА пользование, то лучше воспользоваться готовым комплек-
и отсылается по назначению. Отличие здесь в работе ис- том install-Clam-SA.tar.gz, который можно взять со страницы
пользуемых МТА. Например, структура sendmail позволяет Downloads раздел Other stuff. Установка из rpm- и tar-архи-
MailScanner без перекомпиляции и изменений в конфигу- вов, в том числе и пакета install-Clam-SA, довольно проста.
рационных файлах принять сообщение от одного процесса, Разработчики избавили администраторов от поиска паке-
а затем после проверки запустить второй процесс. тов для удовлетворения зависимостей, а всего требуется
Все необходимые подготовки могут быть сделаны пос- около 30 Perl-модулей и программ, включив все необходи-
редством редактирования команд запуска sendmail. Не- мое в единый архив. После распаковки требуется ввести
сколько другая ситуация с Exim, в котором прием и отправ- лишь ./install.sh. Скрипт произведет анализ системы и ус-
ка сообщений являются полностью независимыми процес- тановит все компоненты в каталог /opt/MailScanner. Конеч-
сами. Все вроде бы хорошо, но вот указать Exim на то, что- но же, этот путь можно изменить, покопавшись в скриптах,
бы он использовал для приема/передачи отдельные оче- или просто перенести каталог в другое место, изменив за-
реди, проходящие через MailScanner, нет возможности. тем путь в стартовых скриптах. В случае с архивом, содер-
Поэтому приходится использовать два отдельных процес- жащим MailScanner, при установке не должно быть сооб-
са Exim, каждый со своим собственным конфигурацион- щений об ошибке, а скрипт внутри install-Clam сам предуп-
ным файлом. реждает, когда ошибки можно игнорировать.
При этом процесс-получатель почты не должен иметь
Do not worry about warnings or errors from the next 3 commands
возможности отправлять сообщение. При компилирова- ./install.sh: line 192: groupadd: command not found
нии Exim-получателя местонахождение конфигурационно- ./install.sh: line 193: useradd: command not found
You can start worrying about errors again now
го файла указывается на этапе конфигурирования. А за-
пуском Exim-отправителя занимается MailScanner, который
и передаст ему необходимые параметры. Конфигурационный файл
С Postfix легче всего, так как использование независи- MailScanner.conf
мых резидентных модулей позволяет одной копией серве- MailScanner является гибким инструментом, обладающим
ра управлять поступающей и уходящей SMTP почтой. Итак, большим количеством возможностей. Все доступные па-
письмо положено в папку, предназначенную для входящих раметры настраиваются в одном конфигурационном фай-
сообщений, после чего проходит несколько тестов, некото- ле /opt/MailScanner/etc/MailScanner.conf.
рые из них являются необязательными и могут отключать- Строение файла стандартно для UNIX-программ. На-
ся. Тест RBL (Real time Blackhole List) – производится срав- стройки указываются в виде строк option = value, знак ре-
нение адреса отправителя с известными спамерскими ад- шетки (#) указывает на комментарий, пустые строки и про-
ресами, если письмо отправлено с такого адреса, то оно белы игнорируются. В значениях можно использовать лю-
отбрасывается. Стоит отметить, что тест RBL в зависи- бые переменные оболочки вроде $HOSTNAME. Для удобс-
мости от настроек может производиться на трех уровнях тва восприятия файл разбит на несколько секций, все па-
со своими характеристиками: MTA (письмо отбрасывает- раметры можно не трогать. В принципе и в конфигурации
ся), MailScanner (возможен выбор – удалить, пропустить, за- по умолчанию MailScanner способен защитить систему. Кро-
архивировать и т. д.) и SpamAssassin (наиболее тонкий, но ме того, можно добавить и свои параметры, подправив файл
в то же время ресурсоемкий). Далее оценкой письма зани- CustomConfig.pm, лежащий в подкаталоге lib.
мается SpamAssassin, после чего MCP, тест на вирусы и на-
конец анализ типа, имени присоединенного файла и поиск # Main configuration file for the MailScanner E-Mail
# Virus Scanner
атак, направленных на почтовых клиентов. После прохож-
дения тестов в тело письма могут добавляться специфи- # Здесь указывается каталог, в котором содержатся все
# сообщения, на нужном языке. К сожалению, русского нет,
ческие метки, вроде X-Spam-Status: yes. Далее сообщение # этим придется заниматься самому
попадает в модуль принятия решений. Если все тесты прой- %report-dir% = /opt/MailScanner/etc/reports/en
дены, оно ложится в папку для исходящих писем и отправ- # Ниже идут стандартные каталоги, в которых содержатся
ляется получателю. Письмо, содержащее вирус или спам, # настройки и правила, если вы выбрали другой каталог,
# для запуска MailScanner все их необходимо переопределить
в зависимости от настроек удаляется либо направляется %etc-dir% = /opt/MailScanner/etc
в карантин. Далее вирус удаляется, в сообщение добавля-
# Здесь лежат правила
ется оповещение о вирусе, оповещаются также локальный %rules-dir% = /opt/MailScanner/etc/rules
администратор и отправитель письма.
# Настройки Message Content Protection
%mcp-dir% = /opt/MailScanner/etc/mcp
Установка MailScanner # Название организации короткое, длинное (без пробелов)
Про установку различных МТА журнал писал неоднократ- # и веб-сайт
но, поэтому останавливаться на этом подробно не бу- %org-name% = yoursite
%org-long-name% = Your Organisation Name Here
ду. На странице закачки можно найти готовые пакеты %web-site% = www.your-organisation.com
для RedHat, Fedora, Mandriva, SuSE, Debian, Solaris,
# System settings
FreeBSD. Если вашего дистрибутива в списке нет, то вос- # Количество одновременных процессов MailScanner.
пользуйтесь tar-архивом, содержащим исходные тексты # При мощном процессоре и большой нагрузке можно
# увеличить эту цифру. Один процесс занимает около 20 Мб
MailScanner-install-4.45.4-1.tar.gz. Базовый комплект не со- Max Children = 5
# Время (в секундах), через которое будет производиться # Опция ниже включает проверку на вирусы и спам для всех
# проверка папок на наличие новых сообщений # сообщений, установка в «no» приведет к тому, что почта
Queue Scan Interval = 6 # проверяться не будет. Можно использовать файл с правилами,
# где указать, какие сообщения сканировать, а какие нет
# Папка, в которую будут помещаться входящие сообщения. # checked *at all*, and so any viruses or other problems
# Можно задать имя каталога – /var/spool/mqueue.in # will be ignored.
# Шаблон – /var/spool/mqueue.in/* # Если используется файл правил
# Имя файла, в котором описаны каталоги # /etc/MailScanner/rules/scan.messages.rules,
# /opt/MailScanner/etc/mqueue.in.list.conf # то используем строку:
Incoming Queue Dir = /var/spool/postfix/hold # Scan Messages = %rules-dir%/scan.messages.rules.
# Иначе включаем проверку для всей почты
# Каталог, куда будут складываться письма, прошедшие Scan Messages = yes
# проверку (исходящий)
Outgoing Queue Dir = /var/spool/postfix/incoming # Максимально разрешенное количество вложений в одном
# письме. Некоторые почтовые системы сохраняют информацию
# Каталог, в котором почта перед проверкой будет # при переписке в виде присоединения к письму, их распаковка
# распаковываться. При достаточном количестве ОЗУ можно # занимает много времени
# использовать tmpfs или ramdisk Maximum Attachments Per Message = 20
Incoming Work Dir = /var/spool/MailScanner/incoming
# Проверка TNEF (Microsoft’s Transport Neutral Encapsulaton
# Каталог для хранения зараженных сообщений (карантин) # Format) при помощи внешней программы.
Quarantine Dir = /var/spool/MailScanner/quarantine # Некоторые антивирусы (Sophos, McAfee) самостоятельно
# проверяют такие вложения, в этом случае ставим «no».
# Местонахождение pid-файла Expand TNEF = yes
PID file = /opt/MailScanner/var/MailScanner.pid
# Некоторые версии Microsoft Outlook генерируют неправильный
# Во избежание утечки ресурсов MailScanner периодически # TNEF, который используемый модуль проверить не может.
# перезапускается. Здесь указывается время в секундах # Здесь можно запретить пропуск сообщений с таким
Restart Every = 14400 # присоединением. Как вариант можно использовать файл правил
Deliver Unparsable TNEF = no
# Установка МТА – postfix, sendmail, exim или zmailer
MTA = postfix # Команда запуска декодера TNEF, как вариант указывается
# ключевое слово «internal», подключающее Perl-модуль,
# Ниже описываются местонахождение и параметры запуска # выполняющий ту же работу. Можно использовать файл правил
# второй копии MTA. Postfix и Qmail здесь не настраиваются #TNEF Expander = internal
# (см.выше). TNEF Expander = /opt/MailScanner/bin/tnef --
# Sendmail = /usr/lib/sendmail maxsize=100000000
# Sendmail2 используется для запуска Exim
# For Exim users: Sendmail2 = /usr/sbin/exim ↵ # Максимальное время для работы с одним сообщением TNEF
-C /etc/exim/exim_send.conf # (в секундах)
# For sendmail users: Sendmail2 = /usr/lib/sendmail TNEF Timeout = 120
# Sendmail2 = /usr/sbin/sendmail -C /etc/exim/exim_send.conf
# Sendmail2 = /usr/lib/sendmail # Месторасположение команды «file», позволяющей определить
# тип файла. Если не планируется проверка типа файлов,
# # можно отключить
# Incoming Work Dir Settings File Command = /usr/bin/file
# File Timeout = 20
# Ниже указываются настройки для каталога входящих
# сообщений, в большинстве случаев трогать их не надо Unrar Command = /usr/bin/unrar
Unrar Timeout = 50
# Здесь можно указать пользователя отличного
# от «Run As User» и «Run As Group». # Максимальный размер сообщений, включая заголовки.
# Эта опция может понадобиться при работе с некоторыми # Установка в 0 снимает ограничения. Можно использовать
# антивирусами # файл правил и использовать возможность принудительного
Incoming Work User = # ограничения размера сообщения более тонко
Incoming Work Group = Maximum Message Size = 0
# Права доступа к файлам, если не используется внешний # Максимальный размер в байтах для вложений.
# антивирус, то ставим 0600, иначе заносим пользователя, # Установка в 0 запретит вложения, -1 снимает ограничения.
# от имени которого работает антивирус, в группу, # Более тонко настройки можно указать в файле правил
# в нашем случае postfix и ставим 0640. Maximum Attachment Size = -1
# Хотя возможен вариант и с 0644
Incoming Work Permissions = 0640 # Минимальный размер вложений, опция бывает полезна
# при удалении очищенных антивирусом файлов, можно
# # использовать файл правил
# Quarantine and Archive Settings Minimum Attachment Size = -1
#
# То же что и выше, только для файлов, которые попадут # Максимальная глубина распаковки архивов zip,
# в карантин. Если захотите дать к ним доступ при помощи # для проверки имен и типов файлов
# внешней программы, например, веб-интерфейс, Maximum Archive Depth = 2
# то переопределяем их
Quarantine User = # Обнаружение архивов не только по имени,
Quarantine Group = # но и по содержимому, можно использовать файл правил
Quarantine Permissions = 0600 Find Archives By Content = yes
48
безопасность
# для этого его необходимо описать в файле # Разрешение соответствующих тегов в сообщении
# %etc-dir%/virus.scanners.conf, в который необходимо # yes => Разрешает
# занести 3 позиции: имя сканера, сценарий для запуска # no => запрещает
# и месторасположение (в некоторых системах путь придется # disarm => Разрешает, но нейтрализует тег
# подправить). Например, для СlamAV строка в этом файле Allow IFrame Tags = disarm
# выглядит так: Allow Form Tags = disarm
# clamav /opt/MailScanner/lib/clamav-wrapper /usr/local Allow Script Tags = disarm
# Установка в none отключает проверку. Allow Object Codebase Tags = disarm
# Если планируется использование сразу нескольких
# антивирусов, они перечисляются через пробел # То же для <Img>, но только два действия yes и disarm
# Virus Scanners = drweb kaspersky mcafee Allow WebBugs = disarm
#
Virus Scanners = clamav # Эта опция перекликается с «Allow ... Tags», т.е. при
Virus Scanner Timeout = 300 # разрешении тега сообщение может быть преобразовано
# из HTML в текст
# Удаление вируса с зараженного файла, очищенное сообщение Convert HTML To Text = no
# присоединяется как файл «VirusWarning.txt».
# Можно использовать файл правил. # Проверка вложений.
Deliver Disinfected Files = yes # Указываем файл с правилами, содержащий описание типов
# и имен файлов и производимым действием при обнаружении
# Строка, которую ищет MailScanner на выходе антивируса. # определенного типа и имени
# При обнаружении этих строк отправитель не предупреждается, # allow/deny/deny+delete
# вирус очищается, а дойдет ли письмо до получателя – зависит Filename Rules = %etc-dir%/filename.rules.conf
# от «Still Deliver Silent Viruses». Filetype Rules = %etc-dir%/filetype.rules.conf
# Для обозначения используются 5 ключевых слов:
# HTML-IFrame, HTML-Codebase, HTML-Script, HTML-Form #
# и Zip-Password. # Reports and Responses
# Опция All-Viruses соответствует поиску всех вариантов. # Действия с потенциально опасными объектами, во многих
# Можно использовать файл правил # случаях возможно использование файла правил.
Silent Viruses = All-Viruses # Использование карантина для зараженных сообщений
Quarantine Infections = yes
# Доставлять ли сообщение получателю после очистки? Quarantine Silent Viruses = no
# Можно использовать файл правил
Still Deliver Silent Viruses = no # Копии сообщений с модифицированным HTML
# (вариант файл правил)
# Опция противоположная предыдущей, при обнаружении Quarantine Modified Body = no
# указанных строк все участники получат предупреждения
Non-Forging Viruses = Joke/ OF97/ WM97/ W97M/ eicar # Сохранение всего сообщения или только зараженной части
Quarantine Whole Message = no
# Запрет отправки зашифрованных сообщений.
# Можно использовать файл правил # Сохранение в оригинальном или удобочитаемом виде
Block Encrypted Messages = no Quarantine Whole Messages As Queue Files = no
# Обычно в легальных письмах редко используется IP-адрес, # Включение имени сканера в отчеты
# фишеры же прибегают к этому способу для обмана. Запрещаем Include Scanner Name In Reports = yes
Also Find Numeric Phishing = yes
# Добавление дополнительных заголовков и конвертов к
# Вставка предупреждения о подмене # обработанной почте (возможно использование файла правил)
Highlight Phishing Fraud = yes Mail Header = X-%org-name%-MailScanner:
Spam Header = X-%org-name%-MailScanner-SpamCheck:
# Список сайтов, которые игнорируются при поиске фишеров Spam Score Header = X-%org-name%-MailScanner-SpamScore:
Phishing Safe Sites File = %etc-dir%/phishing.safe.sites.conf Information Header = X-%org-name%-MailScanner-Information:
# Тесты MailScanner могут добавлять свои заголовки в # То же, что и предыдущее, но только при превышении
# сообщение. Здесь указывается, как поступать с такими # значения «High SpamAssassin Score»
# заголовками. Варианты: «append», «add или «replace» High Scoring Spam Modify Subject = yes
Multiple Headers = append High Scoring Spam Subject Text = {Spam?}
# Сообщение о блокировании файла по имени или типу # Выбор используемого spam blacklists (RBLs)
Notify Senders Of Blocked Filenames Or Filetypes = yes # Смотри файл указанный в «Spam List Definitions»
# И всего прочего Spam List = ORDB-RBL SBL+XBL SORBS-DNSBL CBL RSL ↵
Notify Senders Of Other Blocked Content = yes DSBL spamcop
Never Notify Senders Of Precedence = list bulk Spam Domain List = RFC-IGNORANT-DSN
50
безопасность
# Число одинаковых сообщений, начиная с которого # Настройка параметров журналирования. Включать большую
# они будут рассматриваться как спам, # часть лучше только при отладке. Следующая опция
Spam Lists To Be Spam = 1 # определяет взаимодействие с syslog
Spam Lists To Reach High Score = 3 Syslog Facility = mail
Spam List Timeout = 10 Log Speed = no
Max Spam List Timeouts = 7 Log Spam = no
Spam List Timeouts History = 10 Log Non Spam = no
Log Permitted Filenames = no
# «Белый список». Сообщения, принятые с попавших в этот Log Permitted Filetypes = no
# список узлов, не будут рассматриваться как спам Log Silent Viruses = no
#Is Definitely Not Spam = no Log Dangerous HTML Tags = no
Is Definitely Not Spam = %rules-dir%/spam.whitelist.rules
# Настройка некоторых параметров SpamAssassin.
# «Черный список» узлов спамеров. Эта величина # Может понадобиться, если SpamAssassin установлен в другой
# переопределяется значением «Is Definitely Not Spam». # каталог или процесс не может получить доступ к файлам.
# При no все, не вошедшие в 1 список, являются # Параметры понятны, приводиться не будут
# потенциальными спамерами
# Is Definitely Spam = %rules-dir%/spam.blacklist.rules # Настройки MCP
Is Definitely Spam = no MCP Checks = no
# Что проверяется первым: spam или mcp
Definite Spam Is High Scoring = no First Check = mcp
# Если количество получателей превышает число, то «белый # Ниже идут опции, значение которых аналогично таковым
# список» игнорируется, и письмо обрабатывается обычным # при проверке на спам, приводиться они не будут
# образом
Ignore Spam Whitelist If Recipients Exceed = 20
# Использование SpamAssassin.
Это не все опции, которые можно настроить при помо-
# Можно применить правила и обработать письма более тонко щи файла конфигурации. Среди оставшихся: работа с LDAP,
Use SpamAssassin = yes запуск процесса в фоне, обработка поля «To:», в случае ког-
# Если письмо превышает указанный размер (в байтах), да сообщение адресовано нескольким получателям, фор-
# SpamAssassin просматривать его не будет. матирование заголовков, отладка и прочее.
# Письма спамеров редко бывают большими, а рисунки и др.
# определяются другими опциями
Max SpamAssassin Size = 30000 Настройка Рostfix
# Переопределение значения «required_hits», если оценка Установка Postfix хорошо описана в [2] , если он уже настро-
# достигает его – это спам ен и нормально работает, осталось сделать немного. Как
Required SpamAssassin Score = 6
High SpamAssassin Score = 10 говорилось выше, Рostfix удобен тем, что одна копия про-
# Включение автоматического «белого списка», функции доступной
цесса позволяет управлять как входящей, так и исходящей
# в SpamAssassin, начиная с версии 3.0. Подробности в [3] почтой. Но в принципе можно использовать и две разных
SpamAssassin Auto Whitelist = no копии со своими конфигурационными файлами, применяя
SpamAssassin Prefs File = %etc-dir%/spam.assassin.prefs.conf
SpamAssassin Timeout = 75 схему работы Exim. Мы используем первый вариант.
Max SpamAssassin Timeouts = 10 В конфигурационном файле /etc/postfix/main.cf раском-
SpamAssassin Timeouts History = 30
ментируем следующую строку:
# Проверять ли сообщение, если оно находится в спам-списке
Check SpamAssassin If On Spam List = no
header_checks = regexp:/etc/postfix/header_checks
# Включение оценки спама в сообщение
Spam Score = yes
Создаем /etc/postfix/header_checks и добавляем следу-
# Перестройка Bayesian-статистики. ющую строку:
# 0 отключает такую возможность. Например, перестройка
# раз в сутки
Rebuild Bayes Every = 86400 /^Received:/ HOLD
# Отключение проверки на время перестройки
Wait During Bayes Rebuild = no После этого Рostfix будет складывать поступающие со-
# В этом разделе описываются параметры работы Custom общения в /var/spool/postfix/hold.
# Spam Scanner, написанного самим пользователем. Запускаем:
# Подробности в
# lib/MailScanner/CustomFunctions/GenericSpamScanner.pm
Use Custom Spam Scanner = no # /etc/init.d/postfix start
# /opt/MailScanner/bin/check_mailscanner
# Что делаем со спамом?
Spam Actions = deliver Если права доступа к каталогам установлены правиль-
High Scoring Spam Actions = deliver
Non Spam Actions = deliver но, то система будет работать. Если что-то не получается,
# Файлы с сообщениями, выдаваемыми пользователю
журналы вам в помощь.
Sender Spam Report = ↵
%report-dir%/sender.spam.report.txt Литература, ссылки:
Sender Spam List Report = ↵
%report-dir%/sender.spam.rbl.report.txt 1. Сайт проекта MailScanner – http://www.mailscanner.info.
Sender SpamAssassin Report = ↵ 2. Бешков А. Почтовая система для среднего и малого офи-
%report-dir%/sender.spam.sa.report.txt
Inline Spam Warning = ↵ са. – Журнал «Системный Администратор», №5, май 2003 г. –
%report-dir%/inline.spam.warning.txt 46-54 с.
Recipient Spam Report = ↵
%report-dir%/recipient.spam.report.txt 3. Супрунов С. Профессия – убивать спам. Все, что вы хотели
Enable Spam Bounce = %rules-dir%/bounce.rules узнать о тонкостях настройки Spamassassin. – Журнал «Сис-
Bounce Spam As Attachment = no
темный Администратор», №10, октябрь 2005 г. – 10-17 с.
Малик Абдугалыев
Обычно для тех, кто впервые начинает настройку firewall, принципы работы трансляции
соединений становятся одним из наиболее сложных моментов для понимания, поэтому
основной упор мы сделали на описании этих принципов на примере типовой схемы.
52
безопасность
ПК – корпус, материнская плата, блок питания, 3.5” привод
для гибких дисков, которые с виду такие же, как у обычно-
го ПК. Жёсткого диска у этого устройства, к счастью, нет,
а в качестве долговременной памяти используется флеш-
память, которая размещёна на отдельной PCI-плате расши-
рения вместе с другими схемами, реализующими специфич-
ные функции, такие как консольный порт и интерфейс пере-
крытия сбоев (Failover), который позволяет дублировать ос-
новной firewall резервным в случае выхода его из строя.
Для интереса приведу основные технические характе-
Рисунок 1. Схема сети
ристики устройства, используемого в описанном случае –
768 Мб RAM, CPU Pentium III 848 МГц, Flash 16 Мб, 4 сете- На третий интерфейс (www) с адресом 192.168.255.5:
вых адаптера 10/100. 255.255.255.252, подключен веб-сервер, имеющий адрес
Операционная система, по словам представителей 192.168.255.6:255.255.255.252.
компании Cisco, специально разработана для данных за-
дач, что позволяет устройству обрабатывать намного боль- Настройка firewall
ший поток данных, нежели обычные операционные систе- После того как схема сети рассмотрена, переходим не-
мы для ПК. Версия операционной системы в конкретном посредственно к настройке firewall. Подробно будут опи-
случае – 6.3(4). саны только моменты, непосредственно касающиеся на-
Интерфейс командной строки весьма схож с интерфей- шей схемы.
сом маршрутизаторов Cisco, но имеет некоторые недостат-
ки, впрочем, не настолько существенные, чтобы их отде- Общие настройки
льно описывать. Первоначальная настройка должна производиться через
консольный порт. Затем можно будет управлять firewall
Схема сети удалённо по протоколу ssh.
Простая типовая схема, которая довольно часто использу- Я полагаю, что нет необходимости подробно объяс-
ется в небольших сетях (см. рис. 1). нять использование базовых команд, таких как пере-
Firewall одним интерфейсом подключен к интернет-про- ход в привилегированный режим (enable), просмотр кон-
вайдеру. фигурации (show run), переход в режим конфигуриро-
Ко второму интерфейсу подключен сервер, за которым вания (configure terminal), смена имени хоста (hostname)
находится локальная сеть. и домена (domain-name), установка паролей (passwd
На третий интерфейc отдельно вынесен веб-сервер. и enable password) и т. п.
Это сделано из соображений безопасности, т.к. веб-сервер Приведу лишь простой пример:
потенциально более уязвим, нежели другие наши службы,
и поэтому должен быть отделён от остальной сети, чтобы pix> enable
в случае его взлома уменьшить опасность для других ком- Password: *******
пьютеров нашей сети. Кроме взлома сервера, нарушить
pix# configure terminal
работу сети может и большое количество запросов к нему, pix(config)# hostname pix-gtw
в этом случае отделение веб-сервера позволит локализо- pix-gtw(config)# domain-name my.domain.tld
pix-gtw(config)# clock timezone KGT +6
вать подобную проблему. pix-gtw(config)# clock set 11:59:00 09 dec 2005
Зачастую для обозначения отдельного сегмента сети, pix-gtw(config)# [Ctrl - Z]
pix-gtw# write mem
предназначенного для размещения общедоступных сер- pix-gtw# quit
висов, применяется термин DMZ (ДМЗ – демилитаризо-
ванная зона). Это название используется и в документа- При смене имени или домена, например командой:
ции к firewall. В нашем же случае использовано название
«www», которое является более простым и наглядным для # domain-name my.domain.tld
описываемой схемы.
На внешнем интерфейсе (outside) firewall имеется один появится следующее предупреждение:
реальный IP-адрес, например 1.2.3.246:255.255.255.252,
%Key pair with hostname my.domain.tld will be invalid
полученный от провайдера. Адрес со стороны провайдера
на нашем соединении – 1.2.3.245, для нас он будет марш- Дело в том, что имя и домен используются при гене-
рутом по умолчанию. рировании RSA-ключей, которые необходимы для цифро-
На внутреннем интерфейсе (inside) с адресом из при- вых сертификатов и подписей, в том числе для подключе-
ватной подсети 192.168.255.1:255.255.255.252. К нему под- ние по ssh. В этом случае следует перегенерировать и со-
ключен сервер с адресом 192.168.255.2:255.255.255.252. хранить новые ключи, возможно, потребуется сначала уда-
На второй интерфейс сервера подключена локальная сеть лить старые:
с адресами из сети 10.0.1.0:255.255.255.0.
Доменное имя, используемое в нашей сети, определим pix-gtw(config)# ca zeroize rsa
pix-gtw(config)# ca generate rsa key 512
как «my.domain.tld». pix-gtw(config)# ca save all
Сохранить текущую конфигурацию в долговременную Сам список создаётся примерно как и на маршрутиза-
память можно командой: торах Cisco, например:
54
безопасность
ssh pix@192.168.255.1 ного диапазона глобальных адресов (пула). Количество ло-
кальных адресов, которые должны транслироваться, долж-
Доступ к firewall нужно ограничить минимально необ- но равняться количеству глобальных адресов.
ходимым количеством хостов. Сделать это можно коман- Данные о соответствии локальных и глобальных адре-
дой ssh: сов хранятся в таблице трансляций. Идентификация тра-
фика производится по соответствию локального и глобаль-
ssh 4.5.6.100 255.255.255.255 outside ного адресов.
ssh 192.168.255.2 255.255.255.255 inside
PAT позволяет транслировать локальные адреса в один
Маска и интерфейс являются необязательными пара- глобальный, случайным образом назначая для каждого со-
метрами. единения новый порт на глобальном интерфейсе. Иденти-
Кроме этого доступ к ssh-порту должен быть открыт фикация трафика производится по соответствию адресов
и в соответствующих списках доступа. и портов. Статический PAT позволяет задать постоянное со-
ответствие локальных и глобальных адресов и портов.
Сохранение логов на сервере Механизм работы трансляций достаточно прост – в па-
Для удобства использования и хранения системных сооб- кете, полученном от локального хоста, адрес отправителя
щений firewall лучше передать их на syslog-сервер. К при- меняется на глобальный, а в случае использования дина-
меру, передаём логи на хост 192.168.255.2 с идентификато- мического PAT, также меняется (на случайный) номер пор-
ром LOCAL7 (по нумерации firewall – 23), с уровнем warnings та отправителя. В таком виде пакет и отправляется полу-
и выше (critical, alerts, emergencies), а также с идентифика- чателю во внешней сети, который отсылает ответный па-
тором устройства «pix-gtw»: кет на указанные адрес и номер порта отправителя. Полу-
чив пакет из внешней сети, firewall ищет в таблице трансля-
logging on ций соответствующую запись и, если таковая имеется, мо-
logging trap warnings
logging facility 23 дифицирует полученный пакет, заменяя глобальный адрес
logging device-id string pix-gtw получателя локальным и в случае динамического PAT так-
logging host inside 192.168.255.2
же и номер порта получателя, после этого пакет отсылает-
На указанном хосте должен быть доступен по сети ся локальному хосту.
syslog-демон, а в конфигурации демона должна быть за- Практически все прикладные программы могут рабо-
пись для логов с нашим идентификатором, указывающая тать через NAT без каких-либо затруднений, т.к. произво-
на существующий файл: дится только замена локального адреса, в случае же при-
менения PAT не будут работать некоторые приложения, ко-
local7.* /var/log/pix.log торые, например, используют разные порты для входяще-
го и исходящего трафика.
Эти логи будут очень полезны при настройке и отладке Один из особых вариантов NAT – исключение из NAT
конфигурации firewall. (NAT Exemption). Исключение из NAT настраивается ко-
Не забудьте настроить архивацию этих логов, чтобы они мандой:
не занимали слишком много места.
nat 0 access-list
NAT и PAT
Трансляции предназначены для того, чтобы дать возмож- и отключает трансляцию для адресов, указанных в спис-
ность локальным хостам обращаться к хостам во внешнем ке доступа, т.е. обмен идёт без какой-либо трансляции во-
мире. Кроме этого, трансляции скрывают адреса локальных обще.
хостов, что положительно сказывается на безопасности.
В Cisco PIX используются два вида трансляций Network Зависимость трансляций от уровней
Address Translation (NAT) и Port Address Translation (PAT), безопасности интерфейсов
которые, в свою очередь могут быть статическими или ди- Как уже говорилось выше, способ настройки трансляции за-
намическими. висит от уровня безопасности интерфейсов – для настрой-
NAT позволяет транслировать каждый локальный адрес ки доступа из более безопасной сети в менее безопасную
в соответствующий ему глобальный один к одному. При ста- нужно использовать команду nat, а для доступа из менее
тическом NAT это соответствие задаётся жёстко. При дина- безопасной сети в более безопасную – static.
мическом NAT используются свободные адреса из задан- Для просмотра уровней безопасности можно восполь-
Таблица соответствий зоваться командой:
Откуда Куда Команда
show nameif
inside outside nat
inside www nat
которая также покажет и имена интерфейсов:
www outside nat
www inside static nameif ethernet0 outside security0
nameif ethernet1 inside security100
outside inside static
nameif ethernet2 www security20
outside www static nameif ethernet3 not_used security25
56
безопасность
Теперь при подключении к серверу извне нужно будет access-list 110 permit ip 10.0.1.0 255.255.255.0 ↵
host 192.168.255.6
указать номер порта. Например, для клиента из пакета access-list 110 permit ip host 192.168.255.2 ↵
openssh команда будет выглядеть вот так: host 192.168.255.6
ssh -p 222 malik@1.2.3.246 Конечно же, firewall должен иметь маршрут для адре-
сов локальной сети:
В то время как подключение к самому firewall будет про-
изводиться как обычно: route inside 10.0.1.0 255.255.255.0 192.168.255.2
Дмитрий Острецов
Информационные системы, на которые мы смотрим через окно браузера, хороши всем,
кроме одного, – в них трудно организовать печать документов, пригодных для официального
документооборота. Предлагаем вам один из способов преодоления этой трудности.
В
этой статье я хочу поделиться ния печатных отчетов. Однако созда- В чем заключаются
с вами опытом организации пе- ние информационной системы на ба- проблемы печати
чати документов в корпоратив- зе веб-технологий позволяет обой- в системе, основанной
ной информационной системе, постро- тись без этих средств – работа с фор- на веб?
енной на основе веб-технологий. мами и БД средствами CGI-скриптов Мы хотим распечатывать именно до-
Для чего нужны корпоративные на PHP или Perl реализуется без про- кументы, поэтому просто печать стра-
информационные системы, понятно блем. При этом мы получаем про- ницы из браузера не годится – сверху
всем. Большие и сложные обычно по- грамму, не требующую для своей ра- и снизу печатается служебная инфор-
купаются у сторонних производите- боты у клиента ничего, кроме браузе- мация (номера страниц, URL и т. д.), от-
лей, но не о них речь. Нередко подоб- ра, и позволяющую организовать уда- ключение этих полей представляет со-
ные системы создаются силами ИТ-от- ленный доступ. бой задачу, не имеющую универсаль-
делов. Для этого обычно применяет- И только одна проблема, элемен- ного решения. Кроме того, документы
ся некий инструментарий, объединя- тарная для MS Access, не имеет адек- бывают книжной и альбомной ориен-
ющий в себе средства создания эк- ватного решения для веб-программис- тации, а способа указать, как должен
ранных форм, работы с БД и созда- та. Это печать документов. быть ориентирован HTML-документ,
58
web
при печати, нет. (Вернее, в стандарте есть способ это ука-
зать [2], но вот когда это будет реализовано в браузерах,
не известно.)
Этих проблем лишен формат PDF. Но тут встает во
весь рост вопрос формирования документа. Библиоте-
ки для работы с PDF существуют, но сформировать кра-
сивый документ с их помощью будет непросто. А как быть
с необходимостью изменять документы время от време-
ни (взять хотя бы счет-фактуру)? Программист на Access
просто подправит документ (report), возможно, одним дви-
жением мыши…
Я предлагаю организовать печать с веб-сайта при помо-
щи пакета OpenOffice. Цепочка действий будет такой: мы де-
лаем в OpenOffice макет документа и помещаем его на сер- Рисунок 1. Макет
вер. Веб-скрипт заполнит поля в макете и добавит необхо-
димые строки, в результате чего получится готовый доку- рамки, графические элементы, колонтитулы, устанавли-
мент, который останется только отправить на принтер. ваем необходимую ориентацию документа. Макет исполь-
зуется многократно, и при необходимости внести в форму
Что такое OpenOffice? документа изменения его нужно просто загрузить в редак-
OpenOffice – это бесплатный пакет офисных программ [3]. тор. Пример макета представлен на рис. 1.
Данный проект возник по инициативе и существует при В рамках описываемой технологии мы выделяем три
поддержке фирмы Sun. Недавно вышла версия 2.0, но опи- части документа: начальную часть, табличную часть (груп-
сываемая здесь технология реализована мной для версий пу повторяющихся строк) и конечную часть, содержащую
1.1.*, хотя есть основания полагать, что все будет работать суммы, линии для подписей и т. д. Если документ не со-
и с последней версией, несмотря на переименование суф- держит табличной части, то он состоит только из одной на-
фиксов у файлов документов. OpenOffice способен откры- чальной.
вать и редактировать основные форматы MS Office и ра- Любая часть может содержать поля. Поле – это просто
ботает практически под любой ОС. Проект прилично доку- текст с именем поля, который будет заменен значением по-
ментирован. В рамках данной статьи нас будет интересо- ля при генерации документа. Имя поля может быть набра-
вать собственный формат документов OpenOffice. но любым шрифтом и отформатировано любым способом,
Разные приложения OpenOffice (Writer, Calc…) исполь- и должно соответствовать такому шаблону:
зуют собственный суффикс для файлов, но файлы эти
имеют почти схожую структуру – это ZIP, который содер- fl.<part>.<field>
жит главный файл content.xml и вспомогательные, содер-
жащие стили, пользовательские настройки, ресурсы и т. д. fl – это метка начала имени поля, <part> – указатель части
Content.xml – это обычный XML-файл, который можно обра- документа (hd – начальная часть, ft – конечная, или имя ви-
батывать при помощи всех известных XML-средств. да строки табличной части), <field> – имя поля данной час-
Итак, мы будем самостоятельно формировать файл ти документа. Например:
формата OpenOffice и распечатывать его при помощи са-
мого OpenOffice. Для этого OpenOffice должен быть установ- fl.ft.Total
лен или на машине клиента, или на самом сервере. Как мне
кажется, для внутрикорпоративной системы более предпоч- Части документа явным образом никак не задаются и
тителен серверный вариант. При помощи OpenOffice легко определяются по наличию соответствующих полей. Соот-
получить и PDF, но об этом в конце статьи. ветственно поля различных частей не могут перемешивать-
ся и должны следовать в строгом порядке: сначала все по-
Как сгенерировать файл ля начальной части, затем табличной и конечной.
С точки зрения оформления документа, возможностей ре- Табличная часть у документа может быть только одна,
дактора OpenOffice (OOWriter) вполне достаточно, поэто- но зато видов строк у нее может быть несколько. У доку-
му я ограничусь примерами использования файлов фор- мента на рис. 1 два вида строк. Эти виды могут отличать-
мата SXW, хотя предлагаемая технология будет работать ся составом полей или оформлением. В данном случае
практически с любым файлом, созданным приложениями два вида строк заведены для создания документа с «по-
из пакета OpenOffice. В версии 2.0 основной формат доку- лосатой» таблицей.
ментов OOWriter имеет суффикс ODT, но структура фай- Строка табличной части должна представлять собой
лов очень похожа. вполне определенный элемент документа. Определенный,
Для начала мы создаем макет в OOWriter. Макет – это потому что при разборе макета скрипт должен будет выде-
почти готовый документ, в котором программно заполняе- лить эту самую строку табличной части и размножить ее
мые поля обозначаются специальными сигнальными фра- по числу строк в таблице. При размножении имена полей
зами. Выделяется специальными маркерами и табличная в строке табличной части будут заменяться соответствую-
часть, если таковая имеется. Щедро используем шрифты, щими значениями.
Пример скрипта
Что, собственно, нужно сделать? Распаковать ZIP, «прой-
тись» по XML-файлу и заменить одни текстовые значения
на другие. Отыскать элемент строки табличной части, раз-
Рисунок 3. Сформированный документ
множить его по числу строк, опять же, заменяя поля значе-
ниями. Наконец нужно поместить новый XML в копию стар- 10: $hdr = &$doc->GetHeaderPart("Number", "Date", "Byer");
11: // Определяем поля в 2 типах строк табличной части
го ZIP и сохранить ZIP под новым именем. 12: // (С белым и серым фоном)
Возможность работы с ZIP и XML сейчас имеется, навер- 13: $row1 = &$doc->GetNewRow("tb1", "Description", ↵
"Numb", "Price", "Amount");
ное, во всех языках. Здесь представлен пример реализа- 14: $row2 = &$doc->GetNewRow("tb2", "Description", ↵
ции на PHP. Собственно операции по обработке SXW-фай- "Numb", "Price", "Amount");
15: // Определяем поле в конечной части
ла убраны в библиотечный файл OODocFiller.php. Библио- 16: $ftr = &$doc->GetFooterPart("Total");
тека очень незатейлива, но все же для публикации ее тек- 17:
18: // Формирование документа
ста в журнале великовата. Скачать ее можно по ссылке [1], 19: // Заполняем начальную часть
никаких условий по ее применению автор не накладывает. 20: $hdr->Fill("12", "1.10.2005", "И.И. Иванов");
21: // Заполняем табличную часть
Платформа может быть любой, для работы самого скрип- 22: // Виды строк чередуются для «полосатости»
та OpenOffice не нужен (он понадобится для печати). PHP 23: $row1->Fill("Сапоги»,"2","12,50", "25,00");
24: $row2->Fill("Пироги»,"1","10,00", "10,00");
должен быть скомпилирован со следующими модулями: ZIP, 25: $row1->Fill("Плюшки»,"10","1,00", "10,00");
XPATH (для разбора XML), ENCODE (для перекодирования 26: $row2->Fill("DVD+R","1","5,00", "5,00");
27: // Заполняем конечную часть
текстовых значений в UTF 8). К сожалению, в 4 версии PHP 28: $ftr->Fill(«50,00»);
нет штатного модуля для создания ZIP-файлов, поэтому я 29: // Остается только сохранить сформированный документ ↵
в файл
использую библиотеку zip.lib.php из состава дистрибутива 30: if($doc->Error == ""){
phpMyAdmin. Скачать ее можно с [1] или [4]. 31: $fd = fopen ("report.sxw", "wb");
32: $out = fwrite ($fd, $doc->GetBinaryResult());
Представленный ниже скрипт будет создавать документ 33: fclose($fd);
OpenOffice, используя макет из рис. 1. Макет лежит в фай- 34: }
35: else{
ле template.sxw в той же директории, что и скрипт. 36: print "Error: ".$doc->Error;
37: }
01: include('OODocFiller.php');
02:
03: // Подключаем макет После запуска скрипт должен создать файл report.sxw
04: $doc = new OODocFiller('template.sxw'); в этой же директории (см. рис. 3). Если, конечно, вы не за-
05: // Задаем параметры
06: $doc->SetParameter("RowElement", 'text:p'); были обеспечить соответствующие права.
07: $doc->SetParameter("Encoding", "WINDOWS-1251"); Небольшие пояснения. Строки 6 и 7 задают параметры.
08:
09: // Определяем поля в начальной части Параметров у этой библиотеки хватает, ознакомиться с ни-
60
web
ми можно в файле OODocFiller.php. Все они имеют значе- на своем сервере организовали вторую X-консоль. Вот что
ния по умолчанию, поэтому если вас устроят стандартные мы добавили в наш /etc/inittab файл:
настройки, то явно задавать ничего не нужно. Даже здесь
строки 6 и 7 избыточны (даны для примера), они задают x1:5:respawn:/usr/X11R6/bin/xinit /usr/X11R6/bin/xclock ↵
-- /usr/X11R6/bin/Xorg :1
значения, которые используются по умолчанию. Внутрен-
нее представление OpenOffice – UTF-8, поэтому важно пра- Смысл полей этой строки примерно следующий:
вильно задать кодировку, в которой ваш скрипт будет давать x1 – это просто уникальный идентификатор строки;
значения полей при вызове библиотечных функций. 5 – это уровень инициализации, при котором строка бу-
Строка 10, создавая ссылку на обьект начальной час- дет использоваться (5 – графический режим);
ти, определяет и имена полей в ней. Строка 16 полностью respawn – перезапускать при завершении;
идентична 10, 13 и 14 задают два типа строк табличной час- xinit xclock – Xorg-запуск графической консоли с про-
ти. Внутри макета они идентифицируются по именам, ко- граммой часы (наличие часов не дает xinit завершить-
торые задаются в качестве первого параметра. Остальные ся);
параметры тоже имена полей. 1 – номер создаваемого графического экрана. Этот но-
Строка 20 заполняет поля начальной части. Парметр Fill мер экрана мы будем сообщать OpenOffice при запуске
может быть единым массивом значений, что удобно при ра- в пакетном режиме.
боте с БД. Вместо строк 23-26 обычно находится цикл вы-
борки значений из таблицы БД. Теперь нужно определиться, под каким пользователем
веб-сервер будет запускать скрипты для печати. Этот поль-
Печать зователь должен обязательно иметь домашнюю директо-
Итак, мы получили файл. Как отправить его на принтер? рию. Необходимо один раз зайти этим пользователем и за-
Первый способ – это печать с клиента. Для этого на кли- пустить любую программу OpenOffice. При этом в домашней
енте должен быть установлен OpenOffice. При инсталляции директории создадутся персональные файлы OpenOffice.
он добавляет свои типы файлов в системный MIME, поэто- Без этих файлов пакетный режим, к сожалению, не срабо-
му серверу достаточно передать сгенерированный файл тает, поэтому важно, чтобы при работе скрипта перемен-
с нужным HTTP-заголовком, и OpenOffice будет автомати- ная окружения HOME была определена и указывала имен-
чески запущен браузером. но на домашнюю директорию этого пользователя.
Вот пример скрипта, который отправляет файл подоб- Если все требования соблюдены, то теперь скрипт, ра-
ным образом: ботающий под упомянутым пользователем, при помощи
команды:
$content = file_get_contents("report.sxw");
header("Pragma: public"); <путь к исп.файлам OO>/soffice -display :1 –p <документ>
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, ↵
pre-check=0");
header("Cache-Control: private",false); распечатает документ на принтер, установленный по умол-
header("Content-type: application/vnd.sun.xml.writer"); чанию. Обратите внимание, что число у display – это номер
header("Content-Disposition: attachment; filename= ↵
report.sxw;"); графического экрана из inittab.
header("Content-Transfer-Encoding: binary"); Если же на вашем Linux-сервере определено несколько
header("Content-Length: ".filesize("report.sxw"));
print $content; принтеров и вы хотите при печати иметь возможность вы-
бора принтера, то познавательный процесс настроек бу-
Второй способ – это отправка на печать непосредствен- дет продолжен.
но с сервера (мы ведь ведем речь о внутрикорпоративной Дело в том, что в версиях 1.1.* не убрали какую-то отла-
информационной системе). дочную заглушку. Поэтому в пакетном режиме OpenOffice
Для отправки документа на печать из-под Windows до- всегда печатает на принтере, являющимся по умолчанию
статочно запустить следующее: на момент старта программы.
Как же быть? Мы еще не тестировали на этот счет
<путь к исп.файлам OO>\SOFFICE.EXE –pt"<принтер>" <документ> OpenOffice 2.0, а для версии 1.1.* вышли из положения при
помощи печати через PDF. Файлы PDF печатаются систем-
или при печати на принтер по умолчанию: ными средствами Linux куда угодно, и кроме того, возмож-
ность генерации PDF имеет самостоятельную ценность.
<путь к исп.файлам OO>\SOFFICE.EXE –p <документ>
Как конвертировать SXW в PDF
На Linux-сервере все будет немного сложнее, плюс OpenOffice хорошо сохраняет свои файлы в PDF. Можно это
для настройки потребуются привилегии root. Но преодоле- делать и в пакетном режиме. Вот как выглядит подготовка
ние трудностей всегда раздвигало горизонты. Linux-сервера для реализации такой возможности.
Прежде всего, для OpenOffice, даже для работы в пакет- Прежде всего необходимо добавить макрос в среду
ном режиме, необходимо наличие запущенного X-термина- OpenOffice. Заходим в систему пользователем, под кото-
ла. На сайте oooforum.org [5] можно найти рецепты, как орга- рым будут работать скрипты, и запускаем OpenOffice. Про-
низовать для этих целей виртуальный терминал, например ходим по меню «Tools → Macros → Macro» и нажимаем кноп-
Xvfb [6], который вовсе не имеет доступа к экрану. Мы же ку «Organizer», выбираем закладку (tab) «Libraries» и в выпа-
Printer=$1
# Удаляем PDF
Рисунок 4. Окно редактора basic скрипта OpenOffice rm $PDFname
дающем списке «Application/Document» выбираем «soffice». Теперь, чтобы напечатать SXW-документ, нам доста-
Нажимаем кнопку «New» и вводим имя своей библиоте- точно запустить:
ки, например Example. Переходим на закладку «Modules»
и выбираем свою библиотеку (Example) из списка. Нажи- ooprint myprinter report.sxw
маем кнопку «New Module» и даем ему имя (Print). Теперь
выделяем появившийся модуль и нажимаем «Edit». Добра- Если же вместо печати нужна просто конвертация в PDF,
лись (см. рис. 4)! то нужно создать модифицированную версию ooprint. Наде-
Мы в более-менее привычном редакторе языка Basic. юсь, что это ни для кого не составит трудности.
Текст необходимых процедур:
Заключение
Sub ConvertWordToPDF( cFile ) Смысл данной статьи заключается не в описании представ-
On Error GoTo ErrHandler
' Открываем файл ленной библиотеки, а в демонстрации идеи. Для того что-
cURL = ConvertToURL( cFile ) бы добавить в веб-систему функцию печати, вовсе не обя-
oDoc = StarDesktop.loadComponentFromURL(cURL, ↵
"_blank", 0, Array(MakePropertyValue( "Hidden", ↵ зательно покупать что-то вроде CrystalReport. Обработка
True ),)) XML не сложна и может быть осуществлена на любом язы-
' Получаем имя для PDF-файла
cFile = Left( cFile, Len( cFile ) - 4 ) + ".pdf" ке. Кроме того, в качестве принт-процессора можно ис-
' Сохраняем через PDF-фильтр пользовать, например, TeX. Главное, берем макет, отыски-
cURL = ConvertToURL( cFile )
oDoc.storeToURL( cURL, Array(MakePropertyValue( ↵ ваем в нем поля…
"FilterName", "writer_pdf_Export" ),) Но OpenOffice все-таки заслуживает внимания. В целом
oDoc.close( True )
это зрелый и устойчивый продукт.
ExitSub: Описанная реализация вполне работоспособна, но тре-
Exit Sub
бует дальнейшего развития. Например, печать каждого эк-
ErrHandler: земпляра документа требует запуска тяжелого приложения
Shell("logger", 6, "-t ooffice ConvertWordToPDF: ↵
" + Error$) (soffice). Это может оказаться не быстро. Тут есть разные
пути модернизации.
End Sub
Во-первых, у OpenOffice есть резидентный модуль
Function MakePropertyValue( Optional cName As String, ↵ quickstart, который должен ускорять запуск. Можно попы-
Optional uValue ) As com.sun.star.beans.PropertyValue
Dim oPropertyValue As New com.sun.star.beans ↵ таться запускать quickstart из inittab.
.PropertyValue Во-вторых, у OpenOffice есть серверный режим, при ко-
If Not IsMissing( cName ) Then
oPropertyValue.Name = cName тором он будет обслуживать удаленные запросы. Есть API.
EndIf Но с этим разбираться и разбираться.
If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue Успехов!
EndIf
MakePropertyValue() = oPropertyValue
End Function Ссылки:
1. Файлы к статье – http://samag.ru/cgi-bin/go.pl?q=source.
Это все есть в файле print.bas на [1] – открываем его ка- 2. Cпецификация w3c для CSS 2 – http://www.w3.org/TR/REC-
ким-нибудь редактором и копируем содержимое в модуль. CSS2/page.html.
Сохраняемся и выходим из OpenOffice. 3. OpenOffice – http://www.openoffice.org.
Для упрощения использования механизма печати через 4. PhpMyAdmin – http://www.phpmyadmin.net.
PDF создадим небольшой shell-скрипт, который разместим 5. Форум по OpenOffice – http://www.oooforum.org.
в директории, упоминаемой в PATH, например, пусть пол- 6. Virtual framebuffer X server for X Version 11 – http://www.xfree86.
ное имя будет /usr/local/lib/ooprint: org/current/Xvfb.1.html.
62
web
Многоликий Apache
Размещаем несколько сайтов на одном веб-сервере
Павел Малахов
Установив веб-сервер Apache и предоставив через него на всеобщее обозрение свой сайт,
некоторые и не подозревают, каким мощным инструментом они владеют. С его помощью
можно управлять сотнями сайтов с разными именами и уровнями доступа. Денежная
стоимость и временные затраты на добавление каждого сайта при этом минимальны.
В
еб-сервер Apache, популярный благодаря своей про- Сделать перенаправление нескольких имён на один
зрачности для программистов и администраторов сайт.
и не в последнюю очередь благодаря бесплатнос-
ти, реализован под все более-менее популярные опера- Делаем
ционные системы. Его настройки для всех ОС одинаковы, Пойдём от простого к сложному. Для начала рассмотрим
различаются только пути, где хранятся конфигурационные случай, когда у нас два сайта и два имени teo.mynetwork.ru
файлы. На одном сервере может быть запущено несколь- и logos.mynetwork.ru. Эти имена должны быть доступны,
ко экземпляров Apache, прослушивающих разные адреса т.е. держатель зоны mynetwork.ru должен прописать в ней
и/или порты. Один экземпляр может обслуживать несколь- узлы teo и logos.
ко сайтов (подробнее об этом ниже). Проект настолько попу- Для каждого сайта создаём каталог в корневом ка-
лярен, что постоянно обрастает новой функциональностью. талоге документов Apache (teo и logos соответственно).
О степени популярности можно судить либо по статистике, Для Linux это по умолчанию /var/www/html, но чтобы убе-
что, на мой взгляд, довольно опрометчиво, либо по конкрет- диться, где он расположен на нашем сервере, смотрим зна-
ным фактам. Фактов популярности Apache мы приведём два. чение директивы DocumentRoot в /etc/httpd/conf/httpd.conf.
Во-первых, его наличие в качестве веб-сервера по умолча- Итак, создаём:
нию в большинстве UNIX-подобных операционных систем.
Во-вторых, такой гигант в области ИТ, как компания Oracle, # mkdir /var/www/html/teo /var/www/html/logos
принял его в состав своего продукта Oracle Application
Server 10g, где он играет одну из ключевых ролей. Мы будем разделять журналы для каждого сайта, поэ-
тому создадим соответствующие каталоги:
У нас есть
Компьютер с установленным пакетом Apache 1.3 # mkdir /var/log/httpd/teo /var/log/httpd/logos
или 2.0.
А д р е с с е р ве ра в Ин те р н ете: 10.0.10.15 и и м я : Если у нас уже был создан сайт, то всё его содержимое
teo.mynetwork.ru. переносим в созданный для него каталог, т.е. из /var/www/html
Адрес сервера в локальной сети: 192.168.100.18. в /var/www/html/teo. Новый сайт logos.mynetwork.ru размеща-
Несколько сайтов. ем в /var/www/html/logos.
Несколько имён для одного сайта. Теперь настраиваем Apache. Добавляем в конец файла
/etc/httpd/conf/httpd.conf:
Хотим
Разместить все сайты на одном сервере. NameVirtualHost 10.0.10.15
<VirtualHost teo.mynetwork.ru>
Сделать доступ к каждому сайту по отдельному URL. DocumentRoot /var/www/html/teo
Ограничить доступ к некоторым сайтам. ServerName teo.mynetwork.ru
Можно перенаправлять не со всего сайта, а только с оп- Теперь перейдём непосредственно к раздаче прав до-
ределённого каталога или даже документа: ступа. Существует два способа указать права доступа к ка-
талогу веб-сайта средствами Apache: поместить в каталог
Особенности директив Listen и NameVirtualHost файл .htaccess либо использовать директиву <Directory>
Директива Listen имеет больший приоритет чем, NameVirtualHost. в файле конфигурации. В обоих случаях правила распро-
Она говорит, откуда принимать запросы. В то время как послед- страняются и на вложенные каталоги.
няя определяет, как обрабатывать полученный запрос. Это значит, Перечислим преимущества использования файла
что если указано значение «Listen 80», то Apache будет прослуши- .htaccess:
вать порт 80 на всех IP-адресах, и директива «NameVirtualHost при его изменении не нужно перезапускать Apache;
10.0.10.15» не ограничивает запросы, пришедшие на другие адреса, при одинаковом уровне доступа к разным ресурсам мож-
и они будут обрабатываться наравне с указанным адресом, а ес- но пользоваться ссылками на один файл .htaccess;
ли указано значение «Listen 10.0.10.15:80», то «NameVirtualHost можно предоставить пользователю право редактирова-
192.168.100.18» не возымеет действия, и сайт будет не доступен ния этого файла, что удобно, если у нас сервер с мно-
из локальной сети. жеством клиентских сайтов.
64
web
Есть и недостатки: Options +Indexes
Order deny,allow
для того чтобы ответить на вопрос: «какие ограничения Deny from all
доступа существуют на сайте?» – администратору не- Allow from 192.168.100.11
Allow from 192.168.100.17
обходимо помнить, в каких каталогах лежат эти файлы
и ссылки; и файл /var/www/html/logos/info2/.htaccess:
если сайт будет переноситься на другой сервер,
и, что очень вероятно, будет размещён в другом ка- AuthType Basic
AuthName "Boss"
талоге, то для корректировки ссылок уйдёт много AuthUserFile "/var/www/main_users"
времени; Require valid-user
повышается нагрузка сервера, т.к. при каждом запро-
се на ресурс он обращается к .htaccess в этом каталоге Оба варианта настройки равноправны и создают сле-
и всех верхних по иерархии, наследуя их настройки т.е. за- дующие ограничения.
прос на ресурс http://teo.mynetwork.ru/olimp/staff/zeus.htm Доступ к ресурсу http://logos.mynetwork.ru/info1/ смо-
инициирует проверку .htaccess-файлов в каталогах гут получить только два пользователя из локальной се-
«./», «./olimp/», «./olimp/staff/». ти с указанными IP-адресами (хотя такие ресурсы луч-
ше хранить на внутренних веб-серверах), ещё мы дали
Определяя настройки доступа к каталогам сайта с по- разрешение Apache, в случае отсутствия в каталоге на-
мощью директивы <Directory> в одном конфигурацион- чальной страницы генерировать html-документ с содер-
ном файле всего сайта, мы получим следующие преиму- жимым каталога.
щества: Для доступа к ресурсу http://logos.mynetwork.ru/info2/
можно быть уверенным, что ничего не пропустим, если будут запрошены имя пользователя и пароль, которые бу-
вдруг нужно изменить уровень доступа к какому-нибудь дут сверены с данными в файле /var/www/main_users. Со-
ресурсу; здадим этот файл:
повышаем скорость реакции сервера на запросы,
т.к. все настройки загружаются при старте Apache. # touch /var/www/main_users
# chown root.webmaster /var/www/main_users
Ну а мириться придётся с тем, что для каждого ката- Добавим в него пользователя chef:
лога необходимо описывать права отдельно (помним, что
для подкаталогов права наследуются), даже если они оди- # /usr/bin/htpasswd /var/www/main_users chef
наковые.
Правда, есть поддержка масок, например: Остальных пользователей добавляем аналогичным спо-
собом. Такие файлы создаём для каждой группы пользо-
<Directory ~ "^/www/.*/[0-9]{3}"> вателей с одинаковыми правами доступа к ресурсу. Одни
и те же группы можно использовать во всех сайтах.
будет соответствовать именам каталогов в /www/ состоя-
щим из трёх цифр, но это не всегда может облегчить си- Последние штрихи
туацию. В заключение можно для изящности выделить настрой-
Мы рассмотрим оба способа и изменим права доступа ку каждого сайта в отдельный файл, и подключить их
к двум каталогам сайта logos. в httpd.conf:
Первый. Описываем права доступа к каталогам в глав-
ном конфигурационном файле httpd.conf: Include /etc/httpd/conf/vhosts/teo.conf
Include /etc/httpd/conf/vhosts/logos.conf
Include /etc/httpd/conf/vhosts/pantheon.conf
<VirtualHost logos.mynetwork.ru>
DocumentRoot /var/www/html/logos
ServerName logos.mynetwork.ru Кроме изящности мы получаем удобство в быстром
ErrorLog /var/log/httpd/logos/error_log подключении и отключении сайта путём добавления/сня-
CustomLog /var/log/httpd/logos/access_log combined
<Directory /var/www/html/logos/info1> тия символа комментария «#» в начале строки. Это особен-
Options +Indexes но актуально, когда настройка каждого сайта раздувается
Order deny,allow
Deny from all на несколько десятков строк.
Allow from 192.168.100.11 Также нелишне будет настроить ротацию журналов с по-
Allow from 192.168.100.17
</Directory> мощью logrotate.
<Directory /var/www/html/logos/info2>
AuthType Basic
AuthName "Boss" Ссылки:
AuthUserFile "/var/www/main_users" 1. http://httpd.apache.org/docs/1.3/vhosts – официальная докумен-
Require valid-user
</Directory> тация по созданию виртуальных сайтов.
</VirtualHost> 2. http://httpd.apache.org/docs/2.0/vhosts – другая версия этой же
документации для версии Apache 2.0. Отличия, на мой взгляд,
Второй. Чтобы предоставить такие же права с помо- коснулись только формы самой документации.
щью файлов .htaccess, нужно создать соответственно файл 3. http://httpd.apache.org/docs/2.0/ru/howto/htaccess.html – посо-
/var/www/html/logos/info1/.htaccess: бие по настройке .htaccess-файлов.
AJAX: заработавший
JavaScript
Вячеслав Родионов
Уже более 10 лет в Интернете не наблюдалось таких cущественных перемен.
Ajax – технология, основанная на JavaScript, которая изменит представление о Всемирной
сети. Благодаря ей через несколько лет мы не увидим скучных сайтов, ограниченных
в функциональности – интернет-страницы будут иметь такой же внешний вид и возможности,
как и современные десктоп-приложения. Похоже, JavaScript дожил наконец до своего
звёздного часа.
Т
ехнология Ajax, о которой пойдёт и понимания идеи его революционнос- нит) конца 90-х годов – ужасные цвета,
речь, медленно, но верно захва- ти для Всемирной паутины. полное отсутствие стиля, нелепый фон,
тывает просторы Интернета. Всем только мешающий читать текст, и в до-
известные примеры, такие как GMail Эволюция Интернета вершение всего – полная неструктури-
и GoogleMaps – это только цветочки. Для людей, хоть немного имеющих рованность контента. С тех пор очень
У новой платформы очень большие отношение к веб-программированию, многое изменилось. Сейчас такие
амбиции. Сайты, написанные на Ajax, уже давно не секрет, что со времён сайты являются максимум поводом
появляются со скоростью, сравнимой 1995 года, когда появились первые для ухмылки и искреннего непонима-
со скоростью появления приложений полноценные динамические веб-при- ния, на что вообще рассчитывают ав-
после изобретения микропроцессоров. ложения, Интернет остаётcя по своей торы этих произведений?
Именно с технологией Ajax связыва- сути почти неизменным. Внешне, ко- Д а, Интернет изменилс я вне -
ют громкую и многообещающую кон- нечно же, что-то менялось за эти го- шне, и это очень важный шаг вперёд,
цепцию под названием Web 2.0 (http:// ды: по крайней мере, само наполне- но суть его осталась прежней. Меха-
www.paulgraham.com/web20.html). Поэ- ние сайтов постоянно трансформиро- низм получения информации клиен-
тому Ajax стоит как минимум того, что- валось и выходило на всё более качес- том от сервера не менялся. Клиент
бы потратить полчаса на изучение ос- твенный уровень. Вспомните типичные был вынужден либо ввести URL требу-
новных принципов функционирования веб-странички (если кто-то ещё их пом- емой страницы непосредственно в ад-
66
web
ресную строку своего браузера, либо ввести тот же URL циях и форумах, поиск информации по всему миру, участие
косвенно, заполнив данные формы и отправив их серве- в онлайн-аукционах и прочие возможности).
ру на обработку. В любом случае пользователю приходи- Так продолжалось очень долго, и рано или поздно ситу-
лось проводить некоторое время в бездействии, сидя перед ация должна была измениться. Почти незаметно на сцену
пустым или постепенно заполняющимся экраном. Минусов вышла новая технология, которая, как вы увидите позже,
у такого подхода очень много, ведь пользователь, особен- на самом деле оказалась удачным совместным использо-
но в нашей стране, не всегда имеет достаточно быстрый ванием уже существующих платформ. Эта технология при-
канал, чтобы постоянно гонять поток килобайтов по сети звана если не стереть, то по крайней мере размыть грани-
туда и обратно, кроме того, новая страничка зачастую бо- цу между десктоп- и веб-приложениями.
лее чем на 90% состоит из информации, которую вы уже
загружали раньше. Выходит, что, кроме времени, вы ещё Ajax в действии
и впустую тратите свои деньги за трафик. Всех этих мину- Давайте наконец посмотрим, из чего состоит Ajax. Техно-
сов лишён подход написания страниц, использующий тех- логия Ajax является совместным использованием таких
нологию Ajax. технологий, как:
HTML (а точнее, XHTML) и CSS – языки, которые необ-
Зачем нужен Ajax ходимы, как и прежде, для визуального представления
Что же обещает нам новая платформа? Чтобы понять это, данных приложения пользователю.
нужно не только овладеть принципами Ajax, но и узнать при- JavaScript – язык, который является основной движу-
чины, которые привели к созданию данной технологии. щей силой Ajax и который отвечает за взаимодействие
Рынок клиентских компьютерных приложений имеет между клиентом и сервером.
классическое разделение на два сектора: рынок десктоп- DHTML – динамический HTML, технология, которая по-
приложений и рынок веб-приложений. Каждое из этих на- могает обновлять компоненты страницы динамически,
правлений до недавнего времени имело свои ярко выражен- не перегружая саму страничку.
ные особенности, свои плюсы и свои минусы, которые ис- XML – собственно язык, на котором в Ajax общаются сер-
ключали возможность появления программы, которую мож- вер и клиент и который является «материалом» для пос-
но было бы назвать как полноценным десктоп-приложением, троения сайта.
так и полноценным веб-приложением. Программы, ориен- DOM – объектная модель документа, технология, кото-
тированные на десктоп, как правило, привязаны к конкрет- рая нужна как для обработки и управления структурой
ной операционной системе, они часто имеют внушительные сайта (HTML), так и для обработки возвращаемых сер-
размеры и системные требования и необходима процеду- вером данных (XML).
ра установки на компьютер пользователя. Они часто отли-
чаются красивым и очень функциональным интерфейсом, Кстати, само название Ajax имеет определённый смысл,
который позволяет не только кликать по областям прило- это сокращение от «Asynchronous JavaScript and XML» (асин-
жения и вводить текст, но и переносить объекты из одного хронный JavaScript и XML). Данная аббревиатура была вве-
приложения в другое и пользоваться удобными меню. Кро- дена Джессом Джеймсом Гарреттом (Jesse James Garrett)
ме того, всё это происходит без значительных задержек и из Adaptive Path в статье, впервые описавшей собственно
не заставляет пользователя долго ждать реакции прило- саму технологию Ajax.
жения на его действия. Десктоп-приложения выполняются Как видите, все технологии существуют не первый день
на машине пользователя и оперируют в основном локаль- и достаточно хорошо известны любому современному про-
ными данными (исключение составляют так называемые граммисту. Основной трюк при написании Ajax-приложе-
«толстые» клиенты, которые, тем не менее, остаются деск- ния – это использование объекта XMLHttpRequest. Как бы
топ-приложениями). В последнее время десктоп-приложе- странно это ни звучало, но этот объект – то единственное
ния всё чаще поддерживают систему обновления через Ин- новшество, которое есть в Ajax. Никаких других новых тех-
тернет, которая хоть и значительно улучшает процесс при- нологий в этой платформе нет. Но, как оказалось, и этого
обретения новых версий, что крайне важно для таких при- вполне достаточно для того, чтобы в корне изменить пове-
ложений, как антивирусы, тем не менее является доволь- дение веб-приложений. Так что давайте перейдём к непос-
но долгой и сложной для конечного пользователя процеду- редственному написанию кода, чтобы понять, как работает
рой. Веб-приложения, напротив, отличаются крайне малы- этот самый объект, который вызвал такой ажиотаж.
ми размерами, хранятся на удаленном сервере, не требуя Чтобы написать Ajax-приложение, нам понадобится со-
для себя места на жёстком диске клиента, и даже не имеют здать экземпляр объекта XMLHttpRequest. В случае, соот-
возможности воспользоваться данными, расположенными ветствующем стандартам программирования, это будет
на компьютере пользователя. Эти приложения имеют, как выглядеть так:
правило, довольно однотипный интерфейс, который не от-
личается особой вычурностью и функциональностью. С дру- <script language="javascript" type="text/javascipt">
var xmlhttp = new XMLHttpRequest();
гой стороны, веб-приложения всегда доступны вам в своей </script>
последней возможной версии и не требуют от вас никаких
усилий по установке и поддержке, предоставляя возмож- Как всегда, этот пример будет работать везде, кроме
ности, которые недоступны при пользовании десктоп-при- браузера компании Microsoft – Internet Explorer. Эти тради-
ложениями (такие, как участие во всевозможных конферен- ции неизменны с 1995 года и, как всегда, мы должны об-
68
web
<html> Во-вторых, не обращайте внимание на усложнившуюся
<head>
<meta HTTP-EQUIV="content-type" ↵ схему получения объекта XMLHttpRequest, она нужна лишь
CONTENT="text/html; charset=UTF-8"> для того, чтобы скрипт работал и в Internet Explorer. Кста-
<title>Проверка почты с помощью новейших ↵
технологий</title> ти, скрипт следует запускать именно с локальной машины
</head> (не сервера), потому как иначе браузер не разрешит вам
<body>
<script language="javascript" type="text/javascript"> обратиться с одного сервера к другому.
Следующее, что может быть непонятно, – это строки:
var xmlHttp = false;
Серафим Пикалов
У клиента что-то сломалось, а у нас всё работает. Проклиная всё на свете, идём в код
к клиенту. Исправлять нужно срочно, отладчика нет, а скрипты продолжают эксплуатироваться
пользователями. Как искать ошибку, ничего не ломая, как отладить исправленный код,
как не показать никому ничего лишнего?
70
web
В
се мы прекрасно знаем, что любой код перед уста- Ответ на поставленную проблему напрашивается сам
новкой клиенту должен быть тщательно оттестиро- собой: мы хотим, чтобы скрипт однозначно определял,
ван, все ошибочные ситуации описаны, и сообщения кто перед ним – разработчик или обычный пользователь,
о них должны быть максимально информативны. и в соответствии с этим работал по-разному. Для этого от-
С другой стороны, все мы знаем, что теория и практи- ладочный код выведем в условный блок, условием вхо-
ка – две разные вещи. Обнаружив ошибку, которую на тес- да в который будет то, что пользователь является разра-
товой версии системы смоделировать не удалось, мы стал- ботчиком.
киваемся с необходимостью редактировать код, уже уста- О том, как это установить смотрим ниже.
новленный клиенту и скорее всего выполняющийся в этот
момент. Тут возникает необходимость сделать всё как мож- Специальная GET-переменная
но более незаметно и безопасно. Довольно небезопасный способ, но нередко встречаемый.
О некоторых методах того, как это сделать, мы погово- Смысл заключается в помещении отладочного кода в ус-
рим в этой статье. ловный блок, проверяющий, установлена ли определённая
глобальная переменная.
Условия работы Например, так:
В рассматриваемой ситуации нам придётся работать со
скриптами, которые уже установлены у клиента и могут //---код скрипта
if (isset($_GET[‘debug’])) {
быть востребованы в любой момент. echo ‘Debug info!’;
Поэтому необходимо ввести некоторые ограничения: }
//---код скрипта
Нам необходимо локализовать и исправить ошибку,
не испортив правильно работающие скрипты. Плюс метода – быстрота доступа к режиму отладки.
Процесс нашей отладки должен быть виден только нам, Минус в том, что, зная имя переменной, отладку может
пользователи не должны ничего заметить. увидеть любой желающий, кроме того, метод не подходит,
Мы не можем установить или перенастроить ПО на сер- если POST передает параметры скрипту.
вере, т.е. использование сторонних отладочных систем
невозможно, но мы можем добавлять новые или редак- Идентификация по IP
тировать старые php-скрипты. Очень удобный и довольно надёжный способ. Как и во всех
Мы имеем только ssh (и/или telnet) и http-доступ. описанных тут методах, отладочный код помещается в ус-
ловный блок, условие – совпадение IP-пользователя с ус-
Теперь полностью прояснив, что нам можно, а чего не- тановленным разработчиком.
льзя, попробуем сделать нашу работу наиболее комфорт- Пример:
ной и продуктивной.
If ($_SERVER[‘REMOTE_ADDR’]==='123.234.234.15') {
Echo ‘Debug info2!’;
Идентификация разработчика }
В процессе поиска и исправления ошибки нам придётся
менять порядок работы программы и получать различную Плюс – вывод отладки не зависит от того, что мы пере-
информацию. даём скрипту.
Безусловно, можно пойти старым проверенным спосо- Минусы в следующем. Во-первых, не редактируя код,
бом и выводить отладку в error_log, но этот метод заста- мы не можем отключить отладку, т.е. для того чтобы пос-
вит нас метаться между браузером и файлом лога, замед- мотреть, как было и как стало, нам придётся редактиро-
лит выполнение скрипта для всех пользователей и засорит вать код.
лог, т.к. исполняться он будет для всех одинаково. Но да- Во-вторых, при использовании proxy-сервером REMOTE_
же смирившись с такими неудобствами, нельзя забывать, ADDR однозначно не определяет компьютер. Но даже про-
что код, который вы вводите в скрипт, также не застрахо- верка на значение HTTP_X_FORWARDED_FOR не даёт
ван от ошибок. 100% гарантии, т.к. эти значения зависят от того, что воз-
72
web
определит путь к ошибке), вывести значения элемен- к месту, где она выводится, и отключаем анализатор, что-
тов суперглобального массива $GLOBALS и параметра бы не выполнять напрасную работу.
error_context. Подобным же методом можно найти место вывода
Пример: и формирования нужной строки или выполнения некото-
рой операции, а также отслеживать «жизнь» глобальных
If (is_debug()) { переменных (только глобальных) – своего рода Watch-фун-
Function debug_eh($errno, $errstr, $errfile, $errline, ↵
$errcontext) { кция отладчика.
/*вывод необходимой информации*/
print_r(debug_backtrace());
print_r($GLOBALS); Реализация отладчиков
print_r($error_context); В последнем описанном приёме мы использовали конс-
}
$eh=set_error_handler(‘debug_eh’); трукцию declare для отслеживания истории жизни пере-
} менной, по сути дела, мы сделали аналог функции watch
// место перед возникновением ошибки
If (is_debug()) { в отладчике.
set_error_handler($eh); Далее мы рассмотрим, как с помощью этой конструкции
}
реализовать простенькое подобие отладчика.
Таким образом, мы получим полную информацию о том,
где и как возникла ошибка. Очень часто достаточно прос- Сетевой отладчик
то вывести debug_backtrace в месте её возникновения. Для реализации сетевого отладчика нам будет необходи-
мо, чтобы PHP был собран с поддержкой сокетов. В ка-
Ошибка в алгоритме честве сервера управления отладкой проще всего вы-
Теперь рассмотрим задачку посложней. Допустим, код вы- брать приложение терминального типа (например, в Linux
полняется без ошибок, но результат не совпадает с наши- удобно использовать netcat), которое будет запускаться
ми ожиданиями. Очевидно, что ошибка где-то в алгоритме, в качестве сервера, ожидающего соединения, к примеру,
но как же её локализовать? на порт 9998. Клиентом будет наш отлаживаемый скрипт,
Для начала нужно чётко определить, что мы должны который будет получать команды и возвращать результа-
получить, и чем ожидаемый результат отличается от по- ты действия, а функцию отладки реализуем с помощью
лученного. тик-функции.
Свести различия нужно к какому-нибудь конкретному Схема работы будет следующая: при запуске скрипта
тезису, к примеру: «Тут мы должны были увидеть две стро- создаётся сокетное соединения с сервером отладки. Пос-
ки, а видим только одну». После этого нам придётся про- ле этого при каждом тике запускается нами определённая
вести анализ кода и определить переменные, от которых функция отладки, которая посылает данные о текущем со-
зависит вывод данных строк. стоянии к серверу и ждёт ответа – команды:
Сделать это можно, к примеру, такими способами: s (step) – один шаг вперёд.
Ограничиваем код выводом двух отладочных сообще- bp (break point) – точка останова. Определяется как но-
ний и сдвигаем их друг к другу до тех пор, пока они не будут мер строки и имя файла.
обрамлять строки, считаемые нами ошибочными. st (stop) – немедленная остановка выполнения.
Второй способ заключается в анализе вывода скрип- g (go) – выполнить скрипт до конца.
та. Для этого включаем буферизацию вывода и обработ-
чик на каждый тик PHP: После получения одной из описанных команд отладчик
её обрабатывает и выполняет необходимые действия.
<?php Приведем код:
define('FIND_PATERN','/some_str/');
74
сети
Алексей Барабанов
Есть расхожее мнение, что сетевые туннели выгоднее делать на основе протоколов
низкого уровня с минимальными размерами заголовков и очень простым протоколом.
Считается, что TCP как несущий протокол создает много проблем. Так ли это?
И
спользование TCP стало столь представлений, то у многих просто не- нимается как святое откровение. Хотя
привычным, что большинс - достает знаний правильно оценить по- многие далее вынесенного в ее заголо-
тво просто не задумывается лученную информацию. Что приводит вок тезиса «Why TCP Over TCP Is A Bad
о заложенных в этот протокол меха- к появлению технологических мифов. Idea» и не читают. Чтобы уравнять шан-
низмах и во всех случаях полагает- Один из которых, порожденный ста- сы тех, кто имеет затруднения с анг-
ся на «интеллект» системы. Одновре- тьей [1] Олафа Титца (Olaf Titz), здесь лийским языком, предложим дослов-
менно с этим, если встречаются какие- и попробуем опровергнуть. К сожа- ный технический перевод упомянуто-
то сведения, объясняющие что-то в его лению, в России все, что написано го опуса [2]. В переводе не использо-
поведении, или теории, построенные на иностранном языке да еще разме- вались никакие литературные экстра-
на основе, так сказать, «упрощенных» щено на зарубежном сайте, воспри- поляции, чтобы максимально точно до-
76
сети
нести идеи автора и ни в коем зогнаться, а несущее тем не
случае не исправить на этапе менее оставалось медлен-
перевода что-то из многочис- ным. Это просто невозмож-
ленных его ошибок. Разберем но, так как противоречит за-
текст этой статьи. конам сохранения, действую-
щим в нашей Вселенной. На-
Суть проблемы до признать, что именно здесь
Итак, первое, что по мнению Олафа «понесло». Он увле-
Олафа, мешает эффектив- ченно живописует, как внут-
ной работе TCP в качестве ренний слой, такой быстрый
туннеля, это повторные пе- и такой «несчастный», будет,
редачи. Если отбросить ту- не получая подтверждений,
манные рассуждения о на- посылать пакет за пакетом
сыщении канала (meltdown) и тем самым – вот оно, ста-
из-за мифического фиксиро- рое ружье выстрелило – со-
ванного тайм-аута, которого Рисунок 1. Схема инкапсуляции здаст «внутренний meltdown-
нет в TCP, то в «сухом остатке» в пер- кими деталями, Олаф связывает уве- эффект». Здесь замечу, что термин
вом разделе статьи лишь утвержде- личение периодов проверки на обрыв «внутренний meltdown-эффект» изоб-
ние об экспоненциальном росте тайм- соединения с борьбой с насыщением, ретен просто «на ходу». Жаль разо-
аута, если, цитирую, «сегмент задер- то есть с тем самым meltdown, который, чаровывать Олафа, но после непод-
живается сверх тайм-аута». Рассмот- как ружье со стены в известной пьесе, тверждения пакета и в отсутствие во-
рим подробнее. Автор упорно не жела- если упомянуто в первом акте, то да- обще всяких подтверждений TCP на-
ет использовать общепринятую терми- лее обязательно «выстрелит». Таким чинает процедуру медленного старта,
нологию и предпочитает изъясняться образом, поскольку экспоненциаль- в ходе которой поток TCP снова будет
как колдун-друид. Но так как в тексте ного роста задержек передачи в TCP искать предельную передающую воз-
упоминается RFC2001, то можно вос- нет, то измышления первой части об- можность среды, постепенно увеличи-
пользоваться ссылкой [3] и попытать- суждаемой статьи [1] не имеют отно- вая скорость передачи, начиная с са-
ся догадаться, на что намекает Олаф шения к реализации TCP в нашей с ва- мых минимальных значений. Иначе го-
Титц. Единственный показатель, име- ми Вселенной. воря, TCP не снижает темп передачи,
ющий в RFC2001 экспоненциальный Рассуждения Олафа, где он счита- а вообще прекращает ее и затем во-
рост, – это CWND (congestion window). ет, что трафик TCP в Интернете регу- зобновляет снова со стартовых значе-
Но окно насыщения, или CWND, свя- лируется тайм-аутами, просто выки- ний. И это, кстати, дает гарантию, что
зано с пропускной способностью пря- нем, как не соответствующие реаль- внутренний TCP никогда не будет ра-
мой зависимостью. Автор же намека- ности и потому не актуальные. Конеч- ботать быстрее внешнего, того, что об-
ет, что задержки растут по экспонен- но, можно было бы везде, где в тексте разует туннель. Так как, если парамет-
те и это якобы приводит к снижению встречается «timeout», при переводе ры внутреннего TCP приведут к тому,
темпа передачи. Задержки – это RTT подставить «таймер», что сильно при- что он разгонится быстрее туннельно-
(round trip time), или время обраще- близит многие рассуждения к дейс- го, то после же столкновения он сбро-
ния, на основании которых высчиты- твительному положению дел, но тог- сится снова к состоянию медленного
вается RTO (retransmission time out), да пришлось бы исправить и многое старта и снова начнет «догонять» тун-
или таймер повтора. Об этом нет ни- другое. Но, как уже было сказано вы- нельный TCP.
чего в RFC2001. Но по другим доку- ше, перевод сделан самым безжалос- Давайте представим, что реаль-
ментам можно узнать, как это проис- тным способом. но может случиться из-за потерь сег-
ходит. Например, в RFC793 [4], упоми- Второе, что смутило Олафа Титца – ментов (именно так и следует далее их
наемом также в статье, описан метод это взаимодействие транспортного называть, а не пакетами) в таком тун-
расчета RTO для каждого текущего па- TCP и транспортируемого. Для яснос- неле. Во-первых, просто обрыв свя-
кета. Так вот, там используется пока- ти обратимся к схеме инкапсуляции, зи будет обработан и тем и другим
затель SRTT (smooted round trip time), которая обсуждается в [1]. Скопируем TCP соответственно и в пределах пе-
или взвешенное время обращения. ее в переводном варианте и добавим речисленных RFC. А вот с повторами,
Подчеркиваю – взвешенное! Где тут немного комментариев. и правда, могут возникнуть некоторые
Олаф «раскопал» экспоненту? Конеч- Автор утверждает, что эти два по- проблемы. Покажем на схеме (рис. 2),
но, можно догадаться, что автор спу- тока TCP (см. рис. 1) могут иметь раз- что будет происходить, если в пути по-
тал расчет RTO при задержке с рас- ные таймеры. Дословно: «может так теряется сегмент с данными.
четом RTO при потере! Вот, если бы случиться, что соединение нижне- Предположим, что пропал сегмент
сегмент вообще пропал и от получа- го уровня имеет медленные таймеры, D4. Тогда оба стека протоколов полу-
теля нет никаких ответов, тогда алго- возможно как остаток с периода мед- чат повторный ACK с последним при-
ритм TCP на самом деле требует про- ленного или ненадежного основного нятым номером и согласно алгоритму
извести повторы с экспоненциальным соединения». То есть автор предпо- Fast Retransmission, или быстрой пов-
замедлением. Но, не смущаясь мел- ложил, что вложенное TCP успело ра- торной передачи, пропущенный пакет
Тестовая сеть
Проверку будем проводить путем передачи тестового мас-
сива псевдослучайных данных в одном направлении че-
рез TCP- и UDP-туннели. Это, конечно, примитивная мо-
дель взаимодействия, но только так можно в чистом виде
попытаться определить зависимость характеристик кана-
Рисунок 3. Схема тестовой сети ла и свойств полученного потока данных. Дополнительно
78
сети
в центре маршрута ограничим полосу, например до 10 Мбит, ки OpenVPN в режиме клиента TCP-туннеля будут произво-
и внесем случайные потери в трафик. Конечно, 10 Мбит зна- диться согласно следующему файлу конфигурации:
чительно выше типичной скорости канала, предоставлен-
ного ISP для подключения к Интернету. Но иначе придет- # cat /etc/openvpn/test.conf
ся уменьшить объем пересылаемых данных, чтобы в при- proto tcp-client
емлемое время провести эксперимент. Перечислим эле- tcp-queue-limit 1000
remote 192.168.11.2
менты, которые нужны для организации таких проверок. dev tun
Во-первых, хост-отправитель и хост-получатель трафика. port 5000
tcqueuelen 1000
Во-вторых, два хоста, между которыми проложен туннель. secret /etc/openvpn/static.key
Поскольку «удаленный» конец туннеля может совпадать с ifconfig 192.168.12.1 192.168.12.2
route 192.168.12.0 255.255.255.0 192.168.12.1
хостом-получателем, то, кроме перечисленных трех хос-
тов, нужен еще один, где будет эмулироваться «узкое мес- Для станции wskostja все аналогично, меняются лишь
то» в сети. Итого, достаточно будет 4 компьютера соединить адреса, протокол на tcp-server и удаляется строка remote,
последовательно. Строго говоря, хост-отправитель можно что переводит туннель в состояние прослушивания. В ре-
совместить с «ближним» концом туннеля. Но надо учесть, жиме UDP на обоих концах протокол просто переключает-
что вход в туннель тоже является своего рода ограничите- ся в udp и удаляется параметр tcp-queue-limit. И теперь путь
лем трафика, или шейпером, поэтому пусть будут в тес- между wstovert до wskostja проходит через туннель.
товой сети четыре компьютера, которые назовем wstovert,
wsalekseybb, wskostja и server. Общий вид полученной сети # traceroute 192.168.12.2
представлен на рис. 3, и дальнейший комментарий будем traceroute to 192.168.12.2 (192.168.12.2), 30 hops max, 40 byte packets
1 192.168.10.2 0.000 ms 0.000 ms 0.000 ms
вести согласно изображенной там схемы. 2 192.168.12.2 7.088 ms 5.756 ms 0.787 ms
Все компьютеры включены в общую сеть 192.168.0.0/24,
объединены общей кабельной системой с помощью ком- Чтобы доказать, что сам туннель проходит через
мутатора 1 Гбит и обмениваются данными по протоколу server, проверим путь до удаленного конца туннеля
1000BaseTX, то есть значительно выше проверяемых ско- от wsalekseybb:
ростей передачи, что позволит максимально снизить сис-
тематическую ошибку. На эту сеть наложены две виртуаль- # traceroute 192.168.11.2
ные сети. Первая из них, с адресом 192.168.10.0/24 вклю- traceroute to 192.168.11.2 (192.168.11.2), 30 hops max, 40 byte packets
1 192.168.10.1 0.195 ms 0.106 ms 0.120 ms
чает wstovert, wsalekseybb и server, а вторая – с адресом 2 192.168.11.2 0.233 ms 0.000 ms 0.000 ms
192.168.11.0/24 – только server и wskostja. Практически все
компьютеры могут резолвить адреса друг друга с помо- Таким образом, можно, отправляя трафик со станции
щью arp и обмениваться пакетами через общий коммута- wstovert до станции wskostja, осуществлять на промежуточ-
тор. Но нам ведь нам надо обеспечить передачу трафика ном хосте server нужные манипуляции в соответствии с ис-
между компьютерами так, будто они включены последова- следуемой моделью канала.
тельно один за другим. Поэтому с помощью правил мар- Для работы создадим на всех участвующих в экспери-
шрутизации и преобразования адресов заставим трафик ментах хостах специального пользователя tovert и разместим
от wstovert проходить до wskostja через wsalekseybb и server в его домашних директориях в файле .ssh/authorized_keys2
так, как указывает стрелка на рис. 3. Для этого на каждом специально подготовленные ключи, чтобы можно было вы-
компьютере укажем статический маршрут до следующей по полнять необходимые действия в автоматическом режиме
ходу движения стрелки на рисунке 3 сети через соседний с одной из станций. И для удобства разрешим через sudo
компьютер, а на том включим NAT так, чтобы заменять в та- выполнение пользователем tovert команд с привилегиями
ком маршруте адрес отправителя на собственный. Оконча- суперпользователя без ввода пароля.
тельно должно получиться так: На wstovert подготовим файл с данными, которые будут
посылаться в тестовых сеансах:
# traceroute 192.168.11.2
traceroute to 192.168.11.2 (192.168.11.2), 30 hops max, 40 byte packets # ssh tovert@wstovert "dd if=/dev/urandom ↵
1 192.168.10.2 0.000 ms 0.000 ms 0.000 ms of=~/100M.bin bs=1024 count=102400"
2 192.168.10.1 0.566 ms 0.086 ms 0.088 ms
3 192.168.11.2 0.145 ms 0.170 ms 0.241 ms Симуляцию TCP-трафика будем создавать с помощью
команды, отправляющей 100 Мб из файла на целевой хост.
Поскольку главный вопрос заключается в изучении по- В качестве слушателя TCP используем sshd, который пере-
ведения инкапсулированного трафика, то в тестовой се- шлет все принятые данные в /dev/null, чтобы не помешала
ти настроим также и туннель. Воспользуемся програм- буферизация. Причем для сокращения затрат на загрузку
мным обеспечением, которое позволит поднять туннель, файла с диска каждую тестовую отправку будем предва-
как на основе UDP-транспорта, так и TCP. По этой причине рять локальным копированием в /dev/null:
CIPE [6] не подходит. Выберем OpenVPN [7]. Тем более что
согласно сравнительной таблице [8] этот проект рекордсмен # dd if=/home/tovert/100M.bin bs=1024 count=102400 >>/dev/null
# dd if=/home/tovert/100M.bin bs=1024 count=102400 | ↵
в разделе Popularity. Туннельная сеть образует виртуальное ssh tovert@192.168.12.2 "cat - >>/dev/null"
соединение между wsalekseybb и wskostja, определенное
как сеть 192.168.12.0/24. Для станции wsalekseybb настрой- Симуляция UDP-трафика будет производить утилитой
0.177
TCP 105 TCP 103.9 128 152585 5504 10 1.14
(до 0.188)
TCP 105 TCP 117.2 0.0736 130 157852 4318 10+10 1.16
0.18
TCP 105 UDP 103.9 124 161677 7995 10 1.11
(до 0.19)
TCP 105 UDP 117.1 0.0791 126 164227 6281 10+10 1.13
80
сети
Таблица 2. Передача UDP-трафика в туннелях
Протокол Объем Шейпер, Шейпер,
Режим Передано Потеряно Шейпер, Отправлено /
передачи отправленных передано уничтожено Потери, % Реально прибыло, Мб
туннеля в tun0, Мб в tun0 пакетов передано Мб прибыло
данных данных, Мб пакетов пакетов
UDP 105 TCP 1.8 75375 1.94 1406 0 0 1.73 1.04
UDP 105 TCP 2.1 75195 2.29 1729 0 10 1.867 1.12
UDP 105 UDP 5.3 72744 3.5 4490 1611 0 3.125 1.69
UDP 105 UDP 8.0 70678 5.02 6441 2611 10 4.08 1.96
туннеля UDP напротив очень хорошо. ние TCP-транспорта добавляет толь- UDP ограничивает полосу скоростью
Для этого поднимем туннель OpenVPN ко 4% к переданному объему по срав- 5,9 Мбайт/сек, а в режиме TCP даже
сначала в режиме TCP, затем в режи- нению с применением UDP-туннеля. То еще ниже 2,9 Мбайт/сек. Вероятно, это
ме UDP, и в каждом состоянии прове- есть, 10% трафика «честно» пропада- связано с тем, что туннель организован
дем тестовую пересылку без потерь, ет в линии передачи, а погрешности как программа, работающая не в про-
с потерями 10% и с двухсторонними двойного дублирования не превыша- странстве ядра, а в пользовательском
потерями. Полученные числа собе- ют 4%. Замечу, туннель достаточно ус- пространстве. Но, так или иначе, по-
рем в таблицу. К сожалению, так как ловен, сетка высокоскоростная, и рас- тери UDP-трафика начнутся сразу же
используется высокоскоростная сеть, хождения RTT минимальны, что пока- на входном интерфейсе туннеля, даже
тестовый файл невелик, а время не зала и утилита traceroute выше по тек- если в нем не настроен собственный
позволяет делать сотни прогонов сту. И все равно не получается полного шейпер. Второй барьер для UDP бу-
и затем производить сглаживание ре- удвоения или учетверения. В условиях дет создавать ограничитель трафика,
зультатов, то в таблицу 1 будут зане- реального туннеля, где RTT будут раз- имитирующий «узкое место», взведен-
сены наиболее показательные дан- личаться больше, скорости будут ниже, ный в нашем случае после хоста server.
ные из 2-3 прогонов на каждом усло- а потери, скорее всего, будут меньше, Ну и, наконец, в тестах с потерей тра-
вии и дополнительно указан возмож- разница в условиях прохождения TCP- фика дополнительную убыль пакетов
ный разброс. трафика через TCP- и UDP-туннель ста- UDP обеспечит фильтрация на входе
Колонка 5 не выявила никакого пре- нет совсем незаметной. wskostja. Обратный трафик «портить»
имущества UDP-туннелей в скорости. Другими словами, никакого су- не будем, так как это не скажется су-
Средний разброс показателей +/-5%. щественного ухудшения TCP внутри щественно на выводах. Результаты
То есть независимо от несущего про- TCP в нашем эксперименте замечено тестов сведены в таблице 2.
токола внутренний TCP рано или поз- не было. Но если нет ухудшения при Судя по колонке 4, неявный шей-
дно подстраивался под условия пе- работе через TCP-туннель, то, быть мо- пинг самого туннеля привел к тому,
редачи и находил примерно одинако- жет, надо искать улучшение при работе что в режиме TCP «пролетело» в ин-
вый максимум. А вот показатели ко- через UDP-туннель? И если проверка терфейс в два раза меньше пакетов,
лонки 6 имеют более интересную ин- TCP-трафика не выявила преимущес- чем в режиме UDP. Ну и как следс-
терпретацию. Итак, в идеальных ус- тва одного над другим, то может, сто- твие, окончательно попало в точку на-
ловиях на шейпере насчитано 112 Мб, ит проверить, как передается UDP-тра- значения (колонка 10) меньше в режи-
как в TCP-туннеле, так и в туннеле UDP. фик в таких туннелях. ме TCP, чем в UDP. Поскольку туннель
Но, как только включаем уничтожение TCP, кроме всего прочего, может под-
10% трафика, туннель UDP ведет се- Передача UDP в туннелях страиваться под реальную пропускную
бя пропорционально потерям и добав- Передача UDP-трафика – это весьма способность туннеля, то в TCP-режиме
ляет уничтоженное повторной пере- условное понятие. Фактически это бо- на шейпере после server нет потерь,
сылкой дополнительных 10% объема лее похоже на ветер. И поэтому поня- а в UDP они присутствуют. Но самые
112*11=123,2, что примерно равно по- тие «скорость передачи» теряет всякий интересные результаты дает расчет
лученным 124 Мб на счетчике шейпе- смысл. В тестовых проверках скорость отношения трафика, реально отправ-
ра (все индексы в колонке 10). Туннель случайным образом определялась ленного через туннель, и того, что был
TCP реагирует на уничтожение трафи- в диапазоне от 13 до 29 Мбайт/сек. получен в точке назначения. И в том
ка предсказанным способом – выпол- Но если на пути такого «ветра» встре- и в другом режиме работы туннеля
няет дублирование повторов, и трафик чается участок с меньшей полосой это соотношение подчиняется пра-
на шейпере возрастает, но, как это то- пропускания, недостаточной, чтобы вилу, что трафик в проверке работы
же было предсказано, не на полные передать все имитированные паке- с потерями выше трафика в идеаль-
20%, а лишь на 14%. Как только вклю- ты, то излишки просто уничтожаются. ном случае примерно на величину по-
чаем уничтожение обратного трафика, Как показали прогоны трафика через терь. Например, для TCP 1,04*1,1=1,14
то потери еще выше, но опять не 40%, туннель OpenVPN вместе с шейпером, приблизительно равно 1,12, получен-
как при полных повторах, и не 20%, настроенным на большие предельные ному в эксперименте. Или для UDP –
а всего лишь 16%! Если сопоставить скорости, чем 10 Мбит/сек, сам тун- 1,69*1,1=1,86 приблизительно рав-
показатели трафика через туннель- нель является скрытым ограничите- но 1,86, что показал тестовый про-
ный интерфейс (колонка 4) и через лем полосы. При настройках, соглас- гон. Но вот само базовое соотноше-
шейпер (колонка 6), то использова- но, указанным выше, туннель в режиме ние пропорции доставки неутешитель-
82
bugtraq
Сломленная, но не сдавшаяся:
история операционной системы BeOS
Дмитрий Мороз
«Взрыв сверхновой звезды» – именно так можно было охарактеризовать появление на рынке
в 1996 году компьютера BeBox и операционной системы BeOS. Прошло время, и звезда
постепенно угасла. Но, похоже, в скором времени настанет черёд повторного взрыва.
Прелюдия сился. Руководство Apple также не воз- мандами разработчиков проекта «Ягу-
Если покопаться в анналах мировой ис- ражало, правда, поставило лишь одно ар» и оригинального Macintosh вынуди-
тории развития вычислительной тех- условие – новый компьютер не должен ли управляющего Apple Джона Скал-
ники и выудить из них компанию Apple, стоить больше 8000 долларов. ли в июне 1990 г. закрыть сделанный
BeOS берёт своё начало именно с про- Работа закипела. Благодаря невы- на 50% проект.
изводителя «яблочных» компьютеров. сокой цене чипа Motorola 88100 инжене- Впоследствии Жан-Луи Гассе, дис-
Жана-Луи Гассе знает, наверное, прак- ры смогли установить в первые прото- кредитировавший себя выпуском пер-
тически каждый обладатель Macintosh типы сразу четыре штуки. Платформа вого ноутбука компании Macintosh
(рис. 1). Человек, в одно время руко- на новом процессоре требовала и но- Portable, а также вступивший в личную
водивший представительством Apple вой операционной системы, поэтому борьбу со Скалли, был вынужден по-
во Франции, благодаря своим успехам группой из 80 программистов за пару дать в отставку. Случилось это в сере-
со временем занял должность началь- месяцев была разработана новая ОС дине 1990 года.
ника всех исследовательских и произ- под кодовым названием Bojole, осно-
водственных подразделений компании. ванная на микроядре Mach. Созданное Гассе отправляется
На его счету выпуск моделей Mac Plus, в недрах университета Карнеги-Мелло- в свободное плавание
Macintosh II и Macintosh SE, снискавших на, оно было основано на исходных ко- Уйдя из Apple, Гассе тем не менее
большую популярность у покупателей. дах операционной системы UNIX, и од- не расстался с мыслью разрабаты-
Но мало кто знает о секретных проек- но из немногих в то время обладало вы- вать новые компьютеры. Однажды он
тах, которыми руководил Гассе. Ими яв- тесняющей многозадачностью и подде- встретился с Ирвином Гаулдом, управ-
лялись Aquarius – процессор на базе рживало защищённый режим памяти. ляющим Commodore Business Machines.
RISC-архитектуры, и Jaguar – профес- Четыре процессора и быстрая опе- По словам самого Гассе: «Он хотел, что-
сиональная рабочая станция. Именно рационная система позволили ново- бы я возглавил отдел исследований
второй проект нас и интересует. му компьютеру ещё на стадии разра- и разработок компании Commodore
Целью «Ягуара» являлось созда- ботки свободно обрабатывать аудио- Amiga (разрабатывавшей одноимённые
ние высокопроизводительной рабо- и видеоданные, а также трёхмерную компьютеры), но я сказал: «Нет, я уже
чей станции на основе RISC-процессо- графику, а встроенные стереодина- проходил через это. Я хочу управлять
ра Motorola 88110. Стратегия «правого мики и камера для проведения видео- компанией». Гаулд ответил, что у не-
верхнего угла», согласно которой в не- конференций подняли возможности го уже имеется прекрасная кандидату-
драх компании разрабатывались ком- «Ягуара» на уровень графических ра- ра, что означало отказ. Тем не менее
пьютеры с высокой производительнос- бочих станций, стоивших десятки ты- Жан-Луи извлёк из встречи некоторые
тью и расширяемостью, обладавшие сяч долларов. По словам Хью Марти- идеи относительно компьютеров Amiga:
при этом такой же высокой ценой, бы- на: «Мы сделали полноценный муль- «Я немного обиделся на мистера Гаул-
ла навязана Apple именно Жаном-Луи. тимедийный компьютер, на годы опе- да и решил, что, возможно, я мог бы
Поэтому, когда один из инженеров ком- редивший своё время». создать что-нибудь наподобие Amiga,
пании, Хью Мартин, предложил пред- К сожалению, несовместимость но- только построенное на современной
приимчивому французу создать сверх- вой операционной системы с програм- аппаратной базе. Кроме того, в отличие
быстрый компьютер на базе новой тогда мами для MacOS, а также возросшее от высокомерной Commodore я бы луч-
RISC-архитектуры, тот сразу же согла- до предела противоборство между ко- ше заботился о разработчиках програм-
84
ретроспектива
AT&T, оперативной памяти и последова- мана: «От этого названия веяло чем-то
тельного порта. Позже Сакоман доба- мрачновато-извращённым, и я предло-
вил второй процессор, флоппи-диско- жил Жану-Луи на выходных поискать
вод, жёсткий диск, дополнительные па- какое-нибудь более подходящее на-
раллельные и последовательные пор- звание». В понедельник, когда Гассе
ты, а также видеоадаптер, разработан- спросил Сакомана, что тот нашёл, Стив
ный им самим. ответил, что пока дошёл лишь до бук-
Через некоторое время Гассе при- вы «В». «Что же, пусть будет «Be», – ре-
гласил на работу троих программистов, шил Гассе. Так компания и обзавелась
двое из которых – Боб Герольд и Эрик своим «пчелиным» именем.
Рингвальд – раньше работали в Apple Кроме того, вместе со становлени-
(Боб работал над проектом «Newton», ем Be Inc. в качестве полноценной ком-
а Эрик – над «Ягуаром»). Третий про- пании было принято решение об арен-
граммист, Бенуа Шиллингс, был пригла- де небольшого офиса, который рас-
шён Гассе и Сакоманом после впечат- полагался в Менло Парке, штат Кали-
ляющей демонстрации своих программ, форния, – недалеко от зданий Apple
которые он разрабатывал для MacOS. Computer.
В обязанности Боба Герольда вхо- Шёл 1992 год. Работа над BeBox
дила отладка создаваемых Сакоманом продолжалась. Стив Сакоман последо-
прототипов, а также написание драй- вательно добавил в прототипы компью-
Рисунок 1. Жан-Луи Гассе собственной веров. Что же касается Эрика и Бенуа, тера звуковую плату, встроенный мо-
персоной
они создавали для нового компьюте- дем, а также три цифровых сигнальный
мных продуктов». Таким образом, Гассе ра новую ОС. процессора (DSP) производства AT&T,
принял решение, за которое ему впос- Вообще-то вначале разработчи- которые должны были отвечать за об-
ледствии будут благодарны миллионы ки предложили Гассе купить либо ли- работку звуковых и видеоданных.
людей, – он решил создать компьютер цензировать какую-нибудь из уже су- Не отставала от BeBox и его опера-
нового поколения самостоятельно. ществующих «встраиваемых» опе- ционная система. В конце 1991 года Гас-
По замыслу Гассе, его новинка рационных систем. К сожалению, се нанял на работу Сирила Меуриллона,
должна была стать тем «мультимедий- ChorusOS, на которую пал взор из-за начавшего работу над ядром для BeOS.
ным монстром», на пост которого пре- её заманчивых возможностей, ока- В это же время на сцене Be Inc. появил-
тендовал так и не состоявшийся про- залась слишком дорогой. Впоследс- ся Доминик Джиамполо, автор знаме-
ект «Ягуар». На воплощение новой идеи твии Chorus Microsystems была куп- нитой файловой системы BeOS. Бенуа
у француза имелись 1,7 млн. долларов, лена Sun Microsystems и стала осно- Шиллингс, работая совместно с ним,
с которыми он ушёл из Apple. Чуть поз- вой JavaOS. Гассе и компания приняли написал первую версию графической
же Гассе благодаря своим связям по- окончательное решение – делать опе- подсистемы BeOS, которая затем пре-
лучил дополнительное 7-миллионное рационную систему своими силами. вратилась в главную часть ОС – сервер
финансирование. Помощником Жана- На рубеже 1991-92 гг. Гассе нако- App Server. 1993 год ознаменовался вы-
Луи в организации собственной ком- нец-то принял решение дать своей ходом первой тестовой версии ОС (так-
пании стал Кори Ван Арсдейл, на кото- крошечной компании имя. Изначаль- же известной как DR1) (рис. 2).
рого были возложены обязанности ад- но он планировал назвать её United Уже в 1994 году появилась версия
воката и главного менеджера. Technoids, но, по словам Стива Сако- DR2, в которой было исправлено мно-
Первым инженером, кото- жество ошибок, а также до-
рого Гассе пригласил в свою, бавлены поддержка SCSI-дис-
ещё в то время не названную, ков и GeekPort – специально-
Be Inc., стал Стив Сакоман, го порта BeBox, предназна-
один из бывших сотрудников ченного для энтузиастов-про-
Apple, «отец» проекта Newton, граммистов. Кроме того, сис-
позже ставшего первым кар- тема обзавелась первыми
манным персональным ком- средствами разработки при-
пьютером в мире. ложений.
Вначале Сакоман работал
у себя дома. Буквально че- BeOS под
рез несколько дней после на- микроскопом
чала воплощения идеи Гассе Те п е р ь с д е л а е м н е б о л ь -
в жизнь, он разработал пер- шую остановку и рассмот-
вый прототип компьютера, рим подробнее особеннос-
состоявший из текстолито- ти BeOS, а также её досто-
вой платы, 20 МГц процессора Рисунок 2. Одна из ранних версий BeOS для BeBox на базе инства по сравнению с кон-
Hobbit производства компании процессоров Hobbit курентами:
86
ретроспектива
пам, вследствие чего стало основным ке Agenta’95, позже назвал BeBox «су- возможностей компьютера и ОС и же-
и единственным». перкомпьютером в компактном кор- лающих начать разрабатывать для неё
пусе ПК» (вспомните, какая компания новое ПО. Кроме того, Be Inc. воплоти-
Триумф BeBox в 1999 году придаст своему компью- ла в жизнь новую концепцию продаж
Конец 1994 года мог стать концом ком- теру приставку «супер»). Два процес- программного обеспечения: вместо то-
пании Be Inc: 9 миллионов долларов сора PowerPC 603e, несмотря на свои го, чтобы раскошеливаться на рекла-
компании иссякли, а разработка ком- 66 Мгц, помогали BeBox демонстриро- му, компании, а также программисты-
пьютера только подходила к своему за- вать производительность на уровне ра- одиночки предлагали потенциальным
вершению. Ещё минимум год ушёл бы бочих станций IBM RS/6000, стоивших покупателям демо-версии своих про-
на то, чтобы довести «до ума» операци- десятки тысяч долларов. Возможность грамм, размещённых на специально
онную систему. Жан-Луи Гассе принял установки до 256 Мбайт ОЗУ в обыч- созданном Be Inc. сайте BeDepot.com.
решение найти для компании нового ный ПК в 1995 году была также чем-то Если пользователю понравилась де-
владельца. Его взор обратился к быв- нереальным. А уж 26 различных портов мо-версия, он мог при помощи обычно-
шему работодателю – Apple. В недрах ввода/вывода, располагавшихся на за- го телефона заказать себе полную вер-
«яблочной» компании в то время разра- дней стенке компьютера, делали из ком- сию. Кстати, многие компании-разра-
батывалась операционная система под пьютера Be Inc. поистине «чудо». Чего ботчики ПО для BeOS (например, та же
кодовым названием Copland, призван- уж говорить об операционной системе, BeatWare) «вышли в свет» именно бла-
ная заменить стремительно устарева- о возможностях которой было написа- годаря такой системе продаж.
ющую MacOS 7.x. но выше. Зрители были в шоке от де- В начале 1996 года производство
«Финансовых средств у нас не ос- монстрации BeBox. А довольно низкая BeBox, вследствие иссякших в очеред-
талось, и мне пришлось пригласить на цена в 1995 у.е., как для системы, де- ной раз денежных средств, было при-
встречу руководителя Apple Майкла монстрирующей подобный уровень про- остановлено. Компания была на грани
Шпиндлера, чтобы поговорить с ним изводительности и возможности, стала банкротства. Тем не менее на волне бу-
о возможности покупки Be Inc.», – вспо-«последним гвоздём». Многотысячная ма, поднятого демонстрацией компью-
минает Гассе. К сожалению, встреча за- аудитория, присутствовавшая в зале, тера на Agenta’95, быстро нашлись но-
кончилась, не принеся никакого резуль- устроила Жану-Луи Гассе овацию. Это вые инвесторы и, после 14-миллионно-
тата. Но Гассе никогда не забудет слов,был его день, день всей команды Be Inc., го «вливания» в активы компании, про-
произнесённых Шпиндлером на проща- и, конечно же, триумф BeBox и BeOS. цесс производства был возобновлён.
ние: «Тебе, наверное, спится лучше, чем Следующей целью Жана-Луи Гассе
мне». «Я помню этот момент, поскольку Удержаться на волне стала выставка MacWorld Expo, прохо-
Шпиндлер всегда очень хорошо пред- успеха дившая летом 1996 года. Официально
чувствовал опасность», – говорит Гас- Выставка Agenta’95 принесла Be Inc. Be Inc., кстати, запрещалось присутс-
се. Apple была на краю пропасти: проект дополнительные инвестиции на сумму твовать на выставке, поскольку её про-
Copland разросся до невероятных раз- 6 млн. долл. (одним из инвесторов стал дукция никаким образом не была связа-
меров и превратился в «неповоротли- известный разработчик суперкомпью- на с Apple. Тем не менее 6 августа 1996
вый Титаник», готовый в любую мину- теров Сеймур Крей), которые позволи- года тысячи людей столпились возле
ту пойти ко дну от внезапного столкно- ли компании доработать BeBox до со- стенда компании: на нём демонстриро-
вения с айсбергом. стояния полной готовности и 3 октяб- валась BeOS, работавшая на компьюте-
Неудача попытки продажи Be Inc. за- ря начать отгружать компьютеры пер- ре Power Macintosh. Зрители были в шо-
ставила Гассе готовиться к единствен- вым заказчикам. В то же время рабо- ке: то, чего все уже который год жда-
ному выходу – публичной демонстрации та над совершенствованием BeOS про- ли от Copland (главным образом, вы-
BeBox потенциальным инвесторам в на- должалась. тесняющую многозадачность и защи-
дежде привлечь хоть какие-нибудь де- До апреля 1996 года компанией щённый режим памяти), уже было воп-
нежные средства для продолжения про- было выпущено семь тестовых версий лощено в BeOS и работало на их ком-
екта. Данное событие должно было со- системы (так называемые Development пьютерах! Кроме того, ОС также рабо-
стояться на выставке Agenta’95. Release), каждая из которых добавляла тала на клонах Macintosh, производив-
Специально для будущей выстав- в ОС новые возможности, а также улуч- шихся компанией Power Computing. Mac-
ки Стив Сакоман подготовил презен- шала уже существующие. Та же BeOS версия операционной системы от Be Inc.
тацию, демонстрировавшую обработ- DR7 могла «похвастаться»: поддержкой произвела очередной фурор.
ку на BeBox восьми AVI-видеофайлов 32-битного цвета, новой файловой сис- Но мало кто знает, что предназна-
и трёхмерной графики (Жан-Луи Гассе темой BFS, виртуальными Рабочими чалась эта версия ОС для другой це-
хотел лицензировать у Apple технологию столами, а также улучшенными сете- ли – демонстрации Apple возможнос-
QuickTime, но цена в 5 млн. долларов выми возможностями. ти работы BeOS на компьютерах Power
оказалась для Be Inc., ещё не выбрав- По словам Жана-Луи Гассе, внача- Macintosh. Да-да, теперь Apple первой
шейся из «долговой ямы», просто непо- ле BeOS необходимо было набрать ми- предложила Гассе купить его компа-
мерной). Всё это работало одновремен- нимальную «критическую массу» про- нию. Правда, запрошенная им цена
но и без какого-либо торможения. грамм, для чего компьютеры BeBox по- в 300 млн. долл. показалась «яблочной»
Один из журналистов, присутство- падали, в основном, в руки програм- компании слишком большой (она пред-
вавших в тот памятный день на выстав- мистов, поражённых демонстрацией лагала Be Inc. «лишь» 100 млн. долл.),
88
содержание журнала за 2005 год
АДМИНИСТРИРОВАНИЕ № Автоматизация процесса подключения баз 1С с помощью
сценария регистрации пользователей в сети Иван Коробко №3
Alt-N MDaemon – почтовая система для средних Автоматизируем подключение баз 1С новой версии 8.0
и крупных компаний Роман Марков №4 Иван Коробко №7
Alt-N MDaemon – почтовая система для средних Автоматизируем установку драйверов в Windows
и крупных компаний. Часть 2 Роман Марков №5 Алексей Барабанов №11
Apache как прокси-сервер Валентин Синицын №4 Автоматическая установка ОС и сопутствующего
Asterisk и Linux: миссия IP-телефония Михаил Платов №6 программного обеспечения Иван Коробко №2
Asterisk и Linux: миссия IP-телефония. Действие 2 Архивируем данные с помощью Bacula Алексей Гринько №4
Михаил Платов №7 Базовая настройка маршрутизатора Cisco
Asterisk и Linux: миссия IP-телефония. Действие 3 начального уровня Андрей Маркелов №4
Михаил Платов №8 «Бритва» для спама Сергей Супрунов №9
FreeBSD tips: NAT по старинке Сергей Супрунов №2 Восстанавливаем удаленные файлы под BSD
FreeBSD tips: использование ipnat Сергей Супрунов №3 Крис Касперски №5
FreeBSD tips: использование syslog Сергей Супрунов №5 Восстановление удаленных файлов под Linux
FreeBSD tips: какими возможностями обладает ftpd Крис Касперски №3
Сергей Супрунов №11 Всегда на связи, или IP-роуминг: вводный курс
FreeBSD tips: работаем с TFTP Сергей Супрунов №7 Сергей Яремчук №2
FreeBSD в домене Microsoft Windows Рашид Ачилов №3 Домены Windows 2000/2003 – отказываемся
GRUB на CD, или Ещё один способ восстановить MBR от рабочей группы Роман Марков №9
Алексей Мичурин №11 Знакомимся с HPC-кластером OpenMosix Антон Борисов №8
HOTSPOT – это просто! Андрей Платонов №1 Использование альтернативных потоков данных
IСQ: разрешить нельзя запретить Павел Закляков №12 Максим Костышин №3
Kaspersky Anti-Spam 2.0 + Sendmail Денис Городецкий №4 Испытываем Antmon – новую систему мониторинга
Linux Xinerama: один монитор хорошо, а много – лучше Сергей Жуматий №6
Павел Закляков №3 Как посчитать трафик в Linux Александр Кузнецов №10
Linux из Редмонда: обзор Lycoris Desktop/LX Как эффективно провести инвентаризацию
Валентин Синицын №1 установленного софта Андрей Бирюков №12
LinuxBIOS – фундамент для Linux? Антон Борисов №7 Конструктивный Dialog Сергей Супрунов №2
MySQL 5 – что нового предлагают нам разработчики? Контролируем события с помощью EventSentry
Кирилл Сухов №6 Сергей Яремчук №12
Open-Xchange – свободу группам! Павел Лебедев №7 Крепкий орешек NUT Валентин Синицын №5
PhpGACL – система управления правами Кирилл Сухов №3 Круговорот почты в сети, Или Архитектура
Postfix: диагностируем и устраняем неисправности современных почтовых систем Евгений Прокопьев №12
Андрей Бешков №6 Кто купил Corel Linux? Валентин Синицын №2
PostgreSQL 8.0: новые возможности Сергей Супрунов №3 Мультизагрузка: стелим соломку Сергей Супрунов №12
ReactOS – свободная альтернатива Windows. Настраиваем DSPAM – ваш личный спам-фильтр
Слухи и реальность Андрей Бешков №10 Сергей Супрунов №8
SAP+MySQL=MaxDB Кирилл Сухов №8 Настраиваем основные компоненты почтового сервера
Scientific Linux – выбираем решение корпоративного Евгений Литвиненко №9
уровня по цене носителя Андрей Маркелов №10 Обзор Knoppix 3.7 Russian Edition Александр Байрак №3
Slackware на ракетном топливе, или Организуем доступ в Интернет с использованием
Обзор VectorLinux 5.0.1 SOHO Сергей Яремчук №4 биллинговой системы FreeNIBS Евгений Литвиненко №9
Solaris 10 в качестве десктопа? Пробуем! Андрей Маркелов №6 Поговорим через Интернет? Михаил Платов №11
SuSE 9.2 снаружи и изнутри Алексей Барабанов №1 Подключаем сетевые ресурсы в автоматическом режиме
SVISTAть всех наверх! Сергей Яремчук №4 Иван Коробко №9
Symantec Ghost, или Как сделать клон своими руками Почему MS SQL медленно работает? Ищем причины
Михаил Платов №9 Юлия Шабунио №5
Windows Server Update Services Сергей Сергеев №4 Почтовый сервер на базе Postfix Геннадий Дмитриев №2
WrSpy – считаем и контролируем трафик почтовых Практикум Python: отправка файлов
и прокси-серверов Роман Марков №8 по электронной почте Сергей Супрунов №3
Автоматизация MS Windows, или AutoIt как мечта Программное управление файловой системой
эникейщика. Часть 1 Алексей Барабанов №4 с помощью VBScript Иван Коробко №1
Автоматизация MS Windows, или AutoIt как мечта Прокси-сервер oops: первые впечатления Сергей Супрунов №1
эникейщика. Часть 2 Алексей Барабанов №5 Профессия – убивать спам Сергей Супрунов №10
Автоматизация MS Windows, или AutoIt как мечта Развертываем сервер Subversion на платформе FreeBSD
эникейщика. Часть 3 Алексей Барабанов №6 Андрей Шетухин, Ольга Никулина №11
Автоматизация MS Windows, или AutoIt как мечта Разрабатываем документацию с помощью NPJ:
эникейщика. Часть 4 Алексей Барабанов №7 эффективно и удобно! Алексей Коршунов №11
90
содержание журнала за 2005 год
БД PostgreSQL Владимир Мешков №10 СЕТИ №
Контролируем и ограничиваем системные вызовы
с помощью systrace Александр Байрак №8 TCP поверх TCP – не такая уж плохая идея! Алексей Барабанов №12
Нити в Perl Алексей Мичурин №1 Протоколы сетей хранения данных.
Программирование на shell в экстремальных условиях Часть I – ATA over Ethernet Антон Борисов №9
Гаспар Чилингаров №3 Строим защищённую беспроводную сеть:
Путешествие из Perl в Excel Сергей Супрунов №1 WPA-Enterprise, 802.1x EAP-TLS Андрей Платонов №5
Разрабатываем информационные системы на PHP
методом визуального программирования Евгений Воякин №7 ОБРАЗОВАНИЕ №
Редактор для создания скриптов: Primal Script 4.0
Иван Коробко №11 Unformat для NTFS Крис Касперски №2
Система создания документации POD. Часть 1 Восстановление NTFS – undelete своими руками Крис Касперски №1
Алексей Мичурин №3 Обучение при помощи ATutor Сергей Яремчук №1
Система создания документации POD. Часть 2 Свободная информационная система для школ Centre
Алексей Мичурин №4 Сергей Яремчук №5
Техника оптимизации под Linux Крис Касперски №2 Сервер для школ Сергей Яремчук №4
Техника оптимизации под Linux. Часть 2 – ветвления
Крис Касперски №3 РЕТРОСПЕКТИВА №
Техника оптимизации под Linux. Часть 3 Крис Касперски №4
Управляем серверами в реальном времени Alpha, или история одной архитектуры Павел Болотов №11
с помощью WSH-сценариев Андрей Бирюков №10 История взлёта и падения OS/2 – одной из самых
интересных операционных систем Алексей Коршунов №10
HARDWARE №
IMHO №
Запись дисков CD-R/RW в Linux. Часть 3 Владимир Мешков №1
Запись дисков CD-R/RW в Linux. Часть 4 Владимир Мешков №2 Размышления о UNIX Сергей Супрунов №6
Используем LinuxBIOS на системах VIA EPIA-M
Антон Борисов №8
ХОББИ №
Как спасти данные, если отказал жесткий диск
Крис Касперски №9 Десять красок неба Наталья Алексютина №11
Модифицируем BIOS Крис Касперски №6
Настраиваем автоответчик на базе Linux Павел Закляков №10 СКАЗКИ №
Цифровое небо, или Организуем прием
спутникового вещания Антон Борисов №10 Админские сказки. 16 bit edition Алексей Барабанов №8
Мир InterBase
Алексей Ковязин, Сергей Востриков
су полезного. Все содержание хоро- изнутри на установку, технологии ре-
шо структурировано, и материал из- зервного копирования данных, миг-
лагается последовательно. Знакомс- рацию, методы восстановления баз
тво с DB начинается непосредствен- данных, статистику, а также оптими-
но с установки. Далее читателю рас- зацию работы. Вопрос, касающийся
сказывается о том, как создать базу, безопасности, не остался в тени: рас-
какие типы данных бывают, рассмот- смотрены пользователи, роли и пра-
рены таблицы, индексы, представле- ва. В разделе, посвященном современ-
ния, хранимые процедуры, тригеры ным версиям DB семейства InterBase,
и, что немаловажно, ограничения ба- расказано про Yaffil – российский клон
зы данных. Очень подробно освяще- СУБД InterBase, InterBase 7 версии
на тема транзакций и их параметров. и о Open Source-разработки – FireBird.
После такой подробной вводной части В приложении приводится подробное
вы ознакомитесь с методами разработ- описание параметров конфигураци-
ки приложений баз данных InterBase онного файла InterBase. Книга остави-
Книга по праву считается самой по- на Borland Delphi/C++ Builder/Kylix. ла очень благоприятное впечатление –
пулярной в России, посвященной DB Вы узнаете об использовании основ- все четко и все по делу.
InterBase и FireBird. ных компонентов InterBase eXpress (IBX)
Это уже четвертое издание кни- и о методах работы с FIBPlus. Среди Издательство: «КУДИЦ-ОБРАЗ»
ги, так что весь материал исправлен прочих языков и методов разработки Год издания: 2006
и дополнен в соответствии с вводом приложений рассмотрены Java, ODBC, Количество страниц: 496
в строй новых технологий и версий CGI и Microsoft OLD DB. В четвертой ISBN: ISBN 5-9579-0105-9
ПО. По большей части материал рас- части приводятся фактически исчер- Цена: ≈ 335 руб.
считан на программистов, но админис- пывающие сведения об администриро- Книга предоставлена издательством
траторы также найдут для себя мас- вании и архитектуре InterBase. Взгляд «КУДИЦ-ОБРАЗ».
92
книжная полка
Приемы объектно-ориентированного
проектирования
Эрих Гамма, Ритчард Хелм, Ральф Джонсон,
Джон Влиссидес
граммисты ищут методы увеличения проектирование WYSIWYG-редактора
степени повторного использования документов. Порождающие паттерны
своих наработок, прибегая зачастую (Abstract factory, builder, factory method,
к нетривиальным схемам и изобретая prototype, singleon) рассмотрены в тре-
очередной «велосипед». Как избежать тьей главе. Структурным паттернам
всего этого и начать использовать тех- также посвящена отдельная часть. Обо
нологии паттернов, вы можете узнать, всех этих и некоторых других паттер-
прочитав книгу. Прочитав первую гла- нах вы узнаете из главы «Паттерны
ву, вы поймете основные концепции поведения». В заключение книги ав-
использования паттернов. Основной торы делятся своими мыслями и иде-
круг рассмотренных вопросов: пат- ями о развитии технологий паттернов.
терны проектирования в схеме MVC Так же рассмотрены проектировщики
Интереснейшее издание. А если в языке Smalltalk, описание и каталог паттернов. Книга несомненно должна
учесть, что материала по данной те- паттернов, организация каталогов. быть на полке у каждого уважающего
ме фактически нет, книга делается Также рассмотрены такие важнейшие себя программиста.
фактически уникальной. Многие по вопросы, с которыми столкнется каж-
значимости приравнивают это кни- дый разработчик, начавший исполь- Издательство: «Питер»
гу к классическим трудам Дональда зовать паттерны, – как решать зада- Год издания: 2006
Кнута. Что является сутью паттернов? чи проектирования, как правильно вы- Количество страниц: 366
Паттерны – это шаблоны решения ти- брать и использовать паттерн. Вторая ISBN: 5-272-00355-1
повых задач, без привязки к конкрет- глава носит исключительно практичес- Цена: ≈ 230 руб.
ному языку реализации. Многие про- кий характер, в качестве примера, – Книга предоставлена издательством «Питер».
Подписные
индексы:
20780*
81655**
по каталогу
агентства
«Роспечать»
87836
по каталогу
агентства
«Пресса
России»
*
годовой
**
полугодовой
94
подписка на 2006 год
Редакционная подписка
Открыта подписка через редакцию. Вы можете оформить
подписку на любое количество номеров 2006 года. Редак-
ция не высылает журналы за пределы Российской Феде-
рации.
Стоимость
подписки через
редакцию:
900* руб.
за 6 номеров
1800* руб.
за 12 номеров
* Включая НДС
и почтовую доставку
РЕДАКЦИЯ
ЧИТАЙТЕ
Исполнительный директор
Владимир Положевец В СЛЕДУЮЩЕМ
НОМЕРЕ:
Ответственный секретарь
Наталья Хвостова
sekretar@samag.ru
Технический редактор
Владимир Лукин
Редактор DBMail: строим почтовую дуру, а пользователю теперь нет не-
Алексей Коршунов систему на основе обходимости в каждодневном обнов-
Внештатные редакторы реляционной СУБД лении системы и антивирусных баз.
Андрей Бешков Практически все современные ин- CORE FORCE яркий пример того, как
Алексей Барабанов формационные системы, используе- можно защитить систему, не зная ни-
Кирилл Тихонов мые для управления бизнес-процес- чего об угрозе.
Кирилл Сухов сами предприятия, построены на ос-
Татьяна Ильченко нове реляционных СУБД. Почтовая Представляем
Сергей Супрунов
система предприятия – очень важ- EnterpriseDB
ная часть его IT-инфраструктуры, од- В наше время появление из «ниот-
РЕКЛАМНАЯ СЛУЖБА
тел./факс: (095) 928-8253 нако до сих пор в качестве хранили- куда» новой СУБД уровня предпри-
Дарья Хохлова ща почтовых сообщений, как прави- ятия выглядит довольно фантастич-
reсlama@samag.ru ло, используются различные тексто- но. Тем более если эта СУБД распро-
вые форматы. Нам предстоит постро- страняется под открытой лицензи-
Верстка и оформление ить почтовый сервер на основе СУБД ей и имеет в своём составе развитые
maker_up@samag.ru и посмотреть, какие преимущества средства администрирования и раз-
Дизайн обложки это даст. И хотя DBMail придется прой- работки. Впрочем, совсем новым про-
Николай Петрочук ти еще долгий путь, чтобы заслужить дукт компании назвать трудно – он ос-
признание и получить такую же попу- нован на Open Source-базой данных.
По вопросам распространения
лярность, как, например, Courier IMAP PostgreSQL, но существенно расши-
обращайтесь по телефону:
или Cyrus IMAP, но уже сейчас видно, ряет её возможности, добавляя но-
(095) 928-8253 (доб. 120)
что его потенциальные возможности вые возможности и наращивая про-
107045, г. Москва, очень широки. изводительность. В статье будет рас-
Ананьевский переулок, дом 4/2, стр. 1 сказано об особенностях EDB и нача-
тел./факс: (095) 928-8253 Защищаем ле работы с ней .
Сайт журнала: www.samag.ru Windows-системы
с помощью CORE FORCE Судьба shell-кода
РУКОВОДИТЕЛЬ ПРОЕКТА В последнее время явно наметилось на системах
Петр Положевец оживление «альтернативных» прило- с неисполняемым стеком,
УЧРЕДИТЕЛИ жений, защищающих Windows, в кото- или Атака на DEP
Владимир Положевец
рых разработчики смотрят на пробле- Отчаявшись справиться со своими же
Александр Михалев
му со стороны приложения, а не кон- собственными ошибками, компания
ИЗДАТЕЛЬ
ЗАО «Издательский дом кретной уязвимости. Очевидно, рабо- Microsoft совместно с Intel и AMD ре-
«Учительская газета» чую среду приложения проще преду- ализовала технологию DEP, призван-
гадать, чем сигнатуру неизвестного ную покончить с удаленными атаками
Отпечатано типографией вируса. Создание сообщества CORE раз и навсегда, но этого не произош-
ГП «Московская Типография №13» FORCE только упрощает эту проце- ло, и защиту удалось обойти...
Тираж 9000 экз.
96