18/09/2018, 16:26

Làm thế nào để bảo vệ cơ sở dữ liệu OrientDB của bạn trên Ubuntu 16.04

Giới thiệu OrientDB là một cơ sở dữ liệu NoSQL đa mô hình với sự hỗ trợ cho các cơ sở dữ liệu tài liệu và đồ thị. Nó là một ứng dụng Java và có thể chạy trên bất kỳ hệ điều hành nào. Nó cũng hoàn toàn ACID-khiếu nại với sự hỗ trợ cho nhân rộng đa chủ. Trong hộp, OrientDB có một tư thế bảo mật ...

Giới thiệu

OrientDB là một cơ sở dữ liệu NoSQL đa mô hình với sự hỗ trợ cho các cơ sở dữ liệu tài liệu và đồ thị. Nó là một ứng dụng Java và có thể chạy trên bất kỳ hệ điều hành nào. Nó cũng hoàn toàn ACID-khiếu nại với sự hỗ trợ cho nhân rộng đa chủ.

Trong hộp, OrientDB có một tư thế bảo mật rất tốt trong việc kết nối với cá thể máy chủ và kết nối với một cơ sở dữ liệu, cả hai đều yêu cầu xác thực. Các chương trình bảo mật khác, như xác thực Kerberos và người dùng LDAP cũng được hỗ trợ, nhưng chúng liên quan đến việc thiết lập các hệ thống phần mềm bổ sung.

Trong bài viết này, chúng tôi sẽ tập trung thay vào đó để đảm bảo cài đặt phiên bản Cộng đồng của OrientDB chỉ sử dụng các tài nguyên có sẵn theo mặc định. Cụ thể, bạn sẽ mã hóa cơ sở dữ liệu OrientDB, hạn chế quyền truy cập vào máy chủ web OrientDB và cá thể máy chủ và quản lý các tài khoản cơ sở dữ liệu OrientDB từ cả giao diện người dùng web và giao diện điều khiển.

Điều kiện tiên quyết

Để làm theo hướng dẫn này, bạn sẽ cần những điều sau đây:

  • Một máy chủ Ubuntu 16.04 được thiết lập với một người dùng và tường lửa không phải root, như trong Thiết lập máy chủ ban đầu trên Ubuntu 16.04 hướng dẫn.
  • OrientDB Community Edition được cài đặt trên máy chủ bằng hướng dẫn cài đặt OrientDB này cho Ubuntu 16.04.

Bài viết này giả định OrientDB được cài đặt trong /opt/orientdb thư mục, như trong bài viết cài đặt gốc. /opt là vị trí truyền thống để cài đặt các ứng dụng của bên thứ ba trong Linux.

Bước 1 - Hạn chế quyền truy cập vào máy chủ Web OrientDB

OrientDB là một ứng dụng máy chủ web thông thường, nhưng nó không có ý định tiếp xúc với Internet hoặc các mạng công cộng. Quyền truy cập quản lý vào nó phải được giới hạn trong mạng cục bộ.

Bước đầu tiên để chạy một ứng dụng OrientDB an toàn là bảo vệ hệ điều hành mà nó đang chạy. Bạn nên chạy tường lửa. Nếu không, hãy làm theo Thiết lập máy chủ ban đầu trên hướng dẫn Ubuntu 16.04 để thiết lập UFW. Hướng dẫn cài đặt OrientDB ban đầu cho phép truy cập vào OrientDB Studio từ mạng công cộng cho mục đích thử nghiệm bằng cách cho phép cổng 2480 thông qua tường lửa.

Nếu bạn muốn đảm bảo truy cập từ Internet đến OrientDB Studio và bảng điều khiển luôn bị từ chối, bất kể cài đặt tường lửa, bạn chỉ cần thực hiện một vài thay đổi đối với tệp cấu hình, /opt/orientdb/config/orientdb-server-config.xml.

Mở tệp đó để chỉnh sửa.

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

Sau đó tìm kiếm listeners nhãn:

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

. . .
<listeners>
  <listener protocol="binary" socket="default" port-range="2424-2430" ip-address="0.0.0.0"/>
  <listener protocol="http" socket="default" port-range="2480-2490" ip-address="0.0.0.0">
  . . .
</listeners>
. . .

Và thay đổi ip-address thông số từ 0.0.0.0 đến 127.0.0.1.

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

<listeners>
. . .
  <listener protocol="binary" socket="default" port-range="2424-2430" ip-address="127.0.0.1"/>
  <listener protocol="http" socket="default" port-range="2480-2490" ip-address="127.0.0.1">
  . . .
</listeners>
. . .

Lưu và đóng tập tin.

Khi một thay đổi được thực hiện cho tệp cấu hình trong khi trình tiện ích OrientDB đang chạy, hãy chắc chắn khởi động lại nó:

sudo systemctl restart orientdb

Điều đó cắt đứt tất cả các kết nối với Studio từ Internet công cộng. Bây giờ hãy thử kết nối với Studio bằng cách truy cập http://your_server_ip:2480 trong trình duyệt của bạn một lần nữa. Lần này, kết nối sẽ bị từ chối.

Trong bước này, bạn tập trung vào bảo mật từ mạng bên ngoài. Trong bước tiếp theo, bạn sẽ làm cho cá thể máy chủ OrientDB an toàn hơn trong nội bộ.

Bước 2 - Bảo đảm bản sao máy chủ OrientDB

Ở đây, bạn sẽ tìm hiểu cách xóa tài khoản khách và sửa đổi các quyền của tệp cấu hình của OrientDB.

Một điều bạn có thể làm để tăng cường bảo mật máy chủ là cung cấp quyền truy cập đọc-ghi vào config danh mục chỉ có cho người dùng OrientDB. Quyền mặc định của thư mục đó là 755, nhưng nó thậm chí không cần phải có bộ bit thực thi.

sudo chmod 600 /opt/orientdb/config

Và để batten những thứ xuống một chút, cứng lại sự cho phép của tập tin cấu hình chính nó.

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

chú thích: Các quyền này sẽ được đặt thành 600 theo mặc định trong một phiên bản tương lai của OrientDB. Tuy nhiên, tại thời điểm xuất bản, các bước này vẫn cần thiết.

Phần còn lại của các mẹo bảo mật trong hướng dẫn này sẽ được thực hiện thông qua giao diện điều khiển OrientDB, vì vậy hãy kết nối với nó ngay bây giờ.

sudo /opt/orientdb/bin/console.sh

Mỗi cá thể máy chủ OrientDB có thể hỗ trợ nhiều cơ sở dữ liệu OrientDB. Ngoài hộp, mỗi cá thể máy chủ đi kèm với hai tài khoản người dùng: kháchnguồn gốc. Bạn đã được cung cấp tùy chọn để thiết lập mật khẩu tài khoản gốc khi bạn lần đầu tiên cài đặt và khởi chạy máy chủ OrientDB. Biểu mẫu băm của mật khẩu được lưu trữ trong tệp cấu hình OrientDB, /opt/orientdb/config/orientdb-server-config.xml. Biểu mẫu băm của mật khẩu được tạo tự động cho tài khoản khách cũng được lưu trữ trong tệp đó.

Từ bảng điều khiển OrientDB, bạn có thể xem thông tin về cả hai tài khoản bằng cách gõ:

list server users

chú thích: Hiện tại một lỗi trong OrientDB điều đó sẽ gây ra lỗi sau khi bạn cố gắng chạy list server users:

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

Nếu bạn nhận được lỗi này, bạn có thể làm việc xung quanh nó bằng cách thoát khỏi bảng điều khiển OrientDB và kết nối lại sau khi chuyển sang bin danh mục.

cd /opt/orientdb/bin

sudo ./console.sh

Sau đó, bạn có thể chạy list server users và nó sẽ hoạt động như mong đợi.

Đầu ra sẽ cho bạn biết những quyền nào mà cả hai tài khoản đều có. Các khách tài khoản có các đặc quyền giới hạn, nhưng nguồn gốc người dùng được phép thực hiện tất cả các tác vụ. Đó là dấu hoa thị thay cho quyền của nó cho biết:

OutputSERVER USERS

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

Ngay cả với các đặc quyền giới hạn, bạn có thể không muốn giữ tài khoản khách. Để xóa nó khỏi bảng điều khiển, hãy sử dụng drop chỉ huy.

drop server user guest

Lần tới bạn list server users từ bảng điều khiển OrientDB, nó sẽ chỉ hiển thị nguồn gốc người dùng. Nếu bạn nhìn vào bên trong /opt/orientdb/config/orientdb-server-config.xml tệp, bạn sẽ thấy rằng khách tài khoản đã bị xóa khỏi thẻ người dùng.

Bây giờ trường hợp máy chủ được an toàn hơn, tiếp theo bạn sẽ làm cho cơ sở dữ liệu chính nó an toàn hơn.

Bước 3 - Hạn chế quyền truy cập vào cơ sở dữ liệu OrientDB

Bước tiếp theo để bảo vệ quá trình cài đặt OrientDB của bạn là làm cho việc truy cập trái phép vào cơ sở dữ liệu trở nên rất khó khăn.

Theo mặc định, mọi cơ sở dữ liệu OrientDB bạn tạo đều có ba tài khoản được cài đặt sẵn với các tên người dùng sau: quản trị viên, người đọcnhà văn, mỗi mật khẩu giống với tên người dùng. Điều này là tốt cho thử nghiệm, nhưng không phải cho một hệ thống sản xuất. Ít nhất, bạn nên thay đổi mật khẩu cho cả ba tài khoản. Thậm chí tốt hơn, bạn nên xóa hoặc đình chỉ bất kỳ điều gì bạn không cần.

Cách bạn chọn quản lý các tài khoản này tùy thuộc vào nhu cầu và môi trường của bạn. Đối với hướng dẫn này, bạn sẽ tìm hiểu cách thay đổi mật khẩu của quản trị viên tài khoản, tạm ngưng nhà văn và xóa người đọc tài khoản. Bạn có thể thực hiện bất kỳ hành động nào trong ba hành động này từ bảng điều khiển OrientDB và OrientDB Studio dựa trên trình duyệt.

Quản lý tài khoản người dùng từ bảng điều khiển OrientDB

Để thay đổi tài khoản người dùng từ bảng điều khiển, bạn sẽ cần phải kết nối với cơ sở dữ liệu có tài khoản bạn định quản lý. Ví dụ này kết nối với GratefulDeadConcerts cơ sở dữ liệu, một cơ sở dữ liệu mẫu đi kèm với mọi cài đặt OrientDB, bằng cách sử dụng quản trị viên người dùng và mật khẩu mặc định (quản trị viên):

connect remote:127.0.0.1/GratefulDeadConcerts admin admin

Ngoài ra, bạn cũng có thể kết nối với máy chủ OrientDB's nguồn gốc tài khoản và mật khẩu. Trong cả hai trường hợp, lời nhắc sẽ thay đổi để cho biết rằng bạn đã kết nối với một cơ sở dữ liệu cụ thể.

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

Để liệt kê người dùng của cơ sở dữ liệu, hãy nhập như sau. ouser là bản ghi OrientDB nơi mật khẩu người dùng được lưu trữ:

select from ouser

Đầu ra hoàn chỉnh phải như sau. Lưu ý rằng cả ba tài khoản đều có HOẠT ĐỘNG trạng thái.

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).

Để thay đổi mật khẩu cho quản trị viên người dùng, sử dụng lệnh sau:

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

Để tắt nhà văn người dùng, thay đổi trạng thái từ ACTIVE đến SUSPENDED.

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

Để xóa người đọc tài khoản từ cơ sở dữ liệu hoàn toàn, sử dụng:

drop user reader

Nếu bạn đã thực hiện tất cả các điều trên và xem lại danh sách tài khoản, bạn sẽ thấy kết quả sau. Một trong các tài khoản bị thiếu và một tài khoản khác bị tạm ngưng:

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]|
+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+---------+------+

Sau khi hoàn thành tất cả các nhiệm vụ quản lý người dùng, bạn có thể ngắt kết nối khỏi cơ sở dữ liệu (nghĩa là, đóng nó) bằng cách gõ:

disconnect

Quản lý tài khoản người dùng OrientDB từ OrientDB Studio

Trong phần này, bạn sẽ tìm hiểu cách quản lý tài khoản người dùng OrientDB từ OrientDB Studio. Để bắt đầu, hãy khởi chạy studio bằng cách truy cập http://your_server_ip:2480 trong trình duyệt của bạn. Nếu bạn hạn chế quyền truy cập vào Studio ở Bước 1, bạn sẽ cần phải cho phép lại.

Màn hình đầu tiên bạn sẽ thấy là màn hình đăng nhập. Đăng nhập bằng nguồn gốc và mật khẩu bạn khi bạn cài đặt OrientDB. Sau khi đăng nhập, nhấp vào Bảo vệ chuyển hướng. Trên trang đó, bạn sẽ thấy cả ba người dùng mặc định.

Để thay đổi mật khẩu của quản trị viên tài khoản:

  1. Bấm vào CHỈNH SỬA dưới Hành động cột, sẽ mang lại một nhỏ Người dùng biên tập cửa sổ.
  2. Thay đổi mật khẩu trong mật khẩu cánh đồng.
  3. Bấm vào TIẾT KIỆM USER.

Để xóa người đọc tài khoản:

  1. Nhấp vào XÓA BỎ trong tài khoản của Hành động cột.

Để tạm ngưng nhà văn tài khoản:

  1. Bấm vào CHỈNH SỬA dưới Hành động, sẽ mang lại một nhỏ Người dùng biên tập cửa sổ.
  2. bên trong Trạng thái menu kéo xuống, chọn ĐÃ TỪ KHÓA.
  3. Bấm vào TIẾT KIỆM USER.

Trong bước tiếp theo, bạn sẽ tìm hiểu cách mã hóa cơ sở dữ liệu OrientDB lúc nghỉ ngơi.

Bước 4 - Mã hóa cơ sở dữ liệu OrientDB

OrientDB hỗ trợ cơ sở dữ liệu được mã hóa, cho phép bạn bảo mật bổ sung trên dữ liệu được lưu trữ của mình. Bạn chỉ có thể viết một cơ sở dữ liệu OrientDB khi nó được tạo; nếu bạn cần mã hóa cơ sở dữ liệu hiện có, bạn sẽ phải xuất và nhập nó vào cơ sở dữ liệu được mã hóa. Đối với phần này, chúng tôi sẽ đi qua quá trình xác định rằng một cơ sở dữ liệu được mã hóa vào thời gian tạo.

OrientDB hỗ trợ cả hai thuật toán mã hóa AES và DES, nhưng AES được ưu tiên vì nó mạnh hơn. Chúng ta sẽ cần thiết lập khóa mã hóa, tạo cơ sở dữ liệu và chỉ định phương thức mã hóa (AES hoặc DES). Lưu ý rằng độ dài của khóa mã hóa phải là 24 ký tự và hai ký tự cuối cùng phải là ==.

Để tạo khóa mã hóa, bạn có thể sử dụng pwgen, một công cụ tạo mật khẩu.

sudo apt-get install pwgen

Sau đó, tạo một khóa gồm 24 ký tự kết thúc bằng == với lệnh sau:

echo `pwgen 22 1`==

Hãy nhớ để lưu trữ chìa khóa này ở một nơi an toàn, giống như bạn sẽ có một mật khẩu. Để đặt khóa mã hóa cho cơ sở dữ liệu mới mà bạn muốn tạo, hãy nhập thông tin sau vào bảng điều khiển OrientDB:

config set storage.encryptionKey Ohjojiegahv3tachah9eib==

Sau đó tạo cơ sở dữ liệu được mã hóa bằng khóa đó. Điều này tạo ra cơ sở dữ liệu được mã hóa, dựa trên tài liệu trong hệ thống tệp cục bộ (plocal).

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

Bạn sẽ được kết nối tự động với cơ sở dữ liệu mới và lời nhắc sẽ thay đổi để phản ánh điều đó. Để ngắt kết nối khỏi cơ sở dữ liệu, chỉ cần gõ:

encrypted-db}>'>disconnect

Hãy nhớ rằng khóa mã hóa được sử dụng để mã hóa cơ sở dữ liệu OrientDB không được lưu trữ trên hệ thống. Bất cứ khi nào bạn muốn tương tác với cơ sở dữ liệu từ bàn điều khiển, bạn sẽ phải nhập vào cùng lệnh mà bạn đã sử dụng để đặt khóa mã hóa.

config set storage.encryptionKey Ohjojiegahv3tachah9eib==

Sau đó, để mở cơ sở dữ liệu, bạn sẽ gõ:

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

Lưu ý rằng trong khi bạn có thể tạo một cơ sở dữ liệu mới từ OrientDB Studio, bạn không thể tạo một cơ sở dữ liệu được mã hóa. Tại thời điểm xuất bản, bạn chỉ có thể tạo cơ sở dữ liệu được mã hóa từ bảng điều khiển.

Phần kết luận

Trong hướng dẫn này, bạn đã hạn chế quyền truy cập vào một cài đặt của OrientDB, quản lý các tài khoản người dùng cả từ giao diện điều khiển và giao diện người dùng web, và cũng đã mã hóa cơ sở dữ liệu OrientDB lúc nghỉ ngơi. Đây là những cấu hình bảo mật cơ bản nhưng quan trọng mà bạn có thể thực hiện để tăng cường cấu hình bảo mật của máy chủ và cơ sở dữ liệu OrientDB của bạn.

Bây giờ, bạn có thể truy cập thông tin bổ sung về bảo mật OrientDB bằng cách truy cập tài liệu OrientDB này về chủ đề đó.

0