Журнал LinuxFormat - перейти на главную

LXF105:Спецрепортаж

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая: ==Цель: Linux== : Linux – заманчивый объект атаки для хакеров со всего света. Здесь рассказано, как опередить...)
 
Строка 98: Строка 98:
  
 
: Неважно, насколько защищенными вы считаете свои серверы: слабость всего одной машины в вашей сети может ввергнуть вас в бездну неприятностей.
 
: Неважно, насколько защищенными вы считаете свои серверы: слабость всего одной машины в вашей сети может ввергнуть вас в бездну неприятностей.
 +
 +
{{Врезка|Заголовок=Скорая помощь|Содержание=Запуск ''Nmap'' от имени
 +
суперпользователя root даст вам более точные результаты, так как
 +
ему разрешается использовать специальные сокеты, способные зондировать
 +
вашу цель более агрессивно.|Ширина=200px}}
 +
 +
Раньше сеть считалась решенной проблемой: зная, что именно к ней подключено, вы были в относительной безопасности. Но сейчас есть такие штуки, как вардрайвинг, фуззинг и анонимные
 +
прокси; все это – дыры в стратегии безопасности вашей сети, о которых следует знать. Помните, что слово «сеть» может означать 10000 компьютеров, 10 компьютеров, а то и один компьютер, поскольку, подключившись к интернету, вы становитесь частью огромной сети.
 +
 +
Сперва следует просканировать вашу систему, чтобы получить
 +
представление, как выглядят вещи с внешней точки зрения. Основные
 +
инструменты здесь – ''Nmap, Nessus'' и ''Wireshark'': сканер портов, детектор уязвимостей и анализатор пакетов. ''Nmap'' – великолепное приложение, его трудно не полюбить. Оно настолько знаменито, что даже попало в одну из частей «Матрицы»: там Тринити искала слабое место,
 +
чтобы внедриться. ''Nmap'' сканирует компьютер (или несколько компьютеров), и разузнает, какие порты откликаются на зондирование, а заодно и какая ОС запущена на целевой машине.
 +
 +
Прежде чем затевать сканы с помощью ''Nmap'' или ''Nessus'', проделайте следующее:
 +
# Убедитесь, что у вас есть отдельная машина, с которой можно сканировать. Результат локального сканирования может отличаться от результатов удаленного. Для достижения наилучшего результата, разместите сканирующую машину в той же сети, что и сканируемую – если вы соединены через Интернет, ваш маршрутизатор, скорее всего, будет вам мешать.
 +
# Убедитесь, что на обе машины наложены последние патчи. Это очень важно, так как ''Nessus'' отслеживает номера версий приложений и использует их для отчета по уязвимостям.
 +
# Убедитесь, что на целевой машине запущен брандмауэр (если у вас таковой имеется).
 +
 +
====Что видно миру====
 +
 +
{{Врезка|Заголовок=Что такое беспроводной фуззинг?|Содержание=Когда программа выделяет фиксированный объем ОЗУ для хранения ввода, а хакер пересылает
 +
в эту программу больше данных,
 +
чем туда помещается, происходит переполнение буфера. В
 +
результате эти данные переписывают легальный код, и при их
 +
выполнении контроль передается
 +
хакеру. Беспроводной фуззинг
 +
[можно перевести как «засорение»] – похожая методика: хакер
 +
передает беспроводные данные
 +
по сети, на вид вполне обычные,
 +
но содержащие ошибку, способную вызвать сбой на машинеполучателе, если она не запрограммирована на правильное
 +
обращение с таким вводом.
 +
Компания Codenomicon специализируется на тестировании
 +
стойкости к подобным атакам, и
 +
всего несколько месяцев назад
 +
она обнаружила, что 90% устройств Bluetooth, Wi-Fi и WiMax
 +
уязвимы к беспроводному фуззингу, а также перечислила три
 +
причины, почему беспроводные
 +
соединения столь уязвимы: 1)
 +
они всегда открыты; 2) к ним
 +
можно подключиться почти отовсюду; 3) атакующие всегда анонимны. И если у вас запущена
 +
беспроводная сеть, постарайтесь накрепко ее запереть! |Ширина=200px}}
 +
 +
Для подготовки к сканированию, установите на сканирующей машине пакет ''nmap''. Основная команда ''Nmap'' имеет такой вид: ''nmap 192.168.0.1''. Вместо IP-адреса этого примера впишите адрес вашей машины, нажмите '''Enter''' и дайте программе секунд 10. Если все пройдет
 +
хорошо, вы увидите что-нибудь типа:
 +
 +
All 1697 scanned ports on 192.168.0.1 are closed.
 +
 +
Если ваша безопасность слабее, чем у нашего подопытного кролика (спасибо, Майк!), то вы, скорее всего, увидите примерно такие
 +
результаты:
 +
 +
PORT STATE SERVICE
 +
22/tcp open ssh
 +
631/tcp open ipp
 +
 +
Здесь вам сообщается основная информация, требуемая при рассмотрении внешней безопасности сервера: какие порты открыты и доступны из Интернета? В данном случае имеются '''SSH''' (безопасная удаленная оболочка) и '''IPP''' (служба сетевой печати), два довольно
 +
безопасных сервиса. Но весь смысл Nmap’а в том, что иногда вы спохватываетесь: «Эге, а я и не знал, что у меня запущена этакая служба...», и в этом случае либо ваш дистрибутив немного неразборчив в установке приложений, так что некая служба возникла как часть другого пакета, о чем вы и не подозревали, либо вас уже взломали, и ваш сервер держит любезно распахнутым черный ход.
 +
 +
====Более того...====
 +
 +
У ''Nmap'' есть еще три опции, которые могут вам пригодится. Во-первых,
 +
он может сканировать сразу целый диапазон IP-адресов, то есть проверять сразу несколько систем одной командой, что может также пригодиться для обнаружения в сети машин-кукушат, когда вы видите неизвестные IP-адреса на выходе. Допустим, у вас есть большая сеть,
 +
использующая IP-адреса диапазона 10.0.0.0-10.255.255.255 – вы можете командой
 +
 +
nmap -sP 10.0.0.0/8
 +
 +
просканировать всю сеть и увидеть, какие IP-адреса активны.
 +
 +
Опция '''-sP''' не сканирует порты, а пингует все IP-адреса в указанном
 +
диапазоне. Это супербыстрый и простой способ учесть все машины,
 +
подключенные к вашей сети, и он не отнимает много времени.
 +
 +
Вторая опция, которую вы можете попробовать – это '''-p''', в ней можно указать, какие порты должен сканировать ''Nmap''. По умолчанию Linux разрешает root’у открывать порты с номерами, меньшими '''1024''', а обычный пользователь и любая программа, им запущенная, могут
 +
открывать порты с номерами от '''1024''' до '''65535'''. Обычно ''Nmap'' сканирует только 1700 или около того из этих 65535 портов, так что дыра, действующая на каком-то их них, может остаться незамеченной. Решение проблемы простое: используйте опцию '''-p1-65535''', чтобы вынудить ''Nmap'' сканировать все имеющиеся порты на компьютере.
 +
 +
Последняя интересующая нас опция – так, для общего развития –
 +
ключ '''-A''', который просит ''Nmap'' по-умному угадать, какая операционная
 +
система сканируется. Чем выше ваша безопасность, тем меньше шансов у ''Nmap'' засечь используемую вами ОС, так что лучше всего будет, если ''Nmap'' не добудет сведений о том, какой ОС вы пользуетесь!
 +
 +
====Самое свежее и лучшее====
 +
 +
{{Врезка|Заголовок=Скорая помощь|Содержание='Wire-shark'' – это анализатор
 +
протокола, который цепляет из сети живые данные, позволяя вам их просеять. Попробуйте
 +
установить его, затем запустите чат, электронную почту или web-программу –
 +
и увидите, сколько ваших данных пересылается по интернету простым текстом!|Ширина=200px}}
 +
 +
{{Врезка|Содержание=[[Изображение:LXF105_34_1.jpg|300px|Рис. 1]] У ''Nessus'' много параметров, с которыми можно порезвиться, но не сбрасывайте опцию «'''Safe checks'''»: охнуть не успеете, как машина-цель рухнет!|Ширина=300px}}
 +
 +
''Nmap'' – стандарт де-факто для поиска открытых портов, но если нужно нечто более детальное, вам не найти утилиты лучше ''Nessus''. Как и ''Nmap, Nessus'' сканирует компьютеры, и, кстати, для базового скана сети использует ''Nmap''. Разница в том, что ''Nessus'' берет результаты
 +
''Nmap''’а (данные об открытых портах) и на их основе сканирует известные уязвимости. Например, ''Nmap'' только сообщит вам, что порт 80 открыт, а вот ''Nessus'' скажет, что порт 80 открыт, обслуживается ''Apache'' 2.0.38, и что эта версия имеет несколько слабых мест, по которым можно ударить.
 +
 +
Для начала, установите пакеты ''nessus'' и ''nessusd'' с помощью вашего
 +
менеджера пакетов. Может оказаться, что в вашем дистрибутиве они
 +
объединены в один, но в дистрибутивах, основанных на Debian, они
 +
разные. После установки под root’ом запустите ''nessus-adduser'':
 +
# Введите имя пользователя. Оно не обязано совпадать с именем вашей основной учетной записи, так как используется только ''Nessus''.
 +
# На вопрос о типе аутентификации, просто нажмите '''Enter'''
 +
# Дважды, как требуется, введите пароль.
 +
# На вопрос о правилах пользователя, просто нажмите '''Ctrl+D'''.
 +
 +
Тем самым создастся новый пользователь, имеющий доступ к демону ''Nessus''. Следующий шаг – добыть свежие программы тестирования на уязвимости, на языке ''Nessus'' называемые модулями расширения (плагинами). Если вы хотите немедля получать новейшие тесты,
 +
придется платить $1200 в год, но если вы согласны обождать семь
 +
дней, то получите те же обновления бесплатно. Понятно, что $1200 – не
 +
деньги для крупной компании, но если вы держите небольшой домашний web-сервер, то семь дней задержки – вполне терпимо! В любом случае, для получения доступа к обновлениям вам придется зарегистрироваться у создателей ''Nessus'', так что зайдите на http://www.nessus.org/register и заполните форму. После регистрации вы получите электронное письмо с информацией для активации, где говорится, чтобы вы выполнили команду следующего вида:
 +
 +
/opt/nessus/bin/nessus-fetch --register SOME-UNIQUE-NUMBER
 +
 +
Удалите из этого уравнения часть '''/opt/nessus/bin''' и выполните
 +
оставшуюся командную строку из-под root’а; все последние плагины
 +
скачаются и установятся локально. Теперь наберите ''nessus'', и возникнет GUI Nessus’а – выберите вкладку '''Target''', введите IP-адрес для
 +
машины-цели, затем нажмите '''Start The Scan'''. Сканирование ''Nessus''
 +
длится секунд 30, в зависимости от скорости вашей сети, и после этого вы увидите результаты, сходные с показанными на Рисунке 1. Нажмите на «'''Localhost'''» слева вверху в окне результатов, затем – на «'''Localhost'''»,
 +
когда он появится на нижней панели, и вы увидите список открытых
 +
портов. Выбор любого из них снабдит вас списком известных проблем с безопасностью, являющихся, возможно, вашими уязвимостями. Хорошенько изучите его, просто чтобы убедиться, что все в порядке!
 +
 +
====Что такое DMZ?====
 +
 +
Иметь демилитаризованную зону необходимо лишь в тех случаях, когда у вас
 +
работает какой-либо внешний сервер. Вкратце: обычно лучше ограничить до
 +
минимума непрошеные данные, прибывающие из сети, и так настроить брандмауэр,
 +
чтобы отклонялось практически все. Но если у вас есть web-сервер, почтовый
 +
сервер, FTP-сервер или любое другое устройство, ждущее запросов из внешнего
 +
мира, в межсетевом экране придется проковырять дырку, чтобы впускать эти
 +
запросы.
 +
 +
Теперь допустим, что web-сервер работает на порту 80, открытом всему миру.
 +
Если взломщик получит контроль над сервером, используя средства атаки для
 +
''Apache'', то в его лапах окажется и доступ к машинам внутри сети. Ваши внешние сер-
 +
веры следует поместить в специальную сеть (называемую демилитаризованной
 +
зоной – в основном потому, что некоторые умники считали название «автономная
 +
сеть» менее крутым), имеющую собственные настройки безопасности. Если эта сеть
 +
захочет поговорить с вашей внутренней сетью, ей придется пройти через брандмауэр, так что даже взломанные серверы гарантированно остаются изолированными от вашей зоны безопасности.
 +
 +
[[Изображение:LXF105_35_1.jpg|DMZ]]
 +
 +
====Мнение эксперта====
 +
 +
В наше время работа в сети – это так просто! Про нее всем всё известно,
 +
разве нет? Вы можете воображать, что безопасности достичь легко, но реальность такова, что легко и напортить.
 +
напортить
 +
 +
Взять, к примеру, IPv6. Хотя пока большинства из нас это не касается, наши любимые
 +
дистрибутивы Linux в основном поставляются с готовой поддержкой IPv6. Что интересно, все
 +
ошибки безопасности, наделанные в IPv4, никуда не делись, да еще появились новые
 +
возможности (типа расширенных заголовков маршрутизации), которые особенно тревожат.
 +
Если вам не нужен IPv6, спокойнее будет отключить его. Если без него вам не обойтись,
 +
убедитесь, что у вас все в порядке в контрольном листе безопасности, как для служб IPv4,
 +
так и для IPv6.
 +
 +
Главный ключ к сетевой безопасности – не надеяться, что все решено установками по
 +
умолчанию. По моему опыту, приемы «старой школы» отнюдь не заржавели. Например, мы
 +
наблюдаем огромный рост web-сайтов с анонимными переносами зоны в DNS, что сильно
 +
экономит наши усилия по определению структуры сетей, которые мы тестируем.
 +
 +
===Минимизируем векторы атаки===
 +
 +
: За вашим блестящим рабочим столом ''Compiz'' прячется запутанная сеть взаимозависимых сервисов. Знаете ли вы, что запущено на вашей машине?
 +
 +
Хотя сейчас компьютеры снабжаются невиданно большими жесткими дисками, мы продолжаем находить все новые и новые способы забить их до отказа. Да, тут не обошлось без ''BitTorrent'', но каждому, кто год-другой пользовался одним дистрибутивом без переустановки, известна и другая причина: зависимости.
 +
 +
Пусть вы решили установить приложение '''A'''; вы запускаете менеджер пакетов и просите установить пакет. Но приложение '''A''' зависит от
 +
приложения '''B''' и библиотеки '''С''', а приложение '''B''', в свою очередь, зависит от библиотек '''D, E''' и '''F''', тогда как библиотека '''С''' зависит от библиотек '''G''' и '''H'''. Вы все еще здесь? Ну вот, ради установки приложения '''A''' вы принимаете все эти зависимости и пользуетесь этим приложением. Проблема тут просматривается очень четко: если вы потом вдруг захотите удалить приложение '''A''', ваш дистрибутив, скорее всего, оставит зависимости на месте, омертвив часть дискового пространства, да еще будет загружать их при запуске, создавая в вашей машине открытые
 +
дополнительно векторы атаки на радость взломщикам.
 +
 +
Когда придет пора генеральной уборки в вашей системе, у вас есть два варианта: позаботиться, чтобы всего запускалось как можно меньше, либо попытаться удалить неиспользуемые зависимости. Начнем с первого...
 +
 +
====Избиение стада демонов====
 +
 +
Увы, в Linux не существует стандартного способа изменения служб через простой в использовании графический интерфейс, и каждый дистрибутив применяет свой подход. Способ SUSE (предсказуемо) является самым трудным для отыскания, зато наилучшим, тогда как система Ubuntu проста в использовании, но не богата возможностями.
 +
 +
Итак, первым делом нужно найти и запустить утилиту администрирования служб, проживающую в
 +
* Fedora: '''System > Administration > Services '''
 +
* SUSE: '''Applications > System > Configuration > Administrator Settings > System > System Services'''
 +
* Ubuntu: '''System > Administration > Services'''
 +
[''Можно обойтесь и без бесцельного таскания мыши и запоминания всех этих заклинаний и подуровней меню, а просто от имени суперпользователя запустить утилиту ''chkconfig''. Кроме того этот подход (набор столь важных команд руками) убережет в дальнейшем от мучительных мыслей типа: "А куда именно я только что ткнул мышкой?"''']
 +
 +
В SUSE и Fedora по умолчанию выставляется простой вид '''On/Off''', а в Ubuntu другого вида нет вообще; это нормально, так как наша цель здесь – посмотреть, что запускается в системе при ее загрузке.
 +
 +
Теперь будьте осторожны! Когда журналы, посвященные нашей сестренке Windows, описывают способы отключения служб Windows
 +
или ковыряния в реестре, они всякий раз подчеркивают, что при неосторожном обращении система может быть испорчена. Это предупреждение справедливо и здесь. Если вы, увидя «''gdm''», подумаете: «А это еще что? Мне оно не надо!» и отключите его, то после перезагрузки
 +
попадете не в уютный рабочий стол, а к мигающему приглашению командной строки, и вам, возможно, придется попотеть ['''видимо вспотеть придется от набора команды ''chkconfig gdm on'', но это хороший пример иллюстрирующий приведенное выше утверждение'''], чтобы вернуть ''gdm'' обратно.
 +
 +
Памятуя об этом, взгляните на следующие сервисы, которые не обязательно нужны всем:
 +
 +
Avahi: это система широковещания
 +
по сети, она находит (и публикует)
 +
ресурсы для других заинтересован-
 +
ных компьютеров. Она полезна при
 +
пользовании общей музыкой или iFolder; в ином случае не будет вреда,
 +
если ее отключить.
 +
Apache: все знают Apache как web-сервер, но он заодно требует или
 +
рекомендует прихватить 350 пакетов из репозитория Debian. Так что
 +
очень легко раздуть вашу систему, не осознавая это.
 +
Bluetooth (включая PAN): синхронизировать ваш телефон с ноутбуком –
 +
идея хорошая, но пользуются этим немногие; выбросить не жалко.
 +
GPM (поддержка мыши в текстовом режиме): Пользуетесь Midnight
 +
Commander? Нет? Ну так долой GPM!
 +
Hplip: если у вас есть принтер HP, HPLIP великолепен! А нет такого при-
 +
нтера, ни к чему и HPLIP. ЧТД.
 +
MySQL: один из редких пакетов, имеющих больше зависимостей, чем
 +
даже Apache. Если вы не намерены отключить его совсем, хотя бы пре-
 +
секите его связь с внешним миром.
 +
NTP: синхронизирует часы вашего компьютера с внешним источником
 +
времени. Имея наручные часы и не будучи против раз в несколько лет
 +
самому установить показания часов… обойдетесь.
 +
Proftpd: если ваш дистрибутив во время установки предлагал опцию
 +
«Everything» и вы ее выбрали, то, возможно, вам подсунули нечто вро-
 +
де этого. Если вы не держите FTP-сервера (скорее всего, так и есть –
 +
взглянем правде в глаза), отключите его, а то и вовсе удалите.
 +
SSH: многие дистрибутивы поставляются с сервером OpenSSH, уста-
 +
навливаемым по умолчанию, да еще и запускают его. Если вы не
 +
планируете удаленно администрировать вашу машину, это ненужный
 +
риск – отключите его!

Версия 11:10, 25 июня 2009

Содержание

Цель: Linux

Linux – заманчивый объект атаки для хакеров со всего света. Здесь рассказано, как опередить их на шаг...

Cознайтесь: вы уверены в полной безопасности вашей Linux-машины, правда? Большинство пользователей Windows запускают программы-брандмауэры, заставляют антивирусы работать в режиме 24/7, ставят антишпионские программы, антиспам и анти-все-подряд. Но после перехода на Linux что-то меняется: они, кажется, вообще перестают об этом заботиться.

Причина тут, видимо, в репутации Linux как операционной системы типа «поставил и забыл» – установив его, можно расслабиться. Также, видимо, людям не верится, что Linux находится под прицелом, из-за его малого, по сравнению с Windows, присутствия на рынке настольных систем. Но вот беда: ни то, ни другое вовсе не правда. Дерзнем сказать большее: машины с Linux даже привлекательнее для атаки, чем Windows-компьютеры. Они реже перезагружаются, внедренный руткит обнаружить сложнее, наличие антивирусных программ – редкость, а установленные приложения частенько стары и имеют незакрытые дыры.

Видите ли, одно из главных преимуществ Linux – регулярный и частый выход новых дистрибутивов – оборачивается и его главным недостатком: многие пользователи отнюдь не рвутся обновлять свою ОС дважды в год, и в итоге работают на таких одрах, чинить которые все давно уже бросили. Того хуже, многие из нас компилируют и запускают собственные приложения, автоматически перекладывая ответственность за создание заплаток с плеч авторов дистрибутива на свои. Алекс Рыбак [Alex Rybak], ведущий инженер по техническим решениям из open-source экспертизы уязвимостей Palamida, утверждает: «Открытое приложение всегда будет исправлено быстрее, но без коммерческой поддержки это исправление не всегда достигает пользователей. А если открытое приложение основано на другом открытом приложении, вы еще и зависите от получения исправлений другими».

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

Пароли

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


Пояснения:

  1. Взломщики паролей прекрасно знакомы с методом замены букв похожими цифрами – и «password», и «passw0rd» проверяются первым делом и мигом обнаруживаются.
  2. Добавление спецсимволов и заглавных букв очень помогает.
  3. Однако букв, специфических для вашей страны, вроде £, может не найтись на клавиатуре, если вы поедете за границу.
  4. Использование первых букв слов какой-нибудь фразы может дать вам сильный сложно подбираемый пароль. Например, ‘slat4atf!‘ происходит от названия книги Дугласа Адамса [Douglas Adams]. Аналогично, «CEsiAFOD» означает «Clint Eastwood stars in A Fistful of Dollars [Клинт Иствуд в фильме За пригоршню долларов]» – отсюда и знаки доллара по бокам.
  5. Лучше всего, конечно, использовать полностью случайный пароль, но если он и вправду случайный, да еще и длинный, то его a) трудно запомнить и b) трудно набрать. Если вы – главный сисадмин в банке, отвечающий за особо важную сеть, вам нужен очень сильный пароль root’а. Если нет – неумеренные сложности будут лишней морокой.

Защищая вашу систему, Linux много чего делает за сценой, и очень часто атаки захлебываются, не дав вам сообразить, что они имели место: например, широко используется технология Exec Shield, пресекающая переполнение буфера, которое раньше было одним из наискорейших способов вызвать сбой или получить удаленный контроль над программами. Прорыв через Exec Shield упрется в следующую линию обороны – SELinux. Она включена по умолчанию в большинстве дистрибутивов и следит, чтобы определенные приложения, например, Apache, имели не больше привилегий, чем нужно для их работы, и даже под контролем взломщика могли бы причинить лишь ограниченный ущерб. Умелые Exec Shield и SELinux повышают безопасность без всяких усилий с вашей стороны. Отсюда вывод: не отключайте SELinux!

Опасности Sudo

С точки зрения пользователя, приложения sudo следует остерегаться. Вначале оно было разработано, чтобы системный администратор мог разрешить некоторым пользователям запускать задачи c привилегиями root’а, и вести журнал их действий. Но в некоторых дистрибутивах, например, Ubuntu, sudo стало стандартным способом выполнять задачи администратора, а значит, ваш обычный пароль пользователя не хуже пароля root’а. Раньше совет «сделайте свой пароль трудным для угадывания, а пароль root – очень трудным» считался хорошим, но раз sudo дозволяет пользователю почти столько же, сколько root’у, пренебрежение своим паролем неуместно.

Мнение эксперта. Марк Браун

Многие говорят мне, что у меня работа-мечта – мне платят за взломы клиентов. Так и есть, а еще – за идеи, как другие могут взломать наших клиентов. Увы, моя работа не содержит эпизодов по типу фильма «Меч-рыба», зато мне попадаются очень милые взломы, и многие из них нацелены на «безопасные» Linux-системы.

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

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


Держите сети в безопасности!

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


Раньше сеть считалась решенной проблемой: зная, что именно к ней подключено, вы были в относительной безопасности. Но сейчас есть такие штуки, как вардрайвинг, фуззинг и анонимные прокси; все это – дыры в стратегии безопасности вашей сети, о которых следует знать. Помните, что слово «сеть» может означать 10000 компьютеров, 10 компьютеров, а то и один компьютер, поскольку, подключившись к интернету, вы становитесь частью огромной сети.

Сперва следует просканировать вашу систему, чтобы получить представление, как выглядят вещи с внешней точки зрения. Основные инструменты здесь – Nmap, Nessus и Wireshark: сканер портов, детектор уязвимостей и анализатор пакетов. Nmap – великолепное приложение, его трудно не полюбить. Оно настолько знаменито, что даже попало в одну из частей «Матрицы»: там Тринити искала слабое место, чтобы внедриться. Nmap сканирует компьютер (или несколько компьютеров), и разузнает, какие порты откликаются на зондирование, а заодно и какая ОС запущена на целевой машине.

Прежде чем затевать сканы с помощью Nmap или Nessus, проделайте следующее:

  1. Убедитесь, что у вас есть отдельная машина, с которой можно сканировать. Результат локального сканирования может отличаться от результатов удаленного. Для достижения наилучшего результата, разместите сканирующую машину в той же сети, что и сканируемую – если вы соединены через Интернет, ваш маршрутизатор, скорее всего, будет вам мешать.
  2. Убедитесь, что на обе машины наложены последние патчи. Это очень важно, так как Nessus отслеживает номера версий приложений и использует их для отчета по уязвимостям.
  3. Убедитесь, что на целевой машине запущен брандмауэр (если у вас таковой имеется).

Что видно миру

Для подготовки к сканированию, установите на сканирующей машине пакет nmap. Основная команда Nmap имеет такой вид: nmap 192.168.0.1. Вместо IP-адреса этого примера впишите адрес вашей машины, нажмите Enter и дайте программе секунд 10. Если все пройдет хорошо, вы увидите что-нибудь типа:

All 1697 scanned ports on 192.168.0.1 are closed.

Если ваша безопасность слабее, чем у нашего подопытного кролика (спасибо, Майк!), то вы, скорее всего, увидите примерно такие результаты:

PORT STATE SERVICE
22/tcp open ssh
631/tcp open ipp

Здесь вам сообщается основная информация, требуемая при рассмотрении внешней безопасности сервера: какие порты открыты и доступны из Интернета? В данном случае имеются SSH (безопасная удаленная оболочка) и IPP (служба сетевой печати), два довольно безопасных сервиса. Но весь смысл Nmap’а в том, что иногда вы спохватываетесь: «Эге, а я и не знал, что у меня запущена этакая служба...», и в этом случае либо ваш дистрибутив немного неразборчив в установке приложений, так что некая служба возникла как часть другого пакета, о чем вы и не подозревали, либо вас уже взломали, и ваш сервер держит любезно распахнутым черный ход.

Более того...

У Nmap есть еще три опции, которые могут вам пригодится. Во-первых, он может сканировать сразу целый диапазон IP-адресов, то есть проверять сразу несколько систем одной командой, что может также пригодиться для обнаружения в сети машин-кукушат, когда вы видите неизвестные IP-адреса на выходе. Допустим, у вас есть большая сеть, использующая IP-адреса диапазона 10.0.0.0-10.255.255.255 – вы можете командой

nmap -sP 10.0.0.0/8

просканировать всю сеть и увидеть, какие IP-адреса активны.

Опция -sP не сканирует порты, а пингует все IP-адреса в указанном диапазоне. Это супербыстрый и простой способ учесть все машины, подключенные к вашей сети, и он не отнимает много времени.

Вторая опция, которую вы можете попробовать – это -p, в ней можно указать, какие порты должен сканировать Nmap. По умолчанию Linux разрешает root’у открывать порты с номерами, меньшими 1024, а обычный пользователь и любая программа, им запущенная, могут открывать порты с номерами от 1024 до 65535. Обычно Nmap сканирует только 1700 или около того из этих 65535 портов, так что дыра, действующая на каком-то их них, может остаться незамеченной. Решение проблемы простое: используйте опцию -p1-65535, чтобы вынудить Nmap сканировать все имеющиеся порты на компьютере.

Последняя интересующая нас опция – так, для общего развития – ключ -A, который просит Nmap по-умному угадать, какая операционная система сканируется. Чем выше ваша безопасность, тем меньше шансов у Nmap засечь используемую вами ОС, так что лучше всего будет, если Nmap не добудет сведений о том, какой ОС вы пользуетесь!

Самое свежее и лучшее


Nmap – стандарт де-факто для поиска открытых портов, но если нужно нечто более детальное, вам не найти утилиты лучше Nessus. Как и Nmap, Nessus сканирует компьютеры, и, кстати, для базового скана сети использует Nmap. Разница в том, что Nessus берет результаты Nmap’а (данные об открытых портах) и на их основе сканирует известные уязвимости. Например, Nmap только сообщит вам, что порт 80 открыт, а вот Nessus скажет, что порт 80 открыт, обслуживается Apache 2.0.38, и что эта версия имеет несколько слабых мест, по которым можно ударить.

Для начала, установите пакеты nessus и nessusd с помощью вашего менеджера пакетов. Может оказаться, что в вашем дистрибутиве они объединены в один, но в дистрибутивах, основанных на Debian, они разные. После установки под root’ом запустите nessus-adduser:

  1. Введите имя пользователя. Оно не обязано совпадать с именем вашей основной учетной записи, так как используется только Nessus.
  2. На вопрос о типе аутентификации, просто нажмите Enter
  3. Дважды, как требуется, введите пароль.
  4. На вопрос о правилах пользователя, просто нажмите Ctrl+D.

Тем самым создастся новый пользователь, имеющий доступ к демону Nessus. Следующий шаг – добыть свежие программы тестирования на уязвимости, на языке Nessus называемые модулями расширения (плагинами). Если вы хотите немедля получать новейшие тесты, придется платить $1200 в год, но если вы согласны обождать семь дней, то получите те же обновления бесплатно. Понятно, что $1200 – не деньги для крупной компании, но если вы держите небольшой домашний web-сервер, то семь дней задержки – вполне терпимо! В любом случае, для получения доступа к обновлениям вам придется зарегистрироваться у создателей Nessus, так что зайдите на http://www.nessus.org/register и заполните форму. После регистрации вы получите электронное письмо с информацией для активации, где говорится, чтобы вы выполнили команду следующего вида:

/opt/nessus/bin/nessus-fetch --register SOME-UNIQUE-NUMBER

Удалите из этого уравнения часть /opt/nessus/bin и выполните оставшуюся командную строку из-под root’а; все последние плагины скачаются и установятся локально. Теперь наберите nessus, и возникнет GUI Nessus’а – выберите вкладку Target, введите IP-адрес для машины-цели, затем нажмите Start The Scan. Сканирование Nessus длится секунд 30, в зависимости от скорости вашей сети, и после этого вы увидите результаты, сходные с показанными на Рисунке 1. Нажмите на «Localhost» слева вверху в окне результатов, затем – на «Localhost», когда он появится на нижней панели, и вы увидите список открытых портов. Выбор любого из них снабдит вас списком известных проблем с безопасностью, являющихся, возможно, вашими уязвимостями. Хорошенько изучите его, просто чтобы убедиться, что все в порядке!

Что такое DMZ?

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

Теперь допустим, что web-сервер работает на порту 80, открытом всему миру. Если взломщик получит контроль над сервером, используя средства атаки для Apache, то в его лапах окажется и доступ к машинам внутри сети. Ваши внешние сер- веры следует поместить в специальную сеть (называемую демилитаризованной зоной – в основном потому, что некоторые умники считали название «автономная сеть» менее крутым), имеющую собственные настройки безопасности. Если эта сеть захочет поговорить с вашей внутренней сетью, ей придется пройти через брандмауэр, так что даже взломанные серверы гарантированно остаются изолированными от вашей зоны безопасности.

DMZ

Мнение эксперта

В наше время работа в сети – это так просто! Про нее всем всё известно, разве нет? Вы можете воображать, что безопасности достичь легко, но реальность такова, что легко и напортить. напортить

Взять, к примеру, IPv6. Хотя пока большинства из нас это не касается, наши любимые дистрибутивы Linux в основном поставляются с готовой поддержкой IPv6. Что интересно, все ошибки безопасности, наделанные в IPv4, никуда не делись, да еще появились новые возможности (типа расширенных заголовков маршрутизации), которые особенно тревожат. Если вам не нужен IPv6, спокойнее будет отключить его. Если без него вам не обойтись, убедитесь, что у вас все в порядке в контрольном листе безопасности, как для служб IPv4, так и для IPv6.

Главный ключ к сетевой безопасности – не надеяться, что все решено установками по умолчанию. По моему опыту, приемы «старой школы» отнюдь не заржавели. Например, мы наблюдаем огромный рост web-сайтов с анонимными переносами зоны в DNS, что сильно экономит наши усилия по определению структуры сетей, которые мы тестируем.

Минимизируем векторы атаки

За вашим блестящим рабочим столом Compiz прячется запутанная сеть взаимозависимых сервисов. Знаете ли вы, что запущено на вашей машине?

Хотя сейчас компьютеры снабжаются невиданно большими жесткими дисками, мы продолжаем находить все новые и новые способы забить их до отказа. Да, тут не обошлось без BitTorrent, но каждому, кто год-другой пользовался одним дистрибутивом без переустановки, известна и другая причина: зависимости.

Пусть вы решили установить приложение A; вы запускаете менеджер пакетов и просите установить пакет. Но приложение A зависит от приложения B и библиотеки С, а приложение B, в свою очередь, зависит от библиотек D, E и F, тогда как библиотека С зависит от библиотек G и H. Вы все еще здесь? Ну вот, ради установки приложения A вы принимаете все эти зависимости и пользуетесь этим приложением. Проблема тут просматривается очень четко: если вы потом вдруг захотите удалить приложение A, ваш дистрибутив, скорее всего, оставит зависимости на месте, омертвив часть дискового пространства, да еще будет загружать их при запуске, создавая в вашей машине открытые дополнительно векторы атаки на радость взломщикам.

Когда придет пора генеральной уборки в вашей системе, у вас есть два варианта: позаботиться, чтобы всего запускалось как можно меньше, либо попытаться удалить неиспользуемые зависимости. Начнем с первого...

Избиение стада демонов

Увы, в Linux не существует стандартного способа изменения служб через простой в использовании графический интерфейс, и каждый дистрибутив применяет свой подход. Способ SUSE (предсказуемо) является самым трудным для отыскания, зато наилучшим, тогда как система Ubuntu проста в использовании, но не богата возможностями.

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

  • Fedora: System > Administration > Services
  • SUSE: Applications > System > Configuration > Administrator Settings > System > System Services
  • Ubuntu: System > Administration > Services

[Можно обойтесь и без бесцельного таскания мыши и запоминания всех этих заклинаний и подуровней меню, а просто от имени суперпользователя запустить утилиту chkconfig. Кроме того этот подход (набор столь важных команд руками) убережет в дальнейшем от мучительных мыслей типа: "А куда именно я только что ткнул мышкой?"']

В SUSE и Fedora по умолчанию выставляется простой вид On/Off, а в Ubuntu другого вида нет вообще; это нормально, так как наша цель здесь – посмотреть, что запускается в системе при ее загрузке.

Теперь будьте осторожны! Когда журналы, посвященные нашей сестренке Windows, описывают способы отключения служб Windows или ковыряния в реестре, они всякий раз подчеркивают, что при неосторожном обращении система может быть испорчена. Это предупреждение справедливо и здесь. Если вы, увидя «gdm», подумаете: «А это еще что? Мне оно не надо!» и отключите его, то после перезагрузки попадете не в уютный рабочий стол, а к мигающему приглашению командной строки, и вам, возможно, придется попотеть [видимо вспотеть придется от набора команды chkconfig gdm on, но это хороший пример иллюстрирующий приведенное выше утверждение], чтобы вернуть gdm обратно.

Памятуя об этом, взгляните на следующие сервисы, которые не обязательно нужны всем:

Avahi: это система широковещания по сети, она находит (и публикует) ресурсы для других заинтересован- ных компьютеров. Она полезна при пользовании общей музыкой или iFolder; в ином случае не будет вреда, если ее отключить. Apache: все знают Apache как web-сервер, но он заодно требует или рекомендует прихватить 350 пакетов из репозитория Debian. Так что очень легко раздуть вашу систему, не осознавая это. Bluetooth (включая PAN): синхронизировать ваш телефон с ноутбуком – идея хорошая, но пользуются этим немногие; выбросить не жалко. GPM (поддержка мыши в текстовом режиме): Пользуетесь Midnight Commander? Нет? Ну так долой GPM! Hplip: если у вас есть принтер HP, HPLIP великолепен! А нет такого при- нтера, ни к чему и HPLIP. ЧТД. MySQL: один из редких пакетов, имеющих больше зависимостей, чем даже Apache. Если вы не намерены отключить его совсем, хотя бы пре- секите его связь с внешним миром. NTP: синхронизирует часы вашего компьютера с внешним источником времени. Имея наручные часы и не будучи против раз в несколько лет самому установить показания часов… обойдетесь. Proftpd: если ваш дистрибутив во время установки предлагал опцию «Everything» и вы ее выбрали, то, возможно, вам подсунули нечто вро- де этого. Если вы не держите FTP-сервера (скорее всего, так и есть – взглянем правде в глаза), отключите его, а то и вовсе удалите. SSH: многие дистрибутивы поставляются с сервером OpenSSH, уста- навливаемым по умолчанию, да еще и запускают его. Если вы не планируете удаленно администрировать вашу машину, это ненужный риск – отключите его!

Если ваш пароль... то это...
password Вообще смехотворно
Password Смехотворно, но за заглавную букву добавьте себе балл
Password123 Совершенно бесполезно
elephant В основном бесполезно
e1eph4nt Практически бесполезно
313ph4nt Бесполезно
fb22lemon5 Уже куда ни шло
fb22lemon5 Не годится если вас зовут Фред Блоггс и вам 22 года
slat4atf! Хорошо!
Хорошо!
£CEsiAFOD£ Плохо
&tp$*mmn!%WR_lm Плохо
Персональные инструменты
купить
подписаться
Яндекс.Метрика