2018-11-18

Công cụ đánh giá bảo mật cơ sở dữ liệu (DBSAT)

Tài liệu và tải xuống

Có hai nguồn thông tin chính liên quan đến công cụ DBSAT.

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

Bạn cần phải có zip, giải nén và python trên máy chủ.
yum install -y zip giải nén python
Kiểm tra xem bạn đã cài đặt Python trên máy chủ chưa.
$ python -V
Python 2.7.5
$
Bạn có thể kiểm tra mã zip và giải nén bằng các lệnh sau.
zip -v
unzip -v
Nếu bạn đang có kế hoạch chạy trình khám phá, bạn sẽ cần một JDK Java 8, với bộ JAVA_HOMEbiến môi trường. Trên hộp kiểm tra của tôi, tôi đã làm như sau.
xuất JAVA_HOME = / u01 / jdk1.8.0_181
Bạn sẽ cần các thông tin cơ sở dữ liệu phù hợp để kết nối với cơ sở dữ liệu. Khi tôi chạy này chống lại một số cơ sở dữ liệu thực sự tôi chỉ sử dụng người dùng DBA của tôi và nó đã làm việc tốt. Các tài liệuđưa ra một ví dụ về các đặc quyền cần thiết nếu bạn muốn tạo một người dùng đặc biệt cho chạy tiện ích này.
tạo dbsat_user người dùng được xác định bởi dbsat_user;
- Nếu Database Vault được kích hoạt, hãy kết nối như DV_ACCTMGR để chạy lệnh này
cấp phiên tạo cho dbsat_user;
cấp select_catalog_role cho dbsat_user;
cấp quyền chọn trên sys.registry $ history vào dbsat_user;
- 11g và 12c
cấp chọn trên sys.dba_users_with_defpwd để dbsat_user;
- chỉ 12c
cấp chọn trên audsys.aud $ unified để dbsat_user;
cấp audit_viewer cho dbsat_user;
 - 12c bao gồm sys.dba_priv_captures, sys.priv_capture $, sys.capture_run_log $ 
cấp capt_admin cho dbsat_user;
- Nếu Database Vault được bật, hãy kết nối với tư cách DV_OWNER để chạy lệnh này 
cấp DV_SECANALYST cho dbsat_user;
Trong một trường hợp rõ ràng, tôi đã tạo một người dùng thử nghiệm với một mật khẩu phù hợp với tên người dùng để cho tôi một sự thất bại rõ ràng.
CREATE USER test IDENTIFIED BY test DEFAULT TABLESPACE người dùng QUOTA UNLIMITED ON người dùng;

GRANT TẠO PHIÊN, TẠO BẢNG, TẠO XEM, TẠO TẠO, TẠO THỦ TỤC, TẠO LOẠI, TẠO VIỆC, TẠO CHẾ ĐỘ XEM PHÉP ĐỂ KIỂM TRA;

Cài đặt

Tất cả những gì bạn cần làm là giải nén công cụ vào một vị trí trên máy chủ. Một số công cụ có thể chạy trên máy khách, nhưng tôi thấy nó dễ dàng hơn để giữ nó trên máy chủ.
mkdir -p / home / oracle / dbsat
unzip -o /tmp/dbsat.zip -d / home / oracle / dbsat
cd / home / oracle / dbsat
Bạn có thể thêm vị trí này vào đường dẫn nếu bạn thích, nhưng tôi không bận tâm với điều đó.

Sử dụng cơ bản

Chạy dbsattiện ích không có tham số sẽ hiển thị mức sử dụng cơ bản.
$ ./dbsat

Công cụ đánh giá bảo mật cơ sở dữ liệu phiên bản 2.0.2 (tháng 5 năm 2018)

    Cách sử dụng: dbsat thu thập [-n] <database_connect_string> <output_file>
           báo cáo dbsat [-a] [-n] [-x <section>] <input_file>
           dbsat khám phá [-n] -c <config_file> <output_file>

    Tùy chọn:
       -a Báo cáo về tất cả tài khoản người dùng, kể cả bị khóa,
           Người dùng do Oracle cung cấp
       -n Không mã hóa cho đầu ra
       -x Chỉ định các phần để loại trừ khỏi báo cáo (có thể được lặp lại cho
           nhiều phần)
       -c Tệp cấu hình cho người khám phá

$
Chúng ta có thể thấy có ba hành động chính (thu thập, báo cáo và khám phá).

Sưu tầm

Việc chạy trình thu thập thu thập thông tin từ cơ sở dữ liệu và tạo ra một tệp JSON chứa tất cả thông tin. Bộ thu sẽ được chạy trên máy chủ cơ sở dữ liệu. Nó sẽ nhắc bạn cho mật khẩu cơ sở dữ liệu, sau đó khi mật khẩu để bảo vệ các tập tin zip kết quả. Tùy chọn "-n" có nghĩa là bạn không được nhắc nhập mật khẩu mã hóa tệp zip, nhưng từ quan điểm bảo mật, có lẽ bạn nên sử dụng một mật khẩu.
$ ./dbsat thu thập dbsat_user @ pdb1 pdb1_output

Công cụ đánh giá bảo mật cơ sở dữ liệu phiên bản 2.0.2 (tháng 5 năm 2018)

Công cụ này nhằm hỗ trợ bạn trong việc bảo vệ cơ sở dữ liệu Oracle của bạn
hệ thống. Bạn hoàn toàn chịu trách nhiệm về hệ thống của mình và hiệu quả và
kết quả của việc thực hiện công cụ này (bao gồm, nhưng không giới hạn,
bất kỳ thiệt hại hoặc mất dữ liệu nào). Hơn nữa, đầu ra được tạo ra bởi công cụ này có thể
bao gồm dữ liệu và thông tin cấu hình hệ thống có khả năng nhạy cảm
có thể được sử dụng bởi một kẻ tấn công có kỹ năng để xâm nhập vào hệ thống của bạn. Bạn
hoàn toàn chịu trách nhiệm đảm bảo rằng đầu ra của công cụ này,
bao gồm mọi báo cáo được tạo, được xử lý theo
chính sách của công ty.

Đang kết nối với cơ sở dữ liệu Oracle đích ...


SQL * Plus: Phát hành phiên bản 12.2.0.1.0

Bản quyền (c) 1982, 2016, Oracle. Đã đăng ký Bản quyền.

Nhập mật khẩu:

Kết nối với:
Cơ sở dữ liệu Oracle 12c Phiên bản Enterprise Edition 12.2.0.1.0 - Sản xuất 64bit

Thiết lập xong.
Các truy vấn SQL hoàn tất.
Các lệnh OS hoàn tất.
Đã ngắt kết nối khỏi Oracle Database 12c Phiên bản Enterprise Edition 12.2.0.1.0 - Sản xuất 64 bit
Trình thu thập DBSAT đã hoàn tất thành công.

Gọi /u01/app/oracle/product/12.2.0.1/db_1/bin/zip để mã hóa pdb1_output.json ...

Nhập mật khẩu:
Xác nhận lại mật khẩu:
đang cập nhật: pdb1_output.json (xì hơi 88%)
zip đã hoàn tất thành công. 
$

Bài báo cáo

Phóng viên lấy tập tin đầu ra từ bộ thu và chuyển đổi nó thành định dạng HTML, Excel, JSON và Text. Các phóng viên không cần phải chạy trên máy chủ cơ sở dữ liệu, nhưng kể từ khi bạn phải chạy bộ thu có nó có thể có ý nghĩa để chạy này trên máy chủ quá. Lưu ý rằng chúng tôi đã sử dụng cùng một tiền tố tên tệp để gọi cho người báo cáo như chúng tôi đã làm khi chạy trình thu thập. Bạn được nhắc nhập mật khẩu của tệp zip nguồn và mật khẩu cho tệp zip đích.
$ ./dbsat báo cáo pdb1_output

Công cụ đánh giá bảo mật cơ sở dữ liệu phiên bản 2.0.2 (tháng 5 năm 2018)

Công cụ này nhằm hỗ trợ bạn trong việc bảo vệ cơ sở dữ liệu Oracle của bạn
hệ thống. Bạn hoàn toàn chịu trách nhiệm về hệ thống của mình và hiệu quả và
kết quả của việc thực hiện công cụ này (bao gồm, nhưng không giới hạn,
bất kỳ thiệt hại hoặc mất dữ liệu nào). Hơn nữa, đầu ra được tạo ra bởi công cụ này có thể
bao gồm dữ liệu và thông tin cấu hình hệ thống có khả năng nhạy cảm
có thể được sử dụng bởi một kẻ tấn công có kỹ năng để xâm nhập vào hệ thống của bạn. Bạn
hoàn toàn chịu trách nhiệm đảm bảo rằng đầu ra của công cụ này,
bao gồm mọi báo cáo được tạo, được xử lý theo
chính sách của công ty.

Lưu trữ: pdb1_output.zip
[pdb1_output.zip] mật khẩu pdb1_output.json:
  lạm phát: pdb1_output.json
Trình báo cáo DBSAT đã chạy thành công.

Đang gọi / usr / bin / zip để mã hóa các báo cáo đã tạo ...

Nhập mật khẩu:
Xác nhận lại mật khẩu:
        cảnh báo zip: pdb1_output_report.zip không tìm thấy hoặc trống
  thêm: pdb1_output_report.txt (xì hơi 78%)
  thêm: pdb1_output_report.html (xì hơi 84%)
  thêm: pdb1_output_report.xlsx (xì hơi 3%)
  thêm: pdb1_output_report.json (xì hơi 82%)
zip đã hoàn tất thành công. 
$
Nhìn vào tập tin HTML kết quả, chúng ta có thể thấy một bản tóm tắt các phát hiện.
DBSAT - Tóm tắt
Mỗi kết quả thử nghiệm ở đầu ra cho thấy mức độ rủi ro. Đây là một ví dụ về rủi ro cao mà chúng tôi đã tạo ra một cách có chủ ý.
DBSAT - Rủi ro cao

Khám phá

Người khám phá về cơ bản là một công cụ dựa trên Java riêng biệt, không phụ thuộc vào người thu thập và phóng viên, để kiểm tra dữ liệu nhạy cảm trong cơ sở dữ liệu. Trước tiên, bạn cần tạo một dbsat.configtệp. Bạn có thể gọi nó bất cứ điều gì bạn muốn như bạn sẽ được tham chiếu nó một cách rõ ràng sau này.
cd / home / oracle / dbsat
cp Discover / conf / sample_dbsat.config Khám phá / conf / dbsat.config
Bạn sẽ cần chỉnh sửa nội dung của tệp "Discover / conf / dbsat.config". Ở mức tối thiểu, bạn sẽ cần phải thiết lập như sau.
[Cơ sở dữ liệu]
        DB_HOSTNAME = localhost
        DB_PORT = 1521
        DB_SERVICE_NAME = pdb1
Tệp "Discover / conf / sensitive_en.ini" chứa danh sách các danh mục dữ liệu có khả năng nhạy cảm, mỗi danh mục có mẫu được liên kết cho tên cột. Bạn nên xem lại tệp này và xem xét thêm các phần hoặc mẫu bổ sung nếu cần.
Khi cấu hình hoàn tất, bạn có thể chạy trình khám phá, chỉ định tệp cấu hình và tên tệp đầu ra. Bạn được nhắc nhập thông tin đăng nhập cơ sở dữ liệu và mật khẩu cho tệp nén kết quả.
$ export JAVA_HOME = / u01 / jdk1.8.0_181
$ ./dbsat khám phá -c ./Discover/conf/dbsat.config pdb1_discovery

Công cụ đánh giá bảo mật cơ sở dữ liệu phiên bản 2.0.2 (tháng 5 năm 2018)

Công cụ này nhằm hỗ trợ bạn trong việc bảo vệ cơ sở dữ liệu Oracle của bạn
hệ thống. Bạn hoàn toàn chịu trách nhiệm về hệ thống của mình và hiệu quả và
kết quả của việc thực hiện công cụ này (bao gồm, nhưng không giới hạn,
bất kỳ thiệt hại hoặc mất dữ liệu nào). Hơn nữa, đầu ra được tạo ra bởi công cụ này có thể
bao gồm dữ liệu và thông tin cấu hình hệ thống có khả năng nhạy cảm
có thể được sử dụng bởi một kẻ tấn công có kỹ năng để xâm nhập vào hệ thống của bạn. Bạn
hoàn toàn chịu trách nhiệm đảm bảo rằng đầu ra của công cụ này,
bao gồm mọi báo cáo được tạo, được xử lý theo
chính sách của công ty.

Nhập tên người dùng: dbsat_user
Nhập mật khẩu:
Đã khám phá thành công DBSAT.
Đang gọi / usr / bin / zip để mã hóa các báo cáo đã tạo ...

Nhập mật khẩu:
Xác nhận lại mật khẩu:
        cảnh báo zip: pdb1_discovery_report.zip không tìm thấy hoặc trống
  thêm: pdb1_discovery_discover.html (xiên 73%)
  thêm: pdb1_discovery_discover.csv (xì hơi 30%)
Đã hoàn tất thành công mã zip. 
$

Vấn đề

Tôi gặp một số vấn đề với phiên bản hiện tại (2.0.2).

  • Phiên bản hiện tại của người khám phá dường như không thích Java 10. Nếu bạn không sử dụng Java 8, bạn sẽ gặp phải lỗi này.
    "Lỗi: Java phiên bản 1.8 trở lên là bắt buộc".
  • Phiên bản hiện tại của phóng viên dường như có vấn đề với Oracle 18c. Có một so sánh ngày tạo ra lỗi sau. Tôi không chắc chắn nếu điều này ảnh hưởng đến đầu ra mặc dù, vì nó trông giống như đầu ra đã được hoàn thành.
    Traceback (cuộc gọi gần đây nhất):
      Tệp "/home/oracle/dbsat/./sat_reporter.py", dòng 6372, trong <module>
        fn ()
      Tệp "/home/oracle/dbsat/./sat_reporter.py", dòng 338, trong patch_checks
        bundle_date = max_date (bundle_date, x [reldate])
      Tệp "/home/oracle/dbsat/./sat_reporter.py", dòng 6198, trong max_date
        trả lại tối đa (ngày1, ngày 2)
    TypeError: không thể so sánh datetime.datetime với unicode
  • Tôi không tin rằng người khám phá thực sự mang lại kết quả nhất quán. Tôi có thể lấy cùng một bảng (định nghĩa và nội dung) và đặt nó trong các cơ sở dữ liệu khác nhau và nó không nhất quán xác định bảng có chứa dữ liệu nhạy cảm. Tôi chưa thể thiết lập một mẫu. Tôi đã không bao gồm đầu ra mẫu ở đây vì tôi không thể nhận được bất cứ thứ gì đáng giá mà không chạy nó trên một cơ sở dữ liệu thực, và tôi sẽ không để lộ kết quả từ đó đến thế giới.