Thứ năm, 05/06/2014 | 00:00 GMT+7

Cách cài đặt và cấu hình OpenLDAP và phpLDAPadmin trên server Ubuntu 14.04

LDAP , hoặc Giao thức truy cập folder hạng nhẹ, là một giao thức được thiết kế để quản lý và truy cập thông tin liên quan trong cấu trúc folder và file tập trung, phân cấp.

Theo một số cách, nó hoạt động tương tự như một database quan hệ, nhưng điều này không đúng với mọi thứ. Cấu trúc phân cấp là sự khác biệt chính về cách dữ liệu có liên quan. Nó được dùng để lưu trữ bất kỳ loại thông tin nào và nó thường được sử dụng như một thành phần của hệ thống xác thực tập trung.

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 server Ubuntu 14.04. Sau đó, ta sẽ cài đặt và bảo mật một giao diện phpLDAPadmin để cung cấp một giao diện web dễ dàng.

Cài đặt LDAP và Tiện ích trợ giúp

Trước khi bắt đầu, ta phải cài đặt phần mềm cần thiết. May mắn là các gói đều có sẵn trong repository lưu trữ mặc định của Ubuntu.

Đây là lần đầu tiên ta sử dụng apt trong phiên này, vì vậy ta sẽ cập nhật OS local của bạn . Sau đó, ta có thể 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ể đặt bất cứ thứ gì ở đây vì bạn sẽ có cơ hội thay đổi nó chỉ trong chốc lát.

Cấu hình lại tát để chọn Cài đặt tốt hơn

Mặc dù gói mới được cài đặt, ta sẽ tiếp tục và cấu hình lại các mặc định mà Ubuntu cài đặt.

Lý do cho điều này là trong khi gói có khả năng hỏi rất nhiều câu hỏi cấu hình quan trọng, chúng được bỏ qua trong quá trình cài đặt. Mặc dù vậy, ta có thể 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ó một số câu hỏi mới sẽ được đặt ra khi bạn thực hiện quá trình này. Bây giờ ta hãy xem xét những điều này:

  • 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.
    • Đây thực sự là một tùy chọn khá mở. Bạn có thể chọn bất kỳ giá trị "tên domain " nào bạn muốn, ngay cả khi bạn không sở hữu domain thực. Tuy nhiên, nếu bạn có một domain cho server , có lẽ bạn nên sử dụng domain đó.
    • Đối với hướng dẫn này, ta sẽ chọn test.com cho cấu hình của ta .
  • Tên tổ chức?
    • Điều này, , hoàn toàn phụ thuộc vào sở thích của bạn.
    • Đố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 .
  • Mật khẩu administrator ?
    • Như tôi đã đề cập trong phần cài đặt, đây là cơ hội thực sự để bạn chọn password administrator . Mọi thứ bạn chọn ở đây sẽ overrides lên password trước đó bạn đã sử dụng.
  • Database backend ? HDB
  • 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, LDAP của bạn nên được cấu hình một cách khá hợp lý.

Cài đặt phpLDAPadmin để Quản lý LDAP bằng Giao diện Web

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, cung cấp chức năng này, để giúp loại bỏ một số khó khăn khi học các công cụ LDAP.

Kho lưu trữ Ubuntu chứa gói phpLDAPadmin. Bạn có thể cài đặt nó bằng lệnh :

sudo apt-get install phpldapadmin 

Thao tác này sẽ cài đặt giao diện quản trị, kích hoạt các file server ảo Apache cần thiết và reload Apache.

Web server hiện đã được cấu hình để phục vụ ứng dụng của bạn, nhưng ta sẽ thực hiện một số thay đổi bổ sung. Ta cần cấu hình phpLDAPadmin để sử dụng schemas domain mà ta đã cấu hình cho LDAP và ta cũng sẽ thực hiện một số điều chỉnh để bảo mật cấu hình của ta một chút.

Cấu hình phpLDAPadmin

Bây giờ gói đã được cài đặt, ta cần cấu hình một số thứ để nó có thể kết nối với cấu trúc folder LDAP đã được tạo trong giai đoạn cấu hình OpenLDAP.

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 

Trong file này, ta cần thêm chi tiết cấu hình mà ta cài đặt cho server LDAP của bạn . Bắt đầu bằng cách tìm kiếm thông số server và đặt nó thành domain hoặc địa chỉ IP công cộng của server của bạn. Tham số này phải phản ánh cách bạn định truy cập giao diện web:

<pre>
$ server-> setValue ('server', 'host', '<span class = “highlight”> tên domain hoặc IP server </span>');
</pre>

Tiếp theo, bạn cần phải cấu hình domain bạn đã chọn cho server LDAP của bạn . Lưu ý , trong ví dụ của ta , ta đã chọn test.com . Ta cần dịch điều này thành cú pháp LDAP bằng cách thay thế từng thành phần domain (mọi thứ không phải là dấu chấm) thành giá trị của đặc tả dc .

Tất cả điều này nghĩa là thay vì viết test.com , ta sẽ viết thông tin như dc=test,dc=com . Ta nên tìm tham số đặt tham số cơ sở server và sử dụng định dạng ta vừa thảo luận để tham chiếu đến domain mà ta đã quyết định:

<pre>
$ server-> setValue ('server', 'base', array ('dc = <span class = "highlight"> test </span>, dc = <span class = "highlight"> com </span>') );
</pre>

Ta cần điều chỉnh điều này tương tự trong tham số bind_id đăng nhập của ta . Tham số cn đã được đặt là "admin". Chính xác. Ta chỉ cần điều chỉnh lại các phần dc , giống như ta đã làm ở trên:

<pre>
$ server-> setValue ('login', 'bind_id', 'cn = admin, dc = <span class = “highlight”> test </span>, dc = <span class = “highlight”> com </span> ');
</pre>

Đ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 các thông báo cảnh báo. Theo mặc định, phpLDAPadmin sẽ đưa ra một số thông báo cảnh báo khá phiền phức trong giao diện web của nó về các file mẫu không ảnh hưởng đến chức năng.

Ta có thể ẩn những thứ này bằng cách tìm kiếm tham số hide_template_warning , bỏ comment chứa nó và đặt nó thành “true”:

<pre>
$ config-> custom-> export ['hide template warning'] = <span class = “highlight”> true </span>;
</pre>

Đây là điều cuối cùng mà ta cần điều chỉnh. Bạn có thể lưu file khi hoàn tất.

Tạo certificate SSL

Ta muốn bảo mật kết nối của bạn với server LDAP bằng SSL để các bên ngoài không thể chặn liên lạc của ta .

Vì giao diện quản trị đang nói chuyện với chính server LDAP trên mạng local , ta không cần sử dụng SSL cho kết nối đó. Ta chỉ cần bảo mật kết nối bên ngoài với trình duyệt của bạn khi ta kết nối.

Để làm điều này, ta chỉ cần cài đặt certificate SSL tự ký mà server của ta có thể sử dụng. Điều này sẽ không giúp ta xác thực danh tính của server , nhưng nó sẽ cho phép ta mã hóa tin nhắn của bạn .

Các gói OpenSSL phải được cài đặt trên hệ thống của bạn theo mặc định. Đầu tiên, ta nên tạo một folder để chứa certificate và khóa của ta :

sudo mkdir /etc/apache2/ssl 

Tiếp theo, ta có thể tạo khóa và certificate trong một chuyển động bằng lệnh :

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt 

Bạn sẽ phải trả lời một số câu hỏi để tiện ích điền chính xác các trường trong certificate . Điều duy nhất thực sự quan trọng là dấu nhắc cho biết Common Name (eg server FQDN or YOUR name) . Nhập domain hoặc địa chỉ IP của server của bạn.

Khi bạn hoàn tất, certificate và khóa của bạn sẽ được ghi vào folder /etc/apache2/ssl .

Tạo file xác thực password

Ta cũng muốn đặt password bảo vệ vị trí phpLDAPadmin của bạn . Mặc dù phpLDAPadmin có xác thực password , điều này sẽ cung cấp thêm một cấp độ bảo vệ.

Tiện ích mà ta cần có trong một gói tiện ích Apache. Nhận nó bằng lệnh :

sudo apt-get install apache2-utils 

Đến đây bạn đã có sẵn tiện ích này, bạn có thể tạo một file password chứa tên user mà bạn chọn và password băm được liên kết.

Ta sẽ giữ nó trong folder /etc/apache2 . Tạo file và chỉ định tên user bạn muốn sử dụng bằng lệnh :

<pre>
sudo htpasswd -c / etc / apache2 / htpasswd <span class = “highlight”> demo_user </span>
</pre>

Bây giờ, ta đã sẵn sàng sửa đổi Apache để tận dụng các nâng cấp bảo mật của ta .

Apache an toàn

Điều đầu tiên ta nên làm là kích hoạt module SSL trong Apache. Ta có thể làm điều này bằng lệnh :

sudo a2enmod ssl 

Điều này sẽ kích hoạt module , cho phép ta sử dụng nó. Tuy nhiên, ta vẫn cần cấu hình Apache để tận dụng điều này.

Hiện tại, Apache đang đọc một file có tên 000-default.conf cho các kết nối HTTP thông thường, không được mã hóa. Ta cần yêu cầu nó chuyển hướng các yêu cầu cho giao diện phpLDAPadmin của ta đến giao diện HTTPS của ta để kết nối được mã hóa.

Khi ta chuyển hướng lưu lượng truy cập để sử dụng certificate SSL của bạn , ta cũng sẽ triển khai file password để xác thực user . Trong khi ta đang sửa đổi mọi thứ, ta cũng sẽ thay đổi vị trí của chính giao diện phpLDAPadmin để giảm thiểu các cuộc tấn công có chủ đích.

Sửa đổi cấu hình Apache phpLDAPadmin

Điều đầu tiên ta sẽ làm là sửa đổi alias được cài đặt để phục vụ các file phpLDAPadmin của ta .

Mở file với quyền root trong editor của bạn:

sudo nano /etc/phpldapadmin/apache.conf 

Đây là nơi mà ta cần quyết định vị trí URL mà ta muốn truy cập vào giao diện của bạn . Mặc định là /phpldapadmin , nhưng ta muốn thay đổi điều này để cắt giảm các nỗ lực đăng nhập ngẫu nhiên của bot và các bên độc hại.

Đối với hướng dẫn này, ta sẽ sử dụng vị trí /superldap , nhưng bạn nên chọn giá trị của riêng mình.

Ta cần sửa đổi dòng chỉ định Alias . Điều này phải nằm trong khối IfModule mod_alias.c . Khi bạn hoàn thành, nó sẽ giống như sau:

<pre>
<IfModule mod_alias.c>
Bí danh <span class = “highlight”> / superldap </span> / usr / share / phpldapadmin / htdocs
</IfModule>
</pre>

Khi bạn hoàn tất, hãy an toàn và đóng file .

Cấu hình Server ảo HTTP

Tiếp theo, ta cần sửa đổi file Server ảo hiện tại của bạn . Mở nó với quyền root trong editor :

sudo nano /etc/apache2/sites-enabled/000-default.conf 

Bên trong, bạn sẽ thấy một file cấu hình khá trống rỗng trông như thế này:

<pre>
<VirtualHost *: 80>
Administrator web ServerAdmin @ localhost
DocumentRoot / var / www / html
ErrorLog $ {APACHE LOG DIR} /error.log
CustomLog $ {APACHE LOG DIR} /access.log kết hợp
</VirtualHost>
</pre>

Ta muốn thêm thông tin về domain hoặc địa chỉ IP của bạn để xác định tên server của ta và ta muốn cài đặt chuyển hướng để trỏ tất cả các yêu cầu HTTP đến giao diện HTTPS. Điều này sẽ trùng với alias mà ta đã cấu hình trong phần trước.

Những thay đổi ta đã thảo luận sẽ kết thúc như thế này. Sửa đổi các mục màu đỏ với các giá trị của bạn :

<pre>
<VirtualHost *: 80>
ServerAdmin webmaster @ <span class = “highlight”> miền hoặc IP server </span>
DocumentRoot / var / www / html
<span class = “highlight”> Tên
domain hoặc IP server ServerName </span>
<span class = “highlight”> Chuyển hướng thường trực / superldap https: // server_domain_or_IP / superldap </span>
ErrorLog $ {APACHE LOG DIR} /error.log
CustomLog $ {APACHE LOG DIR} /access.log kết hợp
</VirtualHost>
</pre>

Lưu file khi bạn hoàn tất.

Cấu hình file server ảo HTTPS

Apache bao gồm một file Server ảo SSL mặc định. Tuy nhiên, nó không được bật theo mặc định.

Ta có thể kích hoạt nó bằng lệnh :

sudo a2ensite default-ssl.conf 

Điều này sẽ liên kết các file từ các sites-available folder vào sites-enabled folder . Ta có thể chỉnh sửa file này ngay bây giờ bằng lệnh :

sudo nano /etc/apache2/sites-enabled/default-ssl.conf 

Tệp này có liên quan nhiều hơn một chút so với file cuối cùng, vì vậy ta sẽ chỉ thảo luận về những thay đổi mà ta phải thực hiện. Tất cả các thay đổi bên dưới sẽ nằm trong khối Server ảo trong file .

Trước hết, hãy đặt lại giá trị ServerName thành domain hoặc địa chỉ IP của server và thay đổi cả lệnh ServerAdmin :

<pre>
ServerAdmin webmaster @ <span class = “highlight”> miền hoặc IP server </span>
<span class = “highlight”> Tên
domain hoặc IP server ServerName </span>
</pre>

Tiếp theo, ta cần cài đặt các chỉ thị certificate SSL trỏ đến khóa và certificate mà ta đã tạo. Các chỉ thị phải đã tồn tại trong file của bạn, vì vậy chỉ cần sửa đổi các file mà chúng trỏ tới:

<pre>
SSLCertificateFile <span class = “highlight”> / etc / apache2 / ssl / apache.crt </span>
SSLCertificateKeyFile <span class = “highlight”> / etc / apache2 / ssl / apache.key </span>
</pre>

Điều cuối cùng ta cần làm là cài đặt khối vị trí sẽ thực hiện bảo vệ bằng password của ta cho toàn bộ cài đặt phpLDAPadmin.

Ta thực hiện việc này bằng cách tham chiếu đến vị trí mà ta đang cung cấp phpLDAPadmin và cài đặt xác thực bằng cách sử dụng file ta đã tạo. Ta sẽ yêu cầu bất kỳ ai cố gắng truy cập nội dung này để xác thực là user hợp lệ:

<pre>
<span class = “highlight”> <Location / superldap> </span>
<span class = “highlight”> AuthType Basic </span>
<span class = “highlight”> AuthName “Tệp bị hạn chế” </span>
<span class = “highlight”> AuthUserFile / etc / apache2 / htpasswd </span>
<span class = “highlight”> Yêu cầu user hợp lệ </span>
<span class = “highlight”> </Location>
</pre>

Lưu file khi bạn hoàn tất.

Khởi động lại Apache để thực hiện tất cả các thay đổi mà ta đã thực hiện:

sudo service apache2 restart 

Bây giờ ta có thể chuyển sang giao diện thực tế.

Đăng nhập vào giao diện web phpLDAPadmin

Ta đã áp dụng các thay đổi cấu hình mà ta cần đối với phần mềm phpLDAPadmin. Bây giờ ta có thể bắt đầu sử dụng nó.

Ta có thể truy cập giao diện web bằng cách truy cập vào domain của server hoặc địa chỉ IP công cộng của ta , theo sau là alias mà ta đã cấu hình . Trong trường hợp của ta , đây là /superldap :

<pre>
http: // <span class = “highlight”> tên domain hoặc IP server </span> / <span class = “highlight”> superldap </span>
</pre>

Lần đầu tiên truy cập, bạn có thể sẽ thấy cảnh báo về certificate SSL của trang web:

cảnh báo SSL phpLDAPadmin

Cảnh báo chỉ ở đây để cho bạn biết rằng trình duyệt không nhận dạng được tổ chức phát hành certificate đã ký certificate của bạn. Vì ta đã ký certificate của riêng mình nên điều này được mong đợi và không thành vấn đề.

Nhấp vào nút “Vẫn tiếp tục” hoặc bất kỳ tùy chọn tương tự nào mà trình duyệt của bạn cung cấp cho bạn.

Tiếp theo, bạn sẽ thấy dấu nhắc password mà bạn đã cấu hình cho Apache:

 dấu nhắc  password  phpLDAPadmin

Điền thông tin đăng nhập account bạn đã tạo bằng lệnh htpasswd . Bạn sẽ thấy trang đích chính của phpLDAPadmin:

trang đích phpLDAPadmin

Nhấp vào liên kết “đăng nhập” mà bạn có thể thấy ở phía bên trái của trang.

trang đăng nhập phpLDAPadmin

Bạn sẽ được đưa đến dấu nhắc đăng nhập. Thông tin đăng nhập “DN” giống như tên user mà bạn sẽ sử dụng. Nó chứa tên account dưới “cn” và domain bạn đã chọn cho server được chia thành các phần “dc” như ta đã mô tả ở trên.

Nó phải được điền trước với giá trị chính xác cho account quản trị nếu bạn đã cấu hình phpLDAPadmin đúng cách. Trong trường hợp của ta , nó trông như thế này:

cn=admin,dc=test,dc=com 

Đối với password , hãy nhập password administrator mà bạn đã cấu hình trong quá trình cấu hình LDAP.

Bạn sẽ được đưa đến giao diện chính:

trang chính của phpLDAPadmin

Thêm đơn vị tổ chức, group và user

Đế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 muốn cấu trúc dữ liệu và cấu trúc phân cấp folder của bạn . Về cơ bản, bạn có thể tạo bất kỳ loại cấu trúc nào bạn muốn và tạo luật cho cách chúng tương tác.

Vì quy trình này giống trên Ubuntu 14.04 cũng như trên Ubuntu 12.04, 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àn toàn giống nhau trên cài đặt 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à tìm hiểu về cách cấu trúc các đơn vị của bạn.

Kết luận

Đến đây bạn đã cài đặt và cấu hình OpenLDAP trên server Ubuntu 14.04 của bạn . Bạn cũng đã cài đặt và cấu hình giao diện web để quản lý cấu trúc của bạn thông qua chương trình phpLDAPadmin. Bạn đã cấu hình một số bảo mật cơ bản cho ứng dụng bằng cách buộc SSL và password bảo vệ toàn bộ ứng dụng.

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. Trong hướng dẫn tiếp theo, ta sẽ thảo luận về cách cấu hình các máy được nối mạng của bạn để sử dụng server LDAP này để xác thực hệ thống.

<div class = “author”> Bởi Justin Ellingwood </div>


Tags:

Các tin liên quan

Cách cấu hình Collectd để thu thập số liệu hệ thống cho Graphite trên Ubuntu 14.04
2014-06-03
Cách cấu hình StatsD để thu thập số liệu thống kê tùy ý cho Graphite trên Ubuntu 14.04
2014-06-03
Cách cài đặt OctoberCMS trên VPS chạy Ubuntu 14.04
2014-05-28
Cách cài đặt và sử dụng Graphite trên server Ubuntu 14.04
2014-05-27
Cách cài đặt và sử dụng Ack, một sự thay thế Grep cho các nhà phát triển, trên Ubuntu 14.04
2014-05-27
Cách sử dụng BitTorrent Sync để đồng bộ hóa các thư mục trong Ubuntu 14.04
2014-05-19
Cách sử dụng HAProxy làm bộ cân bằng tải lớp 4 cho server ứng dụng WordPress trên Ubuntu 14.04
2014-05-16
Cách sử dụng kpcli để quản lý tệp mật khẩu KeePass2 trên server Ubuntu 14.04
2014-05-16
Cách khởi chạy trang web của bạn trên server Ubuntu 14.04 mới với LAMP, SFTP và DNS
2014-05-13
Cách cài đặt Node.js trên server Ubuntu 14.04
2014-05-12