Установка FreeBSD
Для начала нам понадобится сама операционная система. Идем на официальную страничку FreeBSD (www.freebsd.org), жмем по ссылке «Get FreeBSD Now», далее выбираем версию ОС, архитектуру (amd64 или i386), нажимаем на ссылку [ISO] и видим список доступных образов. Всего их пять: bootonly — загрузочный образ для установки по сети, disk1 — ISO образ для записи на CD, dvd1 — образ для записи на DVD, livefs — LiveCD без графического интерфейса, memstick для записи на USB-брелок. В нашем случае подходящими будут только первый и второй, а если в сети нет DHCP-сервера, то только второй (DVD-образ качать смысла нет, потому как CD содержит все нам необходимое).
Итак, скачиваем ISO-образ, нарезаем его на болванку, вставляем в привод сервера и сбрасываем/включаем его.
Выбор языка
На этом шаге нужно выбрать язык, на котором выводит сообщения иинсталлятор.
Быстрая установка системы
Выберите пункт меню Custom. Изменения на диск вносятся только в самом конце инсталляции и об этом выдается предупреждение, до этого на дис ничего не записывается.
Разбиение диска
Выберите пункт меню Partition.
Такое предупреждение можно просто игнорировать.
Экран инсталлятора, предлагающий разбить диск на части (в терминологии BSD – PC slices, они-же primary/secondary partitions – для пользователей MS DOS/Windows), нажимаем А.
После разбиения диска для перехода на следующий шаг нажимаем Q.
Выбор менеджера загрузки
Установка менеджера загрузки, выбираем BootMgr и нажимаем OK.
Создание файловых систем
Разбиение раздела на разделы, выбираем пункт Label.Окно редактора файловыч систем, обратите внимание на строчку Free: 167766732 blocks (81917MB), она показывает сколько невыделенного места осталось у вас на диске. Нажимаем С для создания нового раздела.
Указываем место под swap раздел. Если у вас меньше чем 512 Мб ОЗУ, то тогда выделяйте в 2 раза больше, чем размер вашего ОЗУ. Если больше или равно 512 Мб ОЗУ – то тогда можно выделять столько же, сколько и объем ОЗУ.
Выбираем тип раздела swap.
Создаем раздел /tmp. Сперва задаем размер – 1Гб.
Выбираем тип – А file system.
Выбираем точку монтирования /tmp.
Создаем раздел /. Рекомендованный размер – 1-2Гб.
Выбираем тип – А file system.
Выбираем точку монтирования /.
И так далее, для каждого раздела. Создадим еще один раздел /www, здесь будут храниться сайты, логи, база данных и т.д. Для того, чтобы выделить все свободное место под раздел – просто оставьте поле с цифрами так, как есть. После того, как мы создали все необходимые разделы – нажимаем Q для выхода.
Выбор системного ПО
Переходим на пункт выбора базового, системного программного обеспечения, которое должно быть установлено. Выбираме пункт Distributions.Выберите пункт Minimal.
В принципе этого достаточно, все жизненно-необходимое ПО будет установлено в системе, если чего то будет недоставать – то всегда есть возможность скачать это с интернета. Переходим на пункт Exit и надимаем Enter.
Установка на жесткий диск
Выбираем пункт Media.Выбираем среду, откуда инсталлировать – CD/DVD.
Выбираем пункт Commit (применить все настройки).
Предупреждение – если вы сделали что-то не так, то вы можете потерять все данные на жестком диске. Если вы уверены, что у вас нет ничего нужного на жестком диске – смело нажимайте ОК.
Итак, на все последующие промты – отвечайте так, как вы предпочитаете нужным, например будет запрос напоследок что-то поменять, или вернуться на стартовую позицию настроек, в конце концов, когда увидите, что все установилось – вам предложат перезагрузить систему, перезагружайте :).
Перезапуск и остановка системы
FreeBSD систему можно перезапустить разными способами. Быстрый перезапуск (без ожидания, пока корректно остановятся все сервисы): fastboot. Для того, чтобы подождать пока завершаться все системные процессы, а потом перезапустить систему, используется команда
shutdown -r now
Я убедительно рекомендую пользоваться только второй командой, так как в случае с первой – возможно всякие разнообразные неприятные последствия.
Остановка системы. Для остановки системы можно использовать следующие команды: fasthalt – остановить быстро, не дожидаясь остановки всех системных сервисов (питание остается включенным, опять же таки, я бы не рекомендовал использовать эту команду). acpiconf -S 5, shutdown -p now – остановить систему, дождавшись остановки всех системных сервисов и выключить питание компьютера.
Установка пароля root
Если во время установки системы вы не поставили пароль пользователю root, то после загрузки самое время это сделать. Это не только можно, но и НУЖНО сделать одним из первых дел после установки системы.
Заходите в систему пользователем root (логин набирается root, вместо пароля нажимаем просто Enter), потом набираете команду passwd и дважды вводите новый пароль. Не забудьте, какой пароль вы поставили, потому что сбросить его можно будет только в однопользовательском режиме, это отдельная история.
Редактор vi
Если вы попали в редактор vi, который бибикает и портит текст на экране, не пугайтесь :). Отличить этот редактор можно по тому, что вместо пустых строк в конце файла (если ваш файл меньше чем на 1 страницу) он выводит символы ~ в самой левой колонке. Нажмите несколько раз Esc, а потом наберите :q!. Вы попадете обратно в строку командного приглашения.
Редактор ее
Намного удобней, на мой взгляд, использовать редактор ее для редактирования текстовых файлов. Для того, чтобы он вызывалсяя по умолчанию каждый раз, когда нужно редактировать какой-либо файл, надо проверить какая у вас оболочка, потому что для разных оболочек метод установки этого редактора по умолчанию – отличается.
echo $SHELL
Если у вас оболочка /bin/csh, то тогда вам нужно отредактировать файл ~/.tcshrc и вписать в него строчку:
setenv EDITOR /usr/bin/ee
Эти изменения вступят в силу после того, как вы выйдете и зайдете обратно.
Если у вас оболочка /bin/sh, то тогда вам нужно отредактировать файл ~/.profile и вписать в него строки
EDITOR=/usr/bin/ee export EDITOR
И эти изменения вступят в силу после нового входа в систему.
Настройка сети
Тут можно поступить двумя способами: 1) Использовать системную утилиты sysinstall; 2) Настроить все вручную.
sysinstall: просто наберите команду sysinstall, переходите в меню Configure, далее Networking, Interfaces, и выбираете интерфейс, соответствующий вашей сетевой плате, установленной на компьютере. Интерфейсы plip0, sl0, ppp0 – это виртуальные интерфейсы и они нам не нужны. Самые распространенные сетевые платы распознаются как ed0, fxp0, rl, xl0, bge0, em0, re0, vr0. Если у вас в компьютере несколько сетевых плат, то тогда цифра рядом с названием интерфейса может быть 1 и 2 и так далее, по количеству плат. Это может выглядеть так:
Конфигурация сети вручную
Во первых, вам нужно добавить IP адрес в конфигурацию, в файл /etc/rc.conf. Сперва смотрите на список интерфейсов командой ifconfig. Находим среди них интерфейсы, соответствующие сетевым платам, потом пишем в /etc/rc.conf следующие строчки:
defaultrouter="192.168.1.1" hostname="100.org.ua" ifconfig_em0="inet 192.168.1.100 netmask 255.255.255.0"
Все эти параметры вступят в силу после перезагрузки, или же мы можем вызвать команду
/etc/rc.d/netif restart
для принудительного применения параметров, без перезагрузки системы.
А также нам необходимо указать наши DNS сервера, открываем файл /etc/resolv.conf и добавляем в него строчки:
nameserver 192.168.1.1 nameserver 8.8.8.8
Дополнительно необходимо добавить свой IP и имя данной машины в /etc/hosts. В этом файле должен быть записан ваш IP адрес и имя вашего компьютера. Обыкновеено localhost тоже записывают в этом файле, чтоб у вас нормально работала система и могла находить IP установленный на локальном логическом интерфейсе lo0 (loopback, петля, через него взаимодействуют локально установленные приложения).
%cat /etc/hosts 127.0.0.1 100.org.ua 127.0.0.1 localhost. localhost 192.168.1.100 test.100.org.ua %
После всех манипуляций с настройками сети, можем проверить работоспособность командой
ping mail.ru
Вы можете добавлять сюда любые пары IP – имя компьютера, которые должны работать без участия DNS.
Создание нового пользователя
Далее создадим непривилегированного пользователя, учетную запись которого мы будем использовать для входа на сервер через SSH. Для этого воспользуемся командой adduser:
adduser
На экране будут появляться вопросы, на большинство из которых можно не давать ответов (жать <Enter>), важными являются только имя пользователя, дефолтовый командный интерпретатор (лучше выбрать tcsh) и пароль. В конце команда выведет на экран получившийся список настроек пользователя, в ответ на который следует ввести слово «yes», и в ответ на следующий вопрос ввести «no».
Чтобы пользователь смог получать права root, добавим его в группу wheel:
pw groupmod wheel -m [имя_пользователя]
Исправим файл /etc/fstab так, чтобы никто не смог запускать файлы, расположенные на разделах /tmp и /var. Для этого добавим флаги «noexec» в поле Options каждого из этих разделов.
Установим более жесткие ограничения на доступ к системным файлам:
chmod 0600 /etc/syslog.conf chmod 0600 /etc/rc.conf chmod 0600 /etc/newsyslog.conf chmod 0600 /etc/hosts.allow chmod 0600 /etc/login.conf
Также сразу добавим несколько важных для нас опций:
#Отключаем переадресацию пакетов и регистрируем все попытки переадресации echo 'icmp_drop_redirect="YES"' >> /etc/rc.conf echo 'icmp_log_redirect="YES"' >> /etc/rc.conf # Запрещаем ответы на широковещательные ping-запросы echo 'icmp_bmcastecho="NO"' >> /etc/rc.conf # Очищаем каталог /tmp при каждой загрузке echo 'clear_tmp_enable="YES"' >> /etc/rc.conf # Запрещаем обновление файла /etc/motd при каждой загрузке echo 'update_motd="NO"' >> /etc/rc.conf # Не принимаем пакеты с одновременно установленными # флагами SYN и FIN echo 'tcp_drop_synfin="YES"' >> /etc/rc.conf # Отключаем sendmail echo 'sendmail_enable="NO"' >> /etc/rc.conf echo 'sendmail_submit_enable="NO"' >> /etc/rc.conf # Включаем SSH echo 'sshd_enable="YES"' >> /etc/rc.conf
Добавим несколько полезных строк в файл /etc/sysctl.conf:
# Не отвечать на попытки подключения к закрытым портам # (спасет от некоторых видов DoS-атак и затруднит сканирование портов) echo 'net.inet.tcp.blackhole=2' >> /etc/sysctl.conf echo 'net.inet.udp.blackhole=1' >> /etc/sysctl.conf # Разрешаем смотреть список всех процессов только root echo 'kern.ps_showallprocs=0' >> /etc/sysctl.conf
Защитим SSH-сервер от брутфорс-атак:
echo "MaxStartups 5:50:10" >> /etc/ssh/sshd_config /etc/rc.d/sshd restart
Теперь SSH-сервер будет отбрасывать 50% новых подключений в случае, если будет произведено пять неправильных регистраций. Когда их станет десять, сервер перестанет отвечать вовсе.
Итак, приступаем к установке дополнительного софта. Мы решили, что у нас будет СЕРВЕР, а значит графическая оболочка ему не нужна, а многие программы любят подтягивать и доустанавливать необходимые библиотеки только для графической оболочки, и это может быть не мало, иногда даже больше по объему чем нужное, сами понимаете графика :). Дописываем необходимую строку в файл /etc/make.conf:
echo 'WITHOUT_X11=yes' >> /etc/make.conf
Или же нам прийдется каждый раз добавлять параметр "make WITHOUT_X11=YES install clean
" при утсановке каждого порта.
При использовании экспресс-установки, система портов (фреймворк для установки стороннего ПО в ОС) не устанавливается во FreeBSD автоматически, поэтому нам надо сделать это вручную (это хорошо, потому что так мы получим самый свежий срез портов, не содержащий устаревшего дырявого ПО):
portsnap fetch extract portsnap fetch update
После того как порты будут обновлены, установим в систему инструмент rkhunter, нужный для отлова руткитов, которые могут быть установлены в систему в будущем:
cd /usr/ports/security/rkhunter make install clean
Отредактируем конфигурационный файл /usr/local/etc/rkhunter.conf так, чтобы опция MAIL-ON-WARNING содержала email, на который следует слать сообщения об обнаруженных аномалиях.
Заставим инструмент проверить себя на обновления:
rkhunter --update
После этого создадим снимок системных файлов, который будет использоваться в качестве эталона во время поиска руткитов:
rkhunter --propupd
Далее добавим в файл /etc/periodic.conf две строки, благодаря которым проверки обновлений и системы будут происходить каждый день:
echo 'daily_rkhunter_update_enable="YES"' > /etc/periodic.conf echo 'daily_rkhunter_check_enable="YES"' > /etc/periodic.conf
Все, теперь все сообщения о подозрительной системной активности будут помещаться в лог /var/log/rkhunter.log и отсылаться на указанный в конфигурационном файле email.
Далее настроим cron на синхронизацию системных часов каждые два часа, для этого отредактируем файл /etc/crontab и добавим туда строчку:
0 2 * * * root /usr/sbin/ntpdate pool.ntp.org
Наконец, установим и Webmin, web-ориентированный интерфейс для удаленного управления сервером (те, кто предпочитает использовать для администрирования SSH, могут пропустить этот шаг):
cd /usr/ports/sysutils/webmin make install clean echo 'webmin_enable="YES"' >> /etc/rc.conf
Далее необходимо запустить конфигуратор Webmin:
/usr/local/lib/webmin/setup.sh
На вопросы можно отвечать нажатием <Enter>, однако когда дело дойдет до ввода пароля (строка «Login password:»), следует ввести пароль на доступ к Webmin (лучше, если он будет отличаться от остальных паролей). Далее можно запустить Webmin:
/usr/local/etc/rc.d/webmin start
И протестировать его работу, введя адрес «https://host.com:10000/» в адресную строку ближайшего браузера.
Для простоты установки портов и прочих фич, связанных с портами – устанавливаем portupgrade:
cd /usr/ports/*/portupgrade make install clean
Рано или поздно нам потребуется что-то скачать. например, какой-то дистрибутив. Лучше всего для этого подойдет wget:
#устанавдиваем со всеми зависимостями portinstall -R wget