Настройка ACL
Самый простой способ настройки ACL для конкретной команды — указать, что вы хотите использовать режим обучения grsecurity, а не указывать вручную каждый ACL. Если ACL-система уже активирована, ее необходимо временно исключить из вашей оболочки (shell), запустив команду gradm -а. После этого вы сможете обратиться к файлам /etc/grsec; в противном случае этот каталог будет скрыт от вас. Добавьте в /etc/grsec/acl следующий элемент:
/sbin/ifconfig lo {
/ h
/etc/grsec h -CAP_ALL
}
Это почти самый строгий из возможных ACL, поскольку он скрывает корневой каталог от процесса и удаляет все привилегии, которые ему могут понадобиться. Параметр 1о рядом с двоичным файлом, к которому применяется ACL,указывает на использование режима обучения и на перекрытие ACL по умолчанию. После завершения редактирования ACL необходимо перезагрузить grsecurity с помощью команды gradm -R. Теперь снова попробуйте использовать команду ifconfig:
# /sbin/ifconfig ethO:1 192.168.0.59 up
# /sbin/ifconfig ethO:l
ethO:l Link encap:Ethernet HWaddr 00:OC:29:E2:2B:C1
inet addr: 192.168.0.59 Beast: 192.168.0.255 Mask-.255.255.255.0 UP BROADCAST RUNNNG MULTICAST MTU:1500 Metric:l Interrupt: 10 Base address:0xl0e0
Помимо успешного выполнения этой команды, grsecurity создаст записи в протоколе обучения. На основе этого протокола можно сгенерировать ACL для определенной программы:
# gradm -а Password:
# gradm -L -0 stdout /sbin/ifconfig о {
/usr/share/locale/locale.alias r /usr/lib/locale/locale-archive r /usr/lib/gconv/gconv-modules.cache r /ргос/net/unix r /ргос/net/dev r /ргос/net r /lib/ld-2.3.2.so x /Mb/i686/libc-2.3.2.so rx /etc/Id.so.cache r /sbin/ifconfig x /etc/grsec h / h
-GAP_ALL +GAP_NET_ADMIN
}
Теперь можно заменить обучающий ACL для /sbin/ifconfig в /etc/grsec/acl приведенным ранее, и ifconfig должна работать. Этой же методикой можно воспользоваться в отношении любой программы, для функционирования которой необходимы специальные разрешения. Просто попробуйте выполнить с этой программой все, что необходимо сделать для того, чтобы режим обучения grsecurity смог обнаружить, какие системные вызовы требуются для работы программы или какие файлы открываются.
Использование grsecurity для блокировки соединений на первый взгляд может показаться очень трудоемкой задачей, но в конечном счете будет создана система, дающая каждому процессу только те разрешения, которые ему нужны для работы, — ни больше ни меньше. При необходимости построить надежно защищенную платформу grsecurity может обеспечить точечное управление практически всем, что может сделать система.