PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách đóng lỗ hổng bảo mật trong PostgreSQL

Cho dù bạn sử dụng loại công nghệ hoặc hệ thống bảo mật nào, thì luôn có nguy cơ bị tấn công vì không có hệ thống nào được bảo mật 100%. Vì dữ liệu có lẽ là tài sản quan trọng nhất trong một công ty, bạn phải bảo mật hệ thống của mình càng nhiều càng tốt để giảm thiểu rủi ro này.

Blog này sẽ đề cập đến một số kiểm tra quan trọng cần thực hiện trong môi trường PostgreSQL của bạn để thu hẹp lỗ hổng bảo mật và tránh một số vấn đề bảo mật phổ biến nhất.

Bảo mật thông tin liên lạc

Nếu bạn đang sử dụng các Nhà cung cấp đám mây khác nhau, kết hợp giữa Nhà cung cấp đám mây và On-Prem, hoặc thậm chí chỉ là môi trường On-Prem, giao tiếp trong tất cả các hệ thống của bạn phải được mã hóa và bạn phải hạn chế chỉ lưu lượng truy cập từ các nguồn đã biết để giảm nguy cơ truy cập trái phép vào mạng của bạn.

Việc sử dụng Quy tắc VPN, SSH hoặc Tường lửa hoặc thậm chí kết hợp chúng là những giải pháp tốt cho điểm này.

Kiểm soát Quyền truy cập Cơ sở dữ liệu

Bạn cần hạn chế cả truy cập vật lý và truy cập từ xa.

  • Truy cập thực (tại chỗ):Hạn chế truy cập vật lý trái phép vào máy chủ cơ sở dữ liệu.

  • Truy cập từ xa:Chỉ giới hạn quyền truy cập từ xa cho những người cần thiết và từ số lượng nguồn ít nhất có thể. Sử dụng VPN để truy cập nó chắc chắn hữu ích ở đây, nhưng cũng có các tùy chọn khác như SSH Tunneling. Bạn nên tìm ra giải pháp tốt nhất cho công ty của mình.

Quản lý Tài khoản Người dùng Cơ sở dữ liệu

Có nhiều cách để cải thiện bảo mật cho tài khoản người dùng của bạn trong PostgreSQL.

  • Xóa người dùng không hoạt động. Đối với điều này, bạn nên xác định khoảng thời gian để coi một người dùng là không hoạt động và bạn có thể lên lịch để xóa họ tự động.

  • Chỉ cấp các đặc quyền cần thiết khi bạn tạo tài khoản người dùng mới.

  • Hạn chế nguồn cho mỗi kết nối người dùng bằng tệp cấu hình pg_hba.conf.

  • Xác định chính sách mật khẩu an toàn (hoặc bật một plugin cho việc này, ví dụ:kiểm tra mật khẩu).

Cấu hình và Cài đặt Bảo mật

Có một số thay đổi cần thực hiện để bảo mật cài đặt PostgreSQL của bạn.

  • Chỉ cài đặt các gói và dịch vụ cần thiết trên máy chủ.

  • Thay đổi mật khẩu người dùng quản trị mặc định và chỉ hạn chế sử dụng máy chủ cục bộ.

  • Thay đổi cổng mặc định và chỉ định giao diện để nghe.

  • Bật plugin chính sách bảo mật mật khẩu.

  • Định cấu hình chứng chỉ SSL để mã hóa dữ liệu khi truyền dữ liệu.

  • Mã hóa dữ liệu ở chế độ nghỉ.

  • Định cấu hình tường lửa cục bộ để chỉ cho phép truy cập vào cổng cơ sở dữ liệu từ mạng cục bộ.

Trong trường hợp bạn đang sử dụng cơ sở dữ liệu PostgreSQL được quản lý, một số điểm được đề cập ở trên sẽ không cần thiết.

Kiểm toán và Ghi nhật ký

Các câu lệnh ghi nhật ký có thể giúp bạn phát hiện hoặc tránh các vấn đề bảo mật nếu bạn xử lý kịp thời.

Bạn có thể sử dụng cơ sở PostgreSQL ghi nhật ký chuẩn bằng cách sử dụng tham số log_statement, nhưng bạn cũng có thể sử dụng tiện ích mở rộng như pgAudit để ghi nhật ký kiểm tra phiên và đối tượng chi tiết hơn.

Triển khai WAF (Tường lửa ứng dụng web)

SQL Injjection hoặc DoS (Từ chối Dịch vụ) là những cuộc tấn công phổ biến nhất đối với cơ sở dữ liệu và cách an toàn nhất để tránh chúng là sử dụng WAF để bắt loại truy vấn SQL này hoặc một SQL Proxy để phân tích lưu lượng truy cập.

Thường xuyên kiểm tra CVE (Lỗ hổng phổ biến và Mức độ phơi nhiễm)

Hàng ngày, các lỗ hổng bảo mật mới được phát hiện cho máy chủ cơ sở dữ liệu của bạn. Bạn nên kiểm tra nó thường xuyên để biết liệu bạn có cần áp dụng bản vá hoặc thay đổi điều gì đó trong cấu hình của mình hay không. Một cách để biết nó là bằng cách xem xét trang web CVE, nơi bạn có thể tìm thấy danh sách các lỗ hổng kèm theo mô tả và bạn có thể tìm phiên bản cơ sở dữ liệu và nhà cung cấp của mình để xác nhận xem có điều gì quan trọng cần khắc phục càng sớm càng tốt.

Để cụ thể hơn, bạn có thể kiểm tra phần PostgreSQL để cố gắng tìm ra sự cố cho phiên bản cơ sở dữ liệu của bạn.

Luôn cập nhật hệ điều hành và cơ sở dữ liệu của bạn

Có một số bản sửa lỗi và cải tiến mà nhà cung cấp cơ sở dữ liệu hoặc hệ điều hành phát hành để khắc phục hoặc tránh các lỗ hổng. Điều quan trọng là luôn cập nhật hệ thống của bạn bằng cách áp dụng các bản vá lỗi và nâng cấp bảo mật.

Giám sát

Để biết tình trạng hệ thống của bạn, bạn cần phải có một hệ thống giám sát tốt tại chỗ. Điều này có thể hữu ích để tìm các vấn đề bảo mật hoặc thậm chí để tránh chúng.

Đối với điều này, ClusterControl là một lựa chọn tốt vì nó là một hệ thống quản lý và giám sát giúp bạn triển khai, quản lý, giám sát và mở rộng cơ sở dữ liệu của mình từ một giao diện thân thiện. Nó hỗ trợ các công nghệ cơ sở dữ liệu nguồn mở hàng đầu và bạn có thể tự động hóa nhiều tác vụ cơ sở dữ liệu mà bạn phải thực hiện thường xuyên như thêm và mở rộng các nút mới, chạy sao lưu và khôi phục, v.v.

ClusterControl cho phép bạn giám sát các máy chủ của mình trong thời gian thực với một tập hợp các trang tổng quan được xác định trước để phân tích một số chỉ số phổ biến nhất.

Nó cho phép bạn tùy chỉnh các biểu đồ có sẵn trong cụm và bạn có thể bật tính năng giám sát dựa trên tác nhân để tạo ra các trang tổng quan chi tiết hơn.

Bạn cũng có thể tạo cảnh báo, thông báo cho bạn về các sự kiện trong cụm của bạn hoặc tích hợp với các dịch vụ khác nhau như PagerDuty hoặc Slack.

Trong phần theo dõi truy vấn, bạn có thể tìm thấy các truy vấn hàng đầu, các truy vấn đang chạy, ngoại lệ truy vấn và thống kê truy vấn để theo dõi lưu lượng cơ sở dữ liệu của bạn.

Với những tính năng này, bạn có thể thấy cơ sở dữ liệu PostgreSQL của mình đang hoạt động như thế nào.

Kết luận

Những điểm được đề cập ở trên sẽ giúp bạn thu hẹp lỗ hổng bảo mật trong cơ sở dữ liệu PostgreSQL của mình, nhưng như chúng tôi đã đề cập, luôn có nguy cơ bị tấn công.

Ngoài ra, bạn nên có một hệ thống giám sát tốt như ClusterControl và chạy định kỳ một số công cụ quét bảo mật tìm kiếm lỗ hổng bảo mật như Nessus để giảm thiểu rủi ro bảo mật hơn nữa.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pg_dump cơ sở dữ liệu postgres từ máy chủ từ xa khi cổng 5432 bị chặn

  2. PGError:ERROR:quyền bị từ chối đối với mối quan hệ (khi sử dụng Heroku)

  3. Vị trí cột id trong Postgresql có quan trọng không?

  4. Các tình huống thất bại PostgreSQL phổ biến nhất

  5. Không tìm thấy hình ảnh psycopg2