Максимальная Безопасность:

Руководство Хакера по Защите Вашего Internet Сайта и Сети

Предыдущая главаСледующая главаСодержание


7

Рождение Сети Internet

Читатели, уже знакомые с ранним развитием Internet, могут обойти этот небольшой срез истории. Эта история рассказывалась много раз.

Наша цель это начало 1960-ых: 1962, чтобы быть точный. Белом доме был Jack Kennedy, Битлс только что сделала запись своего первого сингла (Love Me Do - Полюби Меня), и Christa Speck, нокаутирующая брюнетка из Германии, стала Партнером Года. Большинство Американцев наслаждалось эрой процветания. Однако где-то распространился Коммунизм, и с ним пришло ужасно разрушительное оружие.

В ожидании надвигающегося атомного бедствия, Воздушные Силы Соединенных Штатов основали маленькую группу исследователей с огромной задачей: создание сети связи, которая могла бы пережить ядерное нападение. Ее концепция была революционна: эта сеть не имела централизованного управления. Если бы 1 (или 10, или 100) её узлов были разрушены, система продолжила бы работать. В сущности, эта сеть (предназначенная исключительно для военного использования) пережила бы апокалипсис (даже если бы мы не пережили).

Человеком, в значительной степени ответственным за создание Internet, был Paul Baran. В 1962 Baran работал в Корпорацией RAND, мозговым центром, работающим по разработке этой концепции. Baran видел сеть очень похожей на fishnet. В его теперь известном меморандуме, названном On Distributed Communications: I. Introduction to Distributed Communications Network (Распределенная Связь: I. Введение в Распределенную Систему Коммуникаций), Baran объяснял:

Централизованная сеть уязвима, и это очевидно, поскольку разрушение единственного центрального узла уничтожает связь между конечными станциями. Практически, используется смесь звезды и сетевых компонент, чтобы сформировать системы коммуникаций. Такая сеть иногда называется 'децентрализованной' сетью, поскольку не всегда требуется полностью полагаться на один узел.

Ссылка: Корпорация RAND великодушно сделала меморандум и отчет, написанные Baran, доступными во Всемирной Сети. Документы могут быть найдены на
http://www.rand.org/publications/electronic/.

Модель Baran была сложна. Ее представление охватывало каждый аспект предложенной сети, включая соглашения о маршрутизации. Например, данные должны путешествовать по сети независимо от того, по каким каналам были доступны в данный момент. В сущности, данные динамически определяли бы свой собственный путь при каждом шаге путешествия. Если бы данные столкнулись с какими бы то ни было проблемами на одном перекрестке Сети, они нашли бы дополнительный маршрут. Предложенный проект Baran'а предусмотрел все типы непредвиденных обстоятельств. Например, сетевой узел только тогда бы принял сообщение, когда бы имел адекватное пространство, доступное для его сохранения. Также, если данные сообщения решили, что все узлы в настоящее время недоступны (сценарий все линии заняты), сообщение будет ждать на текущем узле, пока путь для данных не станет доступным. Таким образом, сеть обеспечила бы интеллектуальную транспортировку данных. Baran также детализировал другие аспекты сети, включая:

В сущности, Baran ясно сформулировал рождение сети в подробностях. К сожалению его идеи шли впереди своего времени. Пентагон имел небольшую веру в такие радикальные концепции. Baran delivered to defense officials an 11-volume report that was promptly shelved.

Близорукость Пентагона задержала рождение Internet, но не много. К 1965 все началось снова. Было распределено финансирование для разработки децентрализованной компьютерной сети, и в 1969 эта сеть стала реальностью. Она была названа ARPANET.

ARPANET была основой, даже близко не походящей на Internet сегодня. Ее топология состояла из связей между машинами в четырех академических учреждениях (Научно-Исследовательский Институт в Stanford, Университет Штата Юта, Калифорнийский Университет в Лос-Анджелесе и Калифорнийский Университет в Санта Барбаре).

Одной из тех машин была DEC PDP-10. Только более старшие читатели помнят эту модель. Это массивные, древние животные, теперь более полезные как мебель, чем вычислительные устройства. Я упоминаю PDP-10 здесь, чтобы кратко упомянуть другую легенду компьютерной истории (ту, которую многие из Вас никогда не слышали). Беря это направление, я надеюсь дать Вам понять, как невероятно давно это происходило в компьютерной хронологии.

Именно в то время компания Seattle, Вашингтон, начала обеспечивать компьютерный режим разделения времени. Компания по сообщениям приняла двух ярких молодых людей, чтобы проверить её программное обеспечение. Эти молодые люди и были непревзойденными в информатике и, по слухам, были квалифицированными в искусстве обнаружения дыр в системах. В обмен на испытание программного обеспечения компании, молодым людям дали свободную модемный доступ к PDP-10 (это было бы эквивалентно получению свободного доступа к частной системе досок объявлений). К сожалению для парней, компания закрылась вскоре после этого, но этот опыт изменил их жизни. В то время, они были достаточно взрослыми, чтобы посещать среднюю школу. Сегодня они им под сорок. Вы можете предположить кто они? Эти два парня были Билл Гейтс и Пауль Аллен.

В любом случае, к 1972 ARPANET имела приблизительно 40 узлов (в современных масштабах это меньше, чем многие локальные сети, или ЛВС). Именно в этом году Ray Tomlinson, член компаний Bolt, Beranek и Newman навсегда изменил способ связи в сети. Tomlinson создал электронную почту.

Изобретение Tomlinson'а было вероятно единственным наиболее важным компьютерным новшеством десятилетия. Электронная почта предоставила простую, эффективную и недорогую связь между различными узлами сети. Это естественно привело к более активным обсуждениям и открытому обмену идеями. Поскольку сообщение электронной почты могли получить несколько получателей, эти идеи были очень быстро осуществлены. (Рассмотрим различия между электронной почтой и телефоном. С сколькими людьми Вы можете общаться одновременно по современной телефонной конференции? Сравните это с числом людей, которых Вы можете достигнуть единственным сообщением электронной почты. Для группы исследователей электронной почте нет конкурентов.) С этого момента Сеть ожила.

В 1974 Tomlinson внес вклад в другое потрясающее усовершенствование. Он (параллельно с Vinton Cerf и Robert Khan) изобрел Протокол Управления Передачей (TCP - Transmission Control Protocol). Этот протокол был новым средством перемещёния данных через сеть бит за битом и затем собирающий эти фрагменты на другом конце.


ПРИМЕЧАНИЕ: TCP это основной протокол, используемый сегодня в Internet. Он был разработан в начале 1970-ых и в конечном счете был интегрирован в Berkeley Software Distribution UNIX. С тех пор он стал стандартом Internet. Сегодня почти все компьютеры, связанные с Internet, выполняют некоторую форму TCP. В Главе 6, "Краткое Введение в TCP/IP", я близко исследую TCP, как и родственные ему протоколы.

К 1975 ARPANET была полностью функциональной сетью. Начало было положено, и за это Американское правительство могло требовать награду. В этом году управление ARPANET было поручено организации тогда известный как Агентство Военной Связи Соединенных Штатов - United States Defense Communications Agency, (эта организация позже станет называться Агентством Военных Информационных Систем - Defense Information Systems Agency).

До настоящего времени Internet самая большая и наиболее всесторонняя структура, когда-либо разработанная человечеством. Дальше я буду ссылаться к некоторым периферийные технологическим разработкам, которые помогли сформировать сеть и привести её существующему состоянию сложности. Чтобы сделать это, я начну с C.

Что Такое C?

C это популярный компьютерный язык программирования, часто использующийся для написания компиляторов и операционных систем. Я исследую C здесь, потому что его разработка (и его отношение к операционной системе UNIX) непосредственно влияла на развитие Internet.

Почти все приложения, предназначенные облегчить связь по Internet, написаны на C. Действительно, и операционная система UNIX (которая лежит в основе структуру Internet) и TCP/IP (набор протоколов, использующихся для перемещёния данных по Сети) были написаны на C. Не преувеличение говорить, что если бы C не появился, Internet, какой мы её знаем, не существовало бы вообще.

Для большинства не технических пользователей, языки программирования странные, сложные вещи. Однако, языки программирования (и программисты) это то, посредствам чего создаётся компьютерная программа (обычно называемая приложением). Это может заинтересовать Вас, если Вы используете персональный компьютер или рабочую станцию, так как больше половины всех приложений, которые Вы теперь используете, были написаны на языке C. (Это верно для всех широко используемых платформ, включая Macintosh.) В этом разделе я хочу кратко обсудить C и воздать почести тем, кто помогал разрабатывать его. Эти люди, наряду с Paul Baran, Ken Thompson, и горсткой других, являются прародителями Internet.

C был создан в начале 1970-ых Dennis M. Ritchie и Brian W. Kernighan. Эти два человека ответственны за многие технологические предложения, которые сформировали современную Internet, и их имена ещё не раз появятся в этой книге.

Давайте обсудим несколько основных характеристик языка программирования C. Для начала, C является компилируемым, в противоположность интерпретируемому языку. Я отвлечься на момент, чтобы объяснить это критическое отличие, потому что многим из Вас может недоставать опыта программирования.

Интерпретируемые Языки Программирования

Большинство программ написано на простом, человеко-читаемом тексте. Этот текст состоит из различных команд и блоков программного кода, называемых функциями. В интерпретируемых языках этот текст остается в человеко-читаемой форме. Другими словами, такой программный файл может быть загружен в текстовый редактор и прочитан.

Например, исследуйте следующую программу. Она написана на Языка Практического Извлечения и Отчетов (Perl - Practical Extraction and Report Language). Цель этой Perl программы состоит в том, чтобы получить имя пользователя и вывести эго назад на экран.


ПРИМЕЧАНИЕ: Perl строго определен как интерпретируемый язык, но он выполняет некоторую форму компиляции. Однако, эта компиляция происходит в памяти и никогда фактически не изменяет физический вид программного кода.

Эта программа написана на Perl:

#!/usr/bin/perl
print "Пожалуйста, введите ваше имя:";
$user_firstname = <STDIN>;
chop($user_firstname);
print "Привет, $user_firstname\n"
print "Вы готовы ко взлому?\n"

Эта конструкция предназначена для интерпретации Perl'ом. Программа выполняет пять функций:

.

Интерпретируемые языки обычно используются для программ, которые выполняют тривиальные задачи или задачи, которые должны быть сделанными только однажды. Они иногда упоминаются как одноразовые программы. Они могут быть написаны быстро и не занимать места на локальном диске.

Такие интерпретируемые программы имеют ограниченное использование. Например, чтобы работать, они должны быть выполнены на машине, которая содержит интерпретатор команд. Если Вы берете сценарий Perl и устанавливаете его на машине с DOS (без первоначальной установки интерпретатора Perl), он не будет работать. Пользователю будет выдано сообщение об ошибке (Неверная команда или имя файла). Таким образом, программы, записанные на Perl, требуют интерпретатор для своего выполнения.

Пользователи Microsoft смутно знакомы с этой концепцией в контексте приложений, написанных на Visual Basic (VB). VB программы типично полагаются на библиотеки времени выполнения типа VBRUN400.DLL. Без присутствия этих библиотек на диске, программы VB не будут работать.


Ссылка: Пользователи Microsoft, которые хотят узнать больше о таких библиотечных зависимостях (но не хотят тратить деньги на VB) должны попробовать Envelop. Envelop это полностью свободная 32-разрядная среда программирования для Windows 95 и Windows NT. Она очень походит на Microsoft Visual Basic и генерирует привлекательные, полностью функциональные 32-разрядные программы. Она также имеет набор библиотек времени выполнения и обширную документацию относительно того, как эти библиотеки связываются с программой. Вы можете получить её на
ftp://ftp.cso.uiuc.edu/pub/systems/pc/winsite/win95/programr/envlp14.exe

Ключевые преимущества интерпретируемых языков включают:

Интерпретируемые языки популярны, особенно в семействе UNIX. Вот краткий список некоторых хорошо известных интерпретируемых языков:

Недостаток использования интерпретируемых языков в том, что программы, написанные на них, в основном намного медленнее написанных на компилируемых языках.

Компилируемые Языки

Компилируемые языки (типа C) очень различны. Программы, написанные на компилируемых языках, должны быть преобразованы в двоичный формат прежде, чем они могут быть выполнены. Во многих случаях, этот формат почти чистый машинный код. Чтобы генерировать этот код, программист пропускает человеко-читаемый код программы (простой текст) через процесс компиляции. Программа, которая выполняет это преобразование, называется компилятором.

После того, как программа была откомпилирована, для её выполнения не требуется никакой интерпретатор. Она будет работать на любой машине, на которой выполняется операционная система, для которой программа была написана. Исключения в этом правиле могут иногда относится к некоторым частям откомпилированной программы. Например, некоторые графические функции зависят от частных графических библиотек. Когда программа C пишется с использованием таких графических библиотек, в дистрибутиве должны иметься некоторые библиотечные компоненты. Если такие библиотечные компоненты отсутствуют при запуске программы, она завершится с ошибкой.

Первая преимуществом откомпилированных программ является то, что быстро выполняются. Поскольку при выполнении программа полностью загружена в память (в противоположность интерпретации), получается большое преимущество в скорости. Однако, как говорится, ничего не бывает просто так. Таким образом, хотя откомпилированные программы и быстры, но они намного больше программ, написанных на интерпретируемых языках.

Исследуйте следующую программу на C. Она идентично по функциям Perl программе, показанной предварительно. Ее код в не откомпилированном состоянии:

#include <stdio.h>
int main()
{
   char name[20];
   printf("Пожалуйста, введите ваше имя:   ");
   scanf("%s", &name);
   printf("Привет, %s\n", name);
   printf("Вы готовы ко взлому?\n");
   return 0;
}

Используя стандартный компилятор C я откомпилировал этот код в среде операционной системы UNIX. Различие в размере между двумя программами (на Perl и на C) был потрясающе. Perl программа заняла 150 байт. C программа после компиляции заняла 4141 байт.

Это могло бы показаться огромной оплошностью со стороны C, но в действительности это не так. C программа может быть перенесена на почти любую операционную систему. Кроме того, она будет работать в любой операционной системе некоторого класса. Если откомпилирована для DOS, она будет работать одинаково хорошо под всеми ДОС-совместимыми средами (типа PC-DOS или NDOS), не только в Microsoft DOS.

Современный C: Универсальный Язык

За эти годы C использовался для создания всевозможных программ для разнообразных платформ. Многие приложений Microsoft Windows были написаны на C. Точно так же, как я объясню позже в этой главе, почти все основные утилиты UNIX написаны на C.

Чтобы генерировать программы, написанные на C, Вы должны иметь компилятор C. Компиляторы C доступны для большинства платформ. Некоторые из них это коммерческие программы, а некоторые свободны для использования. Таблица 7.1 перечисляет общие компиляторы C и платформы, для которых они доступны.

Таблица 7.1. Компиляторы C и их платформы.

Компилятор Платформа
GNU C (свободная) UNIX, Linux, DOS, VAX
Borland C DOS, Windows, Windows NT
Microsoft C DOS, Windows, Windows NT
Watcom C DOS, Windows, Windows NT, OS/2
Metrowerks CodeWarrior Mac, Windows, BeOS
Symantec Macintosh, платформы Microsoft

Преимущества C

Одно основное преимущество языка C состоит в том, что он меньше многих других языков. Средний человек может изучить C за разумный период времени. Другое преимущество состоит в том, что C теперь соответствует национальному стандарту. Таким образом, программист может изучить C и применить эти знания на любой платформе, в любой стране.

C имеет прямое отношение к развитию Internet. Как я объяснял, наиболее современные реализации TCP/IP написаны на C, и они формируют основу транспортировки данных в Internet. Более важно, что C использовался для разработки операционной системы UNIX. Как я объясню в следующем разделе этой главы, операционная система UNIX в течении многих лет формирует большую часть Internet.

C имеет и другие преимущества. Дна из них это мобильность. Вы, возможно, видели утверждения в Internet о том, что та или иная программа может быть перенесена на другую операционную систему или платформу, и многие из Вас могут не знают точно, что это означает. Переносимость относится к возможности программы быть переделанной, чтобы работать на платформе отличной от той, для которой она была первоначально разработана (то есть возможность брать программу, написанную для Microsoft Windows и переносить её на платформу Macintosh). Этот аспект переносимости очень важен, особенно в среде, подобной Internet, потому что Internet объединяет много различных типов систем, работающих в ней. Чтобы сделать программу доступный по всей сети, эта программа должна быть легко переноситься на все платформы.

В отличие от кода других языков, код C высоко переносим. Например, рассмотрим Visual Basic. Visual Basic это замечательный инструмент быстрого создания приложений, который может создавать программы, работающие на любой Microsoft-совместимой платформе. Однако он имеет недостаток. Вы не можете взять необработанный код VB приложения и перекомпилировать его для Macintosh или Sun Sparcstation.

Напротив, большинство C программ могут быть перенесены на широкое разнообразие платформ. Также, C программы доступны в Internet и почти всегда распространяются в исходной форме (другими словами, они распространяются в форме простого текста, или в не откомпилированной форме). Это позволяет пользователю компилировать программу специально для своей собственной операционной системы.

Ограничения C и Создание C++

Несмотря на эти замечательные возможности, C имеет некоторые ограничения. C, например, не является объектно-ориентированным языком. Управление очень большими программами в C (где код превышает 100,000 строк) может быть трудным. По этому был создан C++. Происхождение C++ ведет от C, но работает иначе. Поскольку этот раздел содержит только краткий обзор C, я не буду широко обсуждать C++. Однако, Вы должны обратить внимание, что в наиболее современных компиляторах C, C++ часто включается как опция.

C++ чрезвычайно мощный язык программирования. Он чрезвычайно изменил стиль программирования. C++ позволяет инкапсулировать сложные функции в объекты. Эти объекты позволяют проще управлять и организовывать большие и сложные программы.

В заключении, C это популярный, переносимый и легкий язык программирования. Он основан на национальном стандарте и использовался для разработки операционной системы UNIX.


Ссылка: Читатели, которые хотят узнать больше о языке программирования C, должны найти книгу Язык Программирования C (The C Programming Language), написанную Brian W. Kernighan и Dennis M. Ritchie. (Prentice Hall, ISBN 0-13-110370-9). Эта книга является стандартом. И что чрезвычайно важно, она написана двумя людьми, которые разработали язык.

Другие популярные книги по C включают:

C: Справочное руководство (C: A Reference Manual). Samuel P. Harbison и Guy L. Steele. Prentice-Hall. ISBN 0-13-109802-0. 1987.

Самостоятельно Изучите C за 21 День (Teach Yourself C in 21 Days). Peter Aitkin и Bradley Jones. Sams Publishing. ISBN 0-672-30448-1.

Самостоятельно Изучите C (Teach Yourself C). Herbert Schildt. Osborne McGraw-Hill. ISBN 0-07-881596-7.


UNIX

Операционная система UNIX имеет длинную и богатую историю. Сегодня UNIX одна из наиболее широко используемых операционных систем, особенно в Internet. Фактически, UNIX является системой номер один, использующейся для создания серверов в пустоте.

Созданная в 1969 Ken Thompson из Bell Labs, первая версия UNIX работала на Digital Equipment Corporation (DEC) PDP-7. Конечно, эта система не имела никакого сходства с современной UNIX. Например, UNIX был традиционно известен как многопользовательская система (другими словами, много пользователей могут работать одновременно в единственной системе UNIX). Напротив, система, созданная Thompson, была по сообщениям однопользовательской системой.

Когда сегодня пользователи думают об операционной системе, они воображают нечто, что включает основные утилиты, текстовые редакторы, справочные файлы, систему управления окнами, утилиты организации сети и т.д. Это потому что персональный компьютер стал элементом домашнего обихода. Также, системы конечного пользователя включают завершенный и дружественный дизайн. Увы, первая UNIX система не была ни чем вроде этого. Вместо этого, она состояла только из наиболее необходимых утилит, позволяющих работать эффективно. На мгновение, войдите в положение Ken Thompson. Прежде, чем Вы создадите множество сложных программ, подобным упомянутым, перед Вами стоит более практическая задача: получение загрузки системы.

В любом случае, Thompson и Dennis Ritchie перенесли UNIX на DEC PDP-11/20 год спустя. Там UNIX подвергся значительной доработке. Между 1970 и 1973, UNIX был полностью переделан и написан на языке программирования C. Это было, как говорили, главным усовершенствованием и устранило многие из дефектов, свойственных первоначальной реализации.

За следующий год исходный текст UNIX был распространён по университетам по всей стране. Это больше чем любое другое событие, внесло вклад в успех UNIX.

Во-первых, исследовательские и академические сообщества немедленно показали симпатию UNIX. Следовательно, она стала использоваться во многих образовательных упражнениях. Это имело прямое влияние на коммерческий мир. Как объяснял Mike Loukides, редактор O'Reilly & Associates и гуру UNIX:

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

Также, потому что исходный текст был доступен университетам, UNIX был открыт для развития студентами. Эта открытость привела UNIX к быстрому перенесению на другие машины, которые только увеличили количество пользователей UNIX.


ПРИМЕЧАНИЕ: Поскольку исходный текст UNIX широко известен и доступен, также известно большое количество недостатков в структуре системы безопасности. Это остром контрастирует с частными системами. Такие частные изготовители программного обеспечения отказываются раскрывать свой исходный текст, кроме нескольких особо избранных, оставляя много вопросов по их безопасности без ответа.

Прошло несколько лет, а UNIX продолжал приобретать популярность. Он стал фактически настолько популярным, что в 1978, AT&T решила коммерциализировать операционную систему и требовать лицензионные взносы (в конце концов, она очевидно создала лидирующее изделие). Это вызвало большой сдвиг в компьютерном сообществе. В результате, Калифорнийский Университет в Berkeley создал свою собственную версию UNIX, затем упоминаемую как Berkeley Software Distribution или BSD. BSD была (и продолжает быть) чрезвычайно влиятельной, являясь основой для многих современных форм коммерческого UNIX.

Интересная разработка произошла за 1980. Microsoft выпустила новую версию UNIX, названную XENIX. Это было весьма значительно, потому что ряд программ Microsoft был уже весьма обширен. Например, Microsoft продавала версии БЕЙСИКА, КОБОЛА, Паскаля и ФОРТРАНА. Однако, несмотря на большое усилие Microsoft сделать свою программу XENIX популярной (и даже обязательство IBM устанавливать операционную систему XENIX на своих новых PC), XENIX в конечном счете постепенно ушла в неизвестность. Ее популярность продолжалась только пять лет. Напротив, MS-DOS (выпущенная только одним годом после выхода XENIX) взяла мир PC штурмом.

Сегодня существует много коммерческих версий UNIX. Я перечислил несколько из них в Таблице 7.2.

Таблица 7.2. Коммерческие версии UNIX и их изготовители.

Версии UNIX Программерская Компания
SunOS & Solaris Sun Microsystems
HP-UX Hewlett Packard
AIX IBM
IRIX Silicon Graphics (SGI)
DEC UNIX Digital Equipment Corporation

Эти версии UNIX работают на частных аппаратных платформах, на высокоэффективных машинах, названных рабочими станциями. Рабочие станции отличаются от PC машин несколькими характеристиками. С одной стороны, рабочие станции имеют лучшее аппаратное обеспечение и поэтому более дороги. Это частично благодаря ограниченному числу собранных рабочих станций. PC изготавливаются в больших количествах, и изготовители постоянно ищут способы урезать затраты. Потребитель, покупающий новую системную плату PC, имеет намного больший шанс получения дефектного аппаратного обеспечения. Наоборот, покупатели рабочей станции наслаждаются большей надежностью, но могут заплатить пять или даже шесть цифр за свои системы.

Выбор очень сложен. Естественно, для средних пользователей, рабочие станции являются и непрактичными и стоят дорого. Кроме того, аппаратное и программное обеспечение PC легко доступны, просты в конфигурировании и широко распространены.

Однако, рабочие станции традиционно были более технологически продвинуты чем PC. Например, звуковые платы, Ethernet и SCSI были стандартными возможностями рабочих станций в 1989. Фактически, плата ISDN была интегрирована не намного позже того, как ISDN была разработана.

Различия также существуют в зависимости от изготовителя. Например, машины Silicon Graphics (SGI) содержат специальное аппаратное обеспечение (и программное обеспечение), которое позволяет им генерировать сногсшибательную графику. Эти машины обычно используются в индустрии развлечений, особенно для фильмов. Из-за экстраординарных возможностей линии продуктов SGI, рабочие станции SGI вне конкуренции в графической индустрии.

Однако, здесь мы заинтересованы только платформой UNIX, поскольку она касается Internet. Как Вы можете предположить, это влияние сильно. Как я отметил ранее, разработка Internet Американским правительством была осуществлена на платформе UNIX. Также, сегодняшняя UNIX система содержит в себе основные строительные блоки Сети. Никакая другая операционная система никогда так явно не разрабатывалась для использования в Internet. (Хотя Bell Labs в настоящее время разрабатывает систему, которая может даже превзойти UNIX в этом отношении. Она названа Plan 9 from Bell Labs. Plan 9 включена в Главу 21, "Plan 9 from Bell Labs".)

Современный UNIX может работать на широком разнообразии платформ, включая IBM-совместимые и Macintosh. Инсталляция обычно проста и немного отличается от инсталляции других операционных систем. Большинство поставщиков обеспечивают CD-ROM. На рабочих станциях инсталляция выполняется загрузкой с CD-ROM. Пользователю даётся ряд опций, а остальное происходит автоматически. На других аппаратных платформах CD-ROM часто сопровождается загрузочным диском, который загружает маленький инсталляционный алгоритм в память.

Аналогично, запуск UNIX систем подобен загрузке других систем. Алгоритм начальной загрузки производит быструю диагностику всех существующих аппаратных устройств, проверяет память и запускает жизненно важные системные процессы. Некоторые общие системные процессы UNIX, запускаемые при начальной загрузке, включают:

После успешной загрузки системны, пользователю даётся приглашение для входа в систему. Здесь пользователь обеспечивает свой login и пароль. Когда вход в систему закончен, пользователь чаще всего оказывается в среде оболочки. Оболочка это среда, в которой могут быть напечатаны и выполнены команды. В этом отношении, по крайней мере, внешне UNIX незначительно походит на MS-DOS. Перемещёние по каталогам выполняется изменением направление от одного к другому. Пользователи DOS могут легко управлять UNIX системой, используя информацию из Таблицы 7.3.

Таблица 7.3. Таблица преобразования команд: UNIX в DOS.

Команда DOS Эквивалент UNIX
cd <каталог> cd <каталог>
dir ls -l
type|more more
help <команда> man <команда>
edit vi


Ссылка: Читатели, которые желают знать больше об основных командах UNIX, должны направить свой WWW броузер на
http://www.geek-girl.com/Unixhelp/.
Этот архив одна из наиболее всесторонних коллекций информации относительно UNIX, доступных в настоящее время.
Одинаково, более серьёзные читатели могут желать иметь в своем непосредственном распоряжении удобный справочник. Для этого, я рекомендую Отпущенный UNIX - UNIX Unleashed (Издательство Sams). Книга была написана несколькими талантливыми мастерами UNIX и содержит много полезных советов и уловок по использованию этой популярной операционной системы.

Скажите, Что Такое Система Управления Окнами?

UNIX поддерживает много систем управления окнами. Многое зависит от определенной платформы. Например, большинство компаний, которые разработали частные UNIX системы, также разработали свои собственные пакеты работы с окнами, или частично или полностью. Вообще, однако, все современные UNIX системы поддерживают Систему X Window Институт Технологии Штата Массачусетс (MIT - Massachusetts Institute of Technology). Всякий раз, когда я в этой книге ссылаюсь к Системе X Window (а это происходит часто), я ссылаюсь к ней как X. Я хочу быстро охватить X, потому что некоторые части этой книги требуют, чтобы Вы знали, что это такое.

В 1984 люди в MIT основали Проект Athena. Его цель состояла в том, чтобы разработать систему графического интерфейса, которая будет работать на рабочих станциях или в сетях. Во время первых этапов исследования немедленно стало ясно, чтобы выполнить эту задачу, X должна быть аппаратно независима. Она также должна обеспечивать прозрачный доступ к сети. Как таковая, X это не только система управления окнами, но и сетевой протокол, основанный на модели клиент/сервер.

Ответственными за разработку X были Robert Scheifler и Ron Newman, оба из MIT, и Jim Gettys из DEC. X значительно отличается от других типов систем управления окнами (например, Microsoft Windows), даже относительно пользовательского интерфейса. Это различие находится главным образом в концепции, иногда упоминаемой как инструментальные средства (workbench) или комплект инструментов (toolkit). То есть X позволяет пользователям управлять любым аспектом своего поведения. Он также обеспечивает обширный набор программных ресурсов. X часто описывается как наиболее сложная и всесторонняя система управления окнами из когда-либо разработанных. X поддерживает графику с высоким разрешением по сетевым подключениям с высокой скоростью и производительностью. Короче говоря, X включает часть наиболее передовую технологию работы с окнами, доступную в настоящее время. Некоторые пользователи характеризуют сложность X как недостаток, и вероятно для этого есть причина. Доступно так много опций, что случайный пользователь может быть поставлен в тупик.


Ссылка: Читатели, которые желают узнать больше о X, должны посетить сайт X Консорциума. X Консорциум содержит авторов X. Эта группа постоянно устанавливает и улучшает стандарты для Системы X Window. Этот сайт находится на
http://www.x.org/.


ПРИМЕЧАНИЕ: Некоторые версии X могут работать на IBM-совместимых машинах в среде DOS/Windows.

Пользователи, знакомые с платформой Microsoft, могут понять использование X в UNIX, уподобляя его отношениям между DOS и Microsoft Windows 3.11. Основная система UNIX всегда доступна как интерфейс командной строки и остается активной и доступной, даже когда пользователь входит в среду X. В этом отношении, X выполняется над основной системой UNIX. При нахождении в X среде пользователь может обращаться к интерфейсу командной строки UNIX через окно оболочки (это, по крайней мере внешне, функционирует подобно сеансу MS-DOS, доступному в Microsoft Windows). Из окна этой оболочки пользователь может выполнять задачи, команды, и просматривать работающие системные процессы.

Пользователи запускают Систему X Window, давая следующую команду:

startx

X может выполнять ряд оконных менеджеров. Каждый оконный менеджер имеет различные вид и функциональность. Некоторые из них (типа twm) весьма просты, в то время как другие очень привлекательны, даже причудливы. Существует даже менеджер X Window, который подражает внешнему виду Windows 95. Другие платформы аналогично эмулируются, включая оконную систему NeXT и систему Amiga Workbench. Другие системы управления окнами (некоторые основаны на X, а некоторые частные) показаны в Таблице 7.4.

Таблица 7.4. Общие системы управления окнами в UNIX.

Оконная Система Компания
OpenWindows Sun Microsystems
AIXWindows IBM
HPVUE Hewlett Packard
Indigo Magic Silicon Graphics

Какие Типы Приложений Работают в UNIX?

В UNIX работает множество различных типов приложений. Некоторые из них высокоэффективные приложения для использования в научном исследовании и искусственном интеллекте. Я уже упомянул, что некоторые прикладные программы работы с графикой высокого уровня также являются общими, особенно на платформе SGI. Однако, не каждое приложение UNIX так специализировано или эклектично. В UNIX работают совершенно обычные приложения, и многие из них имеют известные названия, общие для PC и Mac сообществ (типа Adobe Photoshop, WordPerfect и других передовых программ).

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

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

Для использования в UNIX существует богатая коллекция мультимедиа программного обеспечения, включая видео проигрыватели, CD аудио утилиты, средства записи цифрового звука, системы дуплексной камеры, мультимедиа почта и другие забавные вещи. В основном все, о чем Вы могли бы подумать, написано для UNIX.

UNIX в Отношении Безопасности в Internet

Поскольку UNIX поддерживает так много направлений организации сети, защита серверов UNIX это сложная задача. В отличие от серверов, созданных на платформе Macintosh или IBM-совместимых. Операционные системы наиболее общие для этих платформ даже близко не поддерживают такое количество сетевых протоколов, изначально доступных в UNIX.

Традиционно, безопасность UNIX была сложным занятием. В этом отношении, UNIX часто противоречит сам себе. UNIX был разработан как полностью открытая система (то есть её исходный текст долго был свободно доступен, система поддерживает широкий диапазон протоколов, и её дизайн однозначно ориентируется на облегчение различных форм связи). Эти атрибуты делают UNIX наиболее популярной из когда-либо изобретенных сетевых платформ. Однако те же самые атрибуты делают безопасность трудно достижимой. Как Вы можете позволить любой способ открытого доступа и поточной организации сети при обеспечении безопасности?

За эти годы в безопасности UNIX было сделано много усовершенствований. Они, в значительной степени, были порождены правительственным использованием операционной системы. Большинство версий UNIX входят в Список Оцененных Программ (EPL). Некоторые из этих усовершенствований (многие из которые были реализованы на заре истории операционной системы) включают:

UNIX используется во многих средах, которые требуют безопасность. Также, существуют сотни программ безопасности, настраивающих или иначе улучшающих безопасность UNIX системы. Многие из этих утилит свободно доступны в Internet. Такие утилиты могут быть классифицированы в две основных категории:

Утилиты ревизии безопасности обычно это программы, которые автоматически обнаруживают дыры в системе. Они типично проверяют известные уязвимости и общие неправильные конфигурации, которые могут привести к нарушениям безопасности. Такие утилиты предназначены для крупномасштабной ревизии сети и, поэтому, могут использоваться, чтобы проверить много машин в данной сети. Эти утилиты выгодны, потому что они показывают слабости, присущие проверяемой системе. Однако, эти утилиты также опасны, потому что они обеспечивают мощные возможности взломщикам в пустоте. В неправильных руках эти утилиты могут использоваться, чтобы скомпрометировать много узлов.

Наоборот, регистрирующие утилиты используется, чтобы записывать действия пользователей и системные сообщения. Эта информация записывается в простые текстовые файлы или файлы, которые автоматически организовывают себя в один или большее количество форматов баз данных. Регистрирующие утилиты это основной ресурс в любом комплекте инструментов безопасности UNIX. Часто log-файлы, сгенерированные такими утилитами, составляют основные доказательства, когда Вы преследуете вторгшегося или ведете дело против взломщика. Однако глубокое сохранение данных о системе может быть дорогостоящим в терминах дискового пространства. Кроме того, многие из этих утилит работают безупречно над сбором данных, но не обеспечивают простого способа интерпретировать их. Таким образом, перед персоналом безопасности могут столкнуться с необходимостью написания собственных программ для выполнения этой задачи.

Безопасность UNIX гораздо более трудная задача, чем безопасность других платформ, прежде всего, потому что UNIX это большая и сложная операционная система. Естественно это означает, что получение персонала с истинными экспертными знаниями безопасности UNIX может быть трудоемким и дорогостоящим процессом. Эти люди не редко занимают ключевые позиции в фирмах по всей стране. В результате, консультации в этой области стали прибыльным бизнесом.

Один хороший момент относительно безопасности UNIX это то, что UNIX существует очень долго, и поэтому многое известно о свойственных ему недостатках. Хотя новые дыры появляются довольно регулярно, их источники быстро идентифицируются. Кроме того, семейство UNIX в целом хорошо взаимодействует по сети относительно безопасности. Имеются много списков рассылки, архивов и интерактивных баз данных информации, имеющей отношение к безопасности UNIX. Тоже самое нельзя сказать о других операционных системах. Однако эта тенденция изменяется, особенно в отношении Microsoft Windows NT. Теперь существует сильная поддержка для безопасности NT в Сети, и та поддержка растет с каждым днем.

Internet: Насколько Она Большая?

Этот раздел содержит немного больше истории, и я собираюсь пробежать его быстро. В начале 1980-ых, как мы теперь знаем, была рождена Internet. Число узлов исчислялось сотнями, и исследователям казалось тогда, что Internet огромна. Где-то в 1986 в Сети был установлен первый свободно доступный общественный сервер. Следующее было только вопрос времени, десятилетие, как оказалось, прежде чем человечество будет штурмовать берег киберпространства; оно скоро должно ожить звуками торговцев, торгующих вразнос своим товаром.

К 1988 на Сети имелось больше 50,000 узлов. Тогда имело место необычное событие: В ноябре того года в сеть была выпущена программа червь. Этот червь инфицировал множество машин (по сообщениям более чем 5,000) и оставил их в различных стадиях прерванного обслуживания или аварии (я обсуждаю это событие в Главе 5, "Действительно ли Защита Бесполезное Усилие?"). Оно вынесло Internet на общественное обозрение через титульные листы наших национальных газет.

К 1990 число узлов в Internet превысило 300,000. По разнообразным причинам Американское правительство разорвало свою связь с сетью в этом году, оставив её Национальному Научному Фонду (NSF - National Science Foundation). NSF установил сильные ограничения на коммерческое использование Internet. Однако, среди дебатов по рассмотрению стоимости (обслуживание магистрали Internet требовало существенных ресурсов) NSF внезапно в 1991 сложила полномочие по Сети, открывая путь для коммерции к захвату управления сетевыми каналами.

Однако публика в целом не была продвинута. Большинство частных пользователей Internet получало доступ от поставщиков подобных Delphi. Доступ был полностью основан на командной строке и был слишком пугающим для среднего пользователя. Это изменилось внезапно, когда было выпущено революционное программное обеспечение, разработанное в Университете Штата Mиннесота. Оно было названо Gopher. Gopher был первым инструментом навигации в Internet, использующийся в GUI средах. Вскоре после нее появился WWW броузер.

В 1995 NSF полностью отошел от своей давнишней позиции надзирателя Сети. Internet была полностью коммерциализирована почти немедленно, когда компании по всей Америке помчались присоединяться к магистрали. За компаниями немедленно последовала Американская публика, вооруженная новыми броузерами типа NCSA Mosaic, Netscape Navigator и Microsoft Internet Explorer. Internet внезапно стала доступной любому имеющему компьютер, систему управления окнами и мышь.

Сегодня Internet объединяет больше чем 10 миллионов узлов и обслуживает приблизительно 40 миллионов пользователей. Некоторые прогнозы указывают, что если использование Internet продолжится с текущими темпами роста, весь Западный мир будет связан к 2001 году. Исключая некоторые экстраординарные события, замедляющие этот путь, оценки вероятно верны.

Сегодняшняя Internet истинно огромна, объединяя сотни тысяч сетей. Многие из них работают под различными операционными системами и аппаратными платформами. Связаны более чем 100 стран помимо Соединенных Штатов, и это число увеличивается с каждым годом. Единственный вопрос: Что будущее приготовило для Internet?

Будущее

Имелось множество прогнозов того, куда идет Internet. Большинство этих прогнозов (по крайней мере общеизвестные) делаются торговцами и парщиками, беспокоящихся как продать больше пропускной способности, больше аппаратного обеспечения, больше программного обеспечения. В сущности, большой бизнес Америки пытается управлять Сетью и подчинить её своей воле. Это огромная задача по нескольким причинам.

Технология Internet теперь движется быстрее, чем способность публики покупать ее. Например, большая часть корпоративной Америки поглощена использованием Internet, как среды развлечения. Сеть хорошо удовлетворяет таким целям, но реализация этого трудна прежде всего, потому что средние пользователи не могут позволить себе необходимое аппаратное обеспечение, чтобы получить высокоскоростные соединения. Большинство пользователей пользуются модемами со скоростью 28.8Kbps. Существуют другие варианты, это так, но они дороги. ISDN, например, является возможным решением только для людей с финансами или для компаний, ведущих торговлю в Сети. Имеет также некоторое значение, что ISDN более трудно конфигурировать, на любой платформе, чем средний модем. Для некоторых из моих клиентов, это было существенное средство сдерживания. Я иногда получаю известия от людей, которые обратились к ISDN, обнаружили проблемы конфигурации непреодолимыми и оказались снова с обычными модемами на 28.8Kbps. Кроме того, в некоторых частях страны простое использование телефонной линии ISDN стоит деньги за каждую минуту подключения.


ПРИМЕЧАНИЕ: Хотя телефонные компании первоначально рассматривали ISDN как золотую жилу, этот прогноз оказался несколько преждевременным. Эти компании предполагали огромную прибыль, которая в действительности не осуществилась. Существует много причин для этого. Одна из них, что модемы ISDN всё ещё очень дороги по сравнению с их 28.8Kbps коллегами. Это существенное средство сдерживания наиболее случайным пользователям. Другая причина в том, что потребители знают, что они могут избегать звонить в часы пик, занимаясь серфингом вечером. (Например, многие телефонные компании предписывают тяжелые тарифы только с 8:00 утра до 5:00 пополудни.) Но это не единственные причины. Появляются другие методы доступа, которые вероятно сделают технологию ISDN устаревшей. Сегодняшние потребители знают эти тенденции, и многие приняли выжидательные позиции.

Кабельные модемы предлагают одно перспективное решение. Эти новые устройства, в настоящее время повсюду проверяемые в Соединенных Штатах, по сообщениям обеспечат доступ к Сети в 100 раз быстрее модемов, использующихся теперь. Однако, имеются глубокие проблемы, которые должны быть решены в промышленности кабельных модемов. Например, пока не установлены никакие стандарты. Поэтому, каждый кабельный модем полностью частный. Без стандартов цена кабельных модемов вероятно останется очень высокой (располагаясь где-нибудь от $300 до $600). Это может препятствовать большинству покупателей. Имеются также проблемы в том, какой кабельный модем покупать. Их возможности отличаются очень сильно. Некоторые, например, предлагают чрезвычайно высокую производительность при получении данных, но скудную производительность при их передаче. Для некоторых пользователей это просто неприемлемо. Практическим примером может быть кто-то, планирующий видео конференцию. Он смог бы получать образ партнера по видео конференции с высокой скоростью, но был бы неспособен посылать свой образ с такой же скоростью.


ПРИМЕЧАНИЕ: Существуют другие более практические проблемы, которые иначе беспокоят яркое будущее связи по кабельным модемам. Например, потребителям говорят, что они будут по существу иметь скорость низкоуровневого T3 подключения за $39 в месяц, но это только частично так. Хотя кабельный модем и коаксиальный кабель, с которым он связан, способны к таким скоростям, средний потребитель никогда вероятно не будет видеть полный потенциал, потому что все жители в специфической области (типично соседи) должны совместно использовать ширину полосы частот подключения. Например, в жилых домах, 10mps разделен между жителями, подключенными к одному проводу. Таким образом, если пользователь в квартире 1A запустил агента поиска, который собирает сотни мегабайт информации каждый день, оставшиеся жители в других квартирах будут иметь огромную потерю ширины полосы частот. Это несомненно неподходяще.



Ссылка: Технология кабельных модемов агрессивный бизнес, с несколькими дюжинами больших игроков, стремящихся захватить львиную долю рынка. Чтобы получить глубокую информацию о борьбе (и что предлагают кабельные модемы), направьте ваш Web броузер на
http://rpcp.mit.edu/~gingold/cable/.

Другие технологии, типа WebTV, обещающее предложение. WebTV это устройство, которое делает серфинг в Сети столь же простым, как просмотр телевидения. Эти модули легко устанавливать, и их интерфейс весьма интуитивен. Однако системы типа WebTV могут иметь нежелательное влияние на Сеть: цензура. Многие из материалов в Internet могут быть охарактеризованы, как очень нежелательные. В этой категории некоторые формы жесткой порнографии и мятежный или революционный материал. Если WebTV должна была стать стандартным методом доступа к Internet, правительство могло бы пытаться регулировать какой материал можно просматривать. Это могло бы подорвать массовость и свободу слова в Сети.


ПРИМЕЧАНИЕ: Корпорация Microsoft купила WebTV (даже притом, что продажи WebTV оказались гораздо меньшими, чем запланировали эксперты промышленности). Конечно, это только мое персональное мнение, но я думаю, что идея была несколько непродуманна. Internet это ещё не среда для развлечений, и при этом она не будет ей в течение некоторого времени, в основном из-за ограничений скорости и полосы пропускания. Возможно, Microsoft купила WebTV явно с целью отложить его. Это возможно. В конце концов, такая закупка была бы одним из способ устранить то, что казалось (по крайней мере, в то время) было огромным конкурентом для MSN.



Ссылка: WebTV имеет интересные возможности и предлагает очень простой способ знакомства с Internet. Если Вы новый пользователь и находите навигацию в Сети запутанной, то, возможно, захотите проверить домашнюю страницу WebTV на
http://www.webtv.net/.

В любом случае Internet собирается стать важной частью жизни каждого человека. Банки и другие финансовые учреждения теперь предлагают свои услуги по Internet. Через пять лет это, вероятно, заменит стандартный метод банковского дела. Так же и торговля пришла в Сеть.

Итог

Эта глава кратко исследует рождение Internet. Затем в повестке дня исторические и практические моменты протоколов сети, или методов транспортировки данных. Эти разделы необходимы для понимания основных принципов безопасности в Internet.


Предыдущая главаСледующая главаСодержание


Macmillan Computer Publishing USA

Macmillan Computer Publishing.



Все мессаги сюда:yanich@inbox.ru
Hosted by uCoz