Безопасность сервера Антон Карпов Спецвыпуск: Хакер, номер #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. |