Заметку пишу скорее для себя, чтобы было где искать в случае отсутствия шпаргалки, но может кому пригодится, жаль нельзя прикреплять файлы, ладно, буду делать ссылки на другой сервер. Авторство данного текста не полностью мое, спасибо одному хорошему человеку.
Ну начнем, во-первых, для файервола используем готовую сборку турецкого товарища, славно потрудившегося над своим проектом Comixwall, где на базе операционной системы OpenBSD собран очень неплохой файервол с использованием нескольких прокси (веб-прокси, IM-прокси, FTP-прокси, SOCKS, SMTP, POP-прокси), а также ssh-сервер, веб-сервер (для управления файерволом через веб-интерфейс), вирусный фильтр ClamAV, спам-фильтр SpamAssassin, DNS, DHCP-сервер, система обнаружения вторжений Snort и пр… Все это дело рулится с вебморды, что очень облегчает как создание правил файервола, так и конфигурирование остальных настроек сервера. Все это дело весит около 110 мегабайт, качаем с сайта Comixwall. Там же есть подробная документация по установке и настройке сервера, в списке доступных языков веб-интерфейса присутствует русский, спасибо опять же вышеупомянутому человеку :)
После установки имеем минимальный рабочий набор правил файервола, который далее правим по своему желанию. Кстати, в наборе правил по умолчанию присутвуют несколько примеров проброса портов и пр. фишки, так что лучше ознакомиться с ним подробнее.
В общем, файервол готов, далее нам нужен сервер статистики и пр. В исходный дистрибутив разработчик файервола наотрез отказался включать систему биллинга (во избежание дыр MySQL и пр.), что в принципе верно, но мы, в силу ограниченности ресурсов, все же попробуем установить Netams на это же железо.
Первым делом доустанавливаем компоненты OpenBSD (далее речь пойдет о версии OpenBSD 4.5 и созданном ее этой базе файервола):
Качаем файлик comp45.tgz в зависимости от версии ОС и архитектуры )пример для OpenBSD 4.5 x86x64 — ftp://ftp.openbsd.org/pub/OpenBSD/4.5/amd64/comp45.tgz
cd /
tar xzvpf comp45.tgz
Ставим порты:
cd /tmp
ftp ftp://ftp.openbsd.org/pub/OpenBSD/4.5/ports.tar.gz
cd /usr
sudo tar xzf /tmp/ports.tar.gz
Ставим mysql:
pkg_add -i mysql-server-*
читаем /usr/local/share/doc/mysql/README.OpenBSD
делаем: /usr/local/bin/mysql_install_db
добавляем в rc.local :
# Start MySQL server
if [ -x /usr/local/bin/mysqld_safe ]; then
echo -n ' mysqld'
/usr/local/bin/mysqld_safe —user=_mysql —open-files=1000 —skip-networking —socket=/var/run/mysql/mysql.sock &
fi
стартуем сервер...
/usr/local/bin/mysqld_safe —user=_mysql —open-files=1000 —skip-networking —socket=/var/run/mysql/mysql.sock &
меняем пароль на мускульного рута:
/usr/local/bin/mysqladmin -u root password 'new-password'
Логинимсо в мускул:
mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with; or \g.
Your MySQL connection id is 2
Server version: 5.0.51a-log OpenBSD port: mysql-server-5.0.51ap1
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> drop database test;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
Забираем из CVS'а последний NetAMS:
cd ~/distr
cvs -d :pserver:netams@netams.netams.com:/netams/cvs checkout netams
cvs -d :pserver:netams@netams.netams.com:/netams/cvs checkout www2
Обновляем базу locate'а (чтобы мускуль нашелся):
/usr/libexec/locate.updatedb
и
ln -s /usr/local/lib/mysql/libmysqlclient.so.19.0 /usr/local/lib/libmysqlclient.so
далее в каталоге с нетамсом ./configure.sh
создастся файл Rules.make
в нем должен быть прописан mysql: DEFINE += -DUSE_MYSQL -I/usr/local/include/mysql
LIB += -lmysqlclient -L/usr/local/lib
также раскоментируем строку: DEFINE += -DUSE_CLI_ENABLE (command interface)
правим пути на свои:
+PATH_TO_ETC=/etc/netams
+PATH_TO_WWW=/var/www/htdocs/comixwall/netams
+PATH_TO_CONFIG=/etc/netams
+PATH_TO_SCRIPTS=/etc/netams
создаём недостающие каталоги:
mkdir -p /etc/netams/apache2/sites-available/netams
(каталог с веб-админкой будет лежать вместе с комиксом поэтому то што в /etc/netams/apache2/sites-available/netams нам не понадобитсо наверна)
(netams пришлось пропатчить снова на k=0 в ds_libpcap.c ибо без этого патча не стартует с двумя data_source'ами, хотя с одним стартует)
далее собираем и устанавливаем:
make && make install
Создаём конфиг netams.conf
добавляем в rc.local после запуска mysql:
# NetAMS start
sleep 1
mkdir -p /var/run/netams
if [ -x /usr/local/libexec/netams ]; then
if [ -f /etc/netams/netams.conf ]; then
/usr/local/libexec/netams -lf /etc/netams/netams.conf &
echo -n ' NetAMS started'
fi
fi
стартуем /usr/local/libexec/netams -lf /etc/netams/netams.conf &
проверяем стартанул ли:
ps aux | grep netams (если нет тогда лезем в /var/log/netams.log и man netams)
правим /var/www/conf/httpd.conf . Ищем в нем сроку AddHandler cgi-script .cgi и раскомментируем ее.
лезем в /var/www/htdocs/comixwall/netams/cgi-bin/config.cgi и правим там пароли для подключения к нетамсу и к мускулу
то же самое делаем и в /var/www/htdocs/comixwall/netams/cgi-bin/admin/config.cgi
также в /var/www/htdocs/comixwall/netams/cgi-bin/netams_html.cgi правим две переменных:
$images = /stat/images на /netams/images
$url = /stat/netams_html.cgi на /netams/cgi-bin/netams_html.cgi
Если платформа i386 тогда ставим патч на статистику netams_statistic_pl_i386.diff (в поледней сборке CVS 3.4.2 (3463.1) вроде как пашет и без этого).
Для избавления от матюков апача про ошибки типа: "panic: attempt to copy freed scalar 202de78b0 to 202de7958" или "Use of freed value in iteration"
рекомендуетс поставить патч по имени netams_admin_statistic_cgi.patch.
Также в /var/www/htdocs/comixwall/netams/cgi-bin/netams_api.pl находим строчку:
if ( $welcome ne "\r\n# " ) {и меняем символ '#' на '>', иначе вебморда не соединится с нетамсом.
для отображения графиков надо поставить 3 перловых библиотеки (именно в такой последовательности):
GD-2.35.tar.gz
GDTextUtil-0.86.tar.gz
GDGraph-1.44.tar.gz
берем их здесь http://search.cpan.org/
Ставятсо просто: распаковываем в каталог, далеее
perl Makefile.PL
make
make test
make install
Также поставить Crypt::GeneratePassword (иначе не сможете рулить разделом Accounts через вебморду)
переабуваем апач.
стучимсо на https://IP-adress/netams/cgi-bin/admin/index.cgi
должно пахать.
Далее следует прикрутить костыль в крон на проверку запущенности нетамса proc_chk.sh ибо отваливается переодически сцуко (в файлик cron от рута).
# NetAMS check every 5th minute
*/5 * * * * /bin/sh /root/proc_chk.sh > /dev/null
# NetAMS db rotate every week
3 30 * * 0 /bin/sh /root/mysql_rotate.pl > /dev/null
Вариант с использованием pflow вместо libpcap
Openbsd 4.5 — с этой версии в ней появился ядерный генератор потоков netflow
правим pf.conf:
добавляем строку
set state-defaults pflow, no-sync
Для того, чтобы все правила без явно указанного keep state по-умолчанию имели опцию генерации нетфлоу потока. Там где указано явно keep state добавляем (pflow) например так:
pass in log on $int_if proto tcp from $int_net to !$int_if port www keep state pflow)
далее ставим на тот же компьютер нетамс. в netams.conf в раздел data-source пишем:
service data-source 1
type netflow
listen 127.0.0.1 20002
source 127.0.0.1
прописываем остальные параметры и стартуем нетамс.
конфигурим интерфес пфлоу:
ifconfig pflow0 flowsrc 127.0.0.1 flowdst 127.0.0.1:20002
эту же строку засовываем в rc.local чтобы интерфес стартовал после перезагрузки.
Дальше можно залогиниться телнетом в нетамс и врубить debug flow для проверки получения потоков нетфлоу. Отключается отладка следующей командой — no debug flow
Если вдруг возникла необходимость вести учет трафика не только по конкретным хостам, но и использовать авторизацию пользователей и квотировать трафик, потребляемый юзерами. К сожалению, в OpenBSD отсутствуют аналоги ipq (Linux) или, к примеру divert (FreeBSD), поэтому средствами нетамса блокировать трафик не получится. Поэтому для авторизации пользователей и подсчета трафика можно воспользоваться связкой PoPToP + Netams + pf
Установка PoPToP
перед установкой PoPToP устанавливаем pptp
# cd /usr/ports/net/pptp/
# make install
Перенаправление IPv4-пакетов между сетевыми интерфейсами у нас уже включено, необходимо разрешить использование протокола GRE:
sysctl -w net.inet.gre.allow=1
А также добавить в /etc/sysctl.conf:
net.inet.gre.allow=1
Устанавливаем poptop из портов:
cd /usr/ports/net/poptop<br >make install clean
Правим /etc/pptpd.conf
option /etc/ppp/option.pptpd
noipparam # Иначе в логах получим "Configuration label not found"
Остальные параметры должны быть закомментированы
Перейдем к настройке PPP. В файле /etc/ppp/ppp.conf cтроки, оканчивающиеся на ``:'', вводятся без отступа в начале строки. Остальные строки должны быть введены с отступом.
default:
set log Phase Chat LCP IPCP CCP tun command
disable ipv6cp
pptp:
enable MSCHAPv2
set timeout 0
set mppe 128 stateless
enable proxy
set ifaddr 192.168.200.1 # Адрес сервера (пример)
set dns 192.168.xxx.xxx # ДНС-сервер
# set ifaddr 0 0
Создание или изменение учетных записей пользователей производится за счет редактирования файла /etc/ppp/ppp.secret
# Authname Authkey Peer's IP address Label Callback
username password 192.168.200.10 userpass
Выставляем корректные права доступа:
chmod 600 /etc/ppp/ppp.{conf,secret}Запускаем pptpd:
/usr/local/sbin/pptpd
В /etc/rc.local добавляем автозапуск pptpd:
if [ -x /usr/local/sbin/pptpd ]; then
/usr/local/sbin/pptpd
fi
Далее, в правилах pf добавляем интерфейс tun в список локальных интерфейсов:
int_if_our_interface = "{ vr0, tun }"
Разрешаем входящие соединения от клиентов на внутренний интерфейс по порту 1723/tcp, а также GRE-трафик к и от клиентов. Ну и прописываем пользователей. На этом настройка пакетного фильтра заканчивается, теперь необходимо немного изменить конфигурацию Netams.
В список локальных сетей добавим сеть vpn (файл /root/local-nets.txt), определим автоюниты (netams.conf):
auto-units 2 type host naming prefix2 sm_vpn_ group habtel
unit net name sm_vpn ip 192.168.200.0/24 auto-units 2
В случае с источником данных netflow больше ничего не трогаем, ежели используется libpcap, в качестве источника данных определяем интерфейс tun.
Вот, как-то так)) Далее будут дополнения и изменения, вопросы в комментах приветствуются :)
8 ноября 2009 |


