Cети используются ежедневно в корпорациях и различных организациях. Повсюду происходит совместное использование данных и ресурсов. Несомненно, проблемы безопасности должны быть решены при планировании сетей, дабы избежать возможных последующих затрат. Обычно сети организованы по принципу <клиент-сервер>. Пользователи используют рабочие станции для доступа к серверу, где содержится основная часть информации и который с точки зрения взлома представляет больший интерес. В какой бы компании ни была сеть - банк, министерство, аптека или что-либо еще - взлом приносит ущерб. И хотя часто взлом происходит изнутри, то есть его осуществляет человек, имеющий часть прав доступа, интересно посмотреть на взлом снаружи.
Статистика показывает, что обычно взломом сетей занимаются мужчины в возрасте от 16 до 25 лет. Причиной этого зачастую является желание проявить себя, увеличить свое мастерство в этой области или желание использовать в своих целях ресурсы сетей.
Кого интересно ломать? Провайдеров - чтобы иметь бесплатный Интернет; мелкие коммерческие компании - чтобы поиздеваться; банки - потому что очень круто, а зачастую физически невозможно (нет реального кабеля наружу, например); многих других, к примеру порносайты, - для развлечения. Часто взломщики используют программы-сканеры для определения машин, которые могут быть взломаны, а затем их ломают. Взломщики, заранее намечающие цель, должны быть гораздо более опытными. Такие действия будут продиктованы скорее не интересом, а конкретным заданием, возможно, связанным с большими деньгами. Обычно для этого вначале собирается огромный объем информации о машине (и не только через сеть), но все же вероятнее всего первое - ломают просто так и то, что легче.
Обычно в компаниях есть выход в Интернет:
WWW-сервер; почта; выход в Интернет для пользователей.
Обычно почта и WWW держатся на отдельном сервере, а остальные компьютеры сети отделены от мира программой firewall, которая обычно ставится на шлюзе. Несомненно, хороший администратор старается предотвратить взлом как снаружи, так и изнутри. В дальнейшем будем считать, что взломщик хочет получить доступ к сети. Web-серверы обычно не взламываются, если, конечно, фильтрация пакетов является правильной. Почтовый сервер практичнее с точки зрения взлома, поскольку почта должна распространяться дальше и почтовая программа тем самым имеет некоторый доступ к сети. Кроме почты, есть еще несколько программ, которые могут интересовать взломщика:
ftp (21), ssh (22), telnet (23), smtp (25), named (53),
pop3 (110), imap (143), rsh (514), rlogin (513), lpd (515).
Пакеты для SMTP, named и portmapper могут быть легко отфильтрованы, уменьшая риск взлома. Иногда, правда, задача взлома облегчается тем, что фильтрация пакетов организована неправильно. Это может возникнуть при сегментации, неправильной таблице роутинга пакетов по портам, организации нескольких имен у одной машины, модемном доступе. Лишние проблемы может создать наличие DNS в сети. Гораздо безопаснее использовать численные адреса внутри компании. Другим <узким> местом является программа finger. С ее помощью довольно легко узнать тип операционной системы, например, просматривая пользователей root@host, bin@host или daemon@host.
Также следует иметь в виду, что адреса, указанные в файлах hosts.equiv .rhosts или .shosts, имеют больший приоритет при общении с машиной, поэтому возможно, что взлом с этих адресов будет проще. Этот факт обычно используется взломщиками. Чтобы обезопасить сеть, желательно быть уверенным, что доверительные адреса имеют такую же защиту.
Другой опасностью является установка пиратского программного обеспечения пользователями на своих машинах. Такие программы могут содержать внутри себя <троянских коней> разного вида, замаскированных под заставку, дополнение к чему-либо или что-то еще. Обычно это происходит на машинах с Windows, где установить программы может каждый. <Троянские кони> выполняют простые задачи, уничтожая затем сами себя. Они могут послать адреса, содержимое системных файлов сервера, доступ к которым необходим для входа в сеть, например passwd.
Понятно, что взломщики должны обезопасить сами себя. Для этого, во-первых, нужно скрыть свои IP-адреса. Есть несколько простых путей это сделать: использовать промежуточный адрес посредством telnet или rsh; использовать Windows и Wingate; использовать неправильно сконфигурированный proxy-сервер.
Простой совет - не надо писать письма на те адреса, откуда происходит атака. Скорее всего, почта там тоже сломана, и письмо просто станет предупреждение взломщику о том, что его заметили.
Прежде чем ломать, взломщик будет собирать информацию о сети. Он будет пытаться узнать адреса машин в сети, имена пользователей, тип операционной системы. Часть этого можно узнать вполне законно, рассматривая файлы на Web-сервере, ftp-сервере, запуская программу finger или просто пытаясь войти на сервер. После этого он составит представление о сети, о связи компьютеров, о наличии пригодных для взлома портов и о многом другом.
Далее будет предпринята попытка распознать машины, которые используются как наиболее доверительные. Возможно, что часть информации хранится отдельно, и доступ к ней осуществляется через nfsd или mountd. Например, так может храниться конфигурация /etc и исполняемые системные файлы /usr/bin.
После получения такого рода информации взломщик будет сканировать сеть на предмет наличия <дыр> в защите. Для этого существуют программы типа ADMhack, mscan, nmap под Linux. Для их работы необходим быстрый канал, желательно оптоволокно. Программа ADMhack требует прав root для запуска; другие могут запускаться и без этого. Взломщик может и не быть администратором машины, на которой запущен сканер, - он мог встроить его как <троянского коня> в любую другую программу.
Программы ADMhack и mscan делают примерно следующее: TCP-сканирование портов; получение информации о RPC сервисах, запущенных через portmapper; получение списка экспортированных каталогов через nfsd; получение информации о наличии samba или netbios; запуск finger для сбора информации о пользователях; проверка скриптов CGI; проверка на возможность взлома демонов Sendmail, IMAP, POP3, RPC status и RPC mountd. Напомним банальную вещь: обычно взлом происходит ночью, что дает больше времени и гарантии, что системный администратор вряд ли рядом. Также удобны для этого выходные дни и праздники.
Если собранная информация позволяет пойти в обход через доверительные адреса, то возможность обычно используется. Если же такого пути нет, то применяется почтовый сервер для более глубокого проникновения в сеть. Параллельно производятся попытки программно удаленно взломать Sendmail-, IMAP-, POP3- и RPC-сервисы, такие как statd, mountd и pcnfsd. Иногда для этого используются уже взломанные машины, так как зачастую необходимо иметь программу, скомпилированную на той же платформе.
После того как хоть один из приемов прошел и получить доступ удалось, взломщик будет тщательно заметать следы, чистить записи в файлах и устанавливать программы, чтобы впоследствии его присутствие не было обнаружено.
Обычно при этом устанавливаются исправленные версии программ, изменяются даты и права доступа к файлам. Для загрузки новых программ может использоваться даже ftp. Возможно, что вместо аккуратного удаления информации о себе будут установлены новые версии программ ps и netstat, которые будут скрывать информацию о взломе. Некоторые взломщики могут поместить файл .rhosts в директорию /usr/bin, чтобы дать возможность удаленного входа пользователя bin посредством rsh или csh.
Чистка записей о себе необходима. Простым дублированием здесь себя не обезопасить. Красивым приемом является посылка регистрационных записей на принтер. Это делает фактически невозможным их редактирование. В любом случае взломщик пойдет дальше только после того, как чистка записей будет проделана. Будет ли он взламывать саму сеть или только основные серверы, - скорее всего, дело вкуса, но если все предыдущее прошло более-менее гладко, искоренение взломщика будет уже довольно трудоемким делом.
Если целью взлома было получение информации из сети, то можно признать, что она наполовину достигнута, так как, взломав что-то типа почтового сервера, получить доступ к сети гораздо легче. Скорее всего, дальнейшая защита будет не лучше, а ее взлом уже отрепетирован. Тем не менее, еще есть что делать - собирать пароли, качать информацию с защищенных машин и тому подобное. Эти приемы у взломщика тоже, несомненно, отработаны.
Наиболее эффективным способом сбора имен и паролей является установка программ 'ethernet sniffer'. Эта программа <висит> на сетевой карточке, <нюхая> все, что пробегает по сети, отбирая пакеты с именами и паролями. Наиболее эффективно использовать компьютеры из той же подсети, где хочется взломать машину. Ясно, что установить sniffer под Windows гораздо легче. Если же ее придется ставить на UNIX-машину, то скорее всего установлена эта программа будет в /usr/bin или /dev каталог с датой и временем, таким же как у других файлов.
Обычно вся работа программы записывается в файл на этой же самой машине, так что лишней посылки данных не происходит. Поскольку обычно заранее устанавливается измененная программа ps, то процесс не виден. Для работы наиболее эффективно, когда сетевой интерфейс находится в режиме 'promiscuous'. Ясно, что прослушиваются все данные, проходящие по сети, а не только адресованные данной машине.
После установки прослушивания взломщик возвращается к машине где-то через неделю, чтобы скачать файлы. Разумеется, что он старается как можно тщательнее скрыть присутствие программы, но обнаружить ее можно, например, просматривая файловые системы на предмет изменения файлов. Для таких целей может служить программа Tripwire. Другая программа - cpm - отслеживает изменения в сетевых интерфейсах.
Следующим и наиболее вредным этапом взлома является уничтожение серверов, управляющих работой сети. Это нужно как для заметания следов, так и для того, чтобы заставить сеть работать <под себя>. Не всегда, но довольно часто это происходит посредством команды 'rm -rf / &' ... Восстановление целиком зависит от наличия резервных копий. Другой способ - изменить роутинг пакетов.
Итак, все вышеописанное представляет схему взлома стандартной сети. Как же можно себя обезопасить? Для начала нужно правильно и корректно установить систему. Аккуратно настроить роутинг и убрать все лишнее. Если вы взялись администрировать сеть, взгляните на исправления к системе, о чем обычно говорится на сайте разработчика, особенно, если речь идет о защите. Дальше нужно проверить простые вещи: пользователи bin, system, daemon и т.д. не должны уметь входить в систему, что должно быть отражено в файле passwd. Все пользователи должны иметь пароли и регулярно их менять. Можно запретить держать файлы типа .rhosts, чтобы туда не попадало все подряд. Но это довольно банально. Менее банальный хотя уже весьма распространенный шаг -поставить Secure Shell. Вещь хорошая и надежная. Если кто не в курсе - поясню. Если вы делаете telnet, то пароль передается как есть, что выгодно для sniffer, а с Secure Shell, который должен быть на обеих соединяемых машинах, пароль идет в шифрованном виде. Просто, но приятно, особенно если учесть, что этот самый shell бесплатный. Также нужно смотреть log-файлы на предмет входа со странных адресов, попытки входа под чьим-либо именем много раз, и многое другое. Не помешает иногда сверять важные системные файлы с резервной копией, скажем, с установочного диска. Плюс к этому желательно контролировать работу всей сети. Нужно побольше знать об установленных программах, допускать поменьше свободы пользователей, в общем, следить за своим хозяйством. Очень полезная вещь - делать backup, скажем, раз в день. Наверняка уже эти простые советы могут помочь. Но можно пойти и дальше - например, проверять состояние файловой системы, печатать на принтер регистрационные файлы. От всех атак взломщиков уберечься тяжело, и все-таки очень многое - в ваших руках.