четверг, 30 июля 2009 г.

Минимизация сервисов Solaris

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

Можно даже сказать, что это один из краеугольных камней безопасности.

Ко всему прочему, неиспользуемые сервисы - это еще и жлобство, поскольку они занимают ресурсы сервера - CPU, память и прочее.

Я достаточно давно написал для лентяев скрипты для минимизации сервисов - как SMF, так и legacy (о которых сисадмины очень часто просто забывают либо не сообразят с разгона, как их поотключать) - лежит здесь.

Чем, однако, мне лично они неудобны - тем, что списки сервисов жестко вшиты в сами скрипты и с каждым новым обновлением Solaris приходится ползать по скриптам и править списки.

Захотелось сделать примерно так же, как здесь - чтобы сервисы были во-первых, отдельными текстовыми списками, а во-вторых, чтобы скрипты работали неинтерактивно.

Что и было реализовано здесь.

Теперь и минимизация ПО, и минимизация сервисов приведена более-менее к общему знаменателю, списки сервисов ообновляются влегкую.

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

Как и в первоначальной версии, SMF-сервисы можно только отключать (никто не забыл, как пользоваться командой svcadm enable ... ? ;)), а legacy - и включать и выключать.

Отключение legacy делается очень просто - переименованием файлов в /etc/rcX.d директориях в скрытые (начинающиеся с точки). Права файлов сохраняются.

Списки отключаемых сервисов с умыслом составлены весьма рестриктивными. Для SMF отключается большинство сервисов - остается почти абсолютный минимум из примерно полусотни сервисов (по умолчанию Солярис 10 имеет свыше полутораста запущенных сервисов), legacy-сервисы отключаются все (исключая boot.server для SPARC - впрочем, его нетрудно добавить в списки самостоятельно).

Остается запущенным SSH (при использовании OpenSSH можно отключить и его).

Все остальные службы, включая зоны, контейнеры, NFS, и прочее - отключаются.

PS. В общей сложности, после отключения всего лишнего, освобождается свыше 300 мегабайт RAM. Разумеется, ускоряется запуск и останов системы. Но, самое главное - система становится намного более защищенной и, после минимизации, совсем не светится перед сканерами как бордель в Амстердаме. ;)