- 1 Создаём Jail
- 2 Открываем доступ по SSH к данному Jail
- 2 установка и подготовка к работе owncloud
- 1 Устанавливаем необходимые пакеты
- 10 Скачиваем и устанавливаем актуальную версию OwnCloud
- 11 Создаём задание в crone:
- 2 Создаём самоподписанные ключи и сертификаты
- 3 Включаем автозапуск web-сервера, PHP и базы данных
- 4 Устанавливаем редактор для удобного редактирования конфигов
- 5 Корректируем конфиг веб-сервера nginx
- 6 Корректируем конфиг php
- 7 Корректируем php-fpm.conf:
- 8 Корректируем /var/db/mysql/my.cnf:
- 9 Запускаем веб-сервер nginx, PHP, MariaDB и настраиваем базу данных:
- 1 Устанавливаем fail2ban из портов:
- 2 Настраиваем логирование в ownCloud:
- 3 Создаём файл фильтра для fail2ban:
- 4 Редактируем файл настроек сервисов:
- 5 Проверяем работает ли наш фильтр и может ли он найти в логе ownCloud нужные строки с попытками неудачного входа:
- 6 Настраиваем действия, которые будут производится в случае неудавшихся попыток входа:
- 7 Запускаем fail2ban:
- 5 уведомление о блокировке ip-адреса
- 1 Настраиваем уведомления pushover о неудачных попытках входа и бане:
- Certificate ‘freenas_default’ has expired.
- Freenas 8.2. (8.3) руководство, глава 4 (7)
- Generating an x.509 certificate for ftp-over-ssl on freenas
- Параметры ftp
1 Создаём Jail
Данный шаг описывать не буду. Если у вас получилось установить FreeNAS и он у вас работает, то проблем с данным шагом у вас быть не должно. Создание первого Jail может занять довольно продолжительное время.
2 Открываем доступ по SSH к данному Jail
Удобнее всего дальнейшую настройку выполнять не через web-терминал, а через полноценную программу-терминал. Например,
putty
. Для этого откроем доступ по
SSH
к нашему
Jail
и создадим нового пользователя, от которого и будем проводить дальнейшую настройку.
Выбираем в web-интерфейсе FreeNAS созданный нами Jail и нажимаем внизу кнопку Shell.
В веб-консоли Jail вводим:
# sysrc sshd_enable="YES"
Запускаем демон для работы
ssh
# service sshd start
Создаём пользователя от имени которого будем потом настраивать нашу систему. Пользователь будет иметь привилегии
2 установка и подготовка к работе owncloud
Присоединяемся с помощью программы-терминала к нашему Jail.
Вводим имя созданного нами пользователя и его пароль.
На приглашение командной строки
$
пишем
su
. Теперь приглашение командной строки сменится на что-то типа
root@ownCloud:/usr/home/superstepa #
1 Устанавливаем необходимые пакеты
Сначала обновляем текущие пакеты:
# pkg upgrade
Затем устанавливаем необходимые для работы ownCloud пакеты (на все возникающие вопросы отвечаем
yes
# pkg install mariadb100-server php56-extensions php56-bz2 php56-curl php56-exif php56-fileinfo php56-gd php56-mbstring php56-mcrypt php56-pdo_mysql php56-openssl php56-zip php56-zlib pecl-APCu pecl-intl
Для того, чтобы включить работу по
10 Скачиваем и устанавливаем актуальную версию OwnCloud
смотрим текущую актуальную версию
ownCloud
. На момент написания статьи это была версия
8.0.2
Скачиваем архив, где вместо 8.0.2 указываем текущую актуальную версию:
11 Создаём задание в crone:
# setenv EDITOR nano // для редактирования будем использовать установленный нами редактор nano
# crontab -u www -e
Прописываем в нём:
*/15 * * * * /usr/local/bin/php -f /usr/local/www/owncloud/cron.php
Если всё было прописано верно, то мы получим следующее системное сообщение:
crontab: installing new crontab
Идём теперь в браузере по адресу
2 Создаём самоподписанные ключи и сертификаты
# cd /usr/local/etc/nginx/
Создаём корневой ключ server.key (алгоритм шифрования
des3
, длиной 1024 bit):
# openssl genrsa -des3 -out server.key 1024
Для этого система дважды попросит ввести парольную фразу. Придумываем её и вводим.
Создаём корневой сертификат:
# openssl req -new -key server.key -out server.csr
Отвечать на вопросы можно как угодно. Главное:
— на первый запрос
Enter pass phrase for server.key
ввести правильный пароль от корневого ключа созданного ранее,
— обязательно ответить на все вопросы, иначе клиент ownCloud в дальнейшем может отказаться от синхронизации файлов,
— запомнить введённые данные, чтобы в дальнейшем можно было легко вспомнить, что сертификат именно Ваш,
— запомнить пароль введённый на вопросе
A challenge password []:
Можно изменить срок действия нашего сертификата, например до 10000 дней, добавив в команду выше аргумент
-days 10000
# cp server.key server.key.org //копируем наш ключ
# openssl rsa -in server.key.org -out server.key //удаляем пароль из ключа
# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt // Генерируем сертификат
3 Включаем автозапуск web-сервера, PHP и базы данных
# sysrc nginx_enable="YES" php_fpm_enable="YES" mysql_enable="YES"
4 Устанавливаем редактор для удобного редактирования конфигов
Всё-таки мы еще «маленькие» и пользоваться предустановленным редактором
vi
нам еще сложновато, поэтому поставим простенький редактор
nano
(на все возникающие вопросы отвечаем
yes
# pkg install nano
5 Корректируем конфиг веб-сервера nginx
Как настоящие администраторы, всегда перед корректировкой конфига делаем его копию, чтобы в случае возникновения проблем всегда можно было откатиться назад:
# cp /usr/local/etc/nginx/nginx.conf /usr/local/etc/nginx/nginx.old
И редактируем файл конфига:
# nano /usr/local/etc/nginx/nginx.conf
Выход из редактора по нажатию Ctrl X. Не забываем при выходе сохранять изменения.
6 Корректируем конфиг php
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
# nano /usr/local/etc/php.ini
7 Корректируем php-fpm.conf:
# cp /usr/local/etc/php-fpm.conf /usr/local/etc/php-fpm.old
# nano /usr/local/etc/php-fpm.conf
8 Корректируем /var/db/mysql/my.cnf:
# cp /var/db/mysql/my.cnf /var/db/mysql/my.old
# nano /var/db/mysql/my.cnf
9 Запускаем веб-сервер nginx, PHP, MariaDB и настраиваем базу данных:
# service nginx start && service php-fpm start && service mysql-server start
Если всё было сделано верно, то всё запустится без ошибок и можно попробовать пройти в браузере по адресу
1 Устанавливаем fail2ban из портов:
# cd /usr/ports/security/py-fail2ban
# make install clean
2 Настраиваем логирование в ownCloud:
Создаём файл в который будут писаться логи ownCloud при неудачной попытке входа:
touch /var/log/owncloud-acces.log
Файл должен быть доступен для записи пользователю www:
# cd /var/log/
# chown www:www owncloud-acces.log
Включаем логирование неудачных входов в ownCloud:
# nano /usr/local/www/owncloud/config/config.php
3 Создаём файл фильтра для fail2ban:
nano /usr/local/etc/fail2ban/filter.d/owncloud.conf
[Definition]
failregex={"app":"core","message":"Login failed: user '.*' , wrong password, IP:<HOST>","level":2,"time":".*"} // для версий ownCloud<= 7.0.1
{"app":"core","message":"Login failed: '.*' (Remote IP: '<HOST>', X-Forwarded-For: '.*')","level":2,"time":".*"} // для версий ownCloud=7.0.2-7.0.5
{"reqId":".*","remoteAddr":"<HOST>","app":"core","message":"Login failed: .*","level":2,"time":".*"} // для версий ownCloud>=8
По сути это парсер, который во всей той служебной информации, которую ownCloud пишет в свой лог, должен найти ip-адрес того, кто пытался подобрать пароль на вход. Те элементы, что никогда не меняются в записях лога — указаны тут в явном виде. Те, что меняются — заменены на *. Ну а собственно ip-адресс, который мы ищем, заменён на переменную <HOST>.
4 Редактируем файл настроек сервисов:
# cp /usr/local/etc/fail2ban/jail.conf /usr/local/etc/fail2ban/jail.old
# nano /usr/local/etc/fail2ban/jail.conf
5 Проверяем работает ли наш фильтр и может ли он найти в логе ownCloud нужные строки с попытками неудачного входа:
# fail2ban-regex /var/log/owncloud-acces.log /usr/local/etc/fail2ban/filter.d/owncloud.conf
Если всё верно, то внизу выдачи будет строка вида:
Lines: 2 lines, 0 ignored, 2 matches, 0 missed [processed in 0.0 sec]
6 Настраиваем действия, которые будут производится в случае неудавшихся попыток входа:
# cp /usr/local/etc/fail2ban/action.d/bsd-ipfw.conf /usr/local/etc/fail2ban/action.d/bsd-ipfw.local
# nano /usr/local/etc/fail2ban/action.d/bsd-ipfw.conf
Оставляем в нём всё по умолчанию. В нём уже прописано правило, что при отправке в бан, ip-адрес добавляется в table(1) файервола
ipfwactionban = ipfw table <table> add <ip>
Добавляем в сам файервол
ipfw
правило, блокирующее все ip-адреса, находящиеся в таблице table(1), т.к. пока нет никаких правил у файервола что делать с адресами из этой нашей таблицы(1):
# ipfw add 1 deny all from table(1) to me
7 Запускаем fail2ban:
Перед запуском создадим для
fail2ban
файл описывающий действие pushover-notify, о котором была уже речь выше и о котором мы ещё поговорим:
#touch /usr/local/etc/fail2ban/action.d/pushover-notify.conf
Прописываем автостарт fail2ban в /etc/rc.conf:
# sysrc fail2ban_enable="YES"
И запускаем его:
# /usr/local/etc/rc.d/fail2ban start
Если всё сделали правильно, то он запустится, если нет — разбирайтесь где ошибка. Если запустился, то проверяем на бан: заходим со стороннего ip-адреса с неправильным паролем. Должно забанить на время, которое мы указали в файле
jail.conf
5 уведомление о блокировке ip-адреса
Для push-уведомлений будем использовать сервис pushover.net. Я думаю Вам теперь не составит труда разобраться с его API. Но если возникнут сложности, то пишите в комментариях и я добавлю соотвествующее описание по работе с данным сервисом.
1 Настраиваем уведомления pushover о неудачных попытках входа и бане:
# nano /usr/local/etc/fail2ban/action.d/pushover-notify.conf
, где
[API Token/key (application key)]
Certificate ‘freenas_default’ has expired.
Hi RdJustRd, I never actually found an answer but through trial and error i am up and running with a good cert.
I’ll tell you what i learned…my previous build was 11.3u2 running great, shut down to move system to a new location in the house and when i plugged back in and tried to power up, both my (mirrored usb) boot devices failed at the same time. Weird! Re-installed 11.3u2, imported my pool and reconfigured my system. Learned the hard way because I did not save my configuration, so had to start from scratch. Anyway, after i was all setup, i updated to 11.3u5 and thats when i noticed the “expired cert”. Tried reinstalling and re configuring a couple more times with the same result. Finally i just downloaded the latest version 11.3u5, reinstalled that, re configured, imported my pool and Bingo! All Good! Hope this helps. I am happy to help with anything i can.
Freenas 8.2. (8.3) руководство, глава 4 (7)
Закладка Email, показанная на рисунке 4.6d, использется для конфигурирования настроек электронной почты на системе FreeNAS. Таблица 4.6c суммирует настройки которые могут быть сконфигурированы на закладке Email.
ПРИМЕЧАНИЕ: важно сконфигуриовать возможность отправки электронной почты системой. Автоматический скрипт передаёт ночные сообщения электронной почты, содержащие важную информацию, такую как состояние дисков, для аккаунта root. Предупреждение о тревогах также передаётся электронными сообщениями для аккаунта пользователя root.
Рисунок 4.6d: Закладка Email
Таблица 4.6с: Настройки конфигурации закладки Email
4.6.4 Закладка SSL
Когда вы изменяете значение Protocol на HTTPS в System->Settings->General, автоматически генерируются неподписанный RSA сертификат и ключ. После генерации, сертификат и ключ отображаются в поле SSL Certificate в System->Settings->SSL, показанное на рисунке 4.6е. Если вы хотите использовать подписанный сертификат для SSL/TLS соединения, разместите значения в поле SSL certificate, скопировав/вставив ваш ключ и сертификат. Сертификат может использоваться для безопсного HTTP соединения (включается в Settings->General Tab) для системы FreeNAS. Таблица 4.6d суммирует настройки которые могут быть конфигурированы на закладке SSL. Это howto [
http://www.akadia.com/services/ssh_test_certificate.html]
показывает как вручную сгенерировать ваш сертификат используя OpenSSL и предоставляет пример для тех же значений которые показыны в таблице 4.6d.
Рисунок 4.6e: Закладка SSL
Таблица 4.6d: Настройки конфигурации закладки SSL
4.7 Sysctl
sysctl(8)[
http://www.freebsd.org/cgi/man.cgi?query=sysctl]
– интерфейс который используется для изменений запуска ядра FreeBSD на системе FreeNAS. Он может использоваться для тонкой настройки системы. С помощью sysctl(8) могут быть установлены более 5 тысяч системных переменных. Каждая переменная известная как MIB, состоит из разделённого точками набора компонентов. Поскольку MIB относятся к настройкам ядра, их описание можно найти в страницах руководства FreeBSD (например sysctl(3)[
http://www.freebsd.org/cgi/man.cgi?query=sysctl&sektion=3]
, tcp(4)[
http://www.freebsd.org/cgi/man.cgi?query=tcp]
и tuning(7)[
http://www.freebsd.org/cgi/man.cgi?query=tuning]
) и во множестве разделов руководства пользователя FreeBSD [
http://www.freebsd.org/handbook]
.
ОПАСНО! Изменение значений sysctl MIB является расширенной функцией, мгновенно сказывающейся на ядре системы FreeNAS. Не изменяйте MIB на рабочей системе, в том случае, если вы не понимаете последствий изменения. Не правильная настройка MIB может привести к сбою системы, её недоступности через сеть или к панике ядра под нагрузкой. Определённые изменения могут нарушить предположения сделанные программным обеспечением FreeNAS. Это означает, что вы должны предварительно проверять влияние любых изменений на тестовой системе. FreeNAS предоставляет графический интерфейс для управления sysctl MIB. Для добавления syscl, перейдите в меню System->Sysctl->Add Sysctl, как показано на рисунке 4.7a.
Рисунок 4.7а: Добавление Sysctl
Таблица 4.7а суммирует опции добавления sysctl.
Таблица 4.7а: Добавление sysctl
Variable (Переменная) строка должно быть описано в формате разделения точками, например kern.ipc.shmax
Value (Значение) целое или строка значение связанное с MIB; не устанавливайте просто так, обратитесь к соответствующим указаниям в страницах руководства или учебниках
Comment (Комментарий) строка опиционально, но полезно для запоминания значений и причин установки MIB
Enabled (Включено) флаг снимите флаг для отключения sysctl без её удаления
Как только вы добавили или отредактировали sysctl, переменная запущеного ядра изменит своё значение на указанное вами. До тех пор, пока создана sysctl, её значение будет сохраняться между перезагрузками и обновлениями.
Любые, добавленные вами MIB будут перечислены на странице System->Sysctls->View Sysctls. Для изменения значения MIB, нажмите кнопку Edit. Для удаления MIB, нажмите кнопку Delete.
В данный момент, GUI не отображает sysctl MIB предустановленные в инсталляионном образе. 8.3.0. поставляется со следующими установленными MIB:
kern.metadelay=3
kern.dirdelay=4
kern.filedelay=5
kern.coredump=0
net.inet.tcp.delayed_ack=0
Не добавляйте и не редактируйте MIBS установленный по умолчанию, поскольку они прекроют значения по умолчанию, что может привести к неработоспособности системы.
4.8 Системная информация
Экран System->System Information отображает общую информацию о системе FreeNAS. Информация включает имя хоста, версию сборки, тип ЦП (платформу), доступную память, текущее системное время, время непрерывной работы системы, текущую загрузку системы, и IP адрес используемый для соединения с административным GUI. Пример показан на рисунке 4.8а:
Рисунок 4.8а: Закладка Системная информация
продолжение следует…
Generating an x.509 certificate for ftp-over-ssl on freenas
i’ve been Googling around for a moment on how to create a X.509 PEM certificate and private key for the FTP function in Freenas. I know i can use SFTP but i want to be able to secure the regular FTP protocol using FTP-over-SSL also. I have found how to generate SSH keys and other stuff but nothing specific for X.509 in PEM format.
I would prefer to generate these keys using a website or GUI if possible. I know my way round CLI’s but that doesn’t mean that i’m a fan of them 🙂
I have Freenas 0.7.2 Sabanda (revision 5543) which runs on FreeBSD 7.3-RELEASE-p3 (revision 199506).
Thank you
Параметры ftp
Итак, давайте зайдем на web-интерфейс FreeNAS и проследуем в меню ServicesControl Services
Здесь нажмем на кнопку с изображением гаечного ключа напротив службы FTP, после чего перед нами отобразится окно основных настроек:
Прежде чем настраивать эти параметры, мы приведем краткое описание наиболее интересных пунктов:
