Mongodb uri với tên người dùng và mật khẩu
Các hướng dẫn này dành cho Oracle Linux 7. Các lệnh cho các bản phân phối khác sẽ khác. Đầu tiên cài đặt và khởi động MongoDB Show
Cài đặt
Sau đó, tạo người dùng 0 bằng cách kết nối lần đầu với mongo cli. Sau khi kết nối, hãy chuyển sang cơ sở dữ liệu 0 và chạy lệnh tạo người dùng. Thay đổi 2 bên dưới thành mật khẩu ngẫu nhiên an toànTạo quản trị viên
Sau khi người dùng đã được tạo, hãy chỉnh sửa cấu hình MongoDB để bật ủy quyền. Phần lưới nên được thay thế bằng phần bên dưới Vỏ bọc
Tạo người dùng PritunlSau đó, tạo người dùng 3 cho cơ sở dữ liệu 4 trong cơ sở dữ liệu 0. Trước tiên, hãy kết nối với mongo cli bằng tài khoản quản trị viên, sau đó chuyển sang cơ sở dữ liệu 0. Thay đổi 2 bên dưới thành mật khẩu ngẫu nhiên an toàn. Khi xác thực từ các công cụ mongo cli, hãy sử dụng 3Nếu cấu hình Pritunl Zero hoặc Pritunl Cloud, hãy cập nhật tên của cơ sở dữ liệu bên dưới Tạo người dùng
Kiểm tra công dụng mới bằng lệnh bên dưới người dùng thử nghiệm
Kết nối với MongoDBKhi định cấu hình Pritunl, tùy chọn tên người dùng, mật khẩu và ssl phải được thêm vào uri MongoDB. Chẳng hạn như 4 Nếu định cấu hình Pritunl Zero hoặc Pritunl Cloud, hãy cập nhật tên của cơ sở dữ liệuCơ sở dữ liệu xác thựcNếu người dùng xác thực ở trên cơ sở dữ liệu khác, tham số 5 phải được đưa vào uri MongoDB. Chẳng hạn như 4 Trong các bài đăng trên blog trước đây, chúng tôi đã thấy sự tinh tế của việc thu hồi và độ chính xác khi phát hiện các bí mật trong mã nguồn. Chúng tôi cũng trình bày chi tiết về triết lý động cơ của GitGuardian. Hôm nay, chúng tôi muốn chia sẻ cách nhóm nghiên cứu của chúng tôi, Nhóm bí mật, phát triển và tinh chỉnh trình phát hiện tại GitGuardian Để minh họa cho bài viết này, chúng tôi sẽ lấy trường hợp thông tin đăng nhập MongoDB. MongoDB là một cơ sở dữ liệu định hướng tài liệu không có SQL rất phổ biến… và nổi tiếng là bị rò rỉ… Công cụ phát hiện thời gian thực của chúng tôi liên tục quét các sự kiện công khai trên GitHub và đưa ra hơn 3.000 cảnh báo mỗi tuần liên quan đến thông tin đăng nhập MongoDB được tìm thấy trong mã nguồn. Hãy xem cách chúng tôi đạt được điều này Định nghĩa bài vănPHÁT HIỆN ĐA TRẬNĐể kết nối với cơ sở dữ liệu MongoDB, cần có tên máy chủ để xác định máy chủ và cặp tên người dùng và mật khẩu được sử dụng để xác thực. Mặc dù chỉ riêng mật khẩu bị rò rỉ đã là một mối đe dọa, nhưng chỉ nên đưa ra cảnh báo khi chúng tôi tìm thấy một bí mật hoàn chỉnh được tạo ra từ ba kết quả trùng khớp này Khả năng phát hiện các bí mật "nhiều khớp" như vậy là một trong nhiều điều làm nên sự khác biệt của công cụ phát hiện GitGuardian. Làm việc trên các bí mật đa đối sánh là một cơ hội tốt để cải thiện độ chính xác tổng thể của thuật toán vì chỉ hoàn thành do đó rò rỉ nghiêm trọng sẽ đưa ra cảnh báo. Đây cũng là một cách để giảm sự mệt mỏi khi cảnh báo vì các trận đấu sẽ được nhóm một cách thông minh dưới một cảnh báo nhất quán duy nhất thay vì nhân các cảnh báo cho từng phần của cùng một bí mật Tuy nhiên, điều này đòi hỏi một công cụ phát hiện rất hiệu quả và có thể tùy chỉnh vì sự kết hợp của các kết quả phù hợp có thể nhanh chóng trở nên quá tải HIỆU SUẤT ĐẦU TIÊNKể từ khi thành lập vào năm 2017, GitGuardian đã là một công ty định hướng dữ liệu. Chúng tôi đã liên tục quét nguồn cấp dữ liệu trực tiếp của các sự kiện GitHub trong hơn 3 năm, tức là quét hơn 10 triệu tài liệu mỗi ngày với thời gian trung bình để phát hiện là vài giây. Đó là lý do tại sao chúng tôi bị ám ảnh bởi hiệu suất của công cụ phát hiện của chúng tôi CHÍNH XÁC VÀ GHI LẠIĐể đạt được hiệu quả phát hiện, chúng tôi mong muốn.
PHƯƠNG PHÁP XÁC THỰCĐể tối đa hóa khả năng thu hồi của chúng tôi, chúng tôi xem xét ba mẫu xác thực MongoDB riêng biệt trong mã nguồn
2. Một phương thức xác thực phổ biến khác bao gồm sử dụng chuỗi kết nối URI được cung cấp cho trình điều khiển được sử dụng để kết nối với Mongo 03. Cuối cùng, kết nối với một phiên bản mongoDB cũng có thể được thực hiện thông qua Giao diện dòng lệnh mongo 1Mỗi phương thức xác thực này đều có trình phát hiện riêng được sử dụng để xác định chúng. Hãy xem cách chúng tôi xây dựng những xác nhận trướcBất kể chúng ta sẽ làm việc với máy dò nào trong số ba máy dò này, một số viên gạch phổ biến có thể giúp đạt được khả năng phát hiện tuyệt vời. Khi phát triển một loại công cụ phát hiện mới, trước tiên, nhóm nghiên cứu của chúng tôi sẽ cố gắng xác định loại tài liệu chứa thông tin xác thực. Nói cách khác, chúng tôi muốn có thể nhanh chóng loại bỏ các tài liệu không bao giờ chứa bất kỳ thông tin đăng nhập MongoDB nào Trong trường hợp cụ thể của chúng tôi, chúng tôi đã chọn hai tiêu chí
Loại chẩn đoán này có thể tăng tốc khả năng phát hiện của chúng tôi lên gấp 20 lần và loại bỏ nhiều kết quả dương tính giả. Đó là sự đánh đổi tốt khi chúng tôi đang xem nguồn cấp dữ liệu >100 tài liệu mỗi giây. Hãy bám vào cấu hình này cho ba loại xác thực mà chúng ta đang xem xét Thông tin đăng nhập MongoDB trong các bài tậpTrong phần này, chúng tôi muốn phát triển một trình phát hiện để bắt máy chủ, tên người dùng và mật khẩu, tất cả đều được đặt trong cùng một tài liệu Giới thiệu về Bài tậpPhép gán là bất kỳ cấu trúc mã nào trong đó một giá trị được gán cho một biến. GitGuardian đã phát triển một công cụ so khớp bài tập duy nhất có thể phát hiện nhiều loại bài tập khác nhau, bất kể chúng được viết bằng ngôn ngữ nào. Đây là một danh sách nhỏ các nhiệm vụ có thể chúng tôi sẽ phát hiện 2 3 4 5máy dò rộngVì chúng tôi có thể phát hiện các mẫu này, hãy tinh chỉnh một chút và thêm một số ràng buộc để tạo phiên bản đầu tiên của trình phát hiện của chúng tôi Đối với mỗi trận đấu (máy chủ, tên người dùng và mật khẩu), chúng tôi muốn biến được chỉ định có db hoặc cơ sở dữ liệu hoặc mongo làm tiền tố và máy chủ, tên người dùng hoặc mật khẩu làm hậu tố. Lưu ý rằng việc có db làm tiền tố là đủ để thông tin xác thực được coi là thông tin đăng nhập mongoDB vì “mongo” phải có trong nội dung tệp.
CHÚNG TÔI SẼ TRẬN GÌ 6NHỮNG GÌ CHÚNG TÔI SẼ KHÔNG HỢP LỆ 7Các cải tiến với bước xác thực sauTại thời điểm đó, mặc dù kết quả rất thú vị, chúng tôi muốn chọn thêm các bí mật bằng cách xóa một số giá trị. Hãy nhớ rằng cuối cùng, chúng tôi muốn xuất ra nhiều bí mật khớp được tạo từ sự kết hợp của tất cả máy chủ, tên người dùng và mật khẩu bị bắt. Để tránh bùng nổ tổ hợp, chúng tôi muốn loại bỏ các trận đấu không liên quan càng sớm càng tốt Đối với điều này, nhóm kỹ thuật của GitGuardian đã đưa ra một loạt các trình xác thực bài đăng rất hiệu quả Chẳng hạn, chúng tôi đã phát triển bước xác thực sau để loại bỏ mọi giá trị không liên quan phổ biến cho máy chủ lưu trữ. Nhờ quét trực tiếp luồng GitHub, chúng tôi có thể tự động điều chỉnh danh sách này dựa trên kết quả chúng tôi nhận được. Nó chứa nhiều giá trị vô dụng như. thí dụ. com, đồ giả. com,. mặc định, IP cục bộ và nhiều thứ khác. Chúng tôi áp dụng cùng một loại heuristic cho tên người dùng và mật khẩu đã khớp trước đó Chúng tôi có thể cấm các giá trị tùy chỉnh khác khỏi kết quả. Chẳng hạn, trong khi chạy trình phát hiện hiện tại, chúng tôi đã thấy nhiều giá trị dương tính giả ở dạng sau 8Do đó, config được thêm vào danh sách các giá trị của chúng tôi Cuối cùng, chúng tôi cũng cấm các giá trị dựa trên entropy Shannon của chúng để loại bỏ một số trình giữ chỗ. Chẳng hạn, một 02 sẽ không có entropy đủ cao để được coi là một máy chủ hợp lệ. Ngưỡng sử dụng được xác định theo kinh nghiệm bằng cách kiểm tra thuật toán trong điều kiện thực tếKhi các kết quả khớp chính xác cho máy chủ, tên người dùng và mật khẩu được thu thập, chúng tôi tính toán tất cả các kết hợp có thể có để có các ứng cử viên bí mật. Mặc dù chúng ta có thể dừng lại ở đây, nhưng GitGuardian có vũ khí cuối cùng để dọn dẹp mọi thứ và chỉ mang lại kết quả phù hợp nhất. Chúng tôi đã phát triển các chiến lược khác nhau để thu hẹp các ứng cử viên bí mật có thể có trong một tài liệu. Các chiến lược này có thể dựa trên khoảng cách giữa các kết quả phù hợp trong tài liệu, nhưng cũng có thể dựa trên sự giống nhau giữa các biến gán chẳng hạn Nói cách khác, điều này tránh đưa ra cảnh báo khi chúng tôi tìm thấy máy chủ lưu trữ ở đầu tài liệu, tên người dùng ở giữa và mật khẩu ở cuối, vì ba giá trị này hầu như không liên quan đến cùng một tài nguyên. Hoặc, điều này cho phép loại bỏ một bí mật trong đó máy chủ được gán cho một 03, trong khi tên người dùng và mật khẩu được gán tương ứng cho 04 và 05Cuối cùng, máy dò này bắt được 30 bí mật mỗi tuần với độ chính xác rất cao. Nhờ các mô hình trực tiếp và vòng phản hồi của chúng tôi, chúng tôi có thể lặp lại nhanh chóng để tinh chỉnh kết quả Thông tin đăng nhập MongoDB trong chuỗi kết nối URIMẫu URILoại xác thực thứ hai có vẻ rất phổ biến là sử dụng chuỗi kết nối URI để cung cấp máy chủ, tên người dùng và mật khẩu (và thậm chí cả cổng, cơ sở dữ liệu hoặc truy vấn) cho trình điều khiển Vì định dạng chuỗi kết nối URI được chuẩn hóa cho MongoDB nên việc phát triển trình phát hiện khá đơn giản. Chúng tôi đang tìm kiếm một chuỗi có định dạng sau 00Trong trường hợp của chúng tôi, lược đồ mà chúng tôi đang tìm kiếm thường được thêm vào trước bởi “mongodb” và biểu thức chính quy tổng thể đảm bảo mức độ tin cậy khá cao xác thực sauKhông có bất kỳ bước xác thực nào, kết quả vẫn cần một chút công việc
Do đó, chúng tôi giới thiệu bước PostValidation đặc biệt, theo cách tương tự như được trình bày cho nhiệm vụ mongo. Cuối cùng, trình phát hiện này khớp với hơn 2.950 thông tin đăng nhập MongoDB mỗi tuần, với độ chính xác cao Thông tin đăng nhập MongoDB trong các lệnh shellchi tiết vấn đềPhương thức xác thực cuối cùng mà chúng tôi muốn giải quyết là kết nối với phiên bản mongoDB bằng giao diện dòng lệnh. Tất nhiên, chúng tôi biết rằng số lượng thông tin đăng nhập được tìm thấy bằng phương pháp này sẽ thấp hơn nhiều so với các phương pháp khác, vì việc gửi các lệnh shell vào kho lưu trữ git hơi hiếm Tuy nhiên, nhìn vào tất cả GitHub trong suốt 3 năm dạy một số quy tắc cơ bản. một trong số đó có thể là. “mọi thứ xảy ra”. Hơn nữa, ngay cả khi việc triển khai này cải thiện khả năng thu hồi của chúng tôi bằng 0. 1%, chúng tôi muốn nó. Theo định nghĩa, GitGuardian xử lý các sự kiện hiếm gặp và chúng tôi không thể bỏ lỡ TP (True positive) Để xử lý trình phát hiện CLI này, chúng tôi đã phát triển một loại trình phát hiện cụ thể có thể tìm kiếm một lệnh nhất định và nắm bắt tất cả các tùy chọn liên quan của nó 01Về PostValidation, chúng tôi thực hiện theo các bước xác thực gần giống như đối với các trình phát hiện trước đó Cuối cùng, trình phát hiện này khớp với một bộ thông tin xác thực mongoDB trung bình hai ngày một lần. Điều này có vẻ giống như một giọt nước trong đại dương… nhưng nó có thể là chất độc sẽ gây ra nhiều rắc rối… nên cũng có thể Sự kết luậnTóm lại, chúng tôi đã trình bày rất chi tiết cách thức hoạt động của máy dò và chúng tôi đã cho bạn thấy một phần trong bộ sưu tập công cụ phong phú của chúng tôi được sử dụng để đạt được khả năng phát hiện tốt nhất trên thị trường. Sự phát triển của các máy dò mới chủ yếu dựa trên hai nguyên tắc cốt lõi. Chúng tôi luôn lặp lại từ máy dò lớn đến máy dò chính xác bằng cách nhân các điểm chuẩn trên dữ liệu trong thế giới thực. Và chúng tôi liên tục cải thiện các thuật toán phát hiện của mình bằng cách theo dõi hiệu suất trực tiếp của chúng. Nhóm bí mật của chúng tôi đã tự hào đạt mốc 260 người phát hiện vài ngày trước, hãy xem danh sách tại đây Làm cách nào tôi có thể nhận URI trong MongoDB?Tìm URI MongoDB
. Click on “Overview” tab in the menu bar. Cuộn xuống trang Tổng quan và bạn sẽ thấy thông tin URI MongoDB.
MongoDB kết nối với thông tin đăng nhập như thế nào?Kích hoạt xác thực trên MongoDB . Bắt đầu MongoDB mà không cần xác thực. . Kết nối với máy chủ bằng vỏ mongo. . Tạo quản trị viên người dùng. . Bật xác thực trong tệp cấu hình mongodb. . Kết nối và xác thực với tư cách là quản trị viên người dùng. . Cuối cùng, tạo thêm người dùng nếu cần Chuỗi kết nối MongoDB là gì?Chuỗi kết nối MongoDB được định nghĩa là định dạng kết nối để tham gia máy chủ cơ sở dữ liệu MongoDB , chúng tôi sử dụng tên người dùng, tên máy chủ, mật khẩu và tham số cổng . Không có chuỗi kết nối thì không kết nối được với máy chủ cơ sở dữ liệu, chúng ta cần có chuỗi kết nối để kết nối máy chủ cơ sở dữ liệu.
Chuỗi kết nối MongoDB ở đâu?Để lấy chuỗi kết nối cho một cụm Atlas. . Điều hướng đến chế độ xem Cụm Atlas của bạn Nhấp vào Kết nối cho cụm mong muốn của bạn Nhấp vào Kết nối với MongoDB Compass Sao chép chuỗi kết nối được cung cấp |