mtree на страже вашей FreeBSD

К сожалению в любом программном обеспечение есть уязвимости и дыры, который могут использовать хакеры в свои целях. С момента выхода обновления или security патча до момента исправления в вашей ОС может пройти какое-то время, т.е. это потенциальная возможность получить управление ваши серверов для злоумышленника, который может оставить закладки для будущего использования даже после того, как вы все исправите. Например он может заменить файл su или sudo, даже ps вместе ls могут стать смертельно опасными! Для защиты нужно отслеживать состояние системных файлов (владельцы, права, размер, хеши и т.п.)!
Tripwire – достаточно сложный и тяжелый продукт, конечно можно поставить из портов, но в FreeBSD уже есть утилита, которая прекрасно справится с поставленной задачей.

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

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

Перейдем непосредственно к созданию списка:

cd /sbin
mtree -c -K uid,gid,mode,flags,size,cksum,md5digest,sha1digest,ripemd160digest > /root/sbin-mtree

Теперь файл /root/sbin-mtree можно использовать для проверки.

cd /sbin
touch test
mtree < /root/sbin-mtree
. changed
        modification time expected Wed Feb 17 14:19:16 2010 found Wed Mar 31 17:11:12 2010
test extra

Как видите, все достаточно просто. Поговорим немного об автоматизации и процессе использования mtree. Написать скрипт проверки не составляет проблемы, выглядеть он будет примерно так:

#!/bin/sh
MTREE_FILES_DIR='/mnt/security'
DIR_LIST='bin sbin etc root usr-bin usr-sbin usr-local-sbin usr-local-bin usr-local-etc boot'

for dir in $DIR_LIST; do
 realdir="/`/bin/echo $dir|/usr/bin/sed 's/-/\//g'`"
 cd $realdir
 mtree_result=`/usr/sbin/mtree 2>/dev/null < $MTREE_FILES_DIR/${dir}-mtree
 if [ "x$?" != "x0" ]; then
   echo $mtree_result | mail admin@mail.domain
 fi
done

Здесь есть важный момент /mnt/security должен монтироваться в read-only по NFS например, так чтобы злоумышленник не мог поменять содержимое файлов.

Для FreeBSD я составил такой список каталогов, конечно же на рабоче системе будут и другие каталоги:
/bin
/sbin
/etc
/root
/usr/bin
/usr/sbin
/usr/local/sbin
/usr/local/bin
/usr/local/etc
/boot

Естественно безопасность добавляет проблем при работе, в данном случае придется при каждом обновлении системы или софта обновлять списки mtree. Но кто сказал, что будет легко?

П.С.
Для написания заметки использовалась глава “Use mtree as a Built-in Tripwire” из книги “BSD hacks”


Tags: , , ,

Среда, Март 31st, 2010 Советы
Tinkerbell Personal Checks |Garden Planters | Jewellery For Women | Best Dog Foods | Budget Wedding Gowns | Shop For Jewellery | Vintage Jewellery| Diamante Jewellery | Car Finance Credit | DoorStep Loans