Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #47, ОКТЯБРЬ 2004 г.

Безопасность сервера

Антон Карпов

Спецвыпуск: Хакер, номер #047, стр. 047-070-7


Посмотри полный вывод команды ls:

ЛИСТИНГ

[(3:47)(85.32%)(p3):~ ] ls -al rfc2818.txt

-rw-r--r-- 1 toxa toxa 15170 15 июл 19:54 rfc2818.txt

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

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

Почему же просто не скопировать программу себе в каталог? А потому, что потеряются первоначальные права на файл и владельцем вместо рута станет хакер, после чего наличие на ней suid-бита станет бессмысленным.

Следи за паролями

Если заглянуть в /etc/shadow (/etc/master.passwd в BSD), то можно увидеть массу системных учетных записей, но все они залочены - в поле пароля вместо хэша у них символ "*" или "!!", а вместо шелла - что-то вроде /sbin/nologin или /bin/false. Если у системного пользователя (не реального юзера) ты увидишь прописанный реальный шелл и хэш пароля, бей тревогу.

Безопасность - это не продукт, а процесс.

При желании ядро можно убрать в ящик в прямом смысле слова :).

Еще одно веяние времени эпохи параноиков - отслеживание системных вызовов, совершаемых программой, и дальнейшее их ограничение.

Изначальный подсчет контрольных сумм (MD5-хэшей) системных утилит и файлов и дальнейшая их проверка с помощью утилит типа tripwire или aide может избавить от сильной головной боли в дальнейшем. В случае изменения файла утилита найдет расхождение в MD5-отпечатке и поднимет тревогу.

Хардлинки работают только в пределах одной файловой системы (одной партиции).

Найти все suid/sgid бинарники в системе можно следующей командой:

# find / -type f \( -perm -4000 -o -perm -2000 \) -ls

цифра 4 в маске означает suid, 2 - sgid.

Назад на стр. 047-070-6  Содержание