Насколько защищена ваша среда AIX?

Узнайте о способах защиты AIX-системы от вторжения

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

Шив Дутта, старший инженер-программист, IBM

Шив Дутта (Shiv Dutta) - старший инженер-программист в группе IBM System And Technology Group; он оказывает помощь независимым производителям программного обеспечения в адаптации их программ на платформе System p. Шив был одним из соавторов справочника Красная книга (redbook) AIX 5L Differences Guide Version 5.3 Edition (Новое в AIX 5L версии 5.3). Вы можете связаться с ним по электронной почте sdutta@us.ibm.com.



01.07.2009

Обзор

Философия, лежащая в основе эволюции UNIX - это удобство. Так как обеспечение безопасности никогда не входило в число основных задач создателей UNIX, то UNIX-системы никогда не были по настоящему защищены. Они проектировались исследователями для академических учреждений, и их задачей было легкое манипулирование данными в сетевой многопользовательской среде. В последующие годы была встроена определенная функциональность, чтобы минимизировать риски безопасности, но из-за врожденных изъянов в самой ОС её практически невозможно сделать безопасной. В этом контексте следует отметить следующие моменты:

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

Существование "дыр" безопасности в UNIX известно всем специалистам по UNIX. Хотя многие из этих дыр были закрыты, другие время от времени дают о себе знать. Иногда кажется, что мы никогда не сможем полностью гарантировать защиту от атак хакеров


Организация надежной обороны

  • Запуск утилит типа tripwire, crack и COPS (эти утилиты будут описаны позже в этой статье) на системе и отслеживание отчетов, которые ими генерируются. Кажущаяся незначительной проблема в одном месте может привести к серьезным проблемам в другом.
  • Работа с важными файлами, хранящимися в системе, должна проводиться с особой осторожностью. Так как эти файлы привлекают особое внимание злоумышленников, только использование утилиты compress после crypt поможет гарантировать относительную защищенность.
  • Отслеживание отчетов по безопасности и исправлений, предоставляемых поставщиками ОС, подписка на списки рассылки по безопасности и специализированные новостные ленты.
  • Каталоги, доступные всем пользователям для записи по ftp, общие учетные записи и учетные записи без паролей или с неудачными паролями – это все открытые двери для хакеров. Однажды проникнув в систему, они используют ее как базу для нападения на другие системы.
  • Проверка журнальных файлов в поисках странных сообщений. Слежение за внезапными всплесками активности пользователей, которой в принципе быть не должно.

Файл /etc/passwd и его значение

Этот файл, известный как файл паролей, возможно, самый важный файл с точки зрения безопасности UNIX. Он определяет, кто может, а кто не может получить доступ к системе. Следовательно, необходимо полностью исключить вероятность того, что доступ к этому файлу случайно не будет предоставлен не имеющему соответствующих прав пользователю. Каждая учетная запись пользователя должна иметь пароль, который нужно тщательно выбирать. Записи типа sys, bin, adm и другие, которые никогда не используются для входа в систему, должны быть отключены как учетные записи входа.

Далее в этой статье будут обсуждаться несколько инструментов безопасности, которые могут проверить файл паролей на предмет потенциальных проблем с безопасностью, но следующий простой сценарий awk в одну строку может использоваться для поиска записей без паролей.

  awk -F:  '{ if  ($2 == "") print $1 }' /etc/passwd

Можно использовать cron для запуска подобного сценария на регулярной основе и отправке отчета системному администратору. Может оказаться полезным сценарий для сравнения текущей версии файла /etc/passwd с предыдущей версией и отправкой отличий, если они имеются, системному администратору.

Файл паролей также должен проверяться на наличие пустых имен пользователей или имен со знаками правописания (точки, запятые). Таким пользователям разрешен вход в систему на многих реализациях Unix, включая AIX.

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

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


Правила для создания хорошего пароля

Следующим правилам нужно следовать при выборе пароля:

  • Пароль должен быть длиной как минимум семь символов.
  • Пароль должен быть комбинацией из букв в различном регистре, цифр и знаков пунктуации.
  • Пароль не должен быть словом, которое есть в словаре.
  • Пароль может быть бессмысленным словом или комбинацией слов.
  • Пароль не должен быть чьим-то именем или инициалами.
  • Пароль не должен быть номером телефона или названием улицы.

Куда пропадают строки паролей?

Файл паролей должен быть доступен для чтения, иначе команды типа ls не будут работать. Это значит, что если файл паролей содержит зашифрованную строку пароля, то она будет доступна всем пользователям системы. В принципе можно зашифровать все слова словаря и сравнивать результат со всеми строками файла паролей. Если зашифрованные строки совпадают, то пароль найден.

Невозможно создать восьмисимвольный пароль (только первые восемь символов пароля значимы в большинстве Unix-систем), который нельзя взломать, особенно сегодня, когда компьютеры становятся все быстрее и быстрее. Идея хорошо выбранного пароля в том, что его очень сложно взломать.

Это значит, что доступ пользователей к строкам паролей должен быть ограничен. Эта идея лежит в основе создания файла /etc/shadow. Строки зашифрованных паролей, которые раньше были доступны в файле /etc/passwd, теперь хранятся в файле /etc/shadow, доступ к которому предоставляется только пользователю root. В AIX соответствующий файл называется /etc/security/passwd.


Что дают права root?

Идентификатор пользователя (UID) для учетной записи root по умолчанию равен нулю. Строго говоря, любая учетная запись, обладающая равным нулю UID, – это учетная запись пользователя root. Если в файле /etc/passwd есть несколько учетных записей с этим UID, существует несколько способов войти в систему под учетной записью root. Хакеры используют этот факт для того чтобы взломать систему. Получив доступ к командной оболочке с правами root, они редактируют файл /etc/passwd и добавляют учетные записи с UID, равными нулю. Так как команды типа who и w обращаются к имени учетной записи, а не к UID, который имеет учетную запись, хакер может успешно скрыть свои действия, даже если он вошел в систему как пользователь root.

Файл /etc/passwd, следовательно, необходимо проверять на наличие учетных записей с нулевым UID. Сценарий awk, похожий на представленный ранее, выполняет эту работу и может регулярно запускаться с помощью cron.

awk -F: ' {if ($3 == 0) print $1}'  /etc/passwd

Этот сценарий может быть изменен для нахождения GID (идентификаторов групп) или UID, совпадающих с идентификаторами главных сотрудников организации.


Программы с установленным битом setuid

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


Файлы, которые необходимо беречь

  • Регулярная проверка прав доступа ко всем файлам для предотвращения ошибок в безопасности. Программное обеспечение, включаемое в дистрибутив UNIX, часто не использует строгие правила доступа к файлам, что может серьезно ослабить безопасность всей системы.
  • Команда ps требует для работы устройство /dev/kmem. Так как этот файл позволяет получить доступ к адресному пространству ядра, Unix-программист может легко найти зашифрованные пароли в структурах данных ядра, если файл /dev/kmem был случайно оставлен доступным для чтения.
  • Файлы /etc/passwd и /etc/group должны иметь права 644, а его владельцем должен быть пользователь root. Команда passwd запускается с битом setuid пользователя root, так как иначе пользователи не смогут получить доступ на запись к файлу паролей для изменения своих паролей.
  • Один из общих методов, используемых хакерами для распространения файлов – это передача через общедоступные для записи каталоги, используя анонимный ftp. ftp-cайт, на котором разрешены такие каталоги, должен иметь систему регулярного контроля.
  • Только пользователь root должен иметь права на чтение файлов устройств для разделов жесткого диска. Права на чтение или запись для файла устройства диска означают права на чтение или запись для любого файла в файловой системе. Следовательно, следить за правами на такие файлы нужно особенно тщательно.

/etc/hosts.equiv and ~/.rhosts

Эти файлы определяют, какие пользователи на удаленных компьютерах могут удаленно выполнять команды на локальном компьютере без необходимости ввода паролей. Программы rshd, rlogind, lpd и srcmstr используют эти файлы для определения режима доступа удаленного пользователя.

Если необходимо использовать эти файлы, убедитесь в том, что хосты разделяют имена пользователей и их UID, а также в том, что используются полные DNS-имена хостов


sendmail и безопасность

Так как большая часть sendmail работает с правами root, он является мишенью для большого числа атак. Слабость защищенности sendmail известна уже многие годы. Необходимо использовать новейшие версии этой программы. Все версии sendmail, выпущенные до BIND версии 8.6.9 (апрель 1994 года), имеют хорошо известные уязвимости.


Диагностика системы с помощью средств обеспечения безопасности

В этом разделе будет рассказано о нескольких утилитах, используемых для мониторинга безопасности системы. Детальное обсуждение этих программ выходит за рамки данной статьи, но мы хотим информировать читателя об их существовании и функциях. Не все утилиты необходимо устанавливать на одну систему. Можно выбрать, какая из программ требуется для определенной среды. Сообщения, генерируемые этими утилитами могут использоваться для закрытия уязвимостей в безопасности и для улучшения безопасности системы. Новые утилиты, если они доступны, обычно добавляются в архив средств безопасности CERT (Computer Emergency Response Team (Центр реагирования на компьютерные инциденты) в каталоге pub/tools сайта cert.org и описываются в списке рассылки cert-tools-list. (Более подробно об организации CERT будет рассказано в конце этой статьи.)

COPS
Компьютерный оракул и система паролей (Computer Oracle and Password System – COPS) – это набор программ, которые проверяют права доступа на файлы, каталоги и устройства и сообщают о потенциальных проблемах. Особый интерес для COPS представляют системные файлы загрузки и файл crontab, файлы системного администрирования (т.е. /etc/passwd, /etc/group и др.) и домашние каталоги пользователей. Однако, к сожалению, бремя исправления найденных проблем ложится на системного администратора или пользователя.

Будучи установленным в системе, COPS будет генерировать отчеты наподобие этого:

ATTENTION:
Security Report for Sun Nov 1 11:07:00 CST 2002 from host cyclop.austin.ibm.com

Warning!  Password Problem:  Guessed:  tornado  shell:  /bin/ksh
Warning!  Password file, line 8, no password:
Warning!  User sdutta's home directory  /home/sdutta is mode 0777!
Warning!  /var/spool/mail is -World_writable!
Warning! "." (or current directory) is in root's path!
Warning!  Root does not own the following file(s):  /bin

Можно запускать COPS каждую ночь и настроить его так, чтобы он отправлял отчеты по почте. "Дыры" в безопасности пользователей, если будут найдены, необходимо закрыть до того времени, как пользователь запустит COPS самостоятельно и воспользуется уязвимостью.

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

tcpd
Утилита tcpd, обычно называемая "TCP wrapper", используется многими дистрибутивами для мониторинга соединений TCP-сервисов типа telnet, rlogin и finger. Она также может использоваться для контроля того, какие системы могут использовать эти сервисы, а также для отслеживания и контроля за непрошенными гостями. tcpd часто используется для защиты систем от вторжений из Интернет.

Реализация tcpd тривиальна – она просто модифицирует файл /etc/inetd.conf на запуск tcpd вместо требуемой программы. tcpd заботится о необходимых проверках безопасности перед запуском требуемого демона. Например, если файл /etc/inetd.conf содержал изначально такую строку:

telnet stream  tcp6  nowait  root  /usr/sbin/telnetd  telnetd

то tcpd изменит эту строку на следующую:

telnet stream  tcp6  nowait  root  /usr/sbin/tcpd  telnetd

В итоге журнальный файл, настройки которого содержатся в /etc/syslog.conf, будет выглядеть примерно так:

Nov 01 08:52:43  cyclop telnetd[25880]: connect from homer.austin.ibm.com
Nov 01 09:19:44  cyclop telnetd[15520]: connect from krusty.austin.ibm.com
Nov 01 10:48:45  cyclop telnetd[19332]: connect from marge.austin.ibm.com
Nov 01 11:14:57  cyclop telnetd[2362]: connect from maggie.austin.ibm.com

tripwire
Утилита tripwire способна обнаружить системные файлы, которые были заменены, повреждены или изменены. Это делается с помощью мониторинга прав доступа и проверки контрольных сумм таких файлов. Например, tripwire позволит легко обнаружить, что злоумышленник заменил оригинальный файл /etc/passwd новым, имеющим несколько учетных записей root. tripwire обычно устанавливают каждую ночь на запуск и отсылку отчетов по почте системному администратору. Обычный отчет tripwire выглядит примерно так:

### Phase 1:	Reading configuration file
### Phase 2:	Generating file list
### Phase 3:	Creating file information database
### Phase 4:	Searching for inconsistencies
###
### Total files scanned:	4012
###		Files added:	5 
###		Files deleted:	3
###		Files changed:	56
###
### After applying rules:
###		Changes discarded:	54
###		Changes remaining:	1
###
###
changed:  -rwxr-xr-x root  12483  Nov 01  17:15:27  1998  /etc/passwd
###
### Phase 5:	Generating expect/observed pairs
###
### Attr           Observed (is)                 Expect (should be)
###========        ============                  =================
/etc/passwd
         st_ctime: Nov 05 11:15  2002            Nov 09  13:51  1999

В этом примере tripwire сообщает, что время изменения дескриптора inode файла /etc/passwd отличается от зафиксированного днем ранее. Это может говорить о том, что кто-то заменил версию файла /etc/passwd от поставщика ПО собственной версией.

Kerberos
Если все описанные выше методы были использованы, все равно еще можно проникнуть на сетевой компьютер. Общей практикой является посылка паролей по сети или поддержание файла ~.rhosts в домашнем каталоге, что может скомпрометировать безопасность. Система Kerberos, разработанная в MIT, пытается решить некоторые из таких сетевых вопросов безопасности.

Kerberos гарантирует, что пользователи и сервисы подлинны. Kerberos использует алгоритм шифрования DES для создания набора удостоверений, называемого «билетом» (ticket). Билеты передаются по сети для гарантирования личности пользователя и для предоставления пользователю доступа к сетевым сервисам. Kerberos также предоставляет защиту паролей, освобождая пользователя от необходимости каждый раз вручную набирать пароль.

С помощью Kerberos пароли всегда передаются в зашифрованном виде.

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

Фильтрация пакетов не должна быть основным средством защиты от вторжения, а только вспомогательной мерой. Каждый компьютер в организации должен быть индивидуально защищен с помощью утилиты наподобие COPS, crack, tcpd и tripwire.

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

Польза crypt возрастает, если использовать утилиту compressed до crypt.

crypt требует "ключ", который становится паролем для зашифрованного файла. Однако, к сожалению, ключ не может быть восстановлен, поэтому пользоваться утилитой crypt нужно осторожно.

CERT
Computer Emergency Response Team (CERT) был создан DARPA (Defense Advanced Research Projects Agency - Агентство перспективных исследовательских проектов в области обороны). Его координационный центр (Coordination Center) расположен в Институте разработки программного обеспечения Университета Карнеги-Мелон (Carnegie-Mellon University, Software Engineering Institute). Хотя устав CERT включает в некоторой степени и помощь в решении конкретных проблем, в основном Агентство сконцентрировано на сертификации исправлений безопасности и сообщениях об угрозах. Эти исправления и сообщения называются "Советы CERT". Новые советы публикуются в новостной ленте comp.security.announce.

Связаться с CERT можно по адресу cert@cert.org.


Списки рассылки и новостные ленты по вопросам безопасности

Следующие списки рассылки и новостные ленты Usenet являются хорошими источниками информации для ознакомления с актуальными проблемами безопасности. Подписка на один или несколько таких источников будет очень полезна:

ИмяСписок рассылкиНовостная лентаЭлектронный почтовый адрес или URL
unix-security*security@cpd.com
security-misc*comp.security.misc
virus-list*comp.virus
ACM risks*comp.risks
cert-tools*cert-tools-request@cert.org
cert-advisory*cert-advisory-request@cert.org
security announcements*comp.security.announce

Заключение

Описанные здесь средства обеспечения безопасности можно регулярно запускать с помощью утилиты cron. Эта процедура позволит обнаружить ошибки в системе безопасности и даст возможность системному администратору принять соответствующие меры по их устранению. Осторожное обращение с файлом паролей и ограничение прав доступа на него, без сомнения, помогут сохранить систему в безопасности.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=405600
ArticleTitle=Насколько защищена ваша среда AIX?
publish-date=07012009