Odoo Security: Đánh giá tính bảo mật của nền tảng quản lý doanh nghiệp mã nguồn mở hàng đầu
Odoo là một trong những nền tảng quản lý doanh nghiệp mã nguồn mở hàng đầu trên thế giới. Tuy nhiên, việc bảo mật thông tin trên hệ thống Odoo luôn là một vấn đề đáng quan ngại. Trong bối cảnh các cuộc tấn công mạng liên tục diễn ra, tính bảo mật của Odoo luôn được đánh giá cao. Trong bài viết này, IZISolution sẽ đánh giá tính bảo mật của Odoo và cung cấp cho bạn những giải pháp để tăng cường bảo mật cho hệ thống của mình.
I. Vấn đề bảo mật trên nền tảng Odoo Cloud
1. Sao lưu
Chuyển đổi dự phòng phần cứng: đối với các dịch vụ được triển khai trên kim loại trần, nơi có thể xảy ra lỗi phần cứng, Odoo tiến hành sao chép dự phòng nóng cục bộ, với quy trình giám sát và chuyển đổi dự phòng thủ công chỉ mất chưa đầy 5 phút.
Phục hồi sau sự cố: trong trường hợp sự cố có ảnh hưởng toàn diện, với một trung tâm dữ liệu ngừng hoạt động hoàn toàn trong một thời gian dài, ngăn chặn việc chuyển đổi dự phòng sang chế độ dự phòng nóng cục bộ.
2. Bảo mật cơ sở dữ liệu
Dữ liệu khách hàng được lưu trữ trong cơ sở dữ liệu riêng - không chia sẻ dữ liệu giữa các khách hàng.
Quy tắc kiểm soát truy cập dữ liệu quy định cách ly hoàn toàn giữa các cơ sở dữ liệu khách hàng chạy trên cùng một cụm, không thể truy cập từ cơ sở dữ liệu này sang cơ sở dữ liệu khác.
3. Bảo mật Mật khẩu
Mật khẩu của khách hàng được bảo vệ bằng mã hóa PBKDF2+SHA512 theo tiêu chuẩn ngành (được thêm chuỗi ký tự ngẫu nhiên + kéo dài hàng nghìn vòng).
Nhân viên Odoo không có quyền truy cập vào mật khẩu của bạn và không thể lấy lại mật khẩu cho bạn, tùy chọn duy nhất nếu bạn làm mất mật khẩu là đặt lại mật khẩu.
Thông tin đăng nhập luôn được truyền an toàn qua HTTPS.
Kể từ Odoo 12.0, quản trị viên cơ sở dữ liệu khách hàng thậm chí còn có tùy chọn cấu hình giới hạn tốc độ và thời gian hồi chiêu cho các lần đăng nhập lặp lại.
Chính sách mật khẩu: kể từ Odoo 12, quản trị viên cơ sở dữ liệu có cài đặt tích hợp để đặt độ dài mật khẩu người dùng tối thiểu. Đối với các phiên bản cũ hơn, tính năng tương tự có thể được thiết lập thông qua tùy chỉnh. Theo mặc định, các chính sách mật khẩu khác như các lớp ký tự bắt buộc không được hỗ trợ vì chúng đã được chứng minh là phản tác dụng.
4. Quyền truy cập Nhân viên
Nhân viên bộ phận hỗ trợ của Odoo có thể đăng nhập vào tài khoản của bạn để truy cập các cài đặt liên quan đến vấn đề hỗ trợ. Trong trường hợp này, họ sử dụng thông tin đăng nhập nhân viên đặc biệt của riêng họ, không phải mật khẩu của bạn (chỉ bạn biết mật khẩu của mình).
Quyền truy cập nhân viên đặc biệt này giúp cải thiện tính hiệu quả và bảo mật: họ có thể tái tạo ngay vấn đề mà bạn đang gặp phải, bạn không bao giờ phải chia sẻ mật khẩu của mình, đồng thời chúng tôi có thể kiểm tra và kiểm soát các hành động của nhân viên một cách riêng biệt!
Nhân viên Bộ phận Hỗ trợ tôn trọng quyền riêng tư của bạn hết mức có thể và chỉ truy cập các tệp cũng như cài đặt cần thiết để chẩn đoán và giải quyết vấn đề của bạn.
5. Bảo mật hệ thống
Tất cả máy chủ Odoo Đám mây đang chạy các bản phân phối Linux cứng với những bản vá bảo mật mới nhất.
Cài đặt chỉ được thực hiện khi cần thiết và ở mức tối thiểu để hạn chế số lượng dịch vụ có thể chứa lỗ hổng (ví dụ: không có ngăn xếp PHP/MySQL).
Chỉ một số lập trình viên đáng tin cậy của Odoo mới có quyền quản lý máy chủ từ xa - và chỉ có thể truy cập bằng cách sử dụng cặp khóa SSH cá nhân được mã hóa, từ một máy tính có mã hóa đĩa toàn bộ.
6. Mã hóa dữ liệu
Dữ liệu của khách hàng luôn được truyền và lưu trữ ở dạng mã hóa (mã hóa khi truyền và khi lưu trữ).
Tất cả việc truyền thông dữ liệu với các phiên bản máy khách đều được bảo vệ bằng mã hóa SSL 256 bit (HTTPS) tiên tiến nhất.
Tất cả việc truyền thông dữ liệu nội bộ giữa các máy chủ của chúng tôi cũng được bảo vệ bằng mã hóa (SSH) tiên tiến nhất.
Các máy chủ của Odoo được theo dõi bảo mật nghiêm ngặt và luôn được vá các lỗ hổng SSL mới nhất, luôn được xếp hạng SSL Hạng A .
Tất cả chứng chỉ SSL của chúng tôi đều sử dụng module 2048-bit mạnh mẽ với chuỗi chứng chỉ SHA-2 đầy đủ.
Toàn bộ dữ liệu khách hàng (nội dung cơ sở dữ liệu và tập tin được lưu trữ) được mã hóa khi lưu trữ, cả trong production và các bản sao lưu (AES-128 hoặc AES-256).
7. Bảo vệ Mạng
Tất cả các nhà cung cấp trung tâm dữ liệu mà Odoo Đám mây sử dụng đều có dung lượng mạng rất lớn và đã thiết kế cơ sở hạ tầng của họ để chống lại các cuộc tấn công Từ chối Dịch vụ Phân tán (DDoS) lớn nhất. Các hệ thống giảm thiểu tự động và thủ công có thể phát hiện và chuyển hướng lưu lượng tấn công ở rìa mạng đa lục địa của họ, trước khi có cơ hội làm gián đoạn tính khả dụng của dịch vụ.
Tường lửa và hệ thống ngăn chặn xâm nhập trên máy chủ Odoo Đám mây giúp phát hiện và ngăn chặn các mối đe dọa như tấn công mật khẩu brute-force.
Kể từ Odoo 12.0, quản trị viên cơ sở dữ liệu khách hàng thậm chí còn có tùy chọn cấu hình giới hạn tốc độ và thời gian hồi chiêu cho các lần đăng nhập lặp lại.
II. Vấn đề bảo mật trên phần mềm Odoo
1. Bảo mật Phần mềm
Odoo là phần mềm mã nguồn mở, vì vậy toàn bộ cơ sở mã liên tục được người dùng và cộng tác viên Odoo trên toàn thế giới kiểm tra. Các báo cáo lỗi của cộng đồng là một nguồn phản hồi quan trọng liên quan đến bảo mật. Chúng tôi khuyến khích các nhà phát triển kiểm tra mã và báo cáo các vấn đề bảo mật.
Quy trình Nghiên cứu & Phát triển của Odoo có các bước xem xét mã bao gồm những khía cạnh bảo mật, dành cho các đoạn mã mới và mã được đóng góp.
2. Thiết kế bảo mật
Odoo được thiết kế để ngăn chặn hầu hết các lỗ hổng bảo mật phổ biến:
-
Việc chèn SQL được ngăn chặn bằng cách sử dụng API cấp cao hơn không yêu cầu truy vấn SQL thủ công.
-
Các cuộc tấn công XSS được ngăn chặn bằng cách sử dụng hệ thống tạo mẫu cấp cao tự động thoát khỏi dữ liệu được chèn.
-
Khung ngăn chặn quyền truy cập RPC vào các phương thức riêng tư, khiến việc tạo ra các lỗ hổng có thể xâm nhập trở nên khó khăn hơn.
3. Kiểm tra Bảo mật
Odoo thường xuyên được kiểm tra bởi các công ty độc lập do khách hàng và khách hàng tiềm năng của chúng tôi thuê để tiến hành kiểm tra và kiểm thử thâm nhập. Đội ngũ Bảo mật Odoo nhận kết quả và thực hiện các biện pháp khắc phục thích hợp bất cứ khi nào cần thiết.
Tuy nhiên, Odoo sẽ không tiết lộ bất kỳ kết quả nào trong số đó, vì chúng được bảo mật và thuộc về những người được ủy quyền.
Odoo cũng có một cộng đồng rất tích cực gồm các nhà nghiên cứu bảo mật độc lập, những người liên tục theo dõi mã nguồn và làm việc với chúng tôi để cải thiện và tăng cường tính bảo mật của Odoo.
4. Bảo mật ứng dụng web mã nguồn mở
Odoo được thiết kế để ngăn chặn các vấn đề bảo mật ứng dụng web hàng đầu. Cụ thể:
Chèn Mã độc: Chèn mã độc, đặc biệt là chèn SQL, rất phổ biến trong các ứng dụng web. Quá trình chèn xảy ra khi dữ liệu do người dùng cung cấp được gửi tới trình biên dịch như một phần của câu lệnh hoặc truy vấn. Dữ liệu độc của kẻ tấn công đánh lừa trình biên dịch thực thi các lệnh ngoài ý muốn hoặc thay đổi dữ liệu.
Odoo dựa trên khung ánh xạ quan hệ đối tượng (ORM) trừu tượng hóa việc xây dựng truy vấn và ngăn chặn việc chèn SQL theo mặc định. Các nhà phát triển thường không tạo các truy vấn SQL theo cách thủ công, chúng được tạo bởi ORM và các tham số luôn được thoát đúng cách.
Tập lệnh Độc hại Cross Site Scripting (XSS): Lỗ hổng XSS xảy ra bất cứ khi nào một ứng dụng lấy dữ liệu do người dùng cung cấp và gửi dữ liệu này tới trình duyệt web mà không xác thực hoặc mã hóa nội dung đó trước. XSS cho phép kẻ tấn công thực thi các tập lệnh trong trình duyệt của nạn nhân, tập lệnh này có thể chiếm quyền điều khiển phiên làm việc của người dùng, đánh lừa trang web, có thể tạo ra sâu máy tính,...
Theo mặc định, khung Odoo thoát tất cả các biểu thức được hiển thị thành chế độ xem và trang, ngăn chặn XSS. Các nhà phát triển phải đặc biệt đánh dấu các biểu thức là "an toàn" để lồng thô vào các trang được hiển thị.
Giả mạo Yêu cầu Cross Site Request Forgery (CSRF): Một cuộc tấn công CSRF khiến trình duyệt của nạn nhân đã đăng nhập gửi một yêu cầu HTTP giả mạo, bao gồm cookie phiên làm việc của nạn nhân và mọi thông tin xác thực khác được tự động bao gồm, tới một ứng dụng web dễ bị tấn công. Điều này cho phép kẻ tấn công khiến trình duyệt của nạn nhân tạo yêu cầu mà ứng dụng dễ bị tấn công đó nhận diện đây là yêu cầu hợp pháp từ nạn nhân.
Công cụ trang web Odoo bao gồm cơ chế bảo vệ CSRF đã được tích hợp. Cơ chế này ngăn bất kỳ bộ điều khiển HTTP nào nhận yêu cầu POST mà không có token bảo mật tương ứng. Đây là kỹ thuật được đề xuất để phòng ngừa CSRF. Token bảo mật này chỉ được biết đến và hiển thị khi người dùng thực sự truy cập vào biểu mẫu trang web có liên quan và kẻ tấn công không thể giả mạo yêu cầu nếu không có token này.
Lưu trữ Mật mã Không an toàn: Các ứng dụng web hiếm khi sử dụng đúng các tính năng mật mã để bảo vệ dữ liệu và thông tin đăng nhập. Những kẻ tấn công sử dụng dữ liệu được bảo vệ yếu để thực hiện hành vi trộm cắp danh tính và các hành vi phạm tội khác, chẳng hạn như gian lận thẻ thanh toán.
Odoo sử dụng hàm băm an toàn theo tiêu chuẩn ngành cho mật khẩu người dùng (theo mặc định là PKFDB2 + SHA-512, có kéo dài khóa) để bảo vệ mật khẩu được lưu trữ. Các hệ thống xác thực bên ngoài như OAuth 2.0 hoặc LDAP cũng có thể được sử dụng để tránh lưu trữ cục bộ mật khẩu người dùng.
Không hạn chế truy cập URL: Thông thường, một ứng dụng chỉ bảo vệ chức năng nhạy cảm bằng cách ngăn hiển thị các liên kết hoặc URL cho người dùng trái phép. Kẻ tấn công có thể sử dụng điểm yếu này để truy cập và thực hiện các hoạt động trái phép bằng cách truy cập trực tiếp vào các URL đó.
Odoo không triển khai kiểm soát quyền truy cập ở cấp độ giao diện người dùng và bảo mật không dựa vào việc ẩn các URL đặc biệt. Kẻ tấn công không thể phá vỡ lớp kiểm soát truy cập bằng cách sử dụng lại hoặc thao túng bất kỳ URL nào, vì mọi yêu cầu vẫn phải đi qua lớp xác thực quyền truy cập dữ liệu. Trong một số ít trường hợp khi một URL cung cấp quyền truy cập trái phép vào dữ liệu nhạy cảm, chẳng hạn như các URL đặc biệt mà khách hàng sử dụng để xác nhận đơn đặt hàng, các URL này được ký điện tử bằng token duy nhất và chỉ được gửi qua email đến người nhận đã chỉ định.
III. Làm thế nào để nâng cao tính bảo mật khi sử dụng nền tảng Odoo?
* Luôn luôn sử dụng supper password mạnh, khi truy cập cập vào database manager, Sử dụng cách thức sau để tạo password:
$ python3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
* Chọn login là duy nhất vào mật khẩu mạnh cho các tài khoản administrator, không sử dụng tài khoản ‘admin’ để làm tài khoản login. Không sử dụng các thông tin đó cho các hoạt động bình thường mà chỉ sử dụng cho việc manage database. Và không được sử dụng tác tài khoản, mât khẩu thông dụng
* Không được cài đặt dữ liệu demo trên môi trường production. Vì trong dữ liệu demo có chứa các tài khoản với thông tin mặc định có thể làm hệ thống có thể bị tấn công.
* Sử dụng cấu hình --db-filter|dbfilter để ngăn chặn và chỉ hiển thị những database có thể được thay vì hiển thị toàn bộ database.
* Cấu hinh db_name và dbfilter để chỉ cho phép ứng dụng truy cập vào định xác 1 database trên hệ thông và bạn nên cấu hình thêm tham số --no-database-list | list_db bằng False để chặn việc truy cập vào màn hình quản lý database và không cho phép chọn database.
* Chắc chắn tài khoản đăng nhập PostgresSQL không phải là tài khoản supper-user.
* Luôn update Odoo lên các version mới nhất.
* Cấu hình multiple process phải đúng theo các công thức bên trên.
* Luôn chạy Odoo app với _x001D_.
* Nếu bạn cho phép truy cập server bằng ssh thì nên cấu hình user/password thật mạnh. Bạn cũng nên cấu hình firewall để cho phép các địa chỉ ip nhất định có thể truy cập vào server.
* Để ngăn chặn việc bị tấn công Brute Force Attacks bạn có thể cài thêm fail2ban.
* Không nên cài chung các hệ thống demo, test, staging cùng server với hệ thống production.
* Luôn có cấu hình backup database cũng như filestore để có thể xử lý lỗi phát sinh bất ngờ.
Việc đảm bảo an toàn thông tin là rất quan trọng. Với sự gia tăng vượt trội của công nghệ, Odoo là một trong những hệ thống quản lý doanh nghiệp đáng tin cậy nhất hiện nay. Với các giải pháp bảo mật chặt chẽ, Odoo đáp ứng được các yêu cầu an ninh thông tin cao nhất của các doanh nghiệp. Qua đó đảm bảo sự tin cậy cho việc sử dụng Odoo trong hoạt động kinh doanh hàng ngày.