Среди других осей Solaris стоит особняком, 
но,  несмотря на некоторые непривычности в работе
, она подходит для создания защищённого сервера ничуть не хуже,
чем Linux и FreeBSD. Фаерволы IPFilter, Sun Screen, хорошо организованная парольная безопасность,
Samba и LDAP, поддержка IPSec и многое другое вытянут и пользователей,
и админа. В общем, стоит во всём разобраться.
Не боись, мотор не заглохнет. Поехали!

Немного истории

Операционная система Solaris (компания Sun Microsystems) выросла из SunOS-классического юникса,
построенного на базе bsd-шного ядра и продолжающего лучшие традиции AT&T System
V. Но в отличие от SunOS это полноценная рабочая среда,
поэтому, если тебе нужно что-то большее, чем просто юникс,
— выбирай Solaris. Главное достоинство Solaris-высокая степень масштабируемости и,
как следствие, реализация концепции симметричных многопроцессорных вычислений
SMP (Symmetric Multi-Processing), то есть линейный рост производительности при увеличении числа процессоров в системе.
Солярка одинаково хорошо будет стоять и на слабенькой рабочей станции, 
и на супермощном сервере, так что более мощной и удобной системы для любых запросов не найти.
Итак, общее представление о системе получили,
теперь можно устанавливать. 

Установка

Среда Solaris существует под две платформы:Intel и SPARC(Scalable Processor
Architecture, т. е. масштабируемая многопроцессорная архитектура).
Так как особого распространения в нашей стране данная платформа не получила,
о SPARC и установке под неё говорить не будем. Целесообразнее будет рассказать об установке под
Intel. Есть три варианта установки:1) текстовый,
2) диалоговый и 3) с использованием мастера Web
Start. Мы пойдём третьим путём, наиболее простым и удобным. Берёшь диск с соляркой,
вставляешь и ребутишься. Всё, что ты видишь на экране —
DCA (Device Configuration Assistant-помощник конфигурирования устройств).
По экрану бегут строчки, подробно рассказывающие о том,
как обстоят дела с установкой устройств, и через некоторое время появится список найденных девайсов.
Если какое-нибудь из твоих устройств в списке отсутствует,
то этому есть два объяснения: либо солярка криво отконфигурила девайс,
либо просто не поддерживает его. Исправить это можно с помощью
«Device Task», раздела работы с устройствами.
Когда всё наладится, нажмёшь F2, чтобы отобразилась информация о текущем состоянии дисковой системы и запустился соляровый
fdisk. Solaris работает с файловой системой UFS. 

Если на компьютер не планируется ставить ещё какую-нибудь систему,
то можно удалить все разделы, которые у тебя до этого были, 
клавишей 3. Теперь создавай с помощью клавиши 1 раздел с типом «x86 boot» и разделы
«Solaris». Так как мы с тобой строим сервер,
то, как и в линухе, одного корневого раздела на всю систему недостаточно,
поэтому нужно создать разделы /var, /usr, /home, /tmp,
/, после чего клавишей 2 выбери загрузочный. Последует вопрос:
делать ли его активным. Если осей других на компе нет, 
и ты будешь использовать соляровый менеджер загрузки,
то отвечай положительно. Если тебе больше нравится
lilo, BootMagic или любой другой загрузчик, — отвечай отрицательно.
Когда ты создал все нужные разделы и выбрал активный,
можешь выходить (клавиша 4 — Exit). После этого и начнётся настоящая установка с помощью мастера Web
Start. Тебе предложат форматнуть диск или, при необходимости,
разделы в ФС UFS. Соглашаешься, подтверждаешь установку соляры и перезапись содержимого загрузочного диска.
Затем тебя спросят, какого размера делать свап.
Это на твоё усмотрение. Если не хватит, то командой swap ты сможешь выделить дополнительные сегменты под виртуальную память.
На вопрос, нужно ли размещать свап в начале диска,
отвечай утвердительно, поскольку размер файла подкачки в процессе формирования файловых систем изменён быть не может. Подтверждай сохранение всех настроек и жди.
Произойдёт форматирование диска, создание корневой файловой системы,
копирование платформо-зависимых файлов и перезагрузка.
Перед ней тебя попросят нажать Enter. После ребута ты увидишь соляровый менеджер загрузки
(если ты его выбрал). Я расскажу только про него,
так как с lilo, grub и т. п. , проблем быть не должно. 

CDE-Рабочий стол в Solaris. 

Логинимся в солярке

Итак, перед тобой появился Solaris Boot Manager (а точнее SunOS Intel Platform Edition Primary Boot Subsystem) и предложил выбрать загрузку с активного раздела.
Нажимай клавишу с номером раздела и милостиво позволяй ему сделать это.
Процесс автобута можно прервать с помощью
Esc. Затем система инициализируется и — последний шаг подготовки — запустится
kdmconfig, который настроит тебе видюлю, монитор и т.
п.  для запуска графического мастера установки Web
Start. Поздравляю — самый сложный этап установки соляры завершён.
Работать с WebStart не труднее, чем с дружелюбным инсталлятором какого-нибудь
Mandrake, хотя русский язык и не поддерживается.
Копирование файлов, очередная перезагрузка, 
и перед тобой появится рабочий стол CDE(Common Desktop Environment-не путать с KDE).. 

Работа с суперсервером

Если ты когда-нибудь строил сервер на базе никсов,
то ты наверняка знаком с суперсервером inetd. Есть он и в солярке.
Использовать его или нет — дело твоё. Я бы посоветовала не делать этого.
Причина известна: если inetd повалится, то он потянет за собой и все сервисы,
которые на нём держатся. Да и применение его избыточно:
сегодня все мало-мальски приличные сервисы умеют работать в режиме
standalone, и помощник им не нужен. Для тех, кто всё-таки решился завязать свой сервер на
inetd, я скажу пару слов о соляровой версии суперсервера.
Все файлы лежат на привычных местах:/etc/services,
/etc/inetd. conf. Закомментируй в них все ненужные сервисы
и настрой нужные следующим образом:

Файл /etc/inetd. conf имеет формат:

имя тип протокол флаги пользователь параметры,
например

ftp stream tcp(tcp6) nowait root /usr/sbin/in. ftpd in. ftpd (бывает и internal).. 

В записи может быть wait или nowait. Если указан
wait, то это значит, что суперсервер не будет прослушивать этот порт до его освобождения сервером,
а если nowait, то будет слушать. Telnet и ftp-сервисы наиболее часто привязываются к
inetd, но тем не менее использовать их ни в коем случае нельзя,
поэтому ставь OpenSSH. Его конфиг находится в /etc/sshd2/sshd2_config. 

О пользователях

Большинство задач администрирования в Solaris выполняется при помощи графического пакета
Admintool. Но в консоли огромный диапазон проблем можно решить гораздо быстрее и удобнее,
поэтому нет смысла использовать медленные и глючащие иксы. Добавление пользователей осуществляется при помощи банальной правки
/etc/passwd, /etc/shadow и /etc/group, а также командой useradd. Зашифрованные пароли генерируются автоматически при помощи функции crypt() и сохраняются в
/etc/shadow. Все пароли криптуются DES-подобным алгоритмом и не могут быть длиннее восьми символов,
среди которых вся клава плюс особые нечитаемые сочетания клавиш.
Ручное удаление пользователей кроме правки
/etc/passwd, /etc/group и /etc/shadow включает в себя удаление домашней диры пользователя,
почтового ящика(rm -rf /var/mail/имя юзера), почтовых псевдонимов(/etc/aliases),
проверку cron, at и процессов пользователя(ps -eaf | grep имя юзера). Для того, 
чтобы временно заблокировать вход пользователя в систему,
достаточно в /etc/passwd или в /etc/shadow заменить криптованный пароль символом
*. Все файлы, задачи и настройки пользователя останутся на месте,
а войти в систему он не сможет. Теперь о квотах.
Они реализованы практически также, как и в
Linux. Необходимые параметры прописываются в /etc/fstab или прямо в консоли при использовании команды
mount. После прописывания квот желательно перезагрузиться или размонтировать/смонтировать файловую систему,
для которой устанавливались квоты. Затем создаёшь файл quotas в нужных каталогах,
набиваешь команду edquota и вводишь количество inode-узлов и блоков дискового пространства в «жёстком» или «мягком» ограничениях.
Последний штрих-команда quotaon, предназначенная для включения квот. 

Управление пакетами

Управление пакетами — паккаджами — в Solaris реализовано очень просто,
удобно и эффективно. Сначала поговорим о добавлении и удалении пакетов из системы,
а затем о более интересном — создании собственных пакетов. 
Вот список команд, необходимых для работы с паккаджами:
pkgadd-добавить пакет;
pkgchr-проверить пакет;
pkginfo-посмотреть информацию о пакете;
pkgmk-создать новый пакет на базе прототипа;
pkgproto-создать новые спецификации пакета и добавить в прототип;
pkgrm-удалить пакет;
pkgtrans-упаковать все файлы пакета в архив. 
Например, чтобы получить информацию о том, к какому пакету принадлежит файл,
нужно набить в консоли следующую команду:

pkgchk -l -p путь к пакету

Очень много интересного можно узнать, заглянув в документацию и просмотрев флаги,
с которыми употребляются команды по работе с пакетами.  

Теперь о создании пакетов. Первым делом нужно создать файл
pkginfo. Его формат такой(перечислю наиболее часто встречающиеся параметры):

ARCH — архитектура, для которой создаётся пакет;
BASEDIR-каталог, в который происходит распаковка файлов;
CATEGORY-тип архива(системный или обычное приложение);
EMAIL-контактная информация автора пакета;
NAME-название пакета(например, «My cool proga»);
PKG — имя пакета(например, BAS_LOCAL);
PSTAMP-имя автора пакета;
VENDOR-имя автора или название фирмы — разработчика программы. 

Затем создаём файл прототипа. . . 

touch prototype

. . . и не забываем добавить в этот самый файл информацию о pkginfo:

i pkginfo=путь до файла pkginfo

Теперь в каталоге установки(поле BASEDIR файла pkginfo) выполняем команду для создания в файле прототипа относительныx путей и имён файлов:

find .  -print | pkgproto >> prototype

Загляни в только что созданный файл прототипа.
Буква f-это файл, а d-директория. Каждая запись включает в себя информацию о пользователе,
группе и правах доступа. Листай этот файлик дальше,
что не понравится — исправишь. Затем набирай команду:

pkgmk -o -r путь до папки, где лежит pkginfo

С этого момента файлы для упаковки будут лежать в /var/spool/pkg/имя пакета.
Последний шаг:

pkgtrans -s /var/spool/pkg /backup/имя пакета. pkg

На экране появится список найденных пакетов, 
и тебя спросят,  какие из них нужно устанавливать.
Нажимаешь клавишу с номером, соответствующим имени пакета.
Все файлы твоего пакета скомпонуются в один архивный файл и будут лежать в /backup/имя пакета.
pkg. Пакет готов!


IPSec

В последнее время резко возросла популярность VPN-сетей.
Это объясняется тем, что VPN-сети используют протокол
IPSec, который прекрасно обеспечивает анонимность,
шифрование и сохранность данных, передаваемых по сети.
Ну а раз он такой замечательный, неплохо было бы понять,
как он устроен, что мы сейчас и сделаем. Приготовься к паре минут жёсткой теории без
пространных объяснений. Проверка подлинности в IPSec реализуется при помощи обмена ключами
IKE (Internet Key
Exchange). Сам же протокол базируется на трёх основных понятиях:
SA(Security Association) — связях безопасности, AH
(Authentication Header) — заголовках идентификации и ESP
(Encapsulated Security Payload) — передаче данных.
Для обмена данными между двумя узлами нужно создать для них две SA-связи.
Управление этими связями осуществляется c помощью команды
ipseckey. Если SA-связи установлены, то в игру вступает
AH. Заголовок передаётся с SIP(Security Parameters Index)-указателем параметров безопасности.
Если с этим самым указателем всё в ажуре, то дейтаграммы считаются подлинными,
а доставка корректной. Пакеты будут доставлены в целости и сохранности,
но AH их не зашифрует. Для этого нужна ESP. Данные ESP также передаются с параметром
SPI. Для шифрования пакетов используются алгоритмы DES и
3-DES (Triple-DES). Но технологии AH и ESP могут применяться и по отдельности.
Идентификация в IPSec реализована при помощи контрольных сумм MD5-этот алгоритм вычисляет 128-битную цифровую подпись,
пригодную для любых типов данных. Ну,  всё,
с теорией покончено. Теперь о реализации этой технологии в
Solaris. 

Ипсековские правила определяются командой
ipsecconf. Конфиги лежат в /etc/inet/ipsecinit. conf и /etc/inet/ipsecpolicy.
conf. Формат последнего следующий(настраиваем ftp):

{dport 21} apply {encr_algs any encr_auth_algs md5 sa shared}
{sport 21} permit {encr_algs any encr_auth_algs md5}

Таким образом мы защитили весь трафик 21-ого порта
AH, используя DES или 3-DES,  и организовали проверку подлинности с использованием алгоритма
MD5. Это был пример для порта, но можно сделать то же самое для целой подсети:

{daddr 193. 34. 207. 12/26} apply {auth_algs md5 sa shared}
{saddr 193. 34. 207. 12/26} permit {auth_algs md5}

Сходства и различия двух настроек видны невооружённым взглядом и в пояснении не нуждаются. 

Домашняя страница IPFilters


Выбираем и настраиваем фаервол

Существует два основных фаервола под Solaris:
IPFilter и
SunScreen. IPFilter-бесплатный и с исходниками, а SunScreen-коммерческий.
Но недавно вышел его бесплатный вариант, правда с чуть меньшей
функциональностью.
По возможностям оба брандмауэра примерно одинаковы:
поддержка
IPv6, MBone, качественное распределение нагрузки,
перенаправление, NAT, хорошее ведение и отображение статистики.
Отличия SunScreen от его собрата заключаются в наличии графического фейса,
который вряд ли кому и нужен. В данном разделе я подробнее разберу
IPFilter, а SunScreen`а коснусь вкратце. Кстати, оба эти пакета не входят в стандартную поставку дистрибутива
Solaris. IPFilter отдалённо напоминает IPTables, хотя далеко не так удобен в
конфигурировании,
но это нисколько не умаляет его достоинств.
IPFilter выполнен в виде загружаемого модуля к ядру.
Важнейшее его свойство состоит в том, что он просматривает все правила из своего конфига,
а не только те, что соответствуют определённому условию.
Вывод: концепция конфигурирования IPFilter заключается в том,
что можно (и нужно) описать как общие правила,
так и частные, причём первые обязательно должны предшествовать вторым.
Если не выполнить этого условия,  фаервол не будет работать должным образом,
частные правила будут произвольно изменяться следующими за ними общими.
Общие правила определяются так:

pass in all

пропускает весь входящий трафик, а

block in all

соответственно блокирует его. 

Частные правила:

block in on hme1 proto tcp from any to 193. 34. 207. 12/24 port=80

Разберёмся, что же мы тут нашаманили. Вышеприведённое правило запрещает
(block) приём входящих пакетов на интерфейс hem1 по протоколу tcp с любых (from any) адресов на 80 порт данной подсети.
From всегда означает откуда, to — куда, а all — ссылка на все адреса сразу.
Правда, просто? 

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

Перейдём к SunScreen. В SunScreen используется массив ключей для простого управления ключами протоколов
(SKIP-Simple Key-Management for Internet
Protocols). SKIP используется для шифрования сеансов.
Сейчас эта технология практически полностью вытеснена протоколом
IPSec, но в редких случаях всё ещё может понадобиться. 
После установки фаервола, производимой с помощью сценария /opt/SUNWicg/SunScreen/bin/ss_install можно начинать настройку.
Укажи режим маршрутизации или невидимости, уровни защищённости,
методы настройки, поддержку DNS (если нужно) и т.
д. Всё легко настраивается через графический интерфейс.
Обращение к нему происходит через любой браузер по локальному адресу
http://localhost:3852. Имя пользователя и пароль для первого запуска-admin:admin. Естественно пароль нужно сменить. Аналог pass и block из IPFilter — ALLOW и
DENY. Можно пользоваться масками, которые задают исходный и конечные адреса(аналог
any). Для каждого из правил есть дополнительные настройки:LOG_NONE,
SNMP, LOG_DETAIL, ICMP_HOST_FORBIDDEN и т.д.; их очень много, между делом обо всех не расскажешь. После установки у тебя появились следующие базы данных:
authuser,
proxyuser, vars и logmacro. Также создаётся база сертификатов
(/etc/skip/certdb). 

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


Мелочи безопасности 

Прежде всего нужно заставить пользователей ставить нормальные пароли.
Если на твоём сервере десятки, а то и сотни пользователей,
то проводить со всеми разъяснительную беседу не хватит ни сил,
ни времени, поэтому лучше применять специальные программы.
Главный представитель этой категории — прога
gpw (http://www.multicians.org/thvv/gpw.html
в виде Java-апплета и ftp://nce.sun.ca/pub/freeware/intel/7/gpw-6.94-sol7-intel-local.gz
в виде архива с пакетом),
которая является неплохим генератором паролей.
Можно задавать различные опции, например, включить в пароль число или специальный символ и т.
д. Это грамотное решение проблемы. 

Блокировку портов решай ковырянием в /etc/services и
/etc/inetd. conf. Что касается переполнения буфера,
то проблема частично решается установкой некоторых параметров в /etc/system:

set noexec_user_stack=1
set noexec_user_stack_log=1

Эффективным методом защиты от подмены приложений является сравнение MD5 сумм.
Достаточно один раз собрать MD5 суммы нужных бинарников и сохранить их в надёжном месте
(наилучший вариант — на компакте или на другом компьютере).
Это выполняется вызовом программы . /md5. Важно периодически сверять MD5 суммы приложений в системе с суммами,
записанными на проверенном носителе. Если сумма изменилась
— самое время искать злоумышленника.
Но необходимо помнить, что контрольная сумма может измениться,
если ты обновлял данный пакет или файл. 


Заключение

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

Оставить мнение

Check Also

Охота на Енота. Как вирмейкер спалился сам и спалил заказчиков

В большинстве случаев разоблачения происходят потому, что вирмейкер где-то фундаментально …