Корпоративный фаер на FreeBSD — 1.

Авг 11th, 2009 | Posted by | Filed under FreeBSD, Unix and BSD

Корпоративный фаер на FreeBSD — 1. Подготовительные операции. Установка OS. Компиляция ядра.

Случилось поставить корпоративный фаер. Попробовав несколько разных несерьёзных вариантов, решил остановиться на старой надёжной платформе — FreeBSD.

1. Загрузка последней свежей версии с сайта. На момент установки это 7.2-RELEASE.

2. Для своей задачи выбираю довольно старый и тормозной сервер с 2 процессорами Intel Pentium-III Xeon 700 МГц с 2 Гб оперативки, 8.6 Гб SCSI жестким диском одной встроенной и 4 дополнительными сетевыми картами под разные соединения.

3. Устанавливаю операционную систему. Этот процесс многократно и подробно описан в различных источниках. Из особенностей отмечу лишь как я разбил винчестер — 3 Гб корневой раздел /, 1 Гб раздел подкачки и остальное под /backup. Довольно долгий опыт работы с серверами на базе FreeBSD привел меня к заключению, что в довольно жестких условиях энергоснабжения полезно иметь резервные копии, из которых можно поднять сервер в случае сбоя файловой системы. Данное разбиение не считается наилучшим или рекомендуемым, но я выбрал именно его, и это мой личный выбор. Если кто-то предложит лучший вариант — добро пожаловать в каменты 🙂 Из пакетов ПО устанавливаю только Minimal и Custom->src->sys. Редактировать конфиги предполагаю редактором ee, а есди понадобится что-то экстраординарное, можно будет потом добавить mc либо deco.

4. Сервер будет обеспечивать подключение корпоративной сети к 2 каналам выхода в инет и к серверам в дем-зоне, которые не должны иметь выхода в локалку. Кроме того, из инета должны будут быть видны некоторые порты этих серверов (www, dns, mail). Для работы в таких условиях нам необходим nat. Включим его в наше новое ядро.

cd /sys/i386/conf

cp GENERIC 20090810

ee 20090810

Изменяем идентификатор ядра со значения GENERIC на другое значение, например,

ident fw20090810

Далее, конечно, можно удалить огромное множество всего лишнего, что присутствует в конфиге ядра. Если вам это необходимо, можете обратиться к большому множеству документов, набрав в поиске «оптимизация ядра FreeBSD». Я описывать этот процесс не буду, тем более что он будет сильно зависеть от той железки, на которой стоит ваш фаер. Вот что нужно дописать к конфигу нашего нового ядра, чтобы заработали необходимые функции фаера:

options IPFIREWALL

options IPFIREWALL_VERBOSE

options IPFIREWALL_VERBOSE_LIMIT=5

options IPFIREWALL_DEFAULT_TO_ACCEPT

options IPDIVERT

options DUMMYNET

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

Сохраняем конфиг и пытаемся сделать из него ядро 🙂

config 20090810

cd ../compile/20090810

make cleandepend && make depend && make && make install && reboot

Уходим есть печенье и пить чай, потому что процесс сборки и компиляции ядра может продлиться от десяти минут до пары часов. На моем старом и медленном P-III Xeon ядро было готово лишь через пару часов! Если все процессы проходят успешно, то ядро скомпилируется, установится на его место и сервер перезагрузится уже на нём. Если что-то пошло не так, читаем сообщения об ошибках и исправляем. Обычно никто не любит писать «разбор полётов» в случае несобирающегося ядра. Я тоже не буду писать об этом. Если возникает какая-то ошибка, набиваем её в поиск и гуглим до прояснения ситуации.

5. Поскольку сервер у нас стоит в сложной сети, в которой используется несколько виртуальных подсетей и есть другие маршрутизаторы, нужно будет прописать маршруты в эти виртуальные подсети. Для этого в /etc/rc.conf добавляем маршруты во все подсети, откуда нужен доступ на фаер. Получаются строки типа

route add -net network/mask gateway

то есть что-то типа

route add -net 192.168.2.0/24 192.168.3.1

Если это не понятно, можно почитать что подскажет команда

man route

Проверяем, что необходимые нам компьютеры видны командой ping

6. Резервное копирование будем делать на наш дополнительный раздел винчестера /backup. Чтобы при поломке сервера или пропадении электричества он не портился, мы не будем монтировать его постоянно, ограничимся лишь временным монтированием на время резервного копирования информации.

ee /etc/fstab

в этом файле находим монтирование нашего раздела /backup и добавляем опцию монтирования noauto в его параметры:

/dev/da0s1d /backup ufs rw,noauto 2 2

Резервное копирование будем проводить двояко: 1) резервное копирование всей системы раз в месяц и 2) резервное копирование конфигурационных файлов в директории /etc. Для этого пишем пару скриптов в /usr/local/sbin. Если этой директории нет, создаём ее:

mkdir /usr/local/sbin

cd /usr/local/sbin

touch bk-etc.sh

touch bk-da0s1d.sh

Чтобы через 2-3 года было понятно, что это такое и зачем оно нужно, прямо в имени файла напишем, резервная копия чего у нас этим файлом делается. В данном случае, во втором файле будет скрипт, который будет резервировать раздел винчестера под именем /dev/da0s1d.

ee bk-etc.sh

Содержимое файла:

#!/bin/sh
mount /backup
rm /backup/etc-16.tbz
mv /backup/etc-15.tbz /backup/etc-16.tbz
mv /backup/etc-14.tbz /backup/etc-15.tbz
mv /backup/etc-13.tbz /backup/etc-14.tbz
mv /backup/etc-12.tbz /backup/etc-13.tbz
mv /backup/etc-11.tbz /backup/etc-12.tbz
mv /backup/etc-10.tbz /backup/etc-11.tbz
mv /backup/etc-09.tbz /backup/etc-10.tbz
mv /backup/etc-08.tbz /backup/etc-09.tbz
mv /backup/etc-07.tbz /backup/etc-08.tbz
mv /backup/etc-06.tbz /backup/etc-07.tbz
mv /backup/etc-05.tbz /backup/etc-06.tbz
mv /backup/etc-04.tbz /backup/etc-05.tbz
mv /backup/etc-03.tbz /backup/etc-04.tbz
mv /backup/etc-02.tbz /backup/etc-03.tbz
mv /backup/etc-01.tbz /backup/etc-02.tbz
mv /backup/etc.tbz /backup/etc-01.tbz
tar -cjf /backup/etc.tbz /etc
umount /backup

Сохраняем файл, редактируем второй:

ee bk-da0s1d.sh

#!/bin/sh
mount /backup
rm /backup/da0s1a-2.gz
mv /backup/da0s1a-1.gz /backup/da0s1a-2.gz
mv /backup/da0s1a.gz /backup/da0s1a-1.gz
cat /dev/da0s1a|gzip>/backup/da0s1a.gz
umount /backup

Делаем файлы исполняемыми:

chmod +x bk-*.sh

Добавляем задания в планировщик заданий:

ee /etc/crontab

строки:

1       3       1       *       *       root    /usr/local/sbin/bk-da0s1d.sh>/dev/null
1       1       *       *       *       root    /usr/local/sbin/bk-etc.sh>dev/null

Резервное копирование системного раздела будет делаться ежемесячно, 1 числа в 03:01 утра, а резервное копирование конфигурационных файлов — ежедневно в 01:01.

No comments yet.