FreeBSD 9.x: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
Немає опису редагування
Немає опису редагування
Рядок 65: Рядок 65:
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
</syntaxhighlight>
</syntaxhighlight>
===Обновляем систему===
<syntaxhighlight lang="bash">
freebsd-update fetch
freebsd-update install
</syntaxhighlight>
Обновляем дерево портов
<syntaxhighlight lang="bash">
portsnap fetch
portsnap extract
</syntaxhighlight>
Ставим perl, обязательно выбирая опцию 'THREADS - Build threaded perl'
<syntaxhighlight lang="bash">
cd /usr/ports/lang/perl5.14/
make install clean
pkg_add -r bash
pkg_add -r subversion
pkg_add -r mc-light
rehash 2> /dev/null
</syntaxhighlight>
Назначаем bash дефолтным для учетной записи root:
<syntaxhighlight lang="bash">
pw usermod root -s /usr/local/bin/bash
</syntaxhighlight>
<syntaxhighlight lang="bash">
echo 'WITHOUT_X11=yes' >> /etc/make.conf
echo 'WITHOUT_GUI=yes' >> /etc/make.conf
</syntaxhighlight>
Загружаем NoDeny+
cd /usr/local
svn co svn://nodeny-plus.com.ua/release nodeny
Настраиваем nat
cp /usr/local/nodeny/etc/pf.conf /etc/
ee /etc/pf.conf
В первой строке указываем интерфейс, который смотрит на вышестоящего провайдера.
pfctl -N -f /etc/pf.conf
Пробуем с клиентского компьютера получить доступ в интернет через наш сервер. Пингуем с него 8.8.8.8.
Если не пингуется
tcpdump -ifxp1 -p -n icmp
Если пакеты, идущие на 8.8.8.8 идут от ip клиента, значит nat у нас не работает. Смотрим pf.conf все ли мы верно там указали.
На клиентском компьютере в качестве DNS устанавливаем опять же ip 8.8.8.8 (DNS от Google). Проверяем ping ya.ru
Настраиваем локальный DNS
Команды bash
echo named_enable=YES >> /etc/rc.conf
ee /etc/namedb/named.conf
Редактируем named.conf
    listen-on { 127.0.0.1; 1.1.1.1; };
Команда bash
/etc/rc.d/named forcerestart
На клиентском компьютере в качестве DNS устанавливаем 1.1.1.1.
Настраиваем сбор статистики трафика
pkg_add -r ipcad
echo ipcad_enable=YES >> /etc/rc.conf
cp /usr/local/nodeny/etc/ipcad.conf /usr/local/etc/
ipcad -d
ipfw add 10 divert 1 ip from any to any not via lo0
rsh 0 show ip acco
Фаервол с блокировкой неавторизованных клиентов
Команды bash
cp /usr/local/nodeny/etc/rc.firewall /etc/
ee /etc/rc.firewall
Редактируем rc.firewall, меняем внешний интерфейс
ifOut='fxp1'
Команда bash
reboot
После перезагрузки проверяем, что все модули подгрузились.
С клиентского компьюетра пингуем ya.ru. Адрес Яндекса получаем, но ping не идет
Если ip Яндекса не получен: не работает локальный DNS либо неправильно настроен фаервол либо у клиента в качестве DNS указан не 1.1.1.1.
Если ping идет - фаервол не загружен
Выполняем
ipfw table 100 add 0.0.0.0/0
Пинг должен пойти. В противном случае
ps ax | grep ipcad
ipfw show
Выполняем
rsh 0 show ip acco
Получаем таблицу, по которой видна информация по трафику между клиентом и Яндексом.
Устанавливаем MySQL-сервер
pkg_add -r mysql55-server
Создаем конфиг
cp /usr/local/share/mysql/my-huge.cnf /etc/my.cnf
ee /etc/my.cnf
Редактируем my.cnf, секция [mysqld]
skip-character-set-client-handshake
skip-name-resolve
Стартуем mysql-сервер
/usr/local/etc/rc.d/mysql-server forcestart
Устанавливаем пароль root в mysql
mysqladmin -u root password 'hardpass'
Автозапуск при старте системы
echo mysql_enable=YES >> /etc/rc.conf
Создаем структуру БД NoDeny+
mysql -u root --password='hardpass'
Команды mysql
create database nodeny;
use nodeny;
source /usr/local/nodeny/bill.sql;
Устанавливаем Web-сервер
pkg_add -r apache22
Автозапуск
echo apache22_enable=YES >> /etc/rc.conf
echo /sbin/kldload accf_http >> /etc/rc.local
Стартуем
apachectl start
Открываем в браузере
http://10.0.0.1/
Если не получаем приветствующего сообщения «It works!» - смотрим логи
tail /var/log/httpd-error.log
Устанавливаем модули perl:
cd /usr/ports/databases/p5-DBD-mysql && make install clean
cd /usr/ports/security/p5-Crypt-Rijndael && make install clean
cd /usr/ports/converters/p5-JSON && make install clean
cd /usr/ports/converters/p5-JSON-XS && make install clean
Завершаем установку NoDeny+
По умолчанию во FreeBSD путь к cgi-bin и корню www: /usr/local/www/apache22/. Следующие команды удалят cgi-bin и data (www корень), после чего создадут символические линки на папки cgi-bin и htdocs внутри /usr/local/nodeny/
rm -fR /usr/local/www/apache22/cgi-bin
rm -fR /usr/local/www/apache22/data
ln -s /usr/local/nodeny/cgi-bin/ /usr/local/www/apache22/cgi-bin
ln -s /usr/local/nodeny/htdocs/ /usr/local/www/apache22/data
Подключим модули (-x), установим владельца и права на файлы (-w), создадим стартовый конфиг (-m), создадим суперадмина (-p):
cd /usr/local/nodeny
perl install.pl -x
perl install.pl -w=www
perl install.pl -m
perl install.pl -p admin=12345
Входим в админку под логином admin и паролем 12345
http://10.0.0.1/cgi-bin/stat.pl
Если в левом верхнем углу появится эмблема NoDeny+, то заходим в настройки и устанавливаем в «да» параметр «установите "да" если путь к изображениям корректен»
Переходим по ссылке с логином текущего администратора в верхнем меню, в нашем случае «admin». Далее по ссылке «Администраторы» и меняем пароль своей учетке, а также выдаем все привилегии.
Изменяем следующие настройки
Тарификация → Денежная еденица
Объекты. Внесите несколько основных улиц вашей сети.
Доп.поля. Удалите поля, которые не потребуются для данных ваших клиентов и добавьте нужные. Например, если вам необходимо поле «Город», то вам необходимо создать запись:
Имя поля: Город
Имя поля в бд: _adr_city
Тип поля: выпадающий список
Регулярное выражение: city
После этого, вам необходимо зайти в настройках в раздел «Объекты» и внести несколько городов, установив параметр «Тип» в значение «city».
Создаем клиентскую учетную запись, после чего устанавливаем в значение «Всегда онлайн» параметр «Авторизация» - это позволит клиенту получить доступ в интернет без авторизации вначале тестирования. Также добавляем ip и услугу «1 Мбит».
Запуск ядра NoDeny+
Ядро NoDeny+ работает в фоне и выполняет следующие функции: обработка авторизаций, сбор статистики трафика, управление услугами и т.д. Конфиги находятся в файлах /usr/local/nodeny/kernel/*.cfg. Обязательный параметр run - указывает будет ли плагин запущен при старте ядра или нет. Если run установлен в 0, то плагин можно запустить только указав его в параметрах командной строки при запуске ядра.
Получим список всех плагинов
perl nokernel.pl -L
Напротив названия модуля 1 означает, что модуль будет запускаться автоматически при старте ядра.
Запускаем ядро со стандартным набором модулей
perl nokernel.pl
Если на консоль не вывело никаких ошибок - ядро успешно запустило все модули.
Запускаем скрипт управления фаерволом
perl noserver.pl -v
Если на консоль не вывело никаких ошибок - ставим в автозагрузку:
echo '/usr/bin/perl /usr/local/nodeny/nokernel.pl -d &' >> /etc/rc.local
echo '/usr/bin/perl /usr/local/nodeny/noserver.pl -d &' >> /etc/rc.local
Запускаем скрипты в фоне
perl /usr/local/nodeny/nokernel.pl -d &
perl /usr/local/nodeny/noserver.pl -d &
Настройка авторизации клиентов
На этом этапе необходимо определиться с технологией подключения и авторизации абонентов. Наиболее распространо:
ipoe + dhcp: удобен для абонентов - не нужно ничего настраивать на компьютере. Однако низкая безопасноть т.к. злоумышленник может подделать свой mac-адрес и пользоваться интернетом за чужой счет
ipoe + dhcp + option82: удобен для абонентов - не нужно ничего настраивать на компьютере. Хорошая безопасность. Однако требует установку управляемых свичей и их настройку.
pppoe: относительно сложен для клиентов. Безопасность лучше чем при dhcp. Небольшое уменьшение пропускной способности внутри сети из-за пересылки дополнительных данных в pppoe протоколе.

Версія за 19:21, 31 липня 2015

Устанавливаем операционную систему

Загружаем с офсайта образ FreeBSD под архитектуру amd64 или i386 в зависимости от типа процессора вашего сервера. Версию желательно выбирать stable

Можно использовать такой вариант установки

  • Выбираем тип установки Standard
  • В FDISK Partition Editor нажимаем «a», т.е. системе выдаем в пользование полный диск
  • В Boot Manager выбираем Standard
  • При разметке диска, установщик выделяет бОльшую его часть разделу /usr, а в нашем случае необходимо место для раздела /var, поскольку там будет хранится база данных, создаем
 1G    /
 1G    swap
 1G    /tmp
 15G   /usr
 xxxG  /var
  • Если же наша установка тестовая, то можно выбрать стандартный вариант, нажав «a»
  • В меню конфигураций выбираем Minimal
  • После установки, инсталятор задаст несколько вопросов, вам стоит обратить внимание на:
    • Would you like to enable SSH login? - выбирайте yes, чтобы можно было зайти по ssh на сервер
    • Соглашайтесь на вопрос создания юзера: укажите свой логин, введите группу 0 (ноль), пароль
    • Введите пароль root.
    • Остальные параметры по умолчанию, за исключением того, что не нужно включать inetd, а также ставить какие-либо пакеты

После первой перезагрузки логинимся по ssh под нашим логином и становимся root-ом:

su

Настраиваем rc.conf

ee /etc/rc.conf

Редактируем rc.conf

hostname="nodeny.com.ua"
defaultrouter="1.2.3.1"
ifconfig_fxp0="inet 10.0.0.1 netmask 255.255.255.0"
ifconfig_fxp1="inet 1.2.3.4 netmask 255.255.255.0"
ifconfig_lo0_alias0="inet 1.1.1.1 netmask 255.255.255.255"
fsck_y_enable="YES"
background_fsck="NO"
sshd_enable="YES"
firewall_enable="YES"
gateway_enable="YES"
named_enable="YES"
background_fsck="NO" отключает проверку дисков в бекграунде и делает при старте, fsck_y_enable="YES" говорит "yes" на все вопросы при проверке.

1.1.1.1 - виртуальный ip, который автор настраивает на всех своих серверах на интерфейсе lo0. Этот ip клиенты указывают в своих настройках в качестве dns сервера, сервера авторизации и т.д.

Интерфейс fxp1 смотрит на шлюз вышестоящего провайдера с ip 1.2.3.1.

Интерфейс fxp0 смотрит в сеть клиентов.

echo '/sbin/ipfw add 100 allow ip from any to any' > /etc/rc.firewall
echo pf_load=\"YES\" >> /boot/loader.conf
echo pf_enable=\"YES\" >> /etc/rc.conf
echo ipfw_load=\"YES\" >> /boot/loader.conf
echo ipdivert_load=\"YES\" >> /boot/loader.conf
echo dummynet_load=\"YES\" >> /boot/loader.conf
echo 'nameserver 8.8.8.8' > /etc/resolv.conf

Обновляем систему

freebsd-update fetch
freebsd-update install

Обновляем дерево портов

portsnap fetch
portsnap extract

Ставим perl, обязательно выбирая опцию 'THREADS - Build threaded perl'

cd /usr/ports/lang/perl5.14/
make install clean
pkg_add -r bash 
pkg_add -r subversion
pkg_add -r mc-light
rehash 2> /dev/null


Назначаем bash дефолтным для учетной записи root:

pw usermod root -s /usr/local/bin/bash


echo 'WITHOUT_X11=yes' >> /etc/make.conf
echo 'WITHOUT_GUI=yes' >> /etc/make.conf

Загружаем NoDeny+

cd /usr/local svn co svn://nodeny-plus.com.ua/release nodeny Настраиваем nat

cp /usr/local/nodeny/etc/pf.conf /etc/ ee /etc/pf.conf В первой строке указываем интерфейс, который смотрит на вышестоящего провайдера. pfctl -N -f /etc/pf.conf Пробуем с клиентского компьютера получить доступ в интернет через наш сервер. Пингуем с него 8.8.8.8. Если не пингуется tcpdump -ifxp1 -p -n icmp Если пакеты, идущие на 8.8.8.8 идут от ip клиента, значит nat у нас не работает. Смотрим pf.conf все ли мы верно там указали.

На клиентском компьютере в качестве DNS устанавливаем опять же ip 8.8.8.8 (DNS от Google). Проверяем ping ya.ru

Настраиваем локальный DNS

Команды bash echo named_enable=YES >> /etc/rc.conf ee /etc/namedb/named.conf Редактируем named.conf

   listen-on { 127.0.0.1; 1.1.1.1; };

Команда bash /etc/rc.d/named forcerestart На клиентском компьютере в качестве DNS устанавливаем 1.1.1.1. Настраиваем сбор статистики трафика

pkg_add -r ipcad echo ipcad_enable=YES >> /etc/rc.conf cp /usr/local/nodeny/etc/ipcad.conf /usr/local/etc/ ipcad -d ipfw add 10 divert 1 ip from any to any not via lo0 rsh 0 show ip acco Фаервол с блокировкой неавторизованных клиентов

Команды bash cp /usr/local/nodeny/etc/rc.firewall /etc/ ee /etc/rc.firewall Редактируем rc.firewall, меняем внешний интерфейс ifOut='fxp1' Команда bash reboot После перезагрузки проверяем, что все модули подгрузились.

С клиентского компьюетра пингуем ya.ru. Адрес Яндекса получаем, но ping не идет Если ip Яндекса не получен: не работает локальный DNS либо неправильно настроен фаервол либо у клиента в качестве DNS указан не 1.1.1.1.

Если ping идет - фаервол не загружен

Выполняем ipfw table 100 add 0.0.0.0/0 Пинг должен пойти. В противном случае

ps ax | grep ipcad ipfw show Выполняем rsh 0 show ip acco Получаем таблицу, по которой видна информация по трафику между клиентом и Яндексом. Устанавливаем MySQL-сервер

pkg_add -r mysql55-server Создаем конфиг cp /usr/local/share/mysql/my-huge.cnf /etc/my.cnf ee /etc/my.cnf Редактируем my.cnf, секция [mysqld] skip-character-set-client-handshake skip-name-resolve Стартуем mysql-сервер /usr/local/etc/rc.d/mysql-server forcestart Устанавливаем пароль root в mysql mysqladmin -u root password 'hardpass' Автозапуск при старте системы echo mysql_enable=YES >> /etc/rc.conf Создаем структуру БД NoDeny+ mysql -u root --password='hardpass' Команды mysql create database nodeny; use nodeny; source /usr/local/nodeny/bill.sql; Устанавливаем Web-сервер

pkg_add -r apache22 Автозапуск echo apache22_enable=YES >> /etc/rc.conf echo /sbin/kldload accf_http >> /etc/rc.local Стартуем apachectl start Открываем в браузере http://10.0.0.1/ Если не получаем приветствующего сообщения «It works!» - смотрим логи tail /var/log/httpd-error.log Устанавливаем модули perl:

cd /usr/ports/databases/p5-DBD-mysql && make install clean cd /usr/ports/security/p5-Crypt-Rijndael && make install clean cd /usr/ports/converters/p5-JSON && make install clean cd /usr/ports/converters/p5-JSON-XS && make install clean Завершаем установку NoDeny+

По умолчанию во FreeBSD путь к cgi-bin и корню www: /usr/local/www/apache22/. Следующие команды удалят cgi-bin и data (www корень), после чего создадут символические линки на папки cgi-bin и htdocs внутри /usr/local/nodeny/ rm -fR /usr/local/www/apache22/cgi-bin rm -fR /usr/local/www/apache22/data ln -s /usr/local/nodeny/cgi-bin/ /usr/local/www/apache22/cgi-bin ln -s /usr/local/nodeny/htdocs/ /usr/local/www/apache22/data Подключим модули (-x), установим владельца и права на файлы (-w), создадим стартовый конфиг (-m), создадим суперадмина (-p): cd /usr/local/nodeny perl install.pl -x perl install.pl -w=www perl install.pl -m perl install.pl -p admin=12345 Входим в админку под логином admin и паролем 12345

http://10.0.0.1/cgi-bin/stat.pl Если в левом верхнем углу появится эмблема NoDeny+, то заходим в настройки и устанавливаем в «да» параметр «установите "да" если путь к изображениям корректен» Переходим по ссылке с логином текущего администратора в верхнем меню, в нашем случае «admin». Далее по ссылке «Администраторы» и меняем пароль своей учетке, а также выдаем все привилегии. Изменяем следующие настройки Тарификация → Денежная еденица Объекты. Внесите несколько основных улиц вашей сети. Доп.поля. Удалите поля, которые не потребуются для данных ваших клиентов и добавьте нужные. Например, если вам необходимо поле «Город», то вам необходимо создать запись: Имя поля: Город Имя поля в бд: _adr_city Тип поля: выпадающий список Регулярное выражение: city После этого, вам необходимо зайти в настройках в раздел «Объекты» и внести несколько городов, установив параметр «Тип» в значение «city». Создаем клиентскую учетную запись, после чего устанавливаем в значение «Всегда онлайн» параметр «Авторизация» - это позволит клиенту получить доступ в интернет без авторизации вначале тестирования. Также добавляем ip и услугу «1 Мбит». Запуск ядра NoDeny+

Ядро NoDeny+ работает в фоне и выполняет следующие функции: обработка авторизаций, сбор статистики трафика, управление услугами и т.д. Конфиги находятся в файлах /usr/local/nodeny/kernel/*.cfg. Обязательный параметр run - указывает будет ли плагин запущен при старте ядра или нет. Если run установлен в 0, то плагин можно запустить только указав его в параметрах командной строки при запуске ядра.

Получим список всех плагинов perl nokernel.pl -L Напротив названия модуля 1 означает, что модуль будет запускаться автоматически при старте ядра.

Запускаем ядро со стандартным набором модулей perl nokernel.pl Если на консоль не вывело никаких ошибок - ядро успешно запустило все модули.

Запускаем скрипт управления фаерволом perl noserver.pl -v Если на консоль не вывело никаких ошибок - ставим в автозагрузку:

echo '/usr/bin/perl /usr/local/nodeny/nokernel.pl -d &' >> /etc/rc.local echo '/usr/bin/perl /usr/local/nodeny/noserver.pl -d &' >> /etc/rc.local Запускаем скрипты в фоне perl /usr/local/nodeny/nokernel.pl -d & perl /usr/local/nodeny/noserver.pl -d &

Настройка авторизации клиентов

На этом этапе необходимо определиться с технологией подключения и авторизации абонентов. Наиболее распространо:

ipoe + dhcp: удобен для абонентов - не нужно ничего настраивать на компьютере. Однако низкая безопасноть т.к. злоумышленник может подделать свой mac-адрес и пользоваться интернетом за чужой счет ipoe + dhcp + option82: удобен для абонентов - не нужно ничего настраивать на компьютере. Хорошая безопасность. Однако требует установку управляемых свичей и их настройку. pppoe: относительно сложен для клиентов. Безопасность лучше чем при dhcp. Небольшое уменьшение пропускной способности внутри сети из-за пересылки дополнительных данных в pppoe протоколе.