Как обезопасить вашу базу данных OrientDB в Ubuntu 16.04

Вступление

OrientDB - это многомодельная база данных NoSQL с поддержкой баз данных документов и графиков. Это приложение Java и может работать в любой операционной системе. Это также полностью ACID-жалоба с поддержкой репликации нескольких мастеров.

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

В этой статье мы вместо этого сосредоточимся на обеспечении безопасности установки версии OrientDB для сообщества, используя только ресурсы, доступные по умолчанию. В частности, вы будете шифровать базу данных OrientDB, ограничивать доступ к веб-серверу OrientDB и экземпляру сервера и управлять учетными записями базы данных OrientDB как из веб-интерфейса, так и из консоли.

Предпосылки

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

В этой статье предполагается, что OrientDB установлен в каталоге/opt/orientdb, как в исходной статье об установке. /opt - традиционное место для установки сторонних приложений в Linux.

[[step-1 -—-ricting-access-to-the-orientdb-web-server]] == Шаг 1 - Ограничение доступа к веб-серверу OrientDB

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

Первым шагом к запуску защищенного приложения OrientDB является защита операционной системы, в которой оно работает. Вы должны запустить брандмауэр. В противном случае следуйте инструкциямInitial Server Setup on Ubuntu 16.04 guide для настройки UFW. Исходное руководство по установке OrientDB позволяет получить доступ к OrientDB Studio из общедоступной сети в целях тестирования, разрешив перенос2480 через брандмауэр.

Если вы хотите, чтобы доступ из Интернета к OrientDB Studio и консоли всегда был запрещен, независимо от настроек брандмауэра, вам просто нужно внести пару изменений в файл конфигурации/opt/orientdb/config/orientdb-server-config.xml.

Откройте этот файл для редактирования.

sudo nano /opt/orientdb/config/orientdb-server-config.xml

Затем найдите тегlisteners:

/opt/orientdb/config/orientdb-server-config.xml

. . .

  
  
  . . .

. . .

И измените параметрыip-address с0.0.0.0 на127.0.0.1.

/opt/orientdb/config/orientdb-server-config.xml


. . .
  
  
  . . .

. . .

Сохраните и закройте файл.

Когда в файл конфигурации вносятся изменения во время работы демона OrientDB, обязательно перезапустите его:

sudo systemctl restart orientdb

Это отключает все подключения к студии из общедоступного Интернета. Теперь попробуйте подключиться к Studio, снова посетивhttp://your_server_ip:2480 в своем браузере. На этот раз в соединении будет отказано.

На этом этапе вы сосредоточились на безопасности от внешней сети. На следующем шаге вы сделаете экземпляр сервера OrientDB более внутренним.

[[step-2 -—- securing-the-orientdb-server-instance]] == Шаг 2 - Защита экземпляра сервера OrientDB

Здесь вы узнаете, как удалить гостевую учетную запись и изменить разрешения файла конфигурации OrientDB.

Одна вещь, которую вы можете сделать для повышения безопасности сервера, - предоставить пользователю OrientDB доступ для чтения и записи к каталогуconfigonly. Разрешение по умолчанию для этого каталога -755, но для него даже не требуется устанавливать бит выполнения.

sudo chmod 600 /opt/orientdb/config

И чтобы еще немного упростить ситуацию, укрепите разрешение самого файла конфигурации.

sudo chmod 600 /opt/orientdb/config/orientdb-server-config.xml

[.Примечание]##

Note: эти разрешения будут установлены на600 по умолчанию вa future version of OrientDB. Однако во время публикации эти шаги все еще необходимы.

Остальные советы по безопасности в этом руководстве будут сделаны через консоль OrientDB, так что подключитесь к ней сейчас.

sudo /opt/orientdb/bin/console.sh

Каждый экземпляр сервера OrientDB может поддерживать несколько баз данных OrientDB. По умолчанию каждый экземпляр сервера поставляется с двумя учетными записями пользователей:guest иroot. Вам была предоставлена ​​возможность установить пароль учетной записи root при первой установке и запуске сервера OrientDB. Хешированная форма пароля хранится в файле конфигурации OrientDB,/opt/orientdb/config/orientdb-server-config.xml. Хешированная форма автоматически сгенерированного пароля для гостевой учетной записи также хранится в этом файле.

В консоли OrientDB вы можете просмотреть информацию об обеих учетных записях, набрав:

list server users

[.Примечание]##

Note: в настоящий момент существуетa bug in OrientDB, который вызовет следующую ошибку при попытке запуститьlist server users:

OutputError: com.orientechnologies.orient.core.exception.OConfigurationException: Cannot access to file ../config/orientdb-server-config.xml

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

cd /opt/orientdb/bin
sudo ./console.sh

Затем вы можете запуститьlist server users, и он будет работать должным образом.

Выходные данные скажут вам, какие разрешения имеют обе учетные записи. Учетная записьguest имеет ограниченные привилегии, но пользователюroot разрешено выполнять все задачи. Вот что обозначает звездочка вместо ее разрешений:

OutputSERVER USERS

- 'guest', permissions: connect,server.listDatabases,server.dblist
- 'root', permissions: *

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

drop server user guest

В следующий раз, когда вы запуститеlist server users из консоли OrientDB, он покажет только пользователяroot. Если вы заглянете внутрь файла/opt/orientdb/config/orientdb-server-config.xml, то увидите, что учетная записьguest была удалена из пользовательского тега.

Теперь, когда экземпляр сервера стал более безопасным, теперь вы сделаете саму базу данных более безопасной.

[[step-3 -—- Restricting-access-to-the-orientdb-database]] == Шаг 3 - Ограничение доступа к базе данных OrientDB

Следующим шагом для обеспечения безопасности вашей установки OrientDB является очень сложное получение несанкционированного доступа к самой базе данных.

По умолчанию каждая база данных OrientDB, которую вы создаете, имеет три встроенных учетной записи со следующими именами пользователей:admin,reader иwriter, каждая с паролем, который совпадает с именем пользователя. Это хорошо для тестирования, но не для производственной системы. По крайней мере, вы должны изменить пароли для всех трех учетных записей. Более того, вы должны удалить или приостановить все, что вам не нужно.

То, как вы решите управлять этими учетными записями, зависит от ваших потребностей и среды. В этом руководстве вы узнаете, как изменить пароль учетной записиadmin, приостановить учетную записьwriter и удалить учетную записьreader. Любое из этих трех действий можно выполнить из консоли OrientDB и из OrientDB Studio на основе браузера.

Управление учетными записями пользователей из консоли OrientDB

Чтобы изменить учетные записи пользователей из консоли, вам необходимо подключиться к базе данных, учетными записями которой вы собираетесь управлять. Этот пример подключается к базе данныхGratefulDeadConcerts, образцу базы данных, который поставляется с каждой установкой OrientDB, с использованием пользователяadmin и пароля по умолчанию (admin):

connect remote:127.0.0.1/GratefulDeadConcerts admin admin

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

OutputConnecting to database [remote:127.0.0.1/GratefulDeadConcerts] with user 'admin'...OK
orientdb {db=GratefulDeadConcerts}>

Чтобы получить список пользователей базы данных, введите следующее. ouser - это запись OrientDB, в которой хранятся пароли пользователей:

select from ouser

Полный вывод должен быть следующим. Обратите внимание, что все три аккаунта имеют статусACTIVE.

Output+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+------+------+
|#   |@RID|@CLASS|name  |password                                                                                                                     |status|roles |
+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+------+------+
|0   |#5:0|OUser |admin |{PBKDF2WithHmacSHA256}6668FC52BF1D2883BEB4DC3A0468F734EA251E6D5B13AC51:39B1E812DEC299DC029A7922E206ED674EB52A6D6E27FE84:65536|ACTIVE|[#4:0]|
|1   |#5:1|OUser |reader|{PBKDF2WithHmacSHA256}1168D930D370A0FB1B6FA11CAFF928CCB412A153C127C25F:0C287793DF156FB72E6E2D9D756E616995BBAC495D4A1616:65536|ACTIVE|[#4:1]|
|2   |#5:2|OUser |writer|{PBKDF2WithHmacSHA256}22D3068CC3A39C08A941B4BF8B4CEB09D2609C20661529E3:8D6DA7FB4AF329234CA643663172EE913764E3096F63D007:65536|ACTIVE|[#4:2]|
+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+------+------+

3 item(s) found. Query executed in 0.736 sec(s).

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

update ouser set password = 'new_account_password' where name = 'admin'

Чтобы отключить пользователяwriter, измените статус сACTIVE наSUSPENDED.

update ouser set status= 'SUSPENDED' where name = 'writer'

Чтобы полностью удалить учетную записьreader из базы данных, используйте:

drop user reader

Если вы выполнили все вышеперечисленное и снова просмотрели список учетных записей, вы увидите следующий вывод. Один из аккаунтов отсутствует, а другой заблокирован:

Output+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+---------+------+
|#   |@RID|@CLASS|name  |password                                                                                                                     |status   |roles |
+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+---------+------+
|0   |#5:0|OUser |admin |{PBKDF2WithHmacSHA256}6668FC52BF1D2883BEB4DC3A0468F734EA251E6D5B13AC51:39B1E812DEC299DC029A7922E206ED674EB52A6D6E27FE84:65536|ACTIVE   |[#4:0]|
|1   |#5:2|OUser |writer|{PBKDF2WithHmacSHA256}22D3068CC3A39C08A941B4BF8B4CEB09D2609C20661529E3:8D6DA7FB4AF329234CA643663172EE913764E3096F63D007:65536|SUSPENDED|[#4:2]|
+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+---------+------+

После выполнения всех задач управления пользователями вы можете отключиться от базы данных (то есть закрыть ее), набрав:

disconnect

Управление учетными записями пользователей OrientDB из OrientDB Studio

В этом разделе вы узнаете, как управлять учетными записями пользователей OrientDB из OrientDB Studio. Для начала запустите студию, посетивhttp://your_server_ip:2480 в своем браузере. Если вы ограничили доступ к Studio на шаге 1, вам нужно будет повторно разрешить его.

Первый экран, который вы увидите, это экран входа в систему. Войдите в систему, используяroot и пароль, который вы использовали при установке OrientDB. После входа в систему щелкните вкладкуSecurity. На этой странице вы увидите всех трех пользователей по умолчанию.

Чтобы изменить пароль учетной записиadmin:

  1. ЩелкнитеEDIT в столбцеActions, после чего откроется небольшое окноEdit User.

  2. Измените пароль в полеpassword.

  3. ЩелкнитеSAVE USER.

Чтобы удалить учетную записьreader:

  1. Нажмите кнопкуDELETE в столбцеActions учетной записи.

Чтобы приостановить учетную записьwriter:

  1. ЩелкнитеEDIT под егоActions, после чего откроется небольшое окноEdit User.

  2. В раскрывающемся менюStatus выберитеSUSPENDED.

  3. ЩелкнитеSAVE USER.

На следующем шаге вы узнаете, как зашифровать базу данных OrientDB в состоянии покоя.

[[step-4 -—- encrypting-the-orientdb-database]] == Шаг 4 - Шифрование базы данных OrientDB

OrientDB поддерживает зашифрованные базы данных, что обеспечивает дополнительную безопасность хранимых данных. Вы можете зашифровать базу данных OrientDB только тогда, когда она создается; если вам необходимо зашифровать существующую базу данных, вам придется экспортировать и импортировать ее в зашифрованную базу данных. В этом разделе мы рассмотрим процесс шифрования базы данных во время создания.

OrientDB поддерживает алгоритмы шифрования AES и DES, но AES предпочтительнее, потому что он сильнее. Нам нужно установить ключ шифрования, создать базу данных и указать метод шифрования (AES или DES). Обратите внимание, что длина ключа шифрования должна составлять 24 символа, а последние два символа должны быть==.

Чтобы сгенерировать ключ шифрования, вы можете использоватьpwgen, инструмент генерации пароля.

sudo apt-get install pwgen

Затем сгенерируйте одиночный 24-символьный ключ, оканчивающийся на==, с помощью следующей команды:

echo `pwgen 22 1`==

Не забудьте хранить этот ключ в надежном месте, как если бы вы были паролем. Чтобы установить ключ шифрования для новой базы данных, которую вы хотите создать, введите следующую команду в консоль OrientDB:

config set storage.encryptionKey Ohjojiegahv3tachah9eib==

Затем создайте зашифрованную базу данных, используя этот ключ. Это создает зашифрованную базу данных на основе документов в локальной файловой системе (plocal).

create database plocal:/opt/orientdb/databases/name_of_encrypted_db root root_password plocal document -encryption=aes

Вы автоматически подключитесь к новой базе данных, и приглашение изменится, чтобы отразить это. Чтобы отключиться от базы данных, просто введите:

encrypted-db}>'>disconnect

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

config set storage.encryptionKey Ohjojiegahv3tachah9eib==

Затем, чтобы открыть базу данных, вы должны набрать:

connect plocal:/opt/orientdb/databases/name_of_encrypted_db admin admin_password

Обратите внимание, что хотя вы можете создать новую базу данных из OrientDB Studio, вы не можете создать зашифрованную. Во время публикации вы можете создать зашифрованную базу данных только с консоли.

Заключение

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

На данный момент вы можете получить дополнительную информацию о безопасности OrientDB, посетивthis OrientDB documentation по этой теме.

Related