Cách cài đặt và cấu hình OpenLDAP và phpLDAPadmin trên Ubuntu 16.04
Giao thức truy cập folder nhẹ (LDAP) là một giao thức tiêu chuẩn được thiết kế để quản lý và truy cập thông tin folder phân cấp qua mạng. Nó được dùng để lưu trữ bất kỳ loại thông tin nào, mặc dù nó thường được sử dụng như một hệ thống xác thực tập trung hoặc cho các danh bạ email và điện thoại của công ty.Trong hướng dẫn này, ta sẽ thảo luận về cách cài đặt và cấu hình server OpenLDAP trên Ubuntu 16.04. Sau đó, ta sẽ cài đặt phpLDAPadmin, một giao diện web để xem và thao tác thông tin LDAP. Ta sẽ bảo mật giao diện web và dịch vụ LDAP bằng certificate SSL từ Let's Encrypt, một nhà cung cấp các certificate tự động và miễn phí.
Yêu cầu
Trước khi bắt đầu hướng dẫn này, bạn nên cài đặt một server Ubuntu 16.04 với Apache và PHP. Bạn có thể làm theo hướng dẫn của ta Cách cài đặt ngăn xếp Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 16.04 , bỏ qua Bước 2 vì ta sẽ không cần server database MySQL.
Ngoài ra, vì ta sẽ nhập password vào giao diện web, ta nên bảo mật Apache bằng mã hóa SSL. Đọc Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 16.04 để download và cấu hình certificate SSL miễn phí. Bạn cần một domain để hoàn thành bước này. Ta cũng sẽ sử dụng các certificate này để cung cấp các kết nối LDAP an toàn.
 Lưu ý: hướng dẫn Let's Encrypt  giả định   server  của bạn có thể truy cập được vào internet công cộng. Nếu không đúng như vậy, bạn sẽ phải sử dụng một nhà cung cấp certificate  khác hoặc có thể là cơ quan cấp certificate  của chính tổ chức của bạn. Dù bằng cách nào,  bạn có thể  hoàn thành hướng dẫn với những thay đổi tối thiểu, chủ yếu liên quan đến đường dẫn hoặc tên file  của certificate .
Bước 1 - Cài đặt và cấu hình server LDAP
Bước đầu tiên của ta là cài đặt server LDAP và một số tiện ích liên quan. May mắn là các gói ta cần đều có sẵn trong repository lưu trữ mặc định của Ubuntu.
 Đăng nhập vào  server  của bạn. Vì đây là lần đầu tiên  ta  sử dụng apt-get trong phiên này,  ta  sẽ  cập nhật OS  local   của bạn , sau đó cài đặt các gói  ta  muốn:
- sudo apt-get update 
- sudo apt-get install slapd ldap-utils 
Trong quá trình cài đặt, bạn cần chọn và xác nhận password administrator cho LDAP. Bạn có thể nhập bất cứ thứ gì ở đây, vì bạn sẽ có cơ hội cập nhật nó chỉ trong giây lát.
 Mặc dù  ta  vừa cài đặt gói,  ta  sẽ tiếp tục và cấu hình lại nó. Gói slapd có khả năng hỏi rất nhiều câu hỏi cấu hình quan trọng, nhưng theo mặc định chúng sẽ bị bỏ qua trong quá trình cài đặt.  Ta  có quyền truy cập vào tất cả các  dấu nhắc  bằng cách yêu cầu hệ thống của  ta   cấu hình  lại gói:
- sudo dpkg-reconfigure slapd 
Có khá nhiều câu hỏi mới cần trả lời trong quá trình này. Ta sẽ chấp nhận hầu hết các giá trị mặc định. Hãy đi qua các câu hỏi:
- Bỏ qua cấu hình server OpenLDAP? Không
-  Tên domain  DNS?- Tùy chọn này sẽ xác định cấu trúc cơ sở của đường dẫn folder của bạn. Đọc thông báo để hiểu chính xác cách thực hiện điều này. Bạn có thể chọn bất kỳ giá trị nào bạn muốn, ngay cả khi bạn không sở hữu domain thực. Tuy nhiên, hướng dẫn này giả định bạn có một domain thích hợp cho server , vì vậy bạn nên sử dụng domain đó. Ta sẽ sử dụng example.com trong suốt hướng dẫn.
 
-  Tên tổ chức?- Đối với hướng dẫn này, ta sẽ sử dụng ví dụ làm tên tổ chức của ta . Bạn có thể chọn bất cứ thứ gì bạn cảm thấy phù hợp.
 
- Mật khẩu administrator ? nhập password an toàn hai lần
- Database backend ? MDB
- Xóa database khi tát cạn bị xóa? Không
- Di chuyển database cũ? Đúng
- Cho phép giao thức LDAPv2? Không
Đến đây, server LDAP của bạn đã được cấu hình và đang chạy. Mở cổng LDAP trên firewall của bạn để các client bên ngoài có thể kết nối:
- sudo ufw allow ldap 
Hãy kiểm tra kết nối LDAP của  ta  với ldapwhoami , điều này sẽ trả về tên  user  mà  ta  đã kết nối là:
- ldapwhoami -H ldap:// -x 
Outputanonymous anonymous là kết quả mà  ta  mong đợi, vì  ta  đã chạy ldapwhoami mà không cần đăng nhập vào  server  LDAP. Điều này  nghĩa là   server  đang chạy và trả lời các truy vấn. Tiếp theo,  ta  sẽ  cài đặt  giao diện web để quản lý dữ liệu LDAP.
Bước 2 - Cài đặt và cấu hình giao diện web phpLDAPadmin
Mặc dù rất có thể quản lý LDAP thông qua dòng lệnh, nhưng hầu hết user sẽ thấy dễ dàng hơn khi sử dụng giao diện web. Ta sẽ cài đặt phpLDAPadmin, một ứng dụng PHP cung cấp chức năng này.
 Kho lưu trữ Ubuntu chứa một gói phpLDAPadmin. Bạn có thể cài đặt nó bằng apt-get :
- sudo apt-get install phpldapadmin 
Thao tác này sẽ cài đặt ứng dụng, kích hoạt các cấu hình Apache cần thiết và reload Apache.
Web server hiện đã được cấu hình để phục vụ ứng dụng, nhưng ta cần thực hiện một số thay đổi bổ sung. Ta cần cấu hình phpLDAPadmin để sử dụng domain của ta và không tự động điền thông tin đăng nhập LDAP.
Bắt đầu bằng cách mở file cấu hình chính với quyền root trong editor của bạn:
- sudo nano /etc/phpldapadmin/config.php 
Tìm dòng bắt đầu bằng $servers->setValue('server','name' . Trong nano bạn có thể tìm kiếm một chuỗi  bằng lệnh  CTRL-W , sau đó là chuỗi, sau đó ENTER . Con trỏ của bạn sẽ được đặt đúng hàng.
Dòng này là tên hiển thị cho server LDAP của bạn, mà giao diện web sử dụng cho tiêu đề và thông báo về server . Chọn bất cứ điều gì thích hợp ở đây:
$servers->setValue('server','name','Example LDAP'); Tiếp theo, di chuyển xuống dòng $servers->setValue('server','base' . Cấu hình này cho phpLDAPadmin biết root  của cấu trúc phân cấp LDAP là gì. Điều này dựa trên giá trị mà  ta  đã nhập khi  cấu hình  lại gói slapd . Trong ví dụ của  ta ,  ta  đã chọn example.com và  ta  cần dịch điều này thành cú pháp LDAP bằng cách đặt từng thành phần domain  (mọi thứ không phải là dấu chấm) thành một ký hiệu dc= :
$servers->setValue('server','base', array('dc=example,dc=com')); Bây giờ, hãy tìm dòng cấu hình bind_id đăng nhập và  comment  nó bằng dấu # ở đầu dòng:
#$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com'); Tùy chọn này điền trước chi tiết đăng nhập administrator trong giao diện web. Đây là thông tin ta không nên chia sẻ nếu trang phpLDAPadmin của ta có thể truy cập .
 Điều cuối cùng mà  ta  cần điều chỉnh là cài đặt kiểm soát khả năng hiển thị của một số thông báo cảnh báo phpLDAPadmin. Mặc định ứng dụng sẽ hiển thị khá nhiều thông báo cảnh báo về các  file  mẫu. Những điều này không ảnh hưởng đến việc sử dụng phần mềm hiện tại của  ta .  Ta  có thể ẩn chúng bằng cách tìm kiếm tham số hide_template_warning , bỏ  comment  chứa nó và đặt nó thành true :
$config->custom->appearance['hide_template_warning'] = true; Đây là điều cuối cùng mà ta cần điều chỉnh. Lưu file để hoàn tất. Ta không cần phải khởi động lại bất kỳ thứ gì để các thay đổi có hiệu lực.
Tiếp theo, ta sẽ đăng nhập vào phpLDAPadmin.
Bước 3 - Đăng nhập vào Giao diện web phpLDAPadmin
Sau khi áp dụng các thay đổi cấu hình cần thiết cho phpLDAPadmin, bây giờ ta có thể bắt đầu sử dụng nó. Điều hướng đến ứng dụng trong trình duyệt web . Đảm bảo thay thế domain của bạn cho vùng được đánh dấu bên dưới:
https://example.com/phpldapadmin Trang đích phpLDAPadmin sẽ tải. Nhấp vào liên kết đăng nhập trong menu bên trái của trang. Một biểu mẫu đăng nhập sẽ được trình bày:
 Đăng nhập DN là tên  user  mà bạn sẽ sử dụng. Nó chứa tên account  dưới dạng phần cn= và domain  bạn đã chọn cho  server  được chia thành các phần dc= như được mô tả trong các bước trước. Tài khoản  administrator  mặc định mà  ta   cài đặt  trong quá trình cài đặt được gọi là admin , vì vậy đối với ví dụ của  ta ,  ta  sẽ nhập như sau:
cn=admin,dc=example,dc=com Sau khi nhập chuỗi thích hợp cho domain của bạn, hãy nhập password quản trị bạn đã tạo trong quá trình cấu hình, sau đó nhấp vào nút Xác thực .
Bạn sẽ được đưa đến giao diện chính:
Đến đây, bạn đã đăng nhập vào giao diện phpLDAPadmin. Bạn có thể thêm user , đơn vị tổ chức, group và mối quan hệ.
LDAP linh hoạt trong cách bạn có thể cấu trúc dữ liệu và phân cấp folder của bạn . Bạn có thể tạo bất kỳ loại cấu trúc nào bạn muốn và cũng có thể tạo các luật về cách chúng tương tác.
Vì quá trình này trên Ubuntu 16.04 giống như trên các version trước, bạn có thể làm theo các bước được trình bày trong phần Thêm đơn vị tổ chức, group và user của bài viết cài đặt LDAP cho Ubuntu 12.04 .
Các bước đó sẽ hoạt động tốt trên cài đặt phpLDAPadmin này, vì vậy hãy làm theo để thực hành một số thao tác với giao diện và học cách cấu trúc dữ liệu .
Bây giờ ta đã đăng nhập và làm quen với giao diện web, hãy dành một chút thời gian để cung cấp bảo mật hơn cho server LDAP của ta .
Bước 4 - Cấu hình mã hóa LDAP StartTLS
Mặc dù ta đã mã hóa giao diện web của bạn , các ứng dụng LDAP bên ngoài vẫn đang kết nối với server và chuyển thông tin ở dạng văn bản thuần túy. Hãy sử dụng certificate SSL Let's Encrypt của ta để thêm mã hóa vào server LDAP của ta .
Sao chép certificate Let's Encrypt
 Bởi vì slapd daemon chạy như OpenLDAP  user , và các certificate  Encrypt Hãy chỉ có thể được đọc bởi  user  root,  ta   cần  phải thực hiện một vài điều chỉnh để cho phép slapd truy cập vào các certificate .  Ta  sẽ tạo một tập lệnh ngắn sẽ sao chép các certificate  vào /etc/ssl/ , folder  hệ thống tiêu chuẩn cho các khóa và certificate  SSL. Lý do  ta  đang tạo một tập lệnh để thực hiện việc này, thay vì chỉ nhập các lệnh theo cách thủ công, là  ta   cần  tự động lặp lại quy trình này  khi  nào certificate  Let's Encrypt được gia hạn.  Ta  sẽ cập nhật công việc certbot cron sau để kích hoạt điều này.
Đầu tiên, hãy mở một file văn bản mới cho tập lệnh shell:
- sudo nano /usr/local/bin/renew.sh 
Thao tác này sẽ mở một file  văn bản trống. Dán vào tập lệnh sau. Đảm bảo cập nhật phần SITE= example.com để phản ánh nơi lưu trữ certificate  Let's Encrypt của bạn. Bạn có thể tìm thấy giá trị chính xác bằng cách liệt kê folder  certificate  với sudo ls /etc/letsencrypt/live .
#!/bin/sh  SITE=example.com  # move to the correct let's encrypt directory cd /etc/letsencrypt/live/$SITE  # copy the files cp cert.pem /etc/ssl/certs/$SITE.cert.pem cp fullchain.pem /etc/ssl/certs/$SITE.fullchain.pem cp privkey.pem /etc/ssl/private/$SITE.privkey.pem  # adjust permissions of the private key chown :ssl-cert /etc/ssl/private/$SITE.privkey.pem chmod 640 /etc/ssl/private/$SITE.privkey.pem  # restart slapd to load new certificates systemctl restart slapd Tập lệnh này sẽ di chuyển vào folder  certificate  Let's Encrypt, sao chép file  sang /etc/ssl , sau đó cập nhật các quyền của private key  để  group  ssl-cert của hệ thống có thể đọc được. Nó cũng khởi động lại slapd , điều này sẽ  đảm bảo  các certificate  mới được tải khi tập lệnh này được chạy từ công việc gia hạn certbot của  ta .
Lưu file , sau đó làm cho nó có thể thực thi:
- sudo chmod u+x /usr/local/bin/renew.sh 
Sau đó chạy script với sudo :
- sudo /usr/local/bin/renew.sh 
 Xác minh  tập lệnh hoạt động bằng cách liệt kê các file  mới trong /etc/ssl :
- sudo su -c 'ls -al /etc/ssl/{certs,private}/example.com*' 
Lệnh sudo ở trên hơi khác một chút so với bình thường. Các su -c ' . . . ' phần bao bọc toàn bộ ls trong một  shell  gốc trước khi thực thi nó. Nếu  ta  không làm điều này, phần mở rộng tên file  * ký tự đại diện sẽ chạy với quyền của  user  không phải sudo của bạn và nó sẽ không thành công vì /etc/ssl/private không thể đọc được bởi  user  của bạn.
 ls sẽ in chi tiết về ba file .  Xác minh  quyền sở hữu và quyền có đúng không:
Output-rw-r--r-- 1 root root     1793 May 31 13:58 /etc/ssl/certs/example.com.cert.pem -rw-r--r-- 1 root root     3440 May 31 13:58 /etc/ssl/certs/example.com.fullchain.pem -rw-r----- 1 root ssl-cert 1704 May 31 13:58 /etc/ssl/private/example.com.privkey.pem Tiếp theo,  ta  sẽ tự động hóa điều này với certbot .
Cập nhật Công việc Cron Gia hạn Certbot
  Ta  cần cập nhật công việc certbot cron  của bạn  để chạy tập lệnh này  khi  nào các certificate  được cập nhật:
- sudo crontab -e 
Bạn đã có dòng certbot renew . Thêm phần được đánh dấu bên dưới:
15 3 * * * /usr/bin/certbot renew --quiet --renew-hook /usr/local/bin/renew.sh Lưu và đóng crontab. Bây giờ,  khi  nào certbot gia hạn certificate , tập lệnh của  ta  sẽ được chạy để sao chép file , điều chỉnh quyền và khởi động lại  server  slapd .
Cấu hình sld để cung cấp kết nối an toàn
  Ta  cần thêm  user  openldap vào  group  ssl-cert để slapd có thể đọc private key :
- sudo usermod -aG ssl-cert openldap 
Khởi động lại slapd để nó chọn  group  mới:
- sudo systemctl restart slapd 
Cuối cùng,  ta  cần phải cấu hình slapd để thực sự sử dụng các certificate  và khóa này. Để làm điều này,  ta  đặt tất cả các thay đổi cấu hình của  ta  trong một file  LDIF - viết tắt của định dạng trao đổi dữ liệu LDAP - và sau đó tải các thay đổi vào  server  LDAP của  ta  bằng lệnh ldapmodify .
Mở file LDIF mới:
- cd ~ 
- nano ssl.ldif 
Thao tác này sẽ mở một file trống. Dán nội dung sau vào file , cập nhật tên file để phản ánh domain của bạn:
dn: cn=config changetype: modify add: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/ssl/certs/example.com.fullchain.pem - add: olcTLSCertificateFile olcTLSCertificateFile: /etc/ssl/certs/example.com.cert.pem - add: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ssl/private/example.com.privkey.pem  Lưu file  , sau đó áp dụng các thay đổi với ldapmodify :
- sudo ldapmodify -H ldapi:// -Y EXTERNAL -f ssl.ldif 
OutputSASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config"  Ta  không cần phải  reload  slapd để tải các certificate  mới, điều này xảy ra tự động khi  ta  cập nhật cấu hình với ldapmodify . Chạy lệnh ldapwhoami    để xác minh. Lần này  ta  cần sử dụng tên  server  phù hợp và thêm tùy chọn -ZZ để buộc kết nối an toàn:
- ldapwhoami -H ldap://example.com -x -ZZ 
Ta cần tên server đầy đủ khi sử dụng kết nối an toàn vì client sẽ kiểm tra đảm bảo rằng tên server trùng với tên server trên certificate . Điều này ngăn chặn các cuộc tấn công man-in-the-middle trong đó kẻ tấn công có thể chặn kết nối của bạn và mạo danh server của bạn.
 Lệnh ldapwhoami sẽ trả về anonymous , không có lỗi.  Ta  đã mã hóa thành công kết nối LDAP  của bạn .
Kết luận
 Trong hướng dẫn này,  ta  cài đặt và cấu hình OpenLDAP slapd  server , và các trang web LDAP giao diện phpLDAPadmin.  Ta  cũng  cài đặt  mã hóa trên cả hai  server , và cập nhật certbot để tự động xử lý slapd 's Hãy trình giấy chứng nhận đổi mới Encrypt.
Hệ thống mà ta đã cài đặt khá linh hoạt và bạn có thể thiết kế schemas tổ chức của riêng mình và quản lý các group tài nguyên theo nhu cầu của bạn. Để biết thêm thông tin về cách quản lý LDAP, bao gồm các công cụ và kỹ thuật dòng lệnh khác, hãy đọc hướng dẫn của ta Cách Quản lý và Sử dụng Server LDAP với Tiện ích OpenLDAP . Để biết thêm thông tin chuyên sâu về cách bảo mật server LDAP, bao gồm cách buộc tất cả client sử dụng kết nối an toàn, hãy đọc Cách mã hóa kết nối OpenLDAP bằng STARTTLS .
Các tin liên quan
Cách bật SFTP mà không cần truy cập Shell trên Ubuntu 16.042017-05-31
Cách tạo Go Executables cho nhiều nền tảng trên Ubuntu 16.04
2017-05-30
Cách cài đặt Concourse CI trên Ubuntu 16.04
2017-05-26
Cách giám sát server và dịch vụ bằng Icinga trên Ubuntu 16.04
2017-05-05
Cách thiết lập đồng bộ hóa thời gian trên Ubuntu 16.04
2017-04-28
Cách quản lý log với Graylog 2 trên Ubuntu 16.04
2017-04-25
Cách cài đặt Webmin trên Ubuntu 16.04
2017-04-21
Cách cài đặt và cấu hình OrientDB trên Ubuntu 16.04
2017-03-24
Cách cài đặt và cấu hình Postfix trên Ubuntu 16.04
2017-03-16
how-to-monitor-system-metrics-with-the-tick-stack-on-ubuntu-16-04
2017-03-16
 

