LXF91:15 мгновений безопасности
|
|
|
15 ценных советов по безопасности
Думаете, ваш компьютер с Linux защищен? Вы уверены? Даже самая безопасная ОС станет легкой добычей, если пренебрегать основными правилами. Грэм Моррисон даст 15 советов, чтобы предприимчивый взломщик плюнул на ваш ПК и убрался вон...
Усильте пароли пользователей
Знаем, это похоже на надоевшую проповедь. Кто хоть раз читал это, читал и тысячу раз: слабый пароль – самая частая «точка входа» потенциального взломщика. Но к проповеди все глухи. В октябре прошлого года 34 тысячи паролей пользователей MySpace [myspace.com – популярный сайт и сетевое сообщество – прим. пер.] были похищены в результате атаки фишеров, реализованной через поддельную страницу входа в систему. MySpace получил серьезную пробоину, а эксперт по безопасности Брюс Шнайер [Bruce Schneier] – прекрасную возможность заглянуть в коллективный разум 34-х тысяч типичных пользователей компьютера. Тремя самыми популярными паролями оказались password1, abc123, а самым креативным – myspace1. Шнайер ехидно отметил, что пользователи MySpace как минимум научились добавлять цифры к легко угадываемому слову, хотя все еще используют символы только в нижнем регистре.
Вот такие пароли выбираются типичными пользователями для защиты своих драгоценных данных. Если вы недостаточно напуганы, скачайте инструмент взлома паролей вроде John the Ripper (www.openwall.com/john) и натравите его на свой файл с зашифрованными паролями (см. LXF84). Шнайер рекомендует брать пароль, не включающий ни обычные слова, ни какие-либо производные сокращения, ни даты, которые легко узнать: все они подвержены атакам по словарю. Смешивайте регистры и добавляйте небуквенные символы.
Установите пароль BIOS
Не будем зацикливаться на паролях; это последнее упоминание о них. Но раз уж вы защитили свою учетную запись паролем, недоступным даже вашему двойнику из параллельной вселенной, почему бы не применить эту теорию к другим областям? Если вас беспокоит, что кто-то имеет физический доступ к вашей машине – например, она используется как сервер в небольшом офисе – установите стойкий пароль на BIOS вашей системы. Эта программа загружается первой, непосредственно отвечает за первичную настройку вашего оборудования и проверяет, что все работает должным образом.
Многие BIOS можно настроить на запрос пароля во время загрузки. Есть множество типов BIOS, и настройка будет зависеть от специфики вашего оборудования. Обычно, чтобы попасть в меню BIOS, следует удерживать [F2] во время загрузки машины, затем выбрать страницу Security, где вы сможете установить свой пароль. После этого единственным способом загрузить вашу систему, не зная пароля, будет очистка памяти BIOS – обычно тут не обойтись без вскрытия корпуса и извлечения бата- рейки материнской платы [не обольщайтесь – зачастую достаточно просто снять специальную перемычку; кроме того, некоторые версии BIOS принимают т.н. «инженерный пароль», – прим. ред.].
Установите брандмауэр
Пару лет назад считалось чистым безумием подключаться к Интернету без брандмауэра. Правда заключается в том, что брандмауэры воспринимаются совершенно неправильно. Они лишь блокирует доступ к определенным сетевым портам на вашей машине. Если нет сервиса, прослушивающего этот порт, злонамеренный удаленный процесс не получит доступа к вашей системе независимо от того, запущен бранд- мауэр или нет. Именно поэтому Ubuntu не запускает брандмауэр по умолчанию: там просто не работают никакие сетевые сервисы, которыми мог бы воспользоваться злоумышленник. Брандмауэр может помочь только в том случае, если к вашей машине осуществляются как доверенные, так и не заслуживающие доверия сетевые подключения. В этом случае брандмауэр будет оберегать небезопасные сервисы от доступа из потенциально опасной сети. Уязвимыми сервисами могут быть внутренний web-сервер или общие ресурсы NFS.
Функции брандмауэра в Linux фактически выполняются ядром, благодаря сложному инструменту iptables, используемому для филь- трации и перенаправления пакетов. Можно строить правила вруч- ную, используя команду iptables, но большинство пользователей предпочитают графический интерфейс. Хороший выбор – Firestarter: он предлагает «мастера», помогающего выполнить стандартную настройку и даже разделить ваше интернет-соединение с другими компьютерами локальной сети. Вы всегда можете проверить эффек- тивность защиты, используя для тестирования брандмауэра внешний сайт, например, Shields Up (www.grc.com/x/ne.dll?bh0bkyd2).
Разберитесь с правами
Многие из нас в курсе, что Unix-подобные ОС вроде Linux используют права для предоставления доступа к файлам и приложениям, но как убедиться, что они настроены должным образом? Взгляните на содержи мое своего каталога /home, набрав в командной строке ls -l /home. Вывод ls, вероятно, будет подобен этому:
drwxr-xr-x 66 graham graham 2904 2007-01-23 10:09 graham
В выводе будет запись для каждого пользователя вашей системы, и проблема заключается в строке прав доступа – drwxr-xr-x. Если коротко, то d – это признак каталога, rwx – права доступа владельца файла (чтение, запись и исполнение), первые символы r-x – права группы, а вторые r-x – права всех остальных. Следующая часть, graham graham,обозначает пользователя и группу, владеющих этим каталогом. Многие дистрибутивы глобально открывают домашние каталоги пользователей на чтение, а значит, каждый, имеющий доступ к вашей машине, сможет прочитать содержимое вашего домашнего каталога. Вам следует изменить права с помощью chmod. Например, chmod go-rx /home/graham отнимет доступ на чтение и исполнение у всех пользователей в этой же группе, а также у всех прочих пользователей.
Руководство по правам доступа для начинающих.
Следите за sudo
Для быстрого запуска приложений с привилегиями администратора системы в Ubuntu применяется утилита sudo. Именно для этого sudo и разработана. Но предоставление любому пользователю доступа через sudo может быть рискованно с точки зрения безопасности, поскольку вы не контролируете, кто и что запускает. Решение – разрешить использование sudo только конкретным пользователям и точно настроить, какой доступ и к каким средствам им необходим.
Для редактирования привилегий sudo существует файл конфигурации, но изменять его нужно собствен ным vi-подобным редактором под названием visudo. Первое, что нужно сделать – это отредактировать строку root ALL=(ALL) ALL, заменив root на список пользователей (через запятую), которых вы хотите допустить к командам, требующим повышенных привилегий. Другой частый пример – заменить секцию после ‘ALL=’ на список каталогов (тоже через запятую), к которым вы хотите предоставить доступ перечисленным пользователям: два наиболее типичных случая – /sbin и /usr/sbin. Чтобы подпускать к учетной записи root только пользователей – членов группы admin, введите следующее:
%admin ALL=(ALL) ALL
Не используйте setuid – правда!
Setuid – прекрасная практическая идея: это просто еще один бит прав доступа, наряду с чтением, записью и исполнением, позволяющий запускать команду с привилегиями владельца файла. То есть обычный пользователь может выполнять команды администрирования, если привилегии, требуемые для их выполнения, определены правом setuid. Setuid также полезен для приложений, работающих с оборудованием, доступным только администратору: например, приводов CD-RW. Но применение setuid создает значительный риск. Если использующая его команда по той или иной причине «рухнет», запустившему ее пользователю могут достаться привилегии «погибшей» программы. Плохие ребята, взламывающие Linux, точно знают, какие setuid-инструменты можно уговорить вести себя неправильно.
Хороший пример использования setuid – команда ping, требующая административных привилегий для получения доступа к сети.Команда ls -l /bin/ping выдаст следующее:
-rwsr-xr-x 1 root root 30804 2006-10-16 18:32 /bin/ping
Дополнительный символ s в секции прав показывает, что бит setuid установлен. Во время выполнения ping получает права пользователя-владельца файла, в данном случае это root. Оставить инструменты с установленным setuid в вашем дистрибутиве – приемлемый риск, но вы должны дважды подумать, прежде чем использовать его для упрощения жизни при написании своих собственных скриптов.
Запускайте проверку на вирусы
Хотя Linux не слишком обременен разрушительными вирусами, все же сравнительно легко непреднамеренно пропустить вирус к тем, с кем вы взаимодействуете, потому что на вашем рабочем столе могут потихоньку дремать зараженные файлы – плод злонамеренного почтового сообщения или скачивания. Даже если они не в силах сделать ничего дурного на вашей Linux-системе, они по-прежнему способны причинить вред какой-нибудь другой ОС. Запуск антивирусного ПО на вашем Linux-компьютере даст вам душевное спокойствие при отправке файлов вашим знакомым, а также отловит подозрительные двоичные файлы, не позволив им покинуть лабораторию.
Наш любимый антивирусный пакет – ClamAV, имеющий версии для Mac и Windows, если вы хотите соблазнить друзей открытым ПО. Он полностью бесплатен, и база данных известных вирусов обычно обновляется в течение 24 часов с момента обнаружения нового вируса. ClamAV выиграл наше сравнение антивирусов в LXF74/75, поскольку он достаточно гибок для использования как на почтовом сервере, так и в настольной системе. Если он установлен, вы можете проанализировать любые подозрительные файлы, просто щелкнув на файле правой кнопкой мыши и выбрав пункт «сканирование на вирусы».
Закалите SSH
Теперь, когда вы сделали пароли более стойкими, захватить машину удаленно – через SSH – будет куда как труднее. Но вы можете сделать еще больше, чтобы быть уверенным, что какой-нибудь пацан с другого континента не покопается в ваших личных файлах. Первое – это запретить удаленный доступ пользователю root в конфигурационном файле SSH. Откройте /etc/sshd.conf или /etc/ssh/sshd_config в своем любимом текстовом редакторе и убедитесь,что опция PermitRootLogin установлена в no. Теперь вам, а заодно и пацану с другого континента, нужно будет получать доступ с правами root через учетную запись обычного пользователя.
Еще одна опция, которую стоит поискать в файле конфигурации – Protocol 2. Любые другие строки с ‘Protocol’ нужно закомментировать, поскольку они разрешают соединения, использующие менее безопасные ранние версии протокола, лишая вас при этом множества преимуществ.
Заприте SSH на ключ
Самый безопасный способ работать с SSH – это использовать для аутентификации соединения пару из открытого и закрытого ключей и запретить доступ к SSH-серверу с обычным паролем. Вы можете сгенерировать ключи на клиенте с помощью ssh-keygen -t dsa. У вас будет запрошено месторасположение ключа (его можно оставить по умолчанию), а затем парольная фраза. Если вы оставите парольную фразу пустой, при создании нового SSH-соединения никакие пароли запрашиваться не будут, и соединение будет установлено прозрачно. Это полезно для автоматизации таких задач, как удаленное резервное копирование, но каждый, имеющий копию этого ключа, сможет под ключиться к вашему серверу.
Следующий шаг – скопировать открытый ключ на сервер. Это выполняется командой
ssh-copy-id -i ~/.ssh/id_dsa.pub server_address
Теперь вы должны получить возможность подключаться к своему SSH-серверу, используя аутентификацию по ключу. Если вы столкнетесь с проблемами, первым делом убедитесь, что аутентификация по открытому ключу разрешена в файле конфигурации SSH (это выглядит как PubkeyAuthentication yes), а если это не поможет, убедитесь, что и ваш домашний каталог, и каталог .ssh на удаленной машине имеют права доступа ‘drwx------’. Наконец, когда все заработает, запретите в конфигурационном файле SSH аутентификацию по паролю.
Раздавайте свой открытый ключ
Если вы приедете на одну из крупных конференций разработчиков открытого ПО, например, OSCon, Akademy или Guadec, вы, вероятно, увидите странный пункт в программе мероприятия, называющийся ‘key signing party’ («вечеринка подписания ключей», не путайте с ‘key party’ [key party – вечеринка, в начале которой мужчины складывают ключи от машин в кучу, а в конце женщины выбирают случайный ключ, определяя тем самым своего сексуального партнера, – прим. пер.]). Это возможность для разработчиков поделиться открытыми PGP-ключами, а также единственный способ получить на 100% достоверный ключ, не перехваченный при пересылке (что известно как «атака посредника»). Пусть вы не разработчик, но распространение своего открытого ключа по доверенному каналу – прекрасный способ подтвердить свою личность, во многом подобный подписи в реальной жизни.
Сперва вам нужно создать ключ, набрав gpg --gen-key. Выберите опции по умолчанию с размером ключа ‘4096’ для параноиков и введите свой адрес электронной почты. Важнейшая часть – ключевая фраза, она используется для защиты вашего ключа таким же способом, как пароль защищает учетную запись. Чем длиннее и случайнее по своей природе эта фраза, тем сложнее ее взломать. Вы должны будете отправить идентификатор своего ключа на электронный адрес, прежде чем получить список всех ключей, которые собираетесь подписывать.
На самой вечеринке вы можете удостоверить личности людей в списке и подлинность их ключей. Затем вы отправляете их ключи к своему и отсылаете копию партнеру, который поступает так же – тем самым будет построена так называемая «сеть доверия» между участниками. PGP-ключи также можно использовать для шифрования файлов и электронных сообщений, предназначенных к отправке через небезопасную сеть. Ими гораздо проще управлять, когда используются графические интерфейсы типа Kpgp, или когда они интегрированы в почтовый клиент типа Evolution или KMail.
Проверяйте системные журналы
Linux – одна из самых разговорчивых ОС. В журналах можно найти запись почти для каждой возникающей проблемы. Возможно, именно по этой причине очень немногие из нас не ленятся их просматривать. Что довольно глупо, поскольку файлы журналов могут показать, как атаковалась ваша система и какие меры следует предпринять, чтобы атаки терпели поражение.
Все системные файлы журналов размещаются в каталоге /var/log, и можно многое узнать, просто просматривая их время от времени. Файл с именем messages – хорошее место для старта. Он содержит общие сообщения системы, а также протокол загрузки. Протокол последней загрузки также можно отобразить командой dmesg. Если вы хотите найти что-нибудь определенное, вам поможет grep. Используйте команду tail -f, чтобы просматривать на экране последние записи в жур- нале и команду logger для добавления собственных сообщений.
Читайте о ведении журналов в статье "Дневники демонов".
Будьте на шаг впереди
Когда вы обнаружите проблему, не тяните с решением. В случае спама для поимки виновного мало что можно сделать. Но в Интернете можно найти обратный адрес отправителя, а также машину, использованную для отсылки сообщения, и добавить ее адрес в базу данных своего спам-фильтра (вы же используете спам-фильтр, не так ли?). А вот об атаках фишеров следует сообщать. Во-первых, организации, которая оказалась под атакой, а во-вторых, на сайт, отслеживающий фишеров, например, www.antiphishing.org.
Другой способ активной защиты: если у вас работает сервер SSH, приглядывайте за файлом /var/log/auth.log, и рано или поздно увидите, что кто-то пытался угадать ваш пароль, чтобы дорваться до вашей машины. Строка в журнале может выглядеть, например, так:
Failed password for invalid user test from ip_address port 55218 ssh2
Здесь кто-то пытался соединиться с вашей машиной как пользователь test, но потерпел неудачу. Вы узнаете больше о компьютере, который покушался на вашу машину, набрав whois ip_address; вывод зачастую включает номер контактного телефона. В большинстве случаев это окажется обычный провайдер, который более чем заинтересован в сведениях, что один из его клиентов пытался получить неавторизованный доступ к чужой системе.
Защищайте беспроводную сеть
Достаточно открыть ноутбук и просканировать точки доступа в густонаселенном районе, чтобы увидеть: существует масса людей, использующих незащищенные беспроводные сети. Помимо проблемы расходования дорогого канала халявщиками, незащищенная сеть неприлично проста для слежки. Если не применяется шифрование, ничто не помешает любопытствующему читать вашу почту и мгновенные сообщения как бесплатную газету.
Шифрование поможет в этой беде. Есть две опции, поддерживаемых среднестатистической точкой доступа: WEP и WPA. WEP старше, и имеет известные уязвимости. Если кто-то стянет достаточно данных, зашифрованных с помощью WEP, из этих данных вполне осуществимо извлечь ключ, и ваше соединение будет взломано. WPA, напротив, сейчас считается безопасным. Единственная проблема WPA заключается в том, что в Linux беспроводные драйверы только начали поддерживать его.
Оба метода работают, в общем, одинаково. Вы задаете пароль для точки доступа и используете его на вашем ноутбуке для подключения к сети. Благодаря современным инструментам Linux, таким, как Network Manager в Gnome и его KDE-эквивалент, управление паролями выполняется весьма просто. Как только пароль будет принят, вы сможете свободно использовать свое соединение.
Поддерживайте актуальность
На данный момент у вас могла возникнуть мысль, что определенные экземпляры ПО в Linux уязвимее других. Чем больше программ у пользователя, тем вероятнее, что будет обнаружена уязвимость или ошибка. Все, что имеет выход в Интернет, всегда подпадает под больший риск, чем небольшая программа с малым количеством доверенных пользователей, и поэтому проблемы с пакетными версиями Apache и PHP являются вполне обычными. Чтобы контролировать эти проблемы, следует регулярно обновлять свою систему. Многие дистрибутивы Linux сейчас включают менеджер обновлений, который доставляет их на вашу систему по мере обнаружения уязвимостей. Вы должны убедиться, что это действительно происходит. В частности, в Ubuntu слишком легко отключить Update Manager и забыть запустить его вновь. Это очень печально, поскольку для 6.06 LTS обещаны обновления безопасности в течение пяти лет.
Учтите, безопасность не приходит сама
Это самый важный совет. В Linux нет ни ежедневных напоминаний, от которых страдают пользователи других операционных систем, ни финансового бремени от запуска платных антивирусов, брандмауэра и блокировщика всплывающих окон. Но это не значит, что нет угрозы. Если вы не поленитесь заглянуть в свои файлы журналов, то увидите, что она определенно есть. И когда система, которую вы считали безопасной, взламывается, последствия могут быть вдесятеро ужаснее, чем просто заражение вирусом. Ваша машина может использоваться для размещения нелегального ПО, организации атак типа «отказ в обслуживании», или просто для рассылки тысячи спам-сообщений в час.
Простое следование некоторым из наших советов определенно поможет, но то же самое достигается обычной осторожностью. Например, подумайте дважды, прежде чем устанавливать неподписанные программы из сторонних репозиториев. Даже подписанные файлы не обязательно легитимны. Прикиньте, как легко встроить маленькую программку в исходный код одного из тех пакетов, которые вы скачиваете, и сколько разрушений она может понаделать, отсылая историю ваших действий на какой-нибудь анонимный сервер в Интернете. Шансы невелики, но лучше быть готовым к худшему. При наличии выбора, взломщик перейдет к более легкой цели.