Меня часто спрашивают, насколько актуальна проблема безопасности в Internet. Приведу несколько занятных примеров, сопроводив их поучительной моралью для солидности.
Один банк подключился к Internet. В конце месяца он получил счет на весьма кругленькую сумму. Оказалось, что за этот месяц из банка утекло несколько сот(!) мегабайт информации и никто в банке не знает, что это была за информация и кто ее заполучил. После этого банк отключился от сети Internet (видимо вспомнив, что лучший Firewall - это заглушенный T-коннектор).
Мне как-то довелось поработать на компьютерах факультета Биохимии Университета Вейцмана в Израиле. Естественно, что я использовал чужой account (с разрешения хозяина, разумеется. Чтобы вы лучше представили себе обстановку на месте, в какой-то момент в два часа ночи в вычислительном центре собралось семь работающих за компьютерами и все семь говорили по-русски и работали под чужими именами). Я быстро стал замечать, что творится что-то странное - приходит почта невесть от кого, в странном скрытом каталоге валяются IRC-скрипты и т.д. Владелец account-а про Unix знал весьма мало, про IRC не слышал никогда и почтой не пользовался. Однако он полагал, что все это - нормальные продукты деятельности системных администраторов (естественно, что пользователи не делают попыток понять ход мыслей загадочных существ, называемых системными администраторами и полагают, что те непрерывно проявляют некую демоническую активность в системе. Администраторы отвечают им полной взаимностью и справедливо считают, что пользователи мешают работе системы, засоряют дисковое пространство и отнимают ценные процессорные циклы от компиляции их программ).
Вскоре я окончательно убедился, что у нас завелся незванный гость. После этого, мы сменили пароль и я провел небольшое расследование, в результате чего выяснился круг интересов взломщика и основные направления его компьютерных интересов, способ его входа в компьютерную сеть (через модемный вход на университетском компьютере), а также имена некоторых его друзей по IRC. С этой информацией мы пошли к администратору всей местной сети, которая сразу же меня перебила - "Зачем вы мне все это рассказываете? Ведь я же не детектив!" Совершенно справедливое замечание. Она действительно не детектив и, как следствие, не системный администратор.
Как оказалось впоследствии, по Internet ходили списки с логинами и паролями многих биофизиков, пользующихся этим компьютером, и только ленивый там не пасся.
Однажды мне любезно предоставили account в одной организации, имеющей выход в Internet и несколько компьютеров Sun, использующих сетевую файловую систему NFS. Через некоторое время мой account оказался взломан. Техника взлома была весьма типична (Внимание, взломщики - информация для вас!) - по NFS был модифицирован мой файл ~/.rhosts и в него была добавлена строка "+", разрешившая всем вход командой rlogin. Я рассказал об этом администраторам и мы обсудили методы взлома. Через пару дней компьютер перестал работать (вероятно, съев что-нибудь вроде "rm -rf /").
Из этих историй можно сделать несколько полезных выводов.
Надеюсь, что я достаточно запугал вас этими страшными историями и вы бросаетесь к торговцам противопожарным оборудованием, надеясь купить брандмауэр самой последней модели, который раз и навсегда защитит вас от страшных бандитов и позволит с удобством вкушать прелести навигаторов, смотрелок и исследователей Internet. Неожиданно ваше начальство узнает, что в дополнение к тем немалым расходам, с которыми оно уже как-то смирилось (плата за инфо-линию - по-моему, теперь так принято называть выделенные линии), за некий загадочный "IP сервис", т.е. за продвижение ваших данных туда-сюда по сетям, за адреса, за имена неких доменов (не путать с демонами - о них позже), за нечто, называемое рутером или роутером в зависимости от места производства, вся работа которого состоит в том, что он забирает информацию из одного места и складывает в другое), нужно платить еще $15-20 тыс. долл. А так как убедить начальство в Москве и, тем более, в других городах, в том, что Internet нужен для чего-то еще кроме добывания красивых фотографий (http://www.playboy.com), и так весьма трудно, то все радужные перспективы и надежды на http://altavista.digital.com становятся весьма отдаленными.
Упрощенная схема подключения брандмауэра.
Между тем, если вы тот самый знаменитый Неуловимый Джо, то для защиты от бандитов вам достаточно дешевого лассо и крепких дверей с навесным замком. Совершенно необязательно строить крепость и заливать водой рвы для защиты продуктовой лавки. Однако же, если вы собираетесь перевозить достояние Республики в почтовом дилижансе или в поезде, стоит принять более серьезные меры предосторожности. Для защиты Неуловимого Джо вполне сойдут старые добрые пакетные фильтры на вашем маршрутизаторе в сочетании с толковым администратором. А для действительно надежной защиты вам не отделаться лишь одним самым замечательным продуктом с импортным названием "Firewall" на коробке.
Мораль - оцените степень риска, изучите вашу сеть, разработайте политику защиты, заручитесь поддержкой менеджеров и после этого срокойно идите на противопожарный рынок, прихватив с собой десяток-другой килобаксов. Чем вы ценнее для окружающих и чем меньше вы знаете про Internet тем больше придется выложить.
Система Unix давно стала предметом религиозных войн и крестовых походов. Новый импульс этим войнам дало широкое распространение Internet и превращение его из кастового секрета хакеров в массовую игрушку и дойную корову для бизнеса. Исторически Internet и Unix были слишком сильно переплетены. Особенности программирования и сложившаяся культура в мире Unix наложили отпечаток на протоколы, используемые в Internet, и на подход к защите. Из-за своей распространенности (и полной открытости) и слабой защищенности Unix стал любимой добычей для взломщика. С другой стороны именно Unix используется в качестве базы для большинства современных систем защиты.
Как справедливо заметил один мой друг, основная проблема Unix состоит в том, что он делает то, что ему говорят. Это все тот же принцип WYSIWYG - What You Say Is What You Get.
Unix создавался по образу абсолютной монархии с формальными признаками демократии. Простые подданные системы (юзеры) имеют достаточно мало полномочий для того, чтобы нанести какой-либо реальный вред. Политические партии (группы) подданных имеют несколько больше прав и полномочий и у неискушенного туриста может создаться впечатление, что именно они и руковолят системой. Однако, на практике, все реальные и серьезные решения принимает абсолютный монарх, мистер Чарли Рут (Mr. Charlie Root). Только ему доступны все комнаты дворца, королевская печать, государственные архивы и королевская казна. Все подданные и вся жиззнь королевства подвластны ему, он волен заходить в любой дом, читать все документы и может по своему усмотрению убить или помиловать любого подданного или плод его деятельности - процесс (особенно это неприятно, когда подданный, решив, что процесс пошел, успокаивается и идет спать).
Однако, видимо опасаясь государственного переворота, мистер Рут тщательно скрывается от своих подданных. Для того, чтобы воспользоваться своими полномочиями ему требуется предъявить министру внутренних дел господину /etc/passwd свой паспорт для проверки. В паспорте содержится некое секретное слово (и в условном месте, известном господину министру, припрятано две крупинки соли). Если все нормально, предъявитель паспорта получает знак монархической власти (uid 0). К сожалению, оказалось, что при современном развитии печатного дела паспорт можно подделать. Взломщики выдумали немало способов подглядывать за секретной процедурой показа паспорта. В принципе, это похоже на кражу номеров кредитных телефонных карточек - в американских аэропортах пасутся специальные прохожие, невзначай подсматривающие за набором номера на телефоне. Призом для них является право на бесплатный (за счет клиента) звонок любимой тетушке на Бермуды. Призом же для удачливого вора, подделавшего пароль, является полный контроль над могущественной империей Unix.
Так как его Рутовское Величество часто занят делами и его трудно найти, для вершения государственных дел у него есть штат доверенных лиц. Исполняющий обязанности в Unix называюется Сюид (SUID), а исполняющий обязанности Монарха называется Сюид Рут (SUID root). Обычно Сюид Рут имеет весьма ограниченный круг обязанностей и не представляет серьезной опасности для безопасности. Однако некоторые недостойные умудряются использовать выданный им для отправления обязанностей монархический знак (uid 0) для непредусмотренных действий и могут, в принципе, воспользоваться им для полного захвата власти в стране. Особенно опасны Сюид Рут, имеющие доступ к акциям местных нефтяных компании системы Shell. Сюид, получивший контроль над Shell, по-сути неотличим от реального монарха. Поэтому господа Сюид являются лакомой добычий для воров и международных шпионов, под видом гостей проникающих в страну.
Для наблюдения за делами в королевстве и исполнения хозяйственных дел господин Чарли Рут обычно нанимает бригаду демонов, которые от его имени незаметно вершат свои демонические дела. Именно им мы обязаны периодическим шуршанием дисковых головок в моменты, когда мы смотрим на экран и не проявляем никакой видимой активности.
Исторически сложилось, что на границе страны и в ее таможенной службе Интернетовском Таможенном Департаменте ИнеТД (inetd) служат доверенные лица, имеющие значок (suid 0). Им разрешается пропускать туристов и товары через один из государственных 1024 портов (в стране Unix есть еще и множество частных портов, не контролируемых государством. Любой подданный имеет право открыть свой частный порт, однако все государственные порты строго контролируются).
По межгосударственному соглашению, заключенному когда-то в Беркли между дружественными Unix монархиями, транспорт, пришедший из государственных портов других стран, пользуется особенным доверием и пропускается без особенного таможенного контроля. Соглашение было выработано в период существования нескольких сильных Империй, которые хорошо знали друг друга. Теперь же всякий, без особого труда может завести себе маленькую персональную империю, владеть в ней всеми портами и отправлять контрабанду через любой из них. Более того, такие мелкие империи даже не обязаны иметь конституционное монархическое устройство Unix. Чаще всего они имеют довольно мягкий режим управления, позволяющий любому проходимцу прикинуться Рутом на час. Более того, террористы научились поддерживать дорожные документы и часто даже невозможно установить, откуда прибыл груз. Таможенные соглашения (r-commands), заключенные в Беркли оказались совершенно неприемлемыми для современного мира мелких государств с мягким управлением. Поэтому, мудрые руководители игнорируют соглашения и весьма тщательно проверяют весь груз, проходящий через порты.
После того, как система Unix переехала с больших компьютеров на рабочие станции и персональные компьютеры, ничего не подозревавшие пользователи неожиданно превратились в системных администраторов. У них было достаточно своих забот и, естественно, система начинала вскоре жить своей жизнью. А так как некоторые поставщики продают системы с давно известными дырками в защите и в процессе работы появляются новые, такие системы быстро становятся гостеприимным домом для нежданных гостей. Часто такие слабозащищенные системы интересны не сами по себе, а лишь как база для атаки других систем. Серьезный взломщик использует десятки компьютеров для атаки. Таким образом, чрезвычайно трудно определить его физический адрес.
К сожалению, общий принцип гласит, что чем система защищеннее, тем менее удобно ей пользоваться. А так как большинство покупателей компьютеров заботит прежде всего удобство, безопасность неминуемо отодвигается на задний план.
На мой взгляд, любой администратор может существенно повысить безопасность своего Unix, если
Самый популярный способ атаки Unix систем - подбор, угадывание и подсматривание паролей. Первоначально взломщик пытается заполучить хоть какой-то вход в систему, а затем, используя известные ему дырки в защите и администрировании, расширить свое влияние и захватить всю систему, заполучив полномочия суперпользователя. Интересно решили проблему всевластного супер-пользователя в исследовательской системе Plan 9 - суперпользователем является лишь тот, кто зашел в систему с системной консоли.
Как ни странно, придумывание пароля является весьма сложной задачей для любого пользователя компьютера. Вспомните, сколько раз вы в качестве пароля выбирали слова "aaa", "qqq", "123456", "password" и ваше имя! Те, у кого развита фантазия пишут имя своей любимой девушки. Все эти пароли очень плохи и регулярно раскалываются. Хороший пароль не должен быть никаким осмысленным словом никакого языка, должен обязательно содержать и большие и маленькие буквы, какие-нибудь специальные символы, достаточно хорошо запоминаться (чтобы его не пришлось записывать и приклеивать на монитор или, того хуже, напряженно пытаться вспомнить новый пароль для того, чтобы сделать срочную работу) и быстро набираться на клавиатуре (это защита от любителей смотреть через плечо). Более того, он должен регулярно обновляться (при этом нельзя использовать подержанные пароли из прошлой жизни). Согласитесь - задачка не из легких. Но постарайтесь - плохой пароль - приглашение зайти в гости, а хороший пароль может стоить брандмауера за 10 тыс. долл.
Как показывает практика, все эти соображения не убеждают большинство пользователей и они все равно придумывают пароль "qqq". Для борьбы с плохими паролями придумана программа "Crack" Алекса Муффета (ftp://info.cert.org/pub/ tools/crack/crack_4.1-tar.Z), весьма эффективно раскалывающая пароли. Ей пользуются и администраторы и взломщики, постарайтесь, чтобы ваш пароль не был ей взломан. Но будьте осторожны, если вы работаете на западную компанию. Вы можете попасть в историю, аналогичную той, в которую попал известный программист и соавтор книг про Perl Рэндэл Шварц, работавший системным администраторов в фирме Intel. Он периодически запускал crack для проверки паролей пользователей. Руководство Intel обвинило его в несанкционированном доступе к информации и пожаловалось в ФБР. В результате он был обвинен по уголовной статье, посажен на три месяца в тюрьму и потерял все свои сбережения. Системный администратор - весьма опасная профессия.
Легендарный Кевин Митник использовал очень простой способ отгадывания паролей - он просто звонил пользователям компьютеров и честно говорил им, что ему нужен пароль для какой-нибудь придуманной цели. Обычно он его получал. Другой популярный способ - послать письмо от имени администратора с требованием сменить пароль на указанный в письме. Психология - весьма действенное средство в руках профессионала.
Куда более серьезная проблема с паролями состоит в том, что они путешествуют по сети в незашифрованном виде и их очень легко перехватить по дороге. Поэтому, сейчас стали использовать одноразовые пароли. Идея состоит в том, что каждый раз для входа в систему используется новый пароль, который практически невозможно предсказать постороннему взломщику. Есть свободная програмная реализация одноразовых паролей (S/Key) и несколько коммерческих програмно-аппаратных реализаций, которые пока что не добрели до России. S/Key интегрирован в некоторые системы, например, во FreeBSD.
Несметное количество HTTP-серверов по всему миру сделали Internet столь популярной средой проживания. Их устанавливают всюду, все и на всех системах. Такой сервер - достаточно большая и сложная программа, часто запускаемая от имени супер-пользователя и имеющая все свойства демона. Она умеет читать файлы в файловой системе и запускать программы. Эти программы генерят информации для пользователя и часто управляются данными, введенными пользователем. Неточности в написании CGI-скриптов позволяют взломщикам получать неожиданные привилегии.
За пару дней существования моего HTTP-сервера к нему несколько раз обратились с просьбой прислать файл /etc/passwd (старые версии Apache содержали CGI-скрипт "phf", который позволял прочитать любой файл в системе). По случайности, у меня оказалась свежая версия демона и фокус не сработал.
Несколько советов Web-администраторам:
Если вы передаете данные пользователя внешним программам, проверяйте их на наличие опасных символов, имеющих специальную семантику для этих программ (например, командные интерпретаторы хорошо переваривают символы `<>;").
Аналогичные проблемы возникают и с FTP-серверами. Неправильно настроенный, или содержащий ошибку FTP-сервер позволяет читать и/или писать произвольный файл в системе. А если этот сервер работает на системе DOS, OS/2 или Windows"95, подключенной к локальной сети или на машине, использующей NFS, то взломщик может получить доступ ко всей вашей сети. Постарайтесь использовать максимально простой FTP демон, в котором отключены все "бантики" и который позволяет только анонимным пользователям забирать (но не класть) файлы.
Общий принцип безопасности, на мой взгляд, состоит в том, что нельзя гарантировать безопасность на машине, на которой существует любая форма активности внешних пользователей - HTTP, FTP или терминальный сервер. Такие сервисы следует выносить за пределы вашей локальной сети и особенно хорошо администрировать. В особенности опасен HTTP или FTP сервер на вашем брандмауэре.
Сетевая файловая система NFS весьма удобна. Так удобна, что ее часто используют для объединения сотен и тысяч компьютеров в единое файловое пространство. Это самый настоящий Intranet, хотя никто не использовал этот термин для обозначения распределенных компьютерных сетей до недавнего времени маркетиговых терминов. Но, по старому правилу большое удобство ведет к слабой защищенности. NFS позволяет опытному взломщику получить доступ к любому файлу на экспортированной файловой системе, а NIS предоставляет в ваши руки зашифрованные пароли даже если ваш Unix использует механизм "теневых паролей". Поэтому, не выпускайте пакеты NFS (они обычно используют TCP и UDP порты 111 и 2049) за пределы вашей сети и отфильтровывайте их при попытке зайти к вам внутрь.
Программисты и их программы несовершенны. Многие программы, (особенно старые) использующие функции gets() и puts(), которые не проверяют длину считываемой строки, позволяют переполнить буфер и испортить програмный стек. Именно эта ошибка была ислользована самым знаменитым вирусом в истории (это был вирус Морриса, поразившим в 1988 году большинство систем Unix, подключенных к Internet. Интересно, что отец Морриса работал в National Security Agency и занимался там проблемами компьютерной безопасности (NSA - организация занимающаяся прослушиванием всех средств коммуникации во всем мире. Она столь засекречена, что часто аббревиатура NSA расшифровывается как "No Such Agency").
Один популярный брандмауэр предоставлял взломщику возможность поработать в промежутке времени от загрузки системы до запуска самой системы защиты. Многие методы взлома используют временные файлы, ненадолго создаваемые программами. При запуске SUID-скриптов сначала запускается командный интерпретатор с полномочиями суперпользователя, а затем он считывает сам скрипт - за это время можно успеть подменить скрипт и выполниться совсем другой.
Довольно часто CERT (Computer Emergency Respond Team) публикует сведения об ошибках в SUID-программах. Такие ошибки часто позволяют произвольному пользоватею системы стать суперпользователем.
Из предыдущего текста у вас может сложиться вполне справедливое впечатление, что Unix - не очень защищенная система (это не мешает, впрочем, конкретной системе правильно настроенной и хорошо администрируемой быть очень хорошо защищенной). Ну а что же с другими системами? Естественно, что компьютерная система, которая с самого начала разрабатывалось с учетом соображений безопасности (например, MULTICS, Windows NT) имеет шансы быть более защищенной чем система, разработанная для максимального удобства совместной работы. Однако, плохой администратор, плохие пароли и ошибки в программах встречаются всюду. Так что не обольщайтесь биркой "C2 certified", приклеенной к вашему боевому серверу (как, впрочем и другими бирками. Например, меня в последнее время очень радуют бирки "Windows"95 Compatible" на компьютерных.
Итак, вы поняли, что обеспечить надежную защиту отдельных компьютеров сети достаточно сложно и решили защитить всю сеть в целом с помощью модной штуки под названием "Firewall" - брандмауэр, как его сейчас переводят (мне не очень нравится этот перевод, но лучше придумать не могу. К сожалению, слово "фиревал" не звучит). Как выбрать то, что вам нужно?
Если вы опытный Unix-хакер, то смело собирайте свой собственный бастион на базе бесплатного FreeBSD или коммерческой BSDI/OS и свободных программ (tcp_wrappers, TIS Firewall Toolkit, tripwire, COPS, и т.д.). Набьете руку, получите удовольствие и будете знать что происходит. Но в случае взлома будьте готовы получить по заслугам.
Проще купить готовый продукт - с ним меньше ответственности и хлопот. Купил, распаковал, включил - и безопасно вкушай прелести Internet! Однако продуктов много и это затрудняет жизнь. Как выбрать из них наилучший?
На выставке Windows Expo"96 меня и представителя Micrisoft застал в коридоре посетитель и стал спрашивать - какой продукт лучше - DEC Firewall для NT или Microsoft Proxy - объявленный, но пока не существующий продукт. Мне лично кажется, что существующий продукт всегда лучше объявленного, но недоступного.
Для того, чтобы сравнивать, необходимо выработать критерии - что значит "лучше и хуже". В противном случае развяжется очередная религиозная война, похожая на бушевавшие когда-то горячие войны о том, какая ОС и какой редактор лучше.
Один из посетителей выставки предложил считать лучшим тот продукт, который меньше взламывали. Хорошая идея, но брандмауэр, который один раз взломали, является дорогой игрушкой. Это похоже на математическую теорему - одного контрпримера достаточно для опровержения и не поможет самое красивое доказательство. Самый лучший пользовательский интерфейс не перекроет одной маленькой дырки в защите. Самое главное требование к системе защиты - она должна надежно и безопасно защищать при любых условиях.
Если защитное устройство выходит из строя, оно должно закрывать весь доступ в вашу сеть, а не открывать его. Маркус Ранум сравнивает Firewall с воротами и опускаемым мостом замка. Когда перетирается веревка, мост опускается, открывая проход. А входные ворота, оставшиеся без крепежа, проседают и никого не впускают. Поэтому смотрите, как ведет себя продукт в трудных ситуациях.
Большинство систем защиты делятся на два класса. Пакетные фильтры, которые проверяют заголовки IP/TCP/UDP пакетов и принимают решение, исходя из адресов и протоколов. Proxy-серверы становятся между клиентом и серверам и пропускают через себя все прикладные запросы. Сравнивать эти два класса устройств непросто, потому что они работают на разных уровнях. Обычно бастионы с proxy-серверами надежнее, но менее удобны. Лучше всего использовать сочетание тех и других. Там где можно используйте пакетные фильтры, но основные сервисы пропускайте через proxy-серверы.
Большинство обзоров по брандмауэрам посвящают основную часть описания пользовательскому интерфейсу. В большинстве случаев брандмауэр - черный ящик, который, будучи настроенным стоит в хорошо закрытом месте и к нему не подходит никто, кроме специально обученных администраторов. Хорошо, если интерфейс красивый и удобный, но удобство внесения изменений в конфигурацию может спровоцировать пользователей на ослабление защиты. Поэтому, удобный интерфейс может быть и недостатком.
Соберите побольше информации и подпишитесь на firewalls@GreatCircle.com. Пощупайте продукт руками. Попробуйте его в действии. И не верьте рекламе - настоящий специалист по безопасности не доверяет никому!
Читать журналы всегда приятно, однако настоящая информация живет в сети! Небольшой список хороших узлов, посвященных безопасности, развлечет вас на некоторое время.
[к сожалнию большинство из этих ссылок устарело]
Last-modified: Fri, 03 Jul 1998 04:50:06 GMT