Безопасное облако ownCloud

Безопасное облако ownCloud Сертификаты

Введение

ownCloud — платформа обмена файлами и совместной работы с открытым исходным кодом, предназначенная для централизованного хранения персонального контента, в том числе документов и изображений. Платформа позволяет полностью контролировать контент и его безопасность, не полагаясь на такие сторонние службы хостинга, как Dropbox.

В этом обучающем руководстве мы научимся устанавливать и настраивать экземпляр ownCloud на сервере Ubuntu 18.04.

Схема

Имеем:

image

Установка ownCloud


Собственно все действия по мануалу и математика из репозиториев.

Система Ubuntu 12.03 LTS — LAMP (при установке LAMP не забудьте пароль root)

Для работы с LDAP необходимо доставить php5-ldap

$sudo apt-get	install php5-ldap


Для хранения данных мы используем отдельный сервер с доступом по NFS.

На сервере-хранилище NFS-storage

ставим nfs сервер

$ sudo apt-get install nfs-kernel-server

Правим /etc/exports добавляя строчку:

/var/owncloud 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)


Создаем папку и меняем ей права:

$sudo mkdir -p /var/owncloud
$sudo chown root:www-data /var/owncloud

Перепускаем nfs сервер:

$sudo /etc/init.d/nfs-kernel-server restart

С хранилкой закончили.

На серверах-клиентах

nfs ставим:

$ sudo apt-get istall nfs-common


Правим vim /etc/rc.local перед exit 0 добавляем строчку: (для монтирования NFS папки при загрузке системы, пишу в этот файл потому как использование /etc/fstab вызывало тяжело преодолимые проблемы)

Установка MySQL

Устанавливаем MySQL:

apt-get install mysql-client mysql-server

Создаем пароль для базы данных MySQL и идем дальше.

Важно: пароль не должен совпадать с паролем суперпользователя.

Теперь немножко позаботимся о нашей безопасности, вводим в консоль:

mysql_secure_installation 

На все вопросы кроме «Change the root password» (Если не хотите менять пароль MySQL) отвечаем положительно Y.

Входим в консоль управления MySQL и вводим пароль (его не видно):

 mysql -u root -p 

Создаем базу данных:

 create database Имя_БД; 

Создаем пользователя, желательно с именем как и у базы данных:

Установка и настройка NGINX


На сервере NGINX

$sudo apt-get install nginx

Создаем файл конфигурации для сайта перенаправления

$ sudo vim /etc/nginx/sites-available/cloud

Правим до такого состояния.

Установка ntp для синхронизации времени на сервере

Устанавливаем ntp клиент:

 apt-get install ntp ntpdate 

Теперь меняем сервер синхронизации времени на ближайший:

 sudo gedit /etc/ntp.conf 

В открывшемся фале находим:

server 0.debian.pool.ntp.org iburst dynamic
server 1.debian.pool.ntp.org iburst dynamic
server 2.debian.pool.ntp.org iburst dynamic
server 3.debian.pool.ntp.org iburst dynamic


Меняем на адреса ближайших к нам npt серверов, например на:

Настройка репликации master — master MySQL

На cloud1

# vim /etc/mysql/my.cnf 

добавляем строчки

[mysqld]
#Replication
log-bin=mysql-bin
binlog_format=mixed
server-id = 1      /* для каждого сервера уникальный */
slave-compressed = 1
binlog-do-db = cloud  /* название базы для репликации */
#bind-address           = 127.0.0.1 /* что бы можно было подулючаться с других машин*/

На cloud2

# vim /etc/mysql/my.cnf 

добавляем строчки

[mysqld]
#Replication
log-bin=mysql-bin
binlog_format=mixed
server-id = 2      /* для каждого сервера уникальный */
slave-compressed = 1
binlog-do-db = cloud  /* название базы для репликации */
#bind-address           = 127.0.0.1 /* что бы можно было подулючаться с других машин*/

Заводим пользователя для репликации на обоих серверах.

На cloud1

пользователь repl2 с доступом с IP 192.168.1.11 и паролем u_pass (должны быть права на базу cloud и привелегии SELECT, RELOAD, SUPER, REPLICATION SLAVE)

mysql> grant replication slave on *.* to 'repl2'@192.168.1.12 identified by 'u_pass';

На cloud2

пользователь repl1 с доступом с IP 192.168.1.12 и паролем u_pass (должны быть права на базу cloud и привелегии SELECT, RELOAD, SUPER, REPLICATION SLAVE)

mysql> grant replication slave on *.* to 'repl2'@192.168.1.11 identified by 'u_pass';


Далее приводим обе базы в идентичное состояние:

На cloud1

mysql> FLUSH TABLES WITH READ LOCK;
mysql> show master status;
 ------------------ ---------- -------------- ------------------ 
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
 ------------------ ---------- -------------- ------------------ 
| mysql-bin.000009 |  107     | cloud        |                  |
 ------------------ ---------- -------------- ------------------ 
1 row in set (0.00 sec)

Делаем дамп базы cloud

Настройка

Редактируем файл /etc/apache2/sites-enabled/000-default:

 sudo gedit /etc/apache2/sites-enabled/000-default 


Находим строчку в разделе “”:

Про сертификаты:  Что не так с этим SSL? — Хабр Q&A

AllowOverride None

Меняем на:

AllowOverride All

Сохраняем файл и выходим.

Перезапускаем apache:

 service apache2 restart 

Редактируем php.ini:

 sudo gedit /etc/php5/apache2/php.ini 

Находим строчки:

mysql.default_socket =
mysql.cache_size =
memory_limit = 
post_max_size =  
upload_max_filesize =

Меняем на:

mysql.default_socket=/var/run/mysqld/mysqld.sock
mysql.cache_size = 4000
upload_max_filesize = 1024M       //максимальный размер файла который мы можем загрузить на наш сайт
post_max_size = 1024M                //Должен быть больше или равен upload_max_filesize 
memory_limit = 1024M                  //Должен быть больше или равен post_max_size


Сохраняем файл и выходим.

Перезапускам apache еще раз:

 service apache2 restart 

Клиенты

Воткактотак 🙂

Установка ownCloud

Загружаем последнюю версию ownCloud, на момент написания ownCloud 6:

 cd /var/www/ 

Owncloud установка и настройка

Здравствуйте, уважаемые.

Данная статья посвящена актуальному на данный момент продукту, облаку где можно держать разного рода контент.
Не спорю что существует масса предложений такие как DropBox, iCloud и еще другие о которых возможно я не в курсе, но не всегда мы доверяем этим гигантам свои дорогие сердцу фотки, музыку, документы и т.п…
Тут мы задаемся вопросом о том что, не ужели не существует такого рода предложения от OpenSource сообщества, и вот оно решение

OwnCloud.

Далее хочу рассмотреть процесс установки на мой взгляд очень полезного продукта.

Для установки нам необходимы:

-Apache
-MySQL
-PHP>5.3 (php-zip, php-zlib, php-mbstring)

Думаю установки указанного свыше продуктов не вызовет проблем у читателей, ну а если то это уже другая история.

Приступим, для начало нам необходимо закачать стабильную версию облака с официального сайта разработчиков

Ссылка на закачку.

Распаковываемым файл и добавляем в наш localhost, в моем случаи это /srv/www/htdocs/ и попробуем перейти на наше новосозданное облако, для этого набираем localhos/owncloud и увидем следующее:

image

Вводим логин и пароль Администратора системы.
После чего попадаем в рабочий интерфейс OwnCloud-а, очень удобный и интуитивный интерфейс сделан максимально понятным причем с поддержкой локализации.

Для того чтобы начать синхронизацию наших данных с компьютера или мобильных систем ( Android а также есть приложение под iOS), в нашем случаи рассмотрим вариант для ПК.

image

Ссылка на скачивание

Далее настроем синхронизацию файлов в приложении для ПК, это делается очень легко и удобный интерфейс поможет сделать это даже не особо одаренному пользователю ПК.

После установки в панеле задач у нас появится значок OwnCloud-а, при нажатии мы увидим окошко где уже есть стандартная настройка, можно изменить ее либо добавить новую настройку.

Для добавления новой настройки нажимаем AddSync и далее указываем какую папку из ПК необходимо синхронизировать с сервером.

И вот свершилось через пару секунд наши данные на сервере и можно смело подчищать место на компьютере.

Безопасное облако owncloud

Добрый день, сегодня я расскажу о безопасном хранении данных. Это тема назревала давно, так как
я не доверяю сервисам типа Dropbox, в связи с тем,
что мои данные храняться на чужом сервере и не понятно кто к ним имеет доступ.

И так приступим к установке. Я взял чисто установленный сервер Ubuntu 14.04. Так как
ownCloud убрали из стандартных репозиториев нам надо добавить
репозиторий http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_14.04/ сделать это легко,
открываем файл:

sudo nano /etc/apt/sources.list.d/owncloud.list

И прописываем в него deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_14.04/ /

Облачное хранилище onwCloud

Теперь обновляем список репозиториев:

sudo apt-get update

Устанавливаем сам ownCloud, вместе с ним так же
установятся все необходимые пакеты.

Облачное хранилище onwCloud

Во время установки необходимо задать пароль для mysql

Облачное хранилище onwCloud

После того как все пакеты будут установлены, нам необходимо обезопасить наше хранилище и сделать к нему доступ
только по HTTPS с использованием сертификатов. Для этого мы создаем папку с сертификатами:

sudo mkdir /etc/apache2/ssl

cd /etc/apache2/ssl

Теперь создадим ключ rsa.

sudo openssl genrsa -out owncloud.key 2048
Облачное хранилище onwCloud

Я использую 2048 бит, можете использовать и больше. Я считаю, что 2048 бит вполне достаточно. Теперь подпишем
этим ключем наш новый сертификат.

sudo openssl req -x509 -new -key owncloud.key -days 365 -out owncloud.crt
Облачное хранилище onwCloud

Я поставил срок жизни сертификата в 1 год (365 дней), можете установить любое количество дней. Сертификат можно
выкладывать в открытый доступ, а вот ключ надо хранить как зеницу ока!!! Заполняем данные сертификата.

Про сертификаты:  Заключение договора транспортной экспедиции и экспедиторские документы

Теперь необходимо настроить apache на HTTPS. Для этого открываем файл /etc/apache2/sites-available/default-ssl.conf

sudo nano /etc/apache2/sites-available/default-ssl.conf

В нём меняем e-mail, дописываем в него после строки SSLEngine on стороку SSLProtocol all -SSLv2 тем самым отключаем устаревший протокол. И меняем
два параметра на:

	SSLCertificateFile /etc/apache2/ssl/owncloud.crt #Путь к сертификату
	SSLCertificateKeyFile /etc/apache2/ssl/owncloud.key №Путь к ключу

Теперь с помощью утилит a2enmod и a2ensite говорим apache что надо использовать SSL

sudo a2enmod default-ssl

sudo a2ensite default-ssl

Перезапускаем apache командой:

sudo services apache restart

Заходим на нашес сервер https://НашСервер/owncloud подтверждаем безопасность открытия данной страницы, так как
мы знаем что это наш сервер и его сертификат безопасен. И видим окно логина, задаем имя пользователя и пароль администратора.
Настоятельно рекомендую использовать эти учетные данные только для администрирования сервера.

Облачное хранилище onwCloud

Теперь нам надо сказать ownCloud чтоб он использовал только HTTPS. В правом верхнем углу нажимаем на имя учетной записи и
жмем “Администрирование”, пролистываем почти в самый низ до пункта “Безопасность” и ставим там галочку “Принудить к HTTPS”.
Все готово, теперь создаем пользователей и можно пользоваться своим собственным хранилищем.

Возможности owncloud «из коробки»:

  • Многопоточная загрузка данных «перетягиванием» при помощи технологии drag-and-drop
  • Редактирование прав на доступ к файлам для конкретных пользователей, групп или интернета
  • Подключение и просмотр новостных rss лент
  • Просмотр изображений, видео, офисных документов
  • Синхронизируемый календарь, менеджер задач, менеджер контактов, менеджер веб закладок
  • Отслеживание активности пользователей
  • Защищенное соединение, шифрование данных, ldapwebdav аутентификация
  • Поддержка внешних хранилищ: google drive, dropbox, ftp, smb, webdav, amazon s3, irods, openstack object storage, а так же локальных
  • Клиентские приложения с полной синхронизацией для всех актуальных платформ

Это всего лишь краткий список возможностей ownCloud, но уже сейчас видны его преимущества. При желании можно добавить почтовый клиент, торрент клиент, чат с видео, полноценный офис, проверку фалов на VirusTotal и многое другое.

Перейдем от теории к практике.

Заметки

3. Запрет на удаление файлов

1. Открываем fileactions.js

 Sudo gedit /var/www/owncloud/apps/files/js/fileactions.js 

2. Ищем следующие строки:

	remove the existing delete action
		parent.parent().children().last().find('.action.delete').remove();
		if (actions['Delete']) {
			var img = FileActions.icons['Delete'];
			if (img.call) {
				img = img(file);
			}
			if (typeof trashBinApp !== 'undefined' && trashBinApp) {
				var html = '<a href="#" original-title="'   t('files', 'Delete permanently')   '" class="action delete delete-icon" />';
			} else {
				var html = '<a href="#" class="action delete delete-icon" />';
			}
			var element = $(html);
			element.data('action', actions['Delete']);
			element.on('click', {a: null, elem: parent, actionFunc: actions['Delete']}, actionHandler);
			parent.parent().children().last().append(element);
		} 

3. Комментируем их:

	// remove the existing delete action
	//	parent.parent().children().last().find('.action.delete').remove();
	//	if (actions['Delete']) {
	//		var img = FileActions.icons['Delete'];
	//		if (img.call) {
	//			img = img(file);
	//		}
	//		if (typeof trashBinApp !== 'undefined' && trashBinApp) {
	//			var html = '<a href="#" original-title="'   t('files', 'Delete permanently')   '" class="action delete delete-icon" />';
	//		} else {
	//			var html = '<a href="#" class="action delete delete-icon" />';
	//		}
	//		var element = $(html);
	//		element.data('action', actions['Delete']);
	//		element.on('click', {a: null, elem: parent, actionFunc: actions['Delete']}, actionHandler);
	//		parent.parent().children().last().append(element);
	//	} 

4. Открываем:

 Sudo gedit /var/www/owncloud/apps/files/js/files.js 

5. Находим следующие строчки:

 $('.delete-selected').click(function(event) {
		var files=getSelectedFilesTrash('name');
		event.preventDefault();
		FileList.do_delete(files);
		return false;
	}); 

6. Комментируем их:

 //$('.delete-selected').click(function(event) {
	//	var files=getSelectedFilesTrash('name');
	//	event.preventDefault();
	//	FileList.do_delete(files);
	//	return false;
//	}); 

Настройка доступа к owncloud из интернета через рутер

Рассмотрим пример на основе роутера asus rt-n16:

Предварительные требования

Чтобы выполнить перечисленные в настоящем руководстве шаги, вам потребуется следующее:

  • Пользователь sudo и брандмауэр на вашем сервере. Вы можете создать пользователя с привилегиями sudo и настроить базовый брандмауэр в соответствии с указаниями руководства Начальная настройка сервера Ubuntu 18.04.
  • Стек LAMP. Для работы ownCloud требуются веб-сервер, база данных и PHP. Установка на сервер стека LAMP (Linux, Apache, MySQL и PHP) позволяет удовлетворить все эти требования. Воспользуйтесь этим руководством для установки и настройки данного программного обеспечения.
  • Сертификат SSL. Настройка сертификата зависит от того, присвоено ли вашему серверу доменное имя.

Шаг 1 — установка owncloud

Пакет сервера ownCloud отсутствует в репозиториях Ubuntu по умолчанию. Однако для распространения ownCloud имеется собственный репозиторий, который мы можем добавить на наш сервер.

Для начала загрузите ключ релиза с помощью команды curl и импортируйте его с помощью утилиты apt-key, используя команду add:

Файл Release.key содержит открытый ключ PGP, который apt использует для проверки подлинности пакета ownCloud.

Помимо импорта ключа вам нужно будет создать файл owncloud.list в директории sources.list.d для apt. В этом файле будет содержаться адрес репозитория ownCloud.

Про сертификаты:  Замкнутый круг. Как узбекское консульство в Москве «помогает» гражданам, потерявшим паспорт, вернуться домой: ferghana_blog — LiveJournal

Сейчас мы можем использовать диспетчер пакетов для поиска и установки ownCloud. Вместе с основным пакетом мы установим несколько дополнительных библиотек PHP, которые используются ownCloud для добавления дополнительных функций. Обновите индекс локальных пакетов и установите все необходимое с помощью следующей команды:

Мы установим на сервер все, что нам потребуется, а затем сможем закончить настройку и начать использование службы.

Шаг 2 — настройка корневого каталога документов

Установленный нами пакет ownCloud копирует веб-файлы в директорию /var/www/owncloud на сервере. Конфигурация виртуального хоста Apache настроена для выдачи файлов из другой директории. Нам нужно изменить параметр DocumentRoot в нашей конфигурации, чтобы он указывал на новую директорию.

Чтобы определить, какие файлы виртуального хоста ссылаются на ваше доменное имя или IP-адрес, нужно использовать утилиту apache2ctl с опцией DUMP_VHOSTS. Отфильтруйте результаты по доменному имени или IP-адресу вашего сервера, чтобы определить, какие файлы нужно отредактировать с помощью следующих нескольких команд:

Результаты будут выглядеть примерно так:

Output

*:443 server_domain_or_IP (/etc/apache2/sites-enabled/server_domain_or_IP-le-ssl.conf:2) port 80 namevhost server_domain_or_IP (/etc/apache2/sites-enabled/server_domain_or_IP.conf:1)

В скобках показаны все файлы, ссылающиеся на доменное имя или IP-адрес, которые мы будем использовать для доступа к ownCloud. Это те файлы, которые вам нужно отредактировать.

Откройте каждый из совпадающих файлов в текстовом редакторе с привилегиями sudo:

Найдите в каждом из файлов директиву DocumentRoot. Измените эту строку так, чтобы она указывала на директорию /var/www/owncloud:

Example DocumentRoot edit

Сохраните файл и закройте его после завершения. Завершите эту процедуру для каждого из файлов, ссылающихся на ваше доменное имя (или на IP-адрес, если у вашего сервера нет доменного имени).

Закончив редактирование, проверьте синтаксис файлов Apache и убедитесь, что в конфигурации отсутствуют заметные опечатки:

Output

Syntax OK

В зависимости от вашей конфигурации вы можете увидеть предупреждение относительно настройки параметра ServerName как глобального. Если в конце страницы результатов отображается надпись Syntax OK, вы можете игнорировать это предупреждение. Если вы видите дополнительные ошибки, проверьте отредактированные файлы на наличие ошибок.

Если файлы прошли проверку синтаксиса, перезапустите службу Apache для активации изменений:

Теперь Apache должен выводить ваши файлы ownCloud с вашего сервера.

Шаг 3 — настройка базы данных mysql

Прежде чем перейти к настройке веб-конфигурации, нам нужно настроить базу данных. В процессе настройки веб-конфигурации нам нужно указать имя базы данных, имя пользователя базы данных и пароль для базы данных. Все это необходимо ownCloud для подключения к базе данных MySQL и управления своими данными.

Для начала войдите в базу данных как администратор MySQL:

Если вы задали использование пароля для учетной записи MySQL root, используйте следующий синтаксис:

Создайте выделенную базу данных для ownCloud. Для удобства мы присвоим базе данных имя owncloud:

Примечание. Каждый оператор MySQL должен заканчиваться точкой с запятой (;). Обязательно проверьте это, если у вас возникнут проблемы.

Затем создайте отдельную учетную запись пользователя MySQL для управления созданной базой данных. Создание баз данных и учетных записей с одной функцией является хорошей идеей с точки зрения управления и безопасности. Выберите предпочитаемое имя пользователя. Для целей этого обучающего модуля мы решили использовать имя owncloud.

Предупреждение. Обязательно введите реальный пароль там, где в команде стоит: owncloud_database_password

С назначенным пользователем доступом к базе данных выполните операцию очистки привилегий, чтобы работающему экземпляру MySQL было известно о недавнем назначении привилегий:

Теперь вы можете закрыть сеанс MySQL с помощью следующей команды:

Мы установили сервер ownCloud и настроили базу данных. Теперь можно переходить к настройке приложения ownCloud.

Заключение

ownCloud позволяет воспроизводить возможности популярных сторонних облачных сервисов хранения файлов. Контентом можно делиться с другими пользователями или делать его общедоступным через публичные URL. Преимущество ownCloud заключается в том, что вы контролируете место хранения данных и управляете им без использования сторонних услуг.

Изучите интерфейс и установите плагины из магазина приложений ownCloud, если вам требуются дополнительные возможности.

Оцените статью
Мой сертификат
Добавить комментарий