Tích hợp OpenSSH với OpenLDAP trong ứng dụng xác thực tập trung

Một phần của tài liệu Nghiên cứu xây dựng giải pháp phòng chống tấn công, đột nhập vào hệ thống để đảm bảo an toàn thông tin trên hệ điều hành mã nguồn mở (Trang 93)

Hiện nay, các ứng dụng LDAP đang đƣợc sử dụng rất rộng rãi đặc biệt trong việc xác thực ngƣời dùng. Nhƣ đã biết để kết nối tới máy chủ từ xa thông qua chƣơng trình OpenSSH, máy chủ SSH sẽ cần phải xác thực ngƣời dùng truy cập. Ý tƣởng thực hiện sẽ thông qua máy chủ LDAP để lƣu trữ thông tin xác thực, thông tin xác thực ở đây là khóa công khai (Public Key). Phƣơng thức xác thực máy chủ SSH vẫn là

phƣơng pháp xác thực khóa công khai. Tuy nhiên, khóa công khai sẽ không lƣu trữ trên máy chủ SSH nhƣ trong tệp tin mặc định là ~/.ssh/authorized_keys, mà khóa này sẽ lƣu cùng với thông tin của ngƣời dùng trên máy chủ LDAP, cho phép xác thực tập trung nhiều máy chủ. Phƣơng pháp này thay thế cho các phƣơng pháp xác thực nhƣ Kerberos, SecurID…

Quá trình xác thực nhƣ sau:

Nếu ngƣời sử dụng muốn xác thực khi truy cập vào một máy chủ, trƣớc tiên máy chủ SSH sẽ sử dụng phƣơng thức xác thực khóa công khai LDAP (ldappubkey). Ldappubkey này sẽ tiến hành tìm kiếm thông qua thao tác ldapsearch để lấy trực tiếp khóa công khai từ máy chủ LDAP thay vì đọc nó từ hệ thống tập tin máy chủ SSH.

Hình 3.47: Mô hình kết hợp OpenSSH với OpenLDAP

Để thực hiện trƣớc tiên cần cài đặt OpenLDAP để thiết lập máy chủ LDAP, Xây dựng lƣợc đồ (schema) cho phép xác thực khóa công khai SSH. Tập tin có tên openssh_lpk.schema có nội dung nhƣ sau:

# octetString

SYNTAX attributetype ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey' DESC 'MANDATORY: OpenSSH Public key'

EQUALITY octetStringMatch

SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 ) # printableString

objectclass ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY

DESC 'MANDATORY: OpenSSH LPK objectclass' MAY ( sshPublicKey $ uid )

)

Việc tiếp theo cần đƣa openssh-lpk.schema vào tập tin cấu hình của máy chủ LDAP, Kết quả của việc thêm schema openssh-lpk đƣợc thể hiện trong hình dƣới đây:

Hình 3.48: Thêm openssh-lpk.schema vào LDAP

Công việc tiếp theo cần phải tạo cơ sở dữ liệu cho ngƣời dùng trên máy chủ LDAP để để phục vụ việc chứng thực khi kết nối tới máy chủ SSH. Thông tin ngƣời dùng đƣợc lƣu trong tâp tin users.ldif có nội dung nhƣ sau:

dn: uid=server1, ou=people, dc=example, dc=com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: posixAccount objectclass: ldapPuclicKey description: My account cn: Dang Nam sn: Dang Nam uid: server1 uidNumber: 1001 gidNumber: 1001 homeDirectory: /home/server1

sshPublicKey: //{Khóa công khai để xác thực.} …

Đƣa dữ liệu về ngƣời dùng trong file users.ldif vào LDAP kết quả đƣợc minh họa nhƣ hình dƣới đây:

Hình 3.49: Thông tin về người dùng được đưa vào LDAP

Thông tin về nhóm ngƣời dùng đƣợc lƣu trong file groups.ldif có nội dung dạng nhƣ sau:

dn: cn=unix,ou=groups,dc=example,dc=com objectclass: top

objectclass: posixGroup description: Unix group cn: unix

gidNumber: 1002 memberUid: server1 …

Đƣa dữ liệu nhóm ngƣời dùng lƣu trong file groups.ldif và LDAP, kết quả đƣợc minh họa nhƣ hình dƣới đây:

Hình 3.50: Thông tin về nhóm người dùng được đưa vào LDAP

Sử dụng bản vá openssh-lpk để cập nhật mã nguồn vào các file của openssh cho phép xác thực khóa công khai thông qua LDAP. Các bản vá có thể tải về tại địa chỉ http://code.google.com/p/openssh-lpk/source/

Để máy chủ SSH sử dụng phƣơng thức xác thực thông qua LDAP cần phải phát triển mã nguồn cập nhật vào một số tập tin bao gồm: Makefile.in, auth-rsa.c, auth2- pubkey.c, config.h.in, configure, configure.ac, servconf.c, servconf.h, sshd.c, sshd_config, sshd_config.5, version.h và xây dựng hai tập tin mới phục vụ cho việc xác thực LDAP bao gồm ldapauth.c và ldapauth.h

Thiết lập lại các thông số trong tập tin cấu hình của máy chủ SSH sshd_conf nhƣ sau: UserLPK yes

LpkServers ldap://{địa chỉ máy chủ LDAP} LpkUserDN ou=people, dc=example,dc=com LpkGroupDN ou=groups,dc=example,dc=com LpkBindDN cn=unix,dc=example,dc=com LpkBindPw asecret

LpkServerGroup {tên của một nhóm ngƣời dùng} (adsbygoogle = window.adsbygoogle || []).push({});

Sau khi hoàn tất việc cập nhật mã nguồn cũng nhƣ các thiết lập trong máy chủ LDAP và các tập tin cấu hình của OpenSSH có thể đăng nhập nhƣ với đăng nhập thông qua xác thực khóa công khai nhƣ đã trình bày ở phần trên.

Kết chƣơng

Trên cơ sở các giải pháp đã chỉ ra trong chƣơng 2, chƣơng 3 này tập trung vào việc triển khai một số giải pháp đã nghiên cứu trong chƣơng 2 bao gồm: Triển khai SELinux, Triển khai các giải pháp đảm bảo an toàn file bằng cách thay đổi các quyền truy nhập file và sử dụng chƣơng trình md5sum, sha1sum để kiểm tra tính toàn vẹn của file. Triển khai hệ thống tƣờng lửa trên hệ điều mã nguồn mởi với hai hệ thống là Iptables và Shorewall. Cũng trong chƣơng này tác giả cũng triển khai công cụ OpenSSH trong việc đảm bảo an toàn cho các truy cập máy tính từ xa. Đồng thời tìm hiểu về việc phát triển ứng dụng nguồn mở nói chung và mã nguồn mở OpenSSH nói riêng, để thay đổi chiều dài khóa sinh ra theo hƣớng an toàn hơn theo chuẩn GO-ITS 25.12 và FIPS 186-3. Phần cuối của chƣơng, tác giả nghiên cứu về cơ chế đăng nhập một lần SSO (Single Sign On), giao thức LDAP, công cụ OpenLDAP và tích hợp OpenSSH với OpenLDAP trong việc xác thực tập trung.

KẾT LUẬN

Sau một thời gian đầu tƣ công sức cùng với sự nỗ lực, cố gắng của bản thân và sự hƣớng dẫn tận tình của TS Hồ Văn Hƣơng, đến nay luận văn với đề tài: “Nghiên cứu xây dựng giải pháp phòng chống tấn công, đột nhập vào hệ thống để đảm bảo an toàn thông tin trên hệ điều hành mã nguồn mở” đã hoàn thiện. Luận văn đã hoàn thành đƣợc những mục tiêu đặt ra. Cụ thể luận văn đã hoàn thành các vấn đề sau:

1. Luận văn đã chỉ ra sự cần thiết phải xây dựng các giải pháp đảm bảo an toàn thông tin, đồng thời phân tích các nguy cơ dẫn đến mất an toàn thông tin trên hệ điều hành mã nguồn mở.

2. Trên cơ sở các nguy cơ dẫn đến mất an toàn thông tin đã phân tích, Luận văn đƣa ra các giải pháp đảm bảo an toàn thông tin trên hệ điều hành mã nguồn mở bao gồm: Các giải pháp đảm bảo an toàn nhân (Kernel) nhƣ sử dụng SELinux, LIDS, Libsafe. Các giải pháp đảm bảo an toàn hệ thống file nhƣ thiết lập quyền truy nhập file, sử dụng tính năng bảo mật của hệ thống tập tin ext, các chƣơng trình kiểm tra tính toàn vẹn của file. Các giải pháp đảm bảo an toàn tài khoản ngƣời dùng nhƣ: shadow password, OpenSSH...Các giải pháp đảm bảo an toàn các giao dịch qua mạng nhƣ hệ thống tƣờng lửa, các chƣơng trình dò tìm phát hiện xâm nhập qua mạng…

3. Tiến hành triển khai cài đặt và cấu hình một số giải pháp bao gồm: Triển khai SELinux, triển khai giải pháp đảm bảo an toàn file trong đó có thiết lập quyền truy nhập file và sử dụng md5sum, sha1sum để kiểm tra tính toàn vẹn của file. Triển khai giải pháp tƣờng lửa bao gồm việc triển khai hệ thống tƣờng lửa Iptables với các nội dung nghiên cứu về cấu trúc và tham số dòng lệnh của Iptables, xây dựng mô hình và triển khai tƣờng lửa Iptables đảm bảo an toàn cho máy chủ và mạng cục bộ. Triển khai hệ thống tƣờng lửa Shorewall bao gồm cài đặt và tìm hiểu một số tập tin quan trọng, cuối cùng là xây dựng và triển khai mô hình sử dụng tƣờng lửa Shorewall. Triển khai công cụ Openssh trên hệ điều hành nguồn mở, quá trình truy cập từ xa với công cụ OpenSSH, sinh khóa và sử dụng khóa để xác thực.

4. Nghiên cứu phát triển ứng dụng mã nguồn mở nói chung và chƣơng trình nguồn mở OpenSSH nói riêng. Qua đó phát triển chƣơng trình nguồn mở OpenSSH theo hƣớng an toàn và tin cậy hơn, cụ thể là chỉnh sửa một số module của chƣơng trình sinh khóa (ssh-keygen) để thay đổi chiều dài khóa sinh ra theo hƣớng an toàn hơn theo chuẩn FIPS PUB 186-3 và các quy định trong GO-ITS 25.12

Hướng phát triển của đề tài:

Trong thời gian tới tác giả sẽ tiếp tục nghiên cứu mã nguồn phần mềm OpenSSH, phát triển và cải tiến các thuật toán mã hóa, băm hiện đang sử dụng lên chuẩn cao hơn nhằm tăng tính an toàn và bảo mật.

Đồng thời nghiên cứu và triển khai các giải pháp đảm bảo an toàn khác trên hệ điều hành mã nguồn mở, qua đó xây dựng và thiết lập đƣợc hệ thống sử dụng hệ điều hành nguồn mở có cơ chế an toàn và bảo mật cao.

Cùng với việc đảm bảo an toàn thông tin trên hệ điều hành mã nguồn mở, nghiên cứu các giải pháp đảm bảo an toàn cho cơ sở dữ liệu, mạng máy tính….Nghiên cứu hạ tầng cơ sở khóa công khai PKI đảm bảo an toàn cho các ứng dụng trên hệ điều hành mã nguồn mở.

Việc sử dụng và phát triển phần mềm nguồn mở nói chung và hệ điều hành nguồn mở nói riêng tại Việt Nam vẫn còn tƣơng đối mới mẻ. Do đó trong quá trình thực hiện luận văn tác giả gặp một số khó khăn nhất định. Vì vậy, các nội dung trình bày trong luận văn không tránh khỏi thiếu sót. Tác giả rất mong nhận đƣợc những ý kiến đóng góp để luận văn hoàn thiện hơn.

Tác giả xin chân thành cảm ơn thầy giáo TS Hồ Văn Hƣơng và thầy cô trong trƣờng cùng bạn bè đồng nghiệp đã giúp đỡ tác giả trong suốt thời gian qua để tác giả hoàn thiện tốt luận văn của mình.

TÀI LIỆU THAM KHẢO Tiếng Việt:

[1] Trần Văn Dũng (2010), An toàn và bảo mật thông tin, Đại học Giao thông vận tải.

[2] Hà Quang Thụy, Nguyễn Trí Thành (2004), Hệ điều hành Unix-Linux, Đại học Công nghệ - Đại học Quốc gia Hà Nội.

[3] Văn phòng Công nghệ thông tin - Bộ Khoa học và Công nghệ (2004),

Free/Open Source Software (FOSS), UNDP-APDIP.

[4] Nguyễn Ngọc Tuấn, Hồng Phúc (2005), Bảo mật & tối ưu hóa Linux Red Hat, Nhà xuất bản Thống kê.

Tiếng Anh:

[5] Micheal, D.Bauer (2005), Linux Server Security, O’Reilly

[6] William Stallings, Cryptography and network security: principles and Practice

[7] Prentice Hall PTR (2003),Modern Cryptography: Theory and Practice.

[8] Daniel J. Barrett, Richard E. Silveman (2005), “SSH, the Secure Shell the Definitive Guide”.

[9] ViSolve SSH Team (2006), OpenSSH & Kerberos, ViSolve .

[10] National Institute of Standards and Technology (NIST), FIPS PUB 186-2, FIPS PUB 186-3, Government of Ontario IT Standard Number 25.12, SP800-57, NIST.

PHỤC LỤC

PHỤ LỤC 1: CÀI ĐẶT OPENSSH BẢN NÂNG CẤP (adsbygoogle = window.adsbygoogle || []).push({});

OpenSSH có sử dụng thƣ viện mã hóa SSL và thƣ viện nén dữ liệu Zlib vì vậy trƣớc khi cài đặt OpenSSH cần cài đặt Openssl và Zlib.

 Openssl tham khảo và tải chƣơng trinh về tại địa chỉ http://www.openssl.org. Phiên bản Openssl cập nhật mới nhất là 1.0.1.

 Zlib tham khảo và tải chƣơng trình về tại địa chỉ http://zlib.net. Phiên bản zlib mới nhất là 1.2.6 cập nhật tháng 1 năm 2012.

Sau khi hoàn tất việc cài đặt Openssl và zlip tiến hành cài đặt bản OpenSSH đã đƣợc nâng cấp (mã nguồn chứa trong Openssh-New) nhƣ sau:

 sử dụng Terminal di chuyển đến thƣ mục Openssh-New.

 gõ lệnh ./configure để kiểm tra các file và cấu hình trƣớc khi cài đặt.  gõ lệnh make để biên dịch mã nguồn.

 gõ lệnh sudo make install để cài đặt chƣơng trình openssh bản nâng cấp. Sau khi cài đặt, gõ lệnh ssh -V để kiểm tra kết quả xem đã thành công không nhƣ hình minh họa dƣới đây.

Kiểm tra chƣơng trình bằng cách kết nối với localhost nhƣ sau:

Nếu quá trình cài đặt và kiểm tra thành công chúng ta có thể sử dụng chƣơng trình OpenSSH với những phần nâng cấp đã đƣợc trình bày trong các phần trên.

PHỤ LỤC 2: GO-ITS 25.12

GO-ITS 25.12 (Government of Ontario Information & Technology Standards Number 25.12) :

Thank you for evaluating AnyBizSoft PDF Splitter.

A watermark is added at the end of each output PDF file.

To remove the watermark, you need to purchase the software from

Một phần của tài liệu Nghiên cứu xây dựng giải pháp phòng chống tấn công, đột nhập vào hệ thống để đảm bảo an toàn thông tin trên hệ điều hành mã nguồn mở (Trang 93)