====== AIO install ====== ===== Швидка установка "Все в одному" ===== \\ \\ \\ \\ \\ Весь процес установки та налаштування за даною інструкцією від початку і до кінця займає близько півгодини! Мій рекорд 22 хвилини :) \\ Процедура оновлення всіх пакетів відбувається швидко за командою pkg upgrade ===== Встановлення системи ===== Підготовляємо дистрибутив FreeBSD x.x **__Release__** Записуємо завантажений дистрибутив на диск і сміливо приступаємо: Все перевірено на FreeBSD v13.0, v12.1, v11.0-2, v10.1-3 та v9.3! - Під час установки, після вибору локалі, обов'язково вибираємо **SRC** (у майбутньому може знадобиться для перескладання ядра), решта за бажанням (я б не ставив тільки порти та доки, і так їх оновлювати потрібно) - Далі вибрати метод розбивки диска за промовчанням - Auto (UFS) - Тому що розбивати: весь диск або розділ (припустимо весь диск) - установка запропонує найкращий варіант, де під завантажувальний сектор = 512 кб \\ розділ підкачування свап = 1 гб (2*рам але не більше 1 гб) \\ кореневий розділ / = все інше - тиснемо Finish => Commit = пішла установка FreeBSD - потім вводимо пароль для рут-користувача - потім налаштуємо доступ до інтернету - після чого вибираємо часовий пояс - далі можна вибрати які послуги вам потрібні, **SSHD** обов'язково - потім потрібно додати локального користувача помістивши його до групи **wheel** - Установка системи завершена Exit => No => Reboot важливо витягнути інсталяційний диск під час перезавантаження, щоб не розпочати інсталяцію заново Після перезавантаження сервера, підключаємося до нього через SSH, щоб легше копі-пастити ===== Налаштування завантажувача ===== Для прискорення завантаження сервера відключимо таймер завантажувального меню, а також саме меню echo autoboot_delay=\"-1\" >> /boot/loader.conf echo beastie_disable=\"YES\" >> /boot/loader.conf ===== Початкова конфігурація ===== sysrc fsck_y_enable=YES sysrc background_fsck=NO sysrc sshd_enable=YES sysrc firewall_enable=YES sysrc gateway_enable=YES ee /etc/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" де * background_fsck="NO" відключає перевірку дисків у бекграунді та робить при старті * fsck_y_enable="YES" каже "yes" на всі запитання під час перевірки. * 1.1.1.1 - віртуальний ip, який автор налаштовує усім своїх серверах на інтерфейсі lo0. Цей ip клієнти вказують у своїх настройках як dns сервер, сервер авторизації і т.д. * Інтерфейс fxp1 дивиться на шлюз вищого провайдера з ip 1.2.3.1. * Інтерфейс fxp0 дивиться у мережу клієнтів. Відключаємо підтримку X11 та GUI echo 'WITHOUT_X11="yes"' >> /etc/make.conf echo 'WITHOUT_GUI="yes"' >> /etc/make.conf ===== Ставимо PKGNG ===== З вересня 2014 розробники FreeBSD замінили застарілий пакетний менеджер на новий - PKGNG (package new generation). З базової системи були видалені утиліти pkg_* (такі, як: pkg_install, pkg_add, pkg_create, pkg_delete, pkg_info, pkg_updating та pkg_version).\\ [[http://www.freebsd.org/doc/ua/books/handbook/pkgng-intro.html|Посібник FreeBSD:PKGNG]] установка PKGNG pkg bootstrap -f Перекладаємо базу даних портів працювати з PKGNG, відключаємо бекап старої бази, створюємо конфіг PKGNG echo 'WITH_PKGNG="yes"' >> /etc/make.conf echo 'daily_backup_pkgdb_enable="NO"' >> /etc/periodic.conf cp /usr/local/etc/pkg.conf.sample /usr/local/etc/pkg.conf За замовчуванням підключений квартальний репозиторій пакетів, але я вмикаю останній cp /etc/pkg/FreeBSD.conf /etc/pkg/FreeBSD.conf.old sed -i -p "s/quarterly/latest/" /etc/pkg/FreeBSD.conf ee /etc/pkg/FreeBSD.conf url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest", оновимо базу доступних пакетів pkg update -f ===== Ставимо Пакети ====== pkg install perl5 p5-App-cpanminus p5-Crypt-Rijndael p5-JSON p5-JSON-XS p5-LWP-Protocol-https p5-CGI \ bash subversion apache24 mc-nox11 mysql80-server ln -s /usr/local/bin/perl /usr/bin/perl > /dev/null cpanm DBD::mysql ===== Завантажуємо NoDeny Next ====== **на момент написання статті є 3 репозиторії:**\\ * демоверсія ''[[svn://nodeny-plus.com.ua/nodenyfree]]''\\ * стабільна ''[[svn://nodeny-plus.com.ua/release]]''\\ * нова гілка ''[[svn://nodeny-plus.com.ua/release/next]]''\\ я буду використовувати Next і так, завантажуємо білінг cd /usr/local svn co svn://nodeny-plus.com.ua/release/next nodeny ===== Налаштування NAT (pf) ====== echo pf_load=YES >> /boot/loader.conf echo pf_enable=\"YES\" >> /etc/rc.conf cp /usr/local/nodeny/etc/pf.conf /etc/ ee /etc/pf.conf * вписати в ext_if = "fxp1" свій інтерфейс, який у вас дивиться в інет * залишити правило тієї мережі, яка дивиться в локалку Важливо, щоб адреси зовнішньої та внутрішньої мереж не були однаковими! ===== Налаштування збір статистики трафіку (ipcad) ====== echo ipfw_load=\"YES\" >> /boot/loader.conf echo ipdivert_load=\"YES\" >> /boot/loader.conf echo dummynet_load=\"YES\" >> /boot/loader.conf echo ipcad_enable=\"YES\" >> /etc/rc.conf cp /usr/local/nodeny/etc/ipcad.conf /usr/local/etc/ ipcad -d ===== Налаштування firewall ====== Фаєрвол із блокуванням неавторизованих клієнтів cp /usr/local/nodeny/etc/rc.firewall /etc/ ee /etc/rc.firewall Редагуємо rc.firewall, міняємо зовнішній інтерфейс \\ ifOut='fxp1' на той, що у вас дивиться в інет ===== Налаштування mysql ====== sysrc mysql_enable=yes sysrc mysql_optfile=/usr/local/etc/mysql/my.cnf mkdir /var/db/mysql_tmpdir/ chown mysql /var/db/mysql_tmpdir/ service mysql-server start Підключаємося до mysql і встановимо пароль руту mysql -u root # замість hardpass ваш пароль ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'hardpass', `root`@`localhost` PASSWORD EXPIRE NEVER; exit; Підключаємось до mysql з паролем # замість hardpass ваш пароль mysql -u root --password='hardpass' ALTER USER `root`@`localhost` IDENTIFIED BY `hardpass`, `root`@`localhost` PASSWORD EXPIRE NEVER; Створимо базу даних nodeny create database nodeny; use nodeny; source /usr/local/nodeny/bill.sql; exit; ==== Tuning ==== pkg install mysqltuner mysqltuner --user root --pass hardpass --color [[https://stackoverflow.com/a/68738293| fix [Warning] [MY-013360] [Server] Plugin sha256_password reported]] ===== Налаштування apache24 ====== sysrc apache24_enable=yes echo /sbin/kldload accf_http >> /etc/rc.local /sbin/kldload accf_http echo "ServerName 0.0.0.0:80" >> /usr/local/etc/apache24/Includes/httpd.conf echo "LoadModule cgi_module libexec/apache24/mod_cgi.so" >> /usr/local/etc/apache24/Includes/httpd.conf Створимо симлінк на веб-скрипти NoDeny rm -fR /usr/local/www/apache24/cgi-bin rm -fR /usr/local/www/apache24/data ln -s /usr/local/nodeny/cgi-bin/ /usr/local/www/apache24/cgi-bin ln -s /usr/local/nodeny/htdocs/ /usr/local/www/apache24/data service apache24 start mkdir /usr/local/etc/newsyslog.conf.d/ ee /usr/local/etc/newsyslog.conf.d/apache24.conf # Apache /var/log/httpd-access.log www:wheel 600 3 2048 * JC /var/run/httpd.pid 30 /var/log/httpd-error.log www:wheel 600 10 2048 * JC /var/run/httpd.pid 30 # Apache SSL /var/log/httpd-access-ssl.log www:wheel 600 3 2048 * JC /var/run/httpd.pid 30 /var/log/httpd-error-ssl.log www:wheel 600 10 2048 * JC /var/run/httpd.pid 30 service newsyslog restart newsyslog -a /var/log/ [[freebsd:certbot|freebsd:install:certbot]] ===== Налаштування NoDeny Plus ====== Підключимо модулі (-x), встановимо власника та права на файли (-w), створимо стартовий конфіг (-m), створимо суперадміну (-p): cd /usr/local/nodeny perl install.pl -m perl install.pl -x perl install.pl -w=www perl install.pl -p admin=12345 ==== Відновлення з Бекапа ==== Обов'язково скопіювати в папку /usr/local/nodeny/ файли: sat.cfg - файл з налаштуваннями відновлюваної NoDeny backup.sql - файл бази даних, що відновлюється NoDeny Створимо структуру бази nodeny mysql --default-character-set=utf8 -u root -p # вводимо пароль рута drop database nodeny; create database nodeny; exit; #source /usr/local/nodeny/backup.sql; і наповнимо даними з бекапа: mysql --default-character-set=utf8 -u root -p nodeny < /usr/local/nodeny/backup.sql Enter password: # вводимо пароль рута Підключимо модулі (-x), встановимо власника та права на файли (-w): cd /usr/local/nodeny perl install.pl -x perl install.pl -w=www ===== Запуск ядра 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 & ===== Додаткові проги для зручності ====== ==== Установка Webmin ==== pkg install sysutils/webmin /usr/local/lib/webmin/setup.sh sysrc webmin_enable=YES service webmin start не забудьте відкрити у файрволі порти ee /etc/rc.firewall замінити ${f} add 50 allow tcp from any to me 22 ${f} add 51 allow tcp from me 22 to any на ${f} add 50 allow tcp from any to me 22,10000 ${f} add 51 allow tcp from me 22,10000 to any де 10000 = порт webmin ==== Встановлення phpMyAdmin ==== pkg install phpMyAdmin5-php83 mod_php83 php83-iconv Create directory for phpMyAdmin temp files. mkdir -p /usr/local/www/phpMyAdmin/tmp chown -R www:www /usr/local/www/phpMyAdmin/tmp nano /usr/local/www/phpMyAdmin/config.inc.php $cfg['NavigationTreeEnableGrouping'] = false; #Edit the file and set secret passphrase: $cfg['blowfish_secret'] = 'H2OxcGXxflSd8JwrwVlh6KW6s2rER63i'; //Configure Temp directory by add $cfg['TempDir'] = '/usr/local/www/phpMyAdmin/tmp'; У файлі /usr/local/etc/apache24/Includes/httpd.conf допишемо: ee /usr/local/etc/apache24/Includes/httpd.conf DirectoryIndex index.html index.htm index.php index.shtml У папці /usr/local/etc/apache24/Includes створюємо файл php-application.conf ee /usr/local/etc/apache24/Includes/php-application.conf і внесемо до нього ці рядки: SetHandler application/x-httpd-php SetHandler application/x-httpd-php-source Після цього створимо файл /usr/local/etc/php.ini з файлу php.ini-production та надамо йому необхідні права cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini chmod u+w /usr/local/etc/php.ini Після установки є два варіанти налаштування: як аліас або як піддомен === Налаштування phpMyAdmin як аліас === створимо файл phpmyadmin.conf ee /usr/local/etc/apache24/Includes/phpmyadmin.conf з таким змістом: Alias ​​/pma "/usr/local/www/phpMyAdmin/" Options none AllowOverride Limit Order Deny,Allow Require all granted DirectoryIndex index.php Перезапустимо apache service apache24 restart === Налаштування phpMyAdmin як піддомен === ee /usr/local/etc/apache24/Includes/vhost_db.example.org.conf вставляємо наступне DocumentRoot "/usr/local/www/phpMyAdmin" ServerName db.example.org ServerAlias ​​db.local ErrorLog "/var/log/apache/db.example.org-error.log" CustomLog "/var/log/apache/db.example.org-access.log" common AllowOverride None Options None Require all granted де \\ example.org - ваш домен \\ db.example.org - ваш піддомен для phpMyAdmin \\ також не забудьте створити файли логів, інакше apache буде дуже сваритися mkdir -p /var/log/apache/ touch /var/log/apache/db.example.org-error.log touch /var/log/apache/db.example.org-access.log Перезапускаємо apache service apache24 restart ===== Встановлення BRAS ===== BRAS - Broadband Remote Access Server - у перекладі, сервер віддаленого широкосмугового доступу. Він покликаний здійснювати авторизацію абонентів у мережі. Зазвичай складається з бази даних, Radius'а та точок доступу. Але кожна мережа має свій вибір...