ee /usr/local/etc/apache22/httpd.conf
Include etc/apache22/extra/httpd-ssl.conf
mkdir /usr/local/etc/apache22/ssl chmod 700 /usr/local/etc/apache22/ssl cd /usr/local/etc/apache22/ssl openssl genrsa -out server.key -rand randfile -des3 2048
openssl req -new -x509 -key server.key -out server.crt -days 800
openssl rsa -in server.key -out server.key
chmod 400 server.key
ee /usr/local/etc/apache22/extra/httpd-ssl.conf
SSLCertificateFile "/usr/local/etc/apache22/ssl/server.crt" SSLCertificateKeyFile "/usr/local/etc/apache22/ssl/server.key"
apachectl restart
https://10.0.0.2/
tail /var/log/httpd-error.log
Необходимо поменять пароли пользователям root и nodeny в mysql, если при установке вы использовали такие же как в документации.
mysqladmin -u root -p'hardpass' password new_VERY_hard_PASS
mysql> use mysql; mysql> update user set password=PASSWORD("NEWPASSWORD") where User='nodeny'; mysql> flush privileges; mysql> quit
После изменения пароля nodeny измените его в sat.cfg.
Создайте себе вторую учетную запись без прав суперадмина, этим вы обезопасите себя в случае когда отойдете от компьютера - если кто-то подойдет к нему, не сможет поменять настройки, добавить/изменить администраторов, удалить клиентов, платежи и т.д
Gzip сжатие apache2
AddOutputFilterByType DEFLATE text/html text/plain text/css <Location /> SetOutputFilter DEFLATE BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # Don't compress images SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary </Location>
Инструкция по установке максимально упрощена для того, чтобы быстро получить работающее решение:
cd /usr/src/sys/i386/conf/ cp GENERIC NODENY ee NODENY
options IPFIREWALL options IPDIVERT options IPFIREWALL_FORWARD options DUMMYNET
Если есть желание облегчить ядро - убираем все упоминания о SCSI, принтере, SLIP и т.д. Не перестарайтесь - в будущем это оборудование у вас может появится, в частности не комментируйте дорогие сетевые карты, возможно в скором времени они у вас появятся. Рекомендуем отключить все ISA-сетевые, их век безвозвратно ушел.
#cpu I486_CPU #cpu I586_CPU
config NODENY cd ../compile/NODENY make depend make make install
NoDeny+ предоставляет хорошие возможности по масштабированию. Вы можете разделить NoDeny+ по серверам как для увеличения производительности так и для безопасности. Что можно делить:
Сервера распределенной системы могут работать под разными операционными системами, что позволяет использовать их преимущества для тех задач, с которыми они лучше справляются.
Все части системы взаимодействуют через БД, поэтому эта часть NoDeny+ должна быть доступна по сети как можно меньшими задержками. Более всего это относится к связке ядро - база данных.
NAS обычно располагаются в тех районах, которые они обслуживают. Если объем передаваемых данных о статистике трафика слишком нагружает канал к серверу с ядром, либо же высокие задержки при опросе коллекторов, возможно есть смысл установить коллекторы трафика не на районном NAS, а на центральном, агрегирующем трафик с районов.
Настройте NAS на маршрутизацию и NAT (если необходимо) так, чтобы клиенты получали доступ в интернет без управления NoDeny+.
В простейшем случае на удаленном NAS можно установить копию всего проекта, имеется ввиду содежимое каталога /usr/local/nodeny. Файл sat.cfg хранит параметры соединения с БД. Укажите в нем ip сервера с БД. Затем на сервере с БД создайте учетную запись nodeny с ip вашего NAS (в примере 1.2.3.4).
CREATE USER 'nodeny'@'1.2.3.4' IDENTIFIED BY 'hardpass'; GRANT SELECT ON `nodeny`.* TO 'nodeny'@'1.2.3.4';
Этим разрешается выполнение только команд SELECT, что улучшает безопасность системы в целом, поскольку NAS на районах обычно менее защищены чем центральные сервера. Таким образом, взлом NAS, например физическим доступом, не приведет к повреждению данных биллинга, а максимум к утечке информации.
Большую защищенность может дать не выдача глобального права SELECT на все таблицы, а лишь на определенные. Еще большую защищенность обеспечит создание VIEW для определенных групп клиентов и выдача права SELECT исключительно на необходимые маршрутизатору VIEW. Эти действия необходимо осуществить после настройки и понимания какие именно таблицы БД будут использоваться запускаемыми на NAS модулями.
perl nokernel.pl -L
Вместо ошибки соединения должен вывести список доступных модулей ядра.
Копируйте rc.firewall из nodeny/etc/ в /etc, указав в нем правильный внешний интерфейс(ы). Если на маршрутизаторе не будет запущен коллектор трафика - удаляем строки с divert 1 и divert 2. Иначе устанавливаем ipcad.
Конфиг ipcad.conf от NoDeny+ необходимо модифицировать: указать на какой ip принимать запросы на получение трафика, а также с какого ip. Запросы будет отправлять ядро (допустим, оно запущено на сервере 1.2.3.1), поэтому добавляем строки:
rsh enable at 1.2.3.4; rsh root@1.2.3.1 admin;
Здесь 1.2.3.4 - ip текущего NAS на интерфейсе, который смотрит в сторону серверной NoDeny+.
Разрешите в фаерволе трафик между 1.2.3.1 и 1.2.3.4. Недостаточно разрешить трафик только по порту rsh (по этому протоколу идет получение статистики), поскольку после соединения порты выбираются иные.
# NoDeny Kernel ${f} table 101 add 1.2.3.1 ${f} add 2030 allow ip from "table(101)" to any
Установите автозапуск noserver.pl аналогично как при настройке standalone-сервера. Перезагружайте сервер (чтобы гарантированно удостовериться, что все запустится при следующем внезапном рестарте), включайте доступ «Всегда онлайн» тестируемым клиентам и проверяйте доступ в интернет.
Настройка pppoe сервера не отличается от standalone варианта. В конфиге mpd нужно указать ip Radius-а, который можно установить на сервере с БД. На сервере с Radius в фаерволе необходимо разрешить соединения от 1.2.3.4 на udp порты 1812 и 1813.
Сервер L2-авторизации сложно пробрасывать, поэтому рекомендуем запустить его отдельную копию на самом NAS, т.е. запустить nokernel с конфигом, в котором в состоянии run=>1 только модуль authserver. Модуль auth запускать не нужно - только одна копия этого процесса должна существовать в NoDeny+.
Для функционирования модуля L2-авторизации кроме SELECT необходима привилегия EXECUTE.
Заходим по ssh. Если не заходит - пингуем. Проблема с фаерволом маловероятна - правила для разрешения ssh идут самыми первыми.
df -h ps ax | grep mysql
ps ax | grep pl
ifconfig
В админке клиенты авторизованы? На титульной странице отмечается время когда последний раз. Если больше минуты - проблема с авторизацией, тогда:
cd /usr/local/nodeny svn up perl install.pl -x
Если вы внесли изменения в код NoDeny, а не создали патчи, то при svn up скорее всего будет конфликт. Возможно, вы сможете правильно «смержить» файлы. Если же не получилось, либо получилось с ошибкой - удалите файл и запустите svn up снова.
Вполне вероятно вам понадобится внести какие-либо изменения в код NoDeny+, например, поменять некоторые тексты, сообщения, а возможно удалить или добавить какую-нибудь фичу. Мы настоятельно рекомендуем не править напрямую существующий код, поскольку последущие обновления затрут ваши изменения и вам придется их заново вносить. NoDeny+ не стоит на месте, постоянно появляются новые возможности, поэтому необходимо время от времени обновлять его. Практически гарантированно обновления не нарушат работу вашей системы, они будут проходить безболезненно. В особых случаях, мы будем предупреждать в форуме о важных изменениях и их последствиях. В любом случае, svn позволяет очень просто откатиться к любой из предыдущих версий если вдруг что-то не заработает или просто появится чувство, что что-то не так.
В NoDeny+ есть система, которая накладывает патчи на существующий код. Она работает по иному принципу чем, скажем, утилита patch. Последняя требует, чтобы в файле присутствовал определенный фрагмент в определенной строке кода, если он будет иным, то патч не будет применен. Из-за такого поведения, зачастую не удастся наложить патч на иную версию файла, т.е. пачти пишутся под конкретную версию продукта.
В NoDeny+ мы постарались, чтобы патчи не зависели от версии биллинга. Здесь не изменяются какие-либо фрагменты кода, здесь вносятся цельные фрагменты кода в определенные места, называемые «хуками». Хук - это метка в файле, начинающаяся с фрагмента «#<HOOK>». При изменении файла, например, при выходе новой версии NoDeny+ или накладывании патча от иного модуля, положение метки может измениться, что не приведет к проблемам как в случае утилиты patch.
Давайте напишем патч «web-заглушки» - изменим текст сообщений для клиентов. Скопируем в папку /usr/local/nodeny/modules/MyNetwork файл web/lang/RU_cap.pl и переименуем его в create.lang.RU_cap.pl.
cd /usr/local/nodeny/modules/MyNetwork cp ../../web/lang/RU_cap.pl create.lang.RU_cap.pl
Если имя файла начинается с «create.» - инсталлятор (install.pl -x) будет создавать новый файл, если «patch.» - модифицировать существующий. Вторая часть имени не важна, но автор рекомендует давать ей осмысленное имя. В данном случае мы намекнули (себе), что будет создан файл lang/RU_cap.pl. Имя создаваемого файла находится внутри самого файла и оно будет web/lang/RU_cap.pl. Чаще всего правятся файлы в папке web, поэтому мы решили в именах файлов опускать слово «web».
Абсолютно все созданные и измененные файлы будут иметь имена, начинающиеся со знака подчеркивания! Это фантомы. Фантом считается главней основного файла, т.е. если существует фантом - основной файл игнорируется. Если удалить фантом, данные будут браться из основного файла. Запомните: основные файлы не изменяются. Создается фантом на основе основного файла и в него вносятся изменения. При обновлении NoDeny+ обновляются основные файлы. install.pl -x заново создает фантомы на основе изменений в основных файлах.
Инсталлятор создаст web/lang/_RU_cap.pl, который будет иметь приоритет перед web/lang/RU_cap.pl, вернее, последний будет игнорироваться системой.
Так же, мы упомянули, что имя создаваемого файла задается в самом файле create.lang.RU_cap.pl, поэтому в начале этого файла добавляем строку:
#<ACTION> file=>'web/lang/RU_cap.pl',hook=>'new'
Также вносим какие-либо изменения в текст. Запускаем патчинг:
cd /usr/local/nodeny perl install.pl -x less web/lang/_RU_cap.pl
Если же необходимо внести какое-либо изменение в существующий файл, а не создавать новый, то, напоминаем, имя файла, начинаем с «patch.», скажем, patch.RU.pl с текстом:
#<ACTION> file=>'web/lang/RU.pl',hook=>'end' $test_test = { msg => 'Yes!!!' };
Здесь мы дали указание добавить текст «$test_test...» в файл web/lang/RU.pl в то место, где находится строка «#<HOOK>end». Если вам не хватает каких-либо хуков, т.е вы хотите внести изменение в место, где нет хука, обратитесь в форум - мы внесем этот хук в код.
Прочитав как следует вносить изменения в NoDeny, изменим название пункта меню «Liqpay» клиентской статистики. Для этого необходимо изменить языковые файлы web/lang/RU.pl и web/lang/UA.pl. Создадим файл modules/MyNetwork/patch.LANG.pl:
#<ACTION> file=>'web/lang/RU.pl',hook=>'user_menu_buttons' u_lpay => 'оплатить пластиковой картой',