| Примечание: в статье рассматривается ОС FreeBSD 6.2 (впрочем,рекомендации в значительной степени должны быть справедливы и длядругих версий). Сцена первая: подготовка к установке И здесь первым же моментом — удобство: для установки полностьюработоспособной системы достаточно скачать первый из двух образовдисков (забегая вперёд: качать второй — никакого смысла). Сцена вторая: собственно установка Ничего особенно выдающегося. Единственное — мягко говоря,непривычная для человека, ранее имевшего дело только с Linux, логикаразбиения диска (надо всё сделать правильно на этапе установки — в ужеустановленной системе в конфигурации по умолчанию структуру разделов неизменить). Главное здесь — не забыть поставить исходники всегонеобходимого (в первую очередь, ядра) и коллекцию портов. И сразу — подарочный набор граблей от FreeBSD Team: после установкисистема нормально загружается, ТОЛЬКО если корневой раздел был указанпервым. Если же, как в моём случае, после привычки к Linux первымразделом на автопилоте указывается SWAP, то — добро пожаловать к танцамс бубном (дилемма: переустанавливать или искать LiveCD с поддержкойUFS2). В зависимости от назначения разворачиваемого сервера можетоказаться необходимым предусмотреть отдельный, достаточно большойраздел на жёстком диске под /var. Для упрощения дальнейшей настройки в процессе установки следуетуказать имя хоста, основной IP-адрес, маршрутизатор, первичныйDNS-сервер. А также завести себе пользователя (не забыв добавить его вгруппу wheel) и указать на старт при загрузке демона ssh. После этого можно давать команду на перезагрузку, извлекать дистрибутивный диск и переходить в тёплое место. На случай правки/дополнения введённой информации: Доменное имя и используемые DNS-серверы прописываются в файле /etc/resolv.conf. Формат файла: domain MYDOMAIN nameserver NAMESERVER1 nameserver NAMESERVER2 Имя хоста берётся из команды активации сетевого интерфейса в /etc/rc.conf. Также эти имена фигурируют в локальном дополнении DNS-сервера — файле /etc/hosts. В процессе установки (в отличие от Linux) выполнение большей части действий по настройке не предусмотрено. Сцена третья (настройка): берём в руки напильник Необходимые действия следующие: Задать пароль суперпользователя root (процесс входитв стандартную процедуру установки опцией, а по умолчанию этот пароль —пустой). Одновременно категорически рекомендовано в /etc/passwdв профиле пользователя root дописать имя хоста. Это значительнооблегчит жизнь при идентификации отчётов и извещений рассылаемыхсервером. После получения shell'а с правами суперпользователя произвести предварительную минимально необходимую настройку окружения. По умолчанию в FreeBSD для пользователя root задан csh — соответственно, редактировать будем файл ~/.cshrc. В этом файле: Заменить значение переменной PAGER с more на less: setenv PAGER less Прописать настройки соединения с сетью (предполагается, что используется PROXY-сервер): setenv HTTP_PROXY PROTOCOL://ADRESS:PORT setenv FTP_PROXY PROTOCOL://ADRESS:PORT setenv http_proxy PROTOCOL://ADRESS:PORT setenv ftp_proxy PROTOCOL://ADRESS:PORT После этого надо перечитать конфиг: # csh Теперь можно заняться приведением библиотеки ПО к актуальному состоянию: /* Примечание: необходимо учитывать, что далеко не все порты написаны корректно и элементарно работоспособны. */ # cd /usr/ports/net/cvsup-without-gui # make && make install && make clean # cd # cp /usr/share/examples/cvsup/ports-supfile . # vi ports-supfile В указанном в приведённой строке файле необходимо заменить значениепо умолчанию на имя хоста или IP-адрес PROXY-сервера (который, к томуже, должен быть правильно настроен): *default host=CHANGE_THIS.FreeBSD.org И произвести обновление дерева портов: # cvsup -g -L 2 ports-supfile (обновление дерева портов может не иметь смысла лишь в течение 1—2 недель с момента выхода дистрибутива.) # cd /usr/ports/ports-mgmt/portupgrade # make && make install && make clean Теперь небольшое лирическое отступление про FreeBSD 6.2(справделиво и для предыдущих версий 6-й ветки) в её современномсостоянии. После выхода FreeBSD 6.2 был произведён переход на новыеверсии некоторых узловых элементов. В связи с этим просто обновлениемдерева портов ограничиться не получится и придётся произвести ряддополнительных действий. Например: # portupgrade -rf gettext Конец первого лирического отступления. # cd /usr/ports/shells/bash # make && make install && make clean Ставить shell из портов в качестве стандартной оболочкисуперпользователя опасно, ибо не всегда получается уделить достаточновнимания файлу /usr/ports/UPDATING.С другой стороны, не все приложения понимают запуск одного шелла изнастроечного файла другого. Поэтому пускать bash придётся вручную. Чтодля сервера (куда заходишь не каждый день и, строго говоря, не каждуюнеделю) не так уж и фатально. И второе лирическое отступление: # setenv XORG_UPGRADE yes Конец второго лирического отступления. # cd /usr/ports/editors/vim # make && make install && make clean Затем надо скопировать (и привести к соответствующему данному конкретному случаю виду) конфигурационные файлы bash (который в FreeBSD почему-то зовётся ~/.profile) и vim (~/.vimrc и ~/.viminfo), запустить шелл: # /usr/local/bin/bash -login Теперь вроде жить можно (в ~/.profile уже заданы нужные alias'ы и правильные значения основных переменных типа EDITOR). Из стандартно устанавливаемых приложений осталось только обеспечить контроль безопасности. Проверку установленного ПО на наличие известных уязвимостей осуществляет приложение portaudit (см. /usr/ports/ports-mgmt/portaudit/). Теперь надо перелогиниться, и тогда можно переходить к установке необходимого для жизни софта. Первый этап — обеспечение безопасности (см. «FreeBSD enable security port auditing to avoid vulnerabilities»на cyberciti.biz — правда, статья не вполне соответствуетдействительности), в смысле проверки устанавливаемого ПО на известныеуязвимости. Сначала установка portaudit: # cd /usr/ports/ports-mgmt/portaudit/ # make && make install && make clean Скрипт, осуществляющий проверку в рамках стандартных системныхежедневно выполняемых задач (periodic daily || weekly || monthly),живёт по следующему пути: /usr/local/etc/periodic/security/410.portaudit. Как скрестить portaudit в режиме скачивания базы с демоном cron,я так и не понял. Поэтому буду исходить из того, что база скачиваетсяявно системными командами. Файл базы расположен по адресу www.freebsd.org/ports/auditfile.tbz. Теперь можно написать скрипт следующего содержания: #!/usr/local/bin/bash # # Скрипт проверки установленного ПО. # export PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin export HOME=/var/log # export FTP_PASSIVE_MODE=YES export FTP_PROXY=http://$MY_PROXY_IP:$MY_PROXY_PORT export HTTP_PROXY=http://$MY_PROXY_IP:$MY_PROXY_PORT export ftp_proxy=http://$MY_PROXY_IP:$MY_PROXY_PORT export http_proxy=http://$MY_PROXY_IP:$MY_PROXY_PORT # # cd /var/db/portaudit if [ -s auditfile.tbz ] then mv -f auditfile.tbz auditfile.tbz.tmp else date > /root/portaudit.log echo "Error!!!" >> /root/portaudit.log echo "portaudit database doesn't exist!!!" >> /root/portaudit.log mail -s "ldap-server portaudit report" my_admin_email@mydomain.ru < /root/portaudit.log exit 1 fi fetch http://www.freebsd.org/ports/auditfile.tbz # if [ -s /var/db/portaudit/auditfile.tbz ] then date > /root/portaudit.log echo "portaudit report" >> /root/portaudit.log echo "" >> /root/portaudit.log portaudit -da 2>&1 >> /root/portaudit.log else date > /root/portaudit.log echo "portaudit report" >> /root/portaudit.log echo "" >> /root/portaudit.log echo "Error while fetching audit database" >> /root/portaudit.log fi # diff auditfile.tbz.tmp auditfile.tbz > /root/audit-report.flag # if [ -s /root/audit-report.flag ] then mail -s "ldap-server portaudit report" my_admin_email@mydomain.ru < /root/portaudit.log rm -f /root/audit-report.flag fi # rm -f /root/audit-report.flag # exit 0 Приведённый скрипт предполагает наличие базы уязвимостей и её резервной копии в /var/db/portaudit. Обеспечим необходимые исходные данные (а заодно проверим установленное ПО): # portaudit -Fda # cd /var/db/portaudit # cp auditfile.tbz auditfile.tbz.tmp После этого приведённый скрипт нужно поставить в cron(время выполнения и периодичность — по вкусу) и по факту обновлениябазы уязвимостей он будет посылать туда отчёты об известных уязвимостяхв установленном ПО. Следующий шаг — переход к собственно настройке системы. Для начала локализация: vi /etc/ttys Для всех терминалов тип cons25 меняется на cons25r,а первый выключается (on -> off) для того, чтобы в случаевозникновения необходимости было удобнее читать системные сообщения. Это необходимо и достаточно для работы за физическим терминалом. Для корректной локализации при работе с виртуальным (через ssh) надо задать тип терминала в профиле (что в некоторой степени дублирует изменения, внесённые в /etc/ttys). $ cat ~/.profile | grep TERM export TERM=${TERM:-cons25r} (В прилагаемых мной файлах профиля это уже учтено). Для корректной локализации осталось прописать login class "russian" для пользователя. Редактирование профиля простым пользователем осуществляется командой chpass, с правами суперпользователя можно редктировать непосредственно в базе пользователей (команда vipw). И на системном уровне — используемые шрифты/раскладку клавиатуры: В файл /etc/rc.conf вставляется следующий блок: # System console options: keymap=ru.koi8-r scrnmap=koi8-r2cp866 font8x16=cp866b-8x16 font8x14=cp866-8x14 font8x8=cp866-8x8 Переключение кодировок производится клавишей CapsLock. Совершенно незаслуженно забыт такой архинужный файл, как ~/.bash_logout, в котором для нулевого приближения достаточно прописать всего одну команду: clear. Если предполагается добавление заметного количества пользователей,для которых желательно сразу получить указанные настройки, вероятно,имеет смысл скопировать эти файлы (~/.profile, ~/.bash_logout и ~/.vimrc в /usr/share/skel, с добавлением приставки dot). Теперь модификация значений по умолчанию в системном логировании: Для анализа поведения системы обычно бывает полезно раскомментировать в файле /etc/syslog.conf строку, содержащую описание all.log (при этом в /etc/newsyslog.conf соответствующая запись вносится автоматически). И ещё по настройке логирования: в строке, содержащей объявление /var/log/messages, рекомендуется убрать упоминание размера лога (т.е. ротировать по времени независимо от объёма записанной информации). Предпоследний шаг — настройка стандартно запускаемых сервисов. # vim /etc/rc.conf /etc/defaults/rc.conf Из /etc/defaults/rc.conf в основной конфигурационный файл переносится секция, относящаяся к запуску ssh (потому как то, что пишет sysinstallвыглядит совсем непристойно). Из второго файла в первый переноситсясекция, посвящённая настройке ssh, демон ssh разрешается, в конфигедемона (/etc/ssh/sshd_config) прописывается запрет регистрации пользователя root, но мы этим не ограничиваемся и прописываем директиву AllowUsers(с разделителем пробел — пользователи, которым разрешено заходить всистему по ssh). Также категорически имеет смысл в домашней директориисвоего пользователя создать каталог ~/.ssh и скопировать в него под именем authorized_keys свой публичный ключ, после чего в конфиге sshd_config запретить ещё и авторизацию по паролю. В стандартной конфигурации FreeBSD (файл /etc/defaults/rc.conf) crondиспользуется. Однако для наглядности считаю правильным перенестисекцию, описывающую запуск этого демона, из конфига по умолчанию восновной. И ещё один момент: по умолчанию файл crontab вFreeBSD 6.X пустой. Что лично меня несколько напрягает придобавлении/редактировании пользователей. Для удобства считаюцелесообразным добавить в crontab всех пользователей, где этоактуально, шапку следующего вида: # /etc/crontab - root's crontab for FreeBSD # #SHELL=/bin/sh #PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin #HOME=/var/log # #minute hour mday month wday who command Почта. По умолчанию в FreeBSD интегрирован sendmail,полное отключение которого отмечено как категорически нежелательное. Встандартной настройке он умеет принимать и приземлять или, принеобходимости, перенаправлять вовне письма. Что и нужно. Если серверпредполагается использовать как почтовый (см. «Установка и настройка почтового сервера на базе FreeBSD и sendmail»),то необходимо изменить значения по умолчанию параметров запускаsendmail (с тем, чтобы он не только отправлял, но и принимал почту), впротивном случае считаю правильным оставить всё как есть в /etc/defaults/rc.conf. Время. Надеюсь, о важности этого параметра распространяться не надо. Задание временного пояса в FreeBSD осуществляется утилитой tzsetup.Синхронизироваться можно либо с локального сервера точного времени,либо с использованием соответствующего сервиса. Для России это[например] 0.ru.pool.ntp.org. Первоначальная установка правильного времени осуществляется командой: # ntpdate 0.ru.pool.ntp.org Но постоянное её использование не всегда допустимо, ибо она изменяет системное время ступенчато. Для активации демона в /etc/rc.conf необходимо добавить (точнее, перенести из стандартного с исправлением значений) секцию следующего вида: ############################################################## ##### Network Time Services options: ### ############################################################## timed_enable="NO" # Run the time daemon (or NO). ### Basic network and firewall/security options: ### | |
| Категория: Интересные статьи | Просмотров: 494 | |
Главная » FreeBSD-сервер для линуксоида: приведение конфигурации к виду, в котором удобно работать