- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF105:Спецрепортаж
Материал из Linuxformat.
Содержание |
Цель: Linux
- Linux – заманчивый объект атаки для хакеров со всего света. Здесь рассказано, как опередить их на шаг...
Cознайтесь: вы уверены в полной безопасности вашей Linux-машины, правда? Большинство пользователей Windows запускают программы-брандмауэры, заставляют антивирусы работать в режиме 24/7, ставят антишпионские программы, антиспам и анти-все-подряд. Но после перехода на Linux что-то меняется: они, кажется, вообще перестают об этом заботиться.
Причина тут, видимо, в репутации Linux как операционной системы типа «поставил и забыл» – установив его, можно расслабиться. Также, видимо, людям не верится, что Linux находится под прицелом, из-за его малого, по сравнению с Windows, присутствия на рынке настольных систем. Но вот беда: ни то, ни другое вовсе не правда. Дерзнем сказать большее: машины с Linux даже привлекательнее для атаки, чем Windows-компьютеры. Они реже перезагружаются, внедренный руткит обнаружить сложнее, наличие антивирусных программ – редкость, а установленные приложения частенько стары и имеют незакрытые дыры.
Видите ли, одно из главных преимуществ Linux – регулярный и частый выход новых дистрибутивов – оборачивается и его главным недостатком: многие пользователи отнюдь не рвутся обновлять свою ОС дважды в год, и в итоге работают на таких одрах, чинить которые все давно уже бросили. Того хуже, многие из нас компилируют и запускают собственные приложения, автоматически перекладывая ответственность за создание заплаток с плеч авторов дистрибутива на свои. Алекс Рыбак [Alex Rybak], ведущий инженер по техническим решениям из open-source экспертизы уязвимостей Palamida, утверждает: «Открытое приложение всегда будет исправлено быстрее, но без коммерческой поддержки это исправление не всегда достигает пользователей. А если открытое приложение основано на другом открытом приложении, вы еще и зависите от получения исправлений другими».
Впрочем, не будем забегать вперед. На следующих восьми страницах мы расскажем вам о возможных уязвимостях вашей системы, а также посоветуем, как уберечь вашу Linux-машину от опасностей. Но сначала надо убедиться, что у вас все в порядке с основами.
Пароли
Мы уже говорили это много раз, и другие скажут вам то же самое: надежные пароли – это Очень-Очень Важно. Но удивительно, как много людей считают, что обычное слово или слово плюс пара цифр будет хорошим паролем.Чтобы прояснить ситуацию, вырежьте и повесьте на видное место следующий путеводитель по правильным паролям:
В командной строке используйте команду who, чтобы узнать, кто в данный момент выполнил вход на вашу машину.
Если ваш пароль... | то это... |
---|---|
password | Вообще смехотворно |
Password | Смехотворно, но за заглавную букву добавьте себе балл |
Password123 | Совершенно бесполезно |
elephant | В основном бесполезно |
e1eph4nt | Практически бесполезно |
313ph4nt | Бесполезно |
fb22lemon5 | Уже куда ни шло |
fb22lemon5 | Не годится если вас зовут Фред Блоггс и вам 22 года |
slat4atf! | Хорошо! |
$CEsiAFOD$ | Хорошо! |
£CEsiAFOD£ | Плохо |
&tp$*mmn!%WR_lm | Плохо |
Пояснения:
- Взломщики паролей прекрасно знакомы с методом замены букв похожими цифрами – и «password», и «passw0rd» проверяются первым делом и мигом обнаруживаются.
- Добавление спецсимволов и заглавных букв очень помогает.
- Однако букв, специфических для вашей страны, вроде £, может не найтись на клавиатуре, если вы поедете за границу.
- Использование первых букв слов какой-нибудь фразы может дать вам сильный сложно подбираемый пароль. Например, ‘slat4atf!‘ происходит от названия книги Дугласа Адамса [Douglas Adams]. Аналогично, «CEsiAFOD» означает «Clint Eastwood stars in A Fistful of Dollars [Клинт Иствуд в фильме За пригоршню долларов]» – отсюда и знаки доллара по бокам.
- Лучше всего, конечно, использовать полностью случайный пароль, но если он и вправду случайный, да еще и длинный, то его 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-машине. Все сводится к слабым местам любых систем – процессам поддержки и настройки.
Держите сети в безопасности!
- Неважно, насколько защищенными вы считаете свои серверы: слабость всего одной машины в вашей сети может ввергнуть вас в бездну неприятностей.
Запуск Nmap от имени суперпользователя root даст вам более точные результаты, так как ему разрешается использовать специальные сокеты, способные зондировать вашу цель более агрессивно.
Раньше сеть считалась решенной проблемой: зная, что именно к ней подключено, вы были в относительной безопасности. Но сейчас есть такие штуки, как вардрайвинг, фуззинг и анонимные прокси; все это – дыры в стратегии безопасности вашей сети, о которых следует знать. Помните, что слово «сеть» может означать 10000 компьютеров, 10 компьютеров, а то и один компьютер, поскольку, подключившись к интернету, вы становитесь частью огромной сети.
Сперва следует просканировать вашу систему, чтобы получить представление, как выглядят вещи с внешней точки зрения. Основные инструменты здесь – Nmap, Nessus и Wireshark: сканер портов, детектор уязвимостей и анализатор пакетов. Nmap – великолепное приложение, его трудно не полюбить. Оно настолько знаменито, что даже попало в одну из частей «Матрицы»: там Тринити искала слабое место, чтобы внедриться. Nmap сканирует компьютер (или несколько компьютеров), и разузнает, какие порты откликаются на зондирование, а заодно и какая ОС запущена на целевой машине.
Прежде чем затевать сканы с помощью Nmap или Nessus, проделайте следующее:
- Убедитесь, что у вас есть отдельная машина, с которой можно сканировать. Результат локального сканирования может отличаться от результатов удаленного. Для достижения наилучшего результата, разместите сканирующую машину в той же сети, что и сканируемую – если вы соединены через Интернет, ваш маршрутизатор, скорее всего, будет вам мешать.
- Убедитесь, что на обе машины наложены последние патчи. Это очень важно, так как Nessus отслеживает номера версий приложений и использует их для отчета по уязвимостям.
- Убедитесь, что на целевой машине запущен брандмауэр (если у вас таковой имеется).
Что видно миру
Когда программа выделяет фиксированный объем ОЗУ для хранения ввода, а хакер пересылает в эту программу больше данных, чем туда помещается, происходит переполнение буфера. В результате эти данные переписывают легальный код, и при их выполнении контроль передается хакеру. Беспроводной фуззинг [можно перевести как «засорение»] – похожая методика: хакер передает беспроводные данные по сети, на вид вполне обычные, но содержащие ошибку, способную вызвать сбой на машинеполучателе, если она не запрограммирована на правильное обращение с таким вводом. Компания Codenomicon специализируется на тестировании стойкости к подобным атакам, и всего несколько месяцев назад она обнаружила, что 90% устройств Bluetooth, Wi-Fi и WiMax уязвимы к беспроводному фуззингу, а также перечислила три причины, почему беспроводные соединения столь уязвимы: 1) они всегда открыты; 2) к ним можно подключиться почти отовсюду; 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 не добудет сведений о том, какой ОС вы пользуетесь!
Самое свежее и лучшее
'Wire-shark – это анализатор протокола, который цепляет из сети живые данные, позволяя вам их просеять. Попробуйте установить его, затем запустите чат, электронную почту или web-программу – и увидите, сколько ваших данных пересылается по интернету простым текстом!
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, то в его лапах окажется и доступ к машинам внутри сети. Ваши внешние сер- веры следует поместить в специальную сеть (называемую демилитаризованной зоной – в основном потому, что некоторые умники считали название «автономная сеть» менее крутым), имеющую собственные настройки безопасности. Если эта сеть захочет поговорить с вашей внутренней сетью, ей придется пройти через брандмауэр, так что даже взломанные серверы гарантированно остаются изолированными от вашей зоны безопасности.
Мнение эксперта
В наше время работа в сети – это так просто! Про нее всем всё известно, разве нет? Вы можете воображать, что безопасности достичь легко, но реальность такова, что легко и напортить. напортить
Взять, к примеру, 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. Так что очень легко раздуть вашу систему, не осознавая это. [* Однако следует помнить, что некоторые приложения используют Apache для собственных нужд]
- Bluetooth (включая PAN): синхронизировать ваш телефон с ноутбуком – идея хорошая, но пользуются этим немногие; выбросить не жалко. [* Опять же предназначение bluetooth не только синхронизация но и буспроводная передача данных, например GPRS интернет]
- GPM (поддержка мыши в текстовом режиме): Пользуетесь Midnight Commander? Нет? Ну так долой GPM!
- Hplip: если у вас есть принтер HP, HPLIP великолепен! А нет такого принтера, ни к чему и HPLIP. ЧТД.
- MySQL: один из редких пакетов, имеющих больше зависимостей, чем даже Apache. Если вы не намерены отключить его совсем, хотя бы пресеките его связь с внешним миром.
- NTP: синхронизирует часы вашего компьютера с внешним источником времени. Имея наручные часы и не будучи против раз в несколько лет самому установить показания часов… обойдетесь. [* Абсолютно неверный совет - если у Вас есть широкополостный доступ к интернет то синхронизация по времени с внешним источником крайне удобна. А встроенным часам в БИОС веры нет вообще и по определению]
- Proftpd: если ваш дистрибутив во время установки предлагал опцию «Everything» и вы ее выбрали, то, возможно, вам подсунули нечто вроде этого. Если вы не держите FTP-сервера (скорее всего, так и есть – взглянем правде в глаза), отключите его, а то и вовсе удалите.
- SSH: многие дистрибутивы поставляются с сервером OpenSSH, устанавливаемым по умолчанию, да еще и запускают его. Если вы не планируете удаленно администрировать вашу машину, это ненужный риск – отключите его!
Как получать заплатки
В мрачные времена еженедельного обнаружения дыр в Windows XP одной из ответных реакций Microsoft было поощрение пользователей скачивать и устанавливать заплатки автоматически. Способ работал успешно: даже самые ленивые пользователи с гарантией обзаводились важными обновлениями, волновало их это или нет. Правда, он не лишен недостатков: ведь вы получаете массу программ, установленных без вашего разрешения, а при серьезном отношении к безопасности это не есть хорошо.
Многие дистрибутивы Linux извещают пользователей об обновлениях безопасности по мере их поступления, хотя обычно разрешают отказаться от них тем, кому это не нравится. Например, в дистрибутивах Debian, зайдите в Settings > Repositories в Synaptic, затем выберите вкладку Update. Опцией по умолчанию стоит Only notifyabout available updates [Просто предупреждать о доступных обновлениях], но можно и полностью отключить автоматическое обновление, или выставить в том же окне более решительное Install security updates without confirmation [Установить обновления безопасности без подтверждения].
Вот наши рекомендации:
- Домашним пользователям с парой-тройкой сервисов (например, web-сервером) или вовсе без них, всегда подключенным к сети, стоит установить Download all updates in the background [Скачивать все обновления в фоновом режиме].
- Если у вас нет постоянного соединения, оставьте установку Only notify about available updates [Просто предупреждать о доступных обновлениях]. Она годится также для случая с единственным доступным извне севером.
- Подарив компьютер с Linux своим родственникам, которым наплевать на администрирование машины, установите им Install security updates without confirmation. [Установить обновления безопасности без подтверждения].
- Владельцам более чем одного сервера лучше вообще отключить автоматические обновления. Вместо этого используйте отдельную вспомогательную машину для проверки наличия обновлений, затем установите их на тестовую машину, чтобы проверить их безопасность, а потом уж разворачивайте их на другие ваши серверы, во время планового обслуживания.
Слепое доверие ко всем заплаткам, а не только тем, что связаны с безопасностью, весьма опасно. Так, 18 месяцев назад многие пользователи Ubuntu обнаружили, что обновление X.org лишило их графического рабочего стола.
Знать свою матчасть
Если ваша компания использует открытое ПО для разработки приложений, неплохой мыслью будет автоматизировать ваши сборки. Это гарантирует использование безопасных версий открытых библиотек.
Одна из проблем использования открытого ПО – его сложно отследить, особенно такое, чей код попадает под лицензию BSD: некоторые просто воспринимают его как данность. В результате ваша компания может напропалую использовать Free Software, даже не подозревая об этом. Недавно Palamida провела исследование того, сколько открытого ПО используется в бизнесе, и обнаружила, что примерно 50% всех приложений содержали компоненты с открытым кодом. Объясняя эти результаты, Тереза Буи Фрайди [Theresa Bui Friday], со-основатель Palamida, заявила: «Многие компании не осознают, сколько открытого ПО они используют. 60% приложений, использующих открытые коды, не документируют этого».
У разработчиков нередко работают на внутренних машинах приложения типа Apache, но слабым звеном для скрытых уязвимостей кода скорее являются библиотеки вроде getopt и zlib, поскольку они встречаются во всевозможных других программах. Конечно, без мелких библиотек для повседневных задач сейчас не проживешь, и Palamida советует выбрать для использования библиотеку с определенным номером версии и разместить ее в безопасном месте, доступном всем разработчикам и сборщикам приложений. Тогда при обнаружении язвы в этой «общественной» библиотеке вы будете знать, что примененная к ней заплатка вылечит сразу все ваши приложения.
Обезжиривание системы
Если вы пользователь Debian (или Ubuntu/Mepis/прочее) и осознаете, что ваш жесткий диск переполнен зависимостями даже после удаления программ, которые их затребовали, попробуйте DebFoster. Эта аккуратная маленькая программа умеет запоминать, какие вы запрашивали программы и каких они натащили зависимостей, и, обнаружив уже ненужные зависимости, удалять их. Для ее запуска надо всего лишь установить пакет debfoster и ввести debfoster в командной строке – если она сама не разберется, оставить или нет какие-либо пакеты, то спросит, нужны ли они вам. Теперь продолжайте использовать систему обычным образом, и как только понадобится проверить висячие зависимости, просто запустите debfoster из командной строки.
Мнение эксперта
Нам миллион раз советовали отключать сетевые службы, но против фактов не попрешь: уж если службы полезны, то большинство систем будут их иметь. И вам некогда будет вчитываться в каждую строчку код всех устанавливаемых пакетов. Ключевой момент в безопасности сервисов – правильные приоритеты ваших усилий.
По моему опыту, большинство дистрибутивов Linux делают свое дело хорошо, гарантируя, что основные сервисы (то есть, например, наиболее популярные реализации FTP, SMTP, DNS, IMAP, HTTP) безопасны прямо «из коробки». Если вы регулярно обновляете свой дистрибутив, маловероятно, что у вас возникнут какие-либо серьезные проблемы.
Однако многие реже используемые сервисы остаются в стороне от защитных мер. Как правило, чем дальше продукт от основного русла, тем более вероятны проблемы с безопасностью. Обязательно уделите дополнительное внимание всем специфическим сервисам, которые вы устанавливаете, в особенности тем, что сделаны под заказ для вашей организации. Вы удивитесь, сколько я напроверял заказных сервисов, которые включали функцию «test», позволяющую выполнять любую команду.
Вирусы под Linux
- Для Windows существует 350000 угроз, а для Linux только около 100. Но если вы думаете, что это позволит вам расслабиться, лучше подумайте еще раз...
[* Как это ни странно но в этом разделе практически ничего не говорится о вирусах написанных специально для Linux]
Если вы делите диск с пользователями Windows, отнюдь не повредит настроить ClamAV по возможности сканировать этот диск на наличие вирусов для Windows.
Как вам уже десятки раз говорилось, у Linux есть ряд широко известных свойств, защищающих его от большинства вирусов:
- Большинство людей пользуются правами root крайне редко.
- Первичным источником приложений является менеджер пакетов, снабжающий нас проверенными программами.
- Web-браузеры и почтовые клиенты под Linux исключительно разнообразны; это гарантирует, что одна зловредная программа не сумеет распространиться и заразить машины повсюду.
- Программы в локальном каталоге нельзя запустить, не поставив ./ в командной строке.
- Файлы, скачиваемые из Интернета, по умолчанию не являются исполняемыми – вам нужно еще сделать их таковыми, чтобы они могли запуститься.
Но даже с учетом этих факторов вирусов все еще следует остерегаться, так как единственное слабое место в вашей системе – в частности, там, где используется бит setuid – может оказаться опасным. Мы поговорили с Фрэзером Говардом [Fraser Howard], ведущим исследователем вирусов в Sophos, и он сказал: «Когда дистрибутив завоевывает популярность, наивная вера в безопасность своей машины и в то, что ей не нужна ручная настройка, опасна уже сама по себе. Хороший пример – Asus Eee PC: он бойко продавался под Рождество, под лозунгом «легко изучить, легко использовать», но содержал уязвимость, которая шее исправление безопасности – это бесполезное исправление».
Давайте рассмотрим риски по вирусам, которые могут касаться именно вас...
У вас двойная загрузка с Windows
Если вы один из тех, кто пользуется двойной загрузкой с Windows, обмениваясь файлами через раздел FAT, то все они беззащитны перед вирусами для Windows. Конечно, у Linux к таким вирусам иммунитет, но она может оказаться их переносчиком для вашей установки Windows. А зараженный файл, скопированный на раздел Linux, не исцелится по волшебству и не станет безопасным для использования в Linux. При наличии кросс-платформенных программам – Mono, Java, Python или PHP – вирусы могут стать такими же опасными, как и для Windows [*если вы самостоятельно и возможно даже вполне осознано запустите их на исполнение. Для снижения риска случайных запусков всегда монтируйте файловые системы FAT и NTFS с опцией noexec]
Linux служит как прокси для Windows
Обычная ситуация в мире бизнеса – когда настольные компьютеры работают под Windows или OS X, но серверы, предоставляющие связь с Интернетом (маршрутизаторы), web (прокси), почту и сетевые файлы, работают под Linux. Да, приятно ощущать, что вирусная защита, запущенная на настольных машинах, более чем способна отразить любые угрозы, исходящие от почты, но фишка в том, что иметь несколько уровней безопасности лучше, чем один. Скан вирусов на Linux-серверах плюс скан машин под Windows повышает шансы обнаружить заразу, в особенности при антивирусных программах от разных разработчиков!
Опять-таки, помните, что существует проблема переноса вирусов из Linux в Windows, так что ваш антивирусный сканер под Linux обязан уметь обнаруживать вирусы для обеих ОС.
Вы скачиваете двоичные программы
В эпоху менеджеров пакетов многие из нас устанавливали свои приложения как двоичные пакеты. Но все большее число приложений представляется на официальных сайтах в скомпилированной форме – например, OpenOffice.org, Firefox, Thunderbird, а также все приложения из Autopackage – и они часто устанавливают себя в домашний каталог или в /opt. Конечно, многие из них заслуживают доверия, но Autopackage может прийти из любого места, и по жизни доверять ему нельзя.
[* поэтому выбирайте одного или нескольких поставщиков ПО которым вы довереяте и пользуйтесь только их репозиториями программного обеспечения]
Вы становитесь root чаще, чем думаете
Хотите сменить язык? Изменить разрешение экрана? Задать время? Каждое из этих действий – а также более очевидные задачи, типа установки устройств и добавления приложений – требует работы от имени root, и запросто можно так привыкнуть вводить пароль, что это станет второй натурой. Предполагая, что людям нравится скакать под root и обратно, многие руководства по компиляции приложений даже предлагают выполнить такую команду: ./configure && make && sudo make install.
ClamAV
Если у вас двойная загрузка или работа в качестве прокси для Windows-машин, если вы скачиваете с сайтов двоичные программы, и даже если вы обеспокоены частым использованием root-доступа, обязательно установите антивирусную программу. В мире свободного ПО всех популярнее ClamAV: он быстрый, бесплатный и справляется с вирусами и для Windows, и для Linux. Скорее всего, он найдется в вашем менеджере пакетов, но убедитесь, что скачаны последние описания вирусов!
[* Следует также заметить, что ClamAV к сожалению может только детектировать вирусы но лечить их увы не может]
Если вас взломали
- Прежде чем выдергивать сетевой кабель, удалять все вирусы и обдумывать откат к последней резервной копии, прочтите это.
Aide означает Advanced Instruction Detection Environment; эта свободная программа просканирует компьютер, когда его состояние ненадежное, и поможет отследить все изменения в файлах. Например, если взломщик зашел в вашу систему и изменил /bin/ls, чтобы распространить вирус, Aide обнаружит изменение и отправит вам предупреждение по электронной почте.
В бомбежке вашей сети сканом портов и автоматическим сканом уязвимостей хорошего мало, да и системные ресурсы сжираются; зато хоть можно видеть, что происходит. Но некоторые, самые зловредные программы весьма сложно обнаружить – они сидят в вашей системе, возможно, заражая приложения или отсылая данные о нажатиях клавиатуры или пароли куда-то на центральный сервер, или просто держа порт открытым настежь: заходи, компания!
Все это не здорово и требует быстрых ответных действий, а точнее, мгновенной реакции. Если вы владелец бизнеса, вы отвечаете за безопасность данных ваших служащих, клиентов и акционеров. Если вы домашний пользователь, подумайте о файлах, хранящихся на вашем компьютере, паролях, которые вы вводите, web-страницах, посещаемых членами вашей семьи, и прочем – в особенности если к компьютеру подпускаются дети.
Ясно, что «мгновенную реакцию» и «спокойные действия по плану» совместить сложно, и именно поэтому важно все спланировать загодя. Единственный способ быстро и правильно отреагировать на взлом – это спокойно выполнить все пункты, проведя кризисные собрания и составив планы до того.
Можно ли уйти в оффлайн?
Если через сеть взломали ваш сервер, следует заранее знать, можно ли тут же вывести машину в оффлайн, предотвращая дальнейшее распространение проблемы. Конечно, если машина служит web-прокси, или почтовым или файловым сервером, или выполняет какую-либо другую критичную функцию, вам первым делом придет на ум, что отключить ее никак нельзя. С другой стороны, если сервер взломан, он может погнать заразу дальше, на соединенные с ним машины. Уж лучше посидеть восемь часов без электронной почты, чем поиметь эксплойты во всех настольных машинах сети!
Насколько все запущено?
Изолировав машину от сети, следует разобраться, что именно произошло. Если в машине открыт вредоносный сетевой порт, то отловить и истребить программу, его открывшую – минутное дело. Но вдруг беда пришла не одна? Инфицированы другие программы, запущены другие демоны, изменены файлы конфигурации, добавлены пользователи… ну, вы поняли. Заготовьте список необходимых проверок, чтобы с ним можно было свериться и убедиться, что все в порядке. Для опознания запущенных процессов, открытых файлов и открытых сетевых соединений можете использовать команды ps aux, lsof, и lsof -i -T -n, соответственно. Если атакующий получил root-доступ, диапазон поиска следует расширить.
Другие машины под ударом?
Изоляция взломанной машины от сети спасет вас лишь тогда, когда взлом случился только на одной машине; а единственный способ убедиться в этом – проверка других машин в сети на наличие сходных симптомов (например, чрезмерной активности порта). Если машина находилась в демилитаризованной зоне с хорошим брандмауэром между ней и внутренней сетью, все должно быть в порядке – конечно, если аналогичный брандмауэр не защищал эту машину от внешнего мира!
Есть ли хорошая резервная копия?
Получить взлом – всегда плохо, но бывает и хуже: вас могли взломать еще раньше, и все вредоносные изменения оказались в резервной копии! Если у вас есть недавняя резервная копия, на которую можно положиться и восстановить испорченные данные – считайте, что вам повезло. Если нет, попытайтесь почистить сервер детектором руткитов и антивирусом, или же вернитесь к последней надежной копии и восстановите пропавшие данные, помня, разумеется, о том, что те данные могут перенести проблему в восстановленную систему.
У вас есть файлы журнала?
После чистки вашего сервера, следующим шагом должно стать точное осознание, что именно произошло. Если вредитель получил к вашей системе доступ с правами root, ему, скорее всего, удалось стереть файлы журнала или, как минимум, отредактировать те места, которые ему хотелось от вас скрыть. Если у него не было root-доступа, можете зайти в /var/log и поискать предупреждения и подозрительные записи в файлах журналов Apache, MySQL, OpenSSH или других сервисов. Помните: есть шанс, что взламывавшие использовали автоматический скрипт перебора различных комбинаций уязвимостей, пока не добились своего, так что если они не получили доступ root, их след в файлах журнала будет, скорее всего, ощутимым. LXF
Мнение эксперта
Убедитесь, что созданный вами брандмауэр включается и после перезагрузки (мы часто встречаемся с системами без брандмауэров и обнаруживаем, что причиной послужила неправильная очередность скрипта init.d).
- Укрепите ваш SSH-демон (аутентификация по ключу, запрет входа root и т.п.).
- Используйте зашифрованные реализации IMAP, POP3, SMTP.
- Отключите перенос зоны в DNS.
- Используйте OpenVPN или SSH для туннелирования административного или конфиденциального трафика.
- Для шифровки остальных данных используйте TrueCrypt.
- Проверяйте /etc/passwd на наличие инородных учетных записей.
- Регулярно проверяйте вывод от Netstat для выявления сервисов-изгоев.
- Регулярно проверяйте скрипт вашего брандмауэра на наличие вредоносных изменений.
- Укрепите свои web-серверы (отключите автоиндекс, удалите документацию и примеры скриптов, задействуйте аутентификацию для всех важных приложений, и прочее).
* С этого символа начинаются замечания викификатора...