Tuesday, 23 December 2014

[Sec] SASL

Simple Authentication and Security Layer (SASL)

Nhìn tên thì có vẻ gì đấy bí hiểm nhưng bạn sẽ ngạc nhiên khi mở trang wikipedia của nó [1] ra vì nó rất ngắn. Cộng với chữ Simple ở đầu, hãy tin rằng đây là một thứ dễ hiểu và bạn sẽ hoàn toàn hiểu nó sau khi đọc hết bài này. Thậm chí RFC4422 cũng chỉ dài có 31 trang [2].

SASL là gì?
SASL là một framework cho việc cung cấp 2 dịch vụ:
- Authentication (xác thực)
- Security layer (tầng bảo mật)
cho các protocol (giao thức) hướng kết nối [3] (TCP là một trong số đó).

SASL để làm gì?
khi một giao thức đã hỗ trợ SASL, bạn không cần phải code thêm để xác thực người dùng (cơ bản nhất là sử dụng một cặp username/password) mà chỉ việc "đá quả bóng trách nhiệm" sang cho SASL (có thể là một thư viện hay một daemon), SASL sẽ thực hiện công việc xác thực người dùng theo cách bạn đã chọn, đồng thời cũng cung cấp các tính năng security như khả năng đảm bảo dữ liệu khi truyền được nguyên vẹn và bí mật.


Các giao thức hỗ trợ SASL
Những giao thức ứng dụng (application protocol) đã hỗ trợ SASL có thể kể tới: SMTP (gửi nhận mail), IMAP/POP (đọc mail),  LDAP, AMPQ, XMPP, ... Xem liệt kê đầy đủ ở [1].

Các phần mềm triển khai SASL
SASL là trên thực tế chỉ là một danh sách các yêu cầu về cơ chế xác thực (authentication mechanism) và các giao thức tương thích với nó được liệt kê ở RFC4422, để sử dụng được nó cần có các "implementation" - tức các phần mềm triển khai framework này bằng code cụ thể. Các implementation của SASL  có thể kể tới :
  • CyrusSASL
  • DovecotSASL
  • gSASL (GNU SASL)
Khi nào cần sử dụng SASL?
Một sysadmin sẽ có thể động chạm tới khái niệm SASL khi cần xác thực user (cho phép đăng nhập để sử dụng dịch vụ) trong lúc cài đặt:
  • SMTP server để gửi nhận mail (như postfix, exim, courier,...)
  • IMAP/POP3 server để đọc/quản lý mail (như dovecot, cyrus, ...)
  • OpenLDAP
[1] http://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer
[2] http://tools.ietf.org/html/rfc4422
[3] http://www.techopedia.com/definition/27206/connection-oriented-protocol-cop