33
NFS & NIS GVHD: Nguyễn Tấn Khôi Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 1 Lời nói đầu __________________________________________________________________________ 3 Đề Tài 13: ___________________________________________________________________________ 4 A. NFS-NETWORK FILE SYSTEM ____________________________________________________ 5 I. Gii Thiệu Sơ Lược VNFS ________________________________________________________ 5 II. Setup NFS Server _________________________________________________________________ 6 1. Danh sách các file cu hình, các dch v, các file script và câu lnh ca NFS server ______________ 6 a. /etc/exports _________________________________________________________________________________ 6 b. /Etc / hosts.allow và / etc / hosts.deny ____________________________________________________________ 7 2. Khởi động các dch vcó liên quan ______________________________________________________ 7 a. Khởi động portmapper ________________________________________________________________________ 8 b. Các tiến trình ngm: __________________________________________________________________________ 8 3. Xác minh các dch vcủa NFS đang chạy _________________________________________________ 8 4. Cp nhật thay đổi cho /etc/exports _______________________________________________________ 9 III. Minh Ha Vic Cu Hình NFS: ___________________________________________________ 9 1. Thiết lp trên server: __________________________________________________________________ 9 2. Thiết lp trên client __________________________________________________________________ 11 IV. Bo Mt______________________________________________________________________ 11 1. Tng quan __________________________________________________________________________ 11 2. The Portmapper-qun lý các kết ni ____________________________________________________ 11 3. Server security: nfsd and mountd_______________________________________________________ 12 4. Client security _______________________________________________________________________ 13 a. Tùy chn gn kết “nosuid” – the nosuid mount option _______________________________________________13 b. Tùy chn gn kết “broken_suid” – the broken_suid mount option ______________________________________14 5. NFS và tường la ____________________________________________________________________ 14 6. Truyền đa giao thức NFS thông qua SSH ________________________________________________ 16 7. Tóm tt ____________________________________________________________________________ 17 B. NIS-NETWORK INFORMATION SERVICE _________________________________________ 18 I. Gii Thiệu Sơ Lược VNIS _______________________________________________________ 18 II. Cu Hình NIS __________________________________________________________________ 18 1. Cu hình NIS server: _________________________________________________________________ 19 a. Cài đặt các gói dch v________________________________________________________________________19 b. Thay đổi file /etc/sysconfig/network _____________________________________________________________19 c. Thay đổi file /etc/yp.conf ______________________________________________________________________19 d. Khởi động các dch vNIS server liên quan _______________________________________________________19 e. Khi to NIS domain _________________________________________________________________________20

NFS NIS Full 2003 Edit

Embed Size (px)

DESCRIPTION

Tìm hiểu và triển khai dịch vụ NIS NFS trên linux

Citation preview

Page 1: NFS NIS Full 2003 Edit

NFS & NIS GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 1

Lời nói đầu __________________________________________________________________________ 3

Đề Tài 13: ___________________________________________________________________________ 4

A. NFS-NETWORK FILE SYSTEM ____________________________________________________ 5

I. Giới Thiệu Sơ Lược Về NFS ________________________________________________________ 5

II. Setup NFS Server _________________________________________________________________ 6

1. Danh sách các file cấu hình, các dịch vụ, các file script và câu lệnh của NFS server ______________ 6 a. /etc/exports _________________________________________________________________________________ 6 b. /Etc / hosts.allow và / etc / hosts.deny ____________________________________________________________ 7

2. Khởi động các dịch vụ có liên quan ______________________________________________________ 7 a. Khởi động portmapper ________________________________________________________________________ 8 b. Các tiến trình ngầm: __________________________________________________________________________ 8

3. Xác minh các dịch vụ của NFS đang chạy _________________________________________________ 8

4. Cập nhật thay đổi cho /etc/exports _______________________________________________________ 9

III. Minh Họa Việc Cấu Hình NFS: ___________________________________________________ 9

1. Thiết lập trên server: __________________________________________________________________ 9

2. Thiết lập trên client __________________________________________________________________ 11

IV. Bảo Mật______________________________________________________________________ 11

1. Tổng quan __________________________________________________________________________ 11

2. The Portmapper-quản lý các kết nối ____________________________________________________ 11

3. Server security: nfsd and mountd _______________________________________________________ 12

4. Client security _______________________________________________________________________ 13 a. Tùy chọn gắn kết “nosuid” – the nosuid mount option _______________________________________________13 b. Tùy chọn gắn kết “broken_suid” – the broken_suid mount option ______________________________________14

5. NFS và tường lửa ____________________________________________________________________ 14

6. Truyền đa giao thức NFS thông qua SSH ________________________________________________ 16

7. Tóm tắt ____________________________________________________________________________ 17

B. NIS-NETWORK INFORMATION SERVICE _________________________________________ 18

I. Giới Thiệu Sơ Lược Về NIS _______________________________________________________ 18

II. Cấu Hình NIS __________________________________________________________________ 18

1. Cấu hình NIS server: _________________________________________________________________ 19 a. Cài đặt các gói dịch vụ ________________________________________________________________________19 b. Thay đổi file /etc/sysconfig/network _____________________________________________________________19 c. Thay đổi file /etc/yp.conf ______________________________________________________________________19 d. Khởi động các dịch vụ NIS server liên quan _______________________________________________________19 e. Khởi tạo NIS domain _________________________________________________________________________20

Page 2: NFS NIS Full 2003 Edit

NFS & NIS GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 2

f. Khởi động 2 dịch vụ ypbind và ypxfrd ____________________________________________________________22 g. Kiểm tra lại xem các dịch vụ đã chạy ổn chưa ______________________________________________________22

2. Thêm người dùng NIS ________________________________________________________________ 23

3. Cấu hình NIS client __________________________________________________________________ 24 a. Chạy authconfig _____________________________________________________________________________24 b. Khởi động các dịch vụ ngầm liên quan tới NIS client ________________________________________________24 c. Kiểm tra việc phân giải tên miền ________________________________________________________________24 d. Kiểm tra việc truy cập tới NIS server _____________________________________________________________25 a. Thử đăng nhập vào NIS server __________________________________________________________________25

i. Đăng nhập thông qua Telnet _________________________________________________________________25 ii. Đăng nhập thông qua SSH ___________________________________________________________________26

III. Minh Họ iệ Cấu Hình NIS ___________________________________________________ 27

IV. Bảo Mật______________________________________________________________________ 32

Phụ Lục: ___________________________________________________________________________ 33

Một số khái niệm: ________________________________________________________________________ 33

Tài liệu tham khảo: _______________________________________________________________________ 33

Page 3: NFS NIS Full 2003 Edit

NFS & NIS GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 3

Lời nói đầu

Hiện nay hệ điều hành Linux đang ngày càng được ứng dụng trong nhiều ngành khoa học cũng như

phục vụ cuộc sống thường ngày, từ ứng dụng trong các hệ thống chuyên biệt phục vụ trong y tế, quân đội

tới phục vụ trong hệ thống giáo dục và ứng dụng văn phòng cho người dùng cuối…

Trong những năm gần đây hệ điều hành Linux từng bước được đưa vào sử dụng tại Việt Nam. Nhiều tổ

chức, công ty và các dự án tin học đã chọn Linux là môi trường để phát triển các ứng dụng của mình.

Chính vì thế nhu cầu tìm hiểu hệ điều hành này đang trở nên rất quan trọng và cần thiết.

Đề tài này chỉ đề cập tới 2 ứng dụng rất nhỏ trong việc khai thác các dịch vụ quản trị mạng trên hệ điều

hành linux đó là Network File System (NFS) và Network Information Service (NIS).

Tài liệu về linux hiện nay rất nhiều tuy nhiên các tài liệu chuyên sâu về 1 mảng nào đó thì đa số vẩn là

tiếng Anh và hơn nữa: Linux hiện nay có rất nhiều bản phân phối ( trên 30 bản phân phối tính đến tháng

4/2011 ), chính vì thế trong quá trình thực hiện đồ án, chúng em gặp không ít khó khăn khi tham khảo các

tài liệu với nhiều từ chuyên ngành, cũng như có sự sai khác giữa các bước thiết lập trên từng bản phân

phối. Từ thực tế đó chắc chắn đề tài này không tránh khỏi nhiều thiếu sót và chưa chính xác. Rất mong

nhận được sự đóng góp ý kiến của thầy.

Nhóm chúng em chân thành cảm ơn sự hướng dẫn của thầy Nguyễn Tấn Khôi và các bạn cũng như

những thành viên trên các diễn đàn linux đã giúp đỡ chúng em hoàn thành đề tài này.

Kontum,ngày 30, tháng 05, năm 2011

Page 4: NFS NIS Full 2003 Edit

NFS & NIS GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 4

Đề Tài 13:

Tìm hiểu và khai thác dịch vụ quản trị mạng NIS, NFS trên hệ điều hành Linux:

Giới thiệu chức năng.

Các thư viện hỗ trợ và cách biên dịch cài đặt từ mã nguồn.

Các dịch vụ/tools liên quan và file cấu hình.

Triển khai dịch vụ trên máy server và client. Minh họa kết quả cụ thể.

Cơ chế an toàn và bảo mật cho dịch vụ.

Page 5: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 5

A. NFS-NETWORK FILE SYSTEM

I. Giới Thiệu Sơ Lược Về NFS

NFS (Network File System) là hệ thống cung cấp dịch vụ chia sẻ file phổ biến hiện nay trong hệ thống

mạng Linux và Unix.

NFS được phát triển để cho phép các máy tính gắn kết tới 1 phân vùng đĩa trên 1 máy từ xa giống như

nó là đĩa cục bộ (local disk.)vậy. nó cho phép việc truyền tải file qua mạng được nhanh và trơn tru hơn.

Nó cũng tạo ra khả năng tìm tàng cho những người mà bạn không mong muốn truy cập ổ cứng của bạn

qua mạng (theo cách đó họ có thể đọc email, xóa file và làm sập hệ thống của bạn) nếu bạn cài đặt nó

không chính xác.

NFSử dụng hệ thống mô hình client/server. Trên server có các ổ đĩa vật lý chứa các file hệ thống được

chia sẻ và một số dịch vụ chạy ngầm trên hệ thống (daemon) phục vụ cho việc chia sẻ với client (gọi là

quá trình export). Ngoài ra các dịch vụ chạy trên server cũng cung cấp chức năng bảo mật file và quản lý

lưu lượng sử dụng (file system quota). Các client muốn sử dụng các file system được chia sẻ trên Server

chỉ đơn giản dùng giao thức NFS để mount (gắn kết) các file system đó lên hệ thống của mình.

Hệ thống chia sẻ file NFS được sử dụng với nhiều chức năng khác nhau. Ví dụ thay vì mổi hệ thống

client/server của bạn phải có một phân vùng /home/username của từng người dùng thì chỉ cần lưu trữ thư

mục đó trên 1 máy chủ trung tâm (NFS server), sau đó dùng giao thức NFS để mount thư mục

/home/username tương ứng của từng người dùng khi họ đăng nhập hệ thống.

Có vài sự khác biệt giữa các phiên bản 2 NFS,3NFS,4NFS. Bạn sẽ cần 3 NFS nếu như cài đặt trên một

hệ thống lớn hay hệ thống chuyên biệt nào đấy, còn 2 NFS và 4 NFS thích hợp cho người dùng ngẫu

nhiên, nhỏ lẻ.

NFS (Network File System) hệ thống được phát triển để gán các phân vùng đĩa ở trên các máy từ xa như

thể trên máy local. Cho phép chia sẻ file nhanh và tập trung trên mạng.

Page 6: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 6

II. Setup NFS Server

Thiết lập máy chủ sẽ được thực hiện theo hai bước: Thiết lập các tập tin cấu hình cho NFS, và sau đó

khởi động các dịch vụ NFS.

1. Danh sách các file cấu hình, các dịch vụ, các file script và câu lệnh của NFS server

Các file cấu hình NFS Server ác dịch vụ NFS Server ác file script và câu lệnh

/etc/exports rpc.portmap /etc/rc.d/init.d/nfs

/var/lib/nfs/rmtab rpc.mountd nfstat

/var/lib/nfs/xtab rpc.nfsd showmount

/etc/host.allow rpc.statd rpcinfo

/etc/host.deny rpc.rquotad exportfs

rpc.rquotad

Có ba tập tin cấu hình chính, bạn sẽ cần phải chỉnh sửa để thiết lập một máy chủ NFS: /etc/exports ,

/etc/hosts.allow và /etc/hosts.deny

Nội dung các file cấu hình:

a. /etc/exports

Các dòng text trong file cấu hình /etc/exports có cú pháp như sau :

dir host1(options) host2(options) hostN(options) …

Trong đó :

dir : thư mục hoặc file system muốn chia sẻ.

host : một hoặc nhiều host được cho phép mount dir. có thể được định nghĩa là một tên, một nhóm sử

dụng ký tự , * hoặc một nhóm sử dụng 1 dải địa chỉ mạng/subnetmask...

options : định nghĩa 1 hoặc nhiều options khi mount. Cụ thể:

ro: thư mục được chia sẻ chỉ đọc được; client không thể ghi lên nó.

rw: client có thể đọc và ghi trên thư mục.

no_root_squash: mặc định, bất kỳ file truy vấn được tạo bởi người chủ (root) máy trạm đều được

xử lý tương tự nếu nó được tạo bởi user nobody (các file tạo ra trên hệ thống mà ko do người dùng

can thiệp-tài khoản vô danh) trên máy chủ. (truy vấn được ánh xạ phụ thuộc vào UID của user

nobody trên server chứ không phải trên client). Nếu no_root_squash được chọn, người quản trị cao

cấp trên client sẽ có cùng mức truy cập đến các file trên hệ thống giống như quản trị cao cấp trên

server. Điều này có thể kéo theo nhiều vấn đề an ninh nghiêm trọng, mặc dù nó có thể là cần thiết

nếu bạn muốn thực hiện công việc quản trị nào trên client-công việc đòi hỏi các thư mục phải được

chia sẻ. Bạn không nên chỉ định lựa chọn này nếu không có lý do rõ ràng.

no_subtree_check: nếu chỉ 1 phần của ổ đĩa được chia sẻ, 1 đoạn chương trình gọi là “thẩm tra lại

việc kiểm tra cây con” được yêu cầu từ phía client (nó là 1 file n m trong phân vùng được chia sẻ).

Nếu toàn bộ ổ đĩa được chia sẻ, việc vô hiệu hóa sự kiểm tra này sẽ tăng tốc độ truyền tải.

Page 7: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 7

sync: thông báo cho client biết 1 file đã được ghi xong- tức là nó đã được ghi để lưu trữ an toàn-khi

mà NFS hoàn thành việc kiểm soát ghi lên các file hệ thống. cách xử lí này có thể là nguyên nhân

làm sai lệch dữ liệu nếu server khởi động lại.

Ví dụ 1 file cấu hình mẫu /etc/exports :

/usr/local *.ipmac.vn(ro)

/home 192.168.1.0/255.255.255.0(rw)

/var/tmp 192.168.1.1(rw)

Dòng thứ nhất : cho phép tất cả các host với tên miền định dạng “somehost”.ipmac.vn được mount thư

mục /usr/local với quyền chỉ đọc.

Dòng thứ hai : cho phép bất kỳ host nào có địa chỉ IP thuộc subnet 192.168.1.0/24 được mount thư mục

/home với quyền đọc và ghi.

Dòng thứ ba : chỉ cho phép host có địa chỉ IP là 192.168.1.1 được mount thư mục /var/tmp với quyền đọc

và ghi.

b. /Etc / hosts.allow và / etc / hosts.deny

Hai tập tin đặc biệt này giúp xác định các máy tính trên mạng có thể sử dụng các dịch vụ trên máy của

bạn. Mỗi dòng trong nội dung file chứa duy nhất 1 danh sách gồm 1 dịch vụ và 1 nhóm các máy tính. Khi

server nhận được yêu cầu từ client, các công việc sau sẽ được thực thi:

Kiểm tra file host.allow – nếu client phù hợp với 1 quy tắc được liệt kê tại đây thì nó có quyền truy

cập.

Nếu client không phù hợp với 1 mục trong host.allow server chuyển sang kiểm tra trong host.deny

để xem thử client có phù hợp với 1 quy tắc được liệt kê trong đó hay không (host.deny). Nếu phù

hợp thì client bị từ chối truy cập.

Nếu client phù hợp với các quy tắc không được liệt kê trong cả 2 file thì nó sẽ được quyền truy cập.

2. Khởi động các dịch vụ có liên quan

Để sử dụng dịch vụ NFS, cần có các daemon (dịch vụ chạy ngầm trên hệ thống) sau:

Portmap: Quản lý các kết nối, sử dụng cơ chế RPC (Remote Procedure Call), dịch vụ chạy ở cả

server và client

NFS: Khởi động các tiến trình RPC khi được yêu cầu để phục vụ cho chia sẻ file, dịch vụ chỉ chạy

trên server

NFS lock: Sử dụng cho client khóa các file trên NFS server thông qua PRC.

Page 8: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 8

a. Khởi động portmapper

NFS phụ thuộc vào tiến trình ngầm quản lý các kết nối (portmap hoặc rpc.portmap), chúng cần phải

được khởi động trước. Nó nên được đặt tại /sbin nhưng đôi khi trong /usr/sbin. Hầu hết các bản phân phối

linux gần đây đều khởi động dịch vụ này trong „kịch bản khởi động‟ (boot scripts –tự khởi động khi

server khởi động) nhưng vẩn phải đảm bảo nó được khởi động đầu tiên trước khi bạn làm việc với NFS

(chỉ cần gõ lệnh netstat -anp |grep portmap để kiểm tra).

b. ác tiến trình ngầm:

Dịch vụ NFS được hỗ trợ bởi 5 tiến trình ngầm:

rpc.nfsd- thực hiện hầu hết mọi công việc.

rpc.lockd and rpc.statd-quản lý việc khóa các file.

rpc.mountd-quản lý các yêu cầu gắn kết lúc ban đầu.

rpc.rquotad-quản lý các hạn mức truy cập file của người sử dụng trên server được truy xuất.

lockd được gọi theo yêu cầu của nfsd. Vì thế bạn cũng không cần quan tâm lắm tới việc khởi

động nó.

statd thì cần phải được khởi động riêng.

Tuy nhiên trong các bản phân phối linux gần đây đều có kịch bản khởi động cho các tiến trình trên.

Tất cả các tiến trình này đều n m trong gói nfs-utils, nó có thể được lưu giữ trong /sbin hoặc /usr/sbin

Nếu bản phân phối của bạn không tích hợp chúng trong kịch bản khởi động, thì bạn nên tự thêm chúng

vào, cấu hình theo thứ tự sau đây:

3. Xác minh các dịch vụ của NFS đang chạy

Để làm điều này, ta truy vấn portmapper với lệnh rpcinfo quota để tìm ra dịch vụ nào đang được cung

cấp, bạn sẽ nhận được kết quả tương tự như sau:

rpc.portmap

rpc.mountd, rpc.nfsd

rpc.statd, rpc.lockd (nếu cần

thiết)

rpc.rquotad

Page 9: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 9

program vers proto port

100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100011 1 udp 749 rquotad 100011 2 udp 749 rquotad 100005 1 udp 759 mountd 100005 1 tcp 761 mountd 100005 2 udp 764 mountd 100005 2 tcp 766 mountd 100005 3 udp 769 mountd 100005 3 tcp 771 mountd 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 300019 1 tcp 830 amd 300019 1 udp 831 amd 100024 1 udp 944 status 100024 1 tcp 946 status 100021 1 udp 1042 nlockmgr 100021 3 udp 1042 nlockmgr 100021 4 udp 1042 nlockmgr 100021 1 tcp 1629 nlockmgr 100021 3 tcp 1629 nlockmgr 100021 4 tcp 1629 nlockmgr

4. Cập nhật thay đổi cho /etc/exports

Nếu bạn thay đổi trong /etc/exports, các thay đổi đó có thể chưa có hiệu lực ngay lập tức, bạn phải thực

thi lệnh exportfs để bắt nfst cập nhật lại nội dung file /etx/exports .

Nếu bạn không tìm thấy lệnh exportfs thì bạn có thể kết thúc nfsd với lệnh HUD.

Nếu các việc đó không hoạt động, đừng quên kiểm tra lại hosts.allow để đảm bảo r ng bạn không quên

việc khai báo danh sách các máy con trong đấy. Ngoài ra cũng nên kiểm tra danh sách các máy chủ trên

bất kỳ hệ thống tường lửa nào mà bạn đã thiết lập.

III. inh Họa Việc ấu Hình NFS:

Mô hình 2 máy để thực hiện việc cấu hình

1. Thiết lập trên server:

Việc đầu tiên là tạo ra 1 thư mục dùng để chia sẻ trên máy NFS server. ở đây là thư mục “nfsdir”

Page 10: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 10

Chỉnh sửa file /etc/exports để cho phép gắn kết NFS của thư mục này với các quyền truy cập.

dùng lệnh vi /etc/exports

VD:

(ro)=read –only

(rw)=read+write

Cập nhật bản ghi mới trong file /etc/exports ta dùng lệnh exportfs

Kiểm tra xem các dịch vụ NFS ,NFSlock, daemon portmap cũng hoạt động và tự khởi động

mổi khi server khởi động lại hay không.

Page 11: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 11

2. Thiết lập trên client

Tạo 1 thư mục trên client (nfsdirs) để mount tới thư mục trên server (nfsdir).

Mount 2 thư mục với nhau >> kết thúc.

IV. Bảo Mật

1. Tổng quan

Với NFS, có 2 bước cần thiết để 1 client được truy cập đến tài nguyên trên server.

Bước đầu tiên là gắn kết truy cập. việc gắn kết truy cập đạt được là do client cố gắng kết nối vào server.

Nếu địa chỉ IP của các client khớp với 1 trong những địa chỉ trong “danh sách cho phép” thì client sẽ

được gắn kết. Điều này không thật sự an toàn. Nếu ai đó có khả năng bắt chước hay chiếm lấy 1 địa chỉ

đáng tin cậy thì họ có thể truy cập điểm gắn kết của bạn. Một ví dụ thực tế: Bạn gọi tới công ty sửa chữa

đường ống nước, sau đó một người đến và tự giới thiệu bản thân với bạn, bạn tin r ng người đó đúng là

người do công ty kia gởi đến, bởi vì họ có đeo 1 cái thẻ nhân viên của công ty trên. Tuy nhiên có thể

người được cử đến là kẻ giả mạo thì sao

Mỗi một máy tính gắn kết với 1 đĩa (volume), hệ điều hành của máy sẽ có quyền truy cập đến mọi file

trên đĩa và được ghi lên các file đó, nếu đĩa được thể hiện với tùy chọn rw.

Bước thứ hai là việc truy cập file. Đây là chức năng điều khiển truy cập file thông thường trên client chứ

không phải 1 chức năng đặc biệt của NFS. Mỗi ổ đĩa được gắn với người sử dụng và nhóm những quyền

hạn trên các file giới hạn quyền điều khiển truy cập.

Một ví dụ: trên server người dùng có tên NEO được ánh xạ với ID 9999. NEO tạo ra 1 tập tin trên server

mà người khác chỉ có quyền truy cập (tương đương với việc chmod 600). Một máy client được gắn kết tới

ổ đĩa chứa tệp tin đó. Trên máy client người dùng tên XONE cũng có ID 9999. Điều này có nghĩa r ng

XONE có thể truy cập tới tệp tin của NEO – cái mà chỉ được quyền truy xuất bởi chính NEO. Tệ hại hơn,

nếu người nào đó trở thành superuser (siêu người dùng- Là một tài khoản người dùng đặc biệt trên UNIX

có quyền truy cập tới Root) trên máy client thì họ có thể dùng lệnh su – username (để thay đổi tên tài

khoản) và trở thành bất kỳ ai. Lúc này NFS không còn là sự lựa chọn sáng suốt.

2. The Portmapper-quản lý các kết nối

The Portmapper (quản lý tiến trình) giữ 1 danh sách những dịch vụ đang chạy trên các cổng. Danh sách

này được sử dụng bởi 1 máy tính có kết nối để thấy được những cổng nào mà nó (máy tính) muốn truy cập

tới các dịch vụ nào đấy.

Portmapper không còn tệ như vài năm trước đây nhưng nó vẩn là 1 điểm đáng lo đối với nhiều người

quản trị hệ thống. portmapper giống như NIS và NFS, thật sự không nên có những kết nối ra bên ngoài 1

Page 12: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 12

mạng LAN. Nếu bạn bắt buộc phải chia sẻ chúng ra bên ngoài – hãy cẩn thận và duy trùy thường xuyên

việc kiểm tra hệ thống.

Không phải bản phân phối linux nào cũng được tạo ra giống nhau. Một vài bản phân phối không kèm

theo 1 portmapper đáng tin cậy. Cách đơn giản để kiểm tra portmapper của bạn có đảm bảo hay không là

thực thi lệnh : strings /sbin/portmap | grep hosts. Nó sẽ đọc file hosts.allow và hosts.deny.

Giả sử portmapper đặt tại /sbin/portmap bạn có thể kiểm tra nó với lệnh sau cùng kết quả trả về tương tự

thế này:

Trước tiên, hãy chỉnh sửa /etc/hosts.deny . Thêm dòng sau vào tập tin:

portmap: ALL

Điều này sẽ chặn truy cập đến mọi người. Sau đó, trong lúc các truy cập bị chặn thì chạy lệnh rpcinfo –

p nh m kiểm tra xem portmap của bạn có thật sự đọc và tuân theo file này hay không. Kết quả trả về có

thể không có gì, hoặc có thể là 1 thông báo lổi. Hai file hosts.allow và hosts.deny có hiệu lực ngay lập tức

sau khi bạn lưu lại chúng. Không dịch vụ nào (daemon) cần được khởi động lại.

Việc chặn mọi quản lý truy cập với tất cả mọi người có hơi mạnh tay, vì vậy chúng ta mở lại truy cập

b ng cách edit file /etc/hosts.allow. Nhưng trước tiên ta phải tìm hiểu những gì chứa bên trong nó. Về cơ

bản, nó liệt kê tất cả các máy tính được quyền truy cập portmap.

Những máy cần truy cập các dịch vụ trên máy của bạn cần được chấp thuận để làm điều đấy. Giả dụ

máy bạn có địa chỉ 192.168.0.254, thuộc mạng con 192.168.0.0 và các máy trong mạng con có thể truy

cập đến nó (192.168.0.254). Để thực hiện điều trên thay vì portmap: ALL ta sẽ viết lại là portmap:

192.168.0.0/255.255.255.0 (Nếu bạn không chắc chắn về địa chỉ mạng/mặt nạ mạng, bạn có thể sử dụng

lênh ifconfig hay netstat để xác minh lại).

3. Server security: nfsd and mountd

Trên máy chủ, chúng ta không hề muốn tin cậy vào bất cứ yêu cầu truy vấn nào được tạo ra như trường

hợp người quản lý cao cấp trên máy trạm (với quyền root có thể toàn quyền truy cập trên client, điều này

thì không được phép xảy ra trên một máy chủ). Chúng ta có thể ngăn chặn điều này b ng tùy chọn

root_squash trong /etc/exports /home slave1(rw,root_squash) (tùy chọn dùng để hạn chế quyền root).

Thiết lập này nên luôn được bật sẵn, chỉ khi có 1 lý do cực kỳ cấp bách thì chúng ta mới hủy thiết lập trên,

b ng tùy chọn no_root_squash.

Bây giờ nếu 1 user có UID 0 (tức ID của người quản trị cao cấp) thử truy cập (đọc, ghi, xóa) các tập tin

hệ thống, máy chủ sẽ thay thế b ng UID của tài khoản vô danh (nobody user). Điều này nghĩa là người

quản trị cao cấp (root user) trên máy trạm không thể truy cập hay thay đổi các file đó, chỉ có người quản

# strings /sbin/portmap | grep hosts.

/etc/hosts.allow

/etc/hosts.deny

@(#) hosts_ctl.c 1.4 94/12/28 17:42:27

@(#) hosts_access.c 1.21 97/02/12

02:13:22

#

Page 13: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 13

trị cao cấp trên server mới có được quyền đấy mà thôi. Điều này rất tốt và có lẽ bạn nên dùng

root_squash trên tất cả các file hệ thống mà bạn cho truy cập đến.

Vẩn tồn tại câu hỏi r ng “ liệu người quản trị cao cấp trên máy trạm có thể dùng lệnh su để mạo danh

thành người dùng bất kỳ và cố gắng truy cập, thay đổi các file hệ thống trên máy chủ hay không ”. Câu

trả lời là có, và đó thật sự là những gì sẻ diển ra (trên 1 hệ thống chạy linux với NFS). Ở đây có 1 chú ý:

tất cả các file quan trọng nên được sở hữu bởi người quản trị cao cấp vì tài khoản duy nhất mà người quản

trị cao cấp trên máy trạm không thể giả mạo chính là tài khoản quản trị cao cấp của máy chủ.

Các cổng TCP từ 1-1024 được dành riêng cho công việc của người quản trị cao cấp (đó là lí do mà đôi

khi nó được gọi là “cổng an toàn”). Những người dùng khác không thể ghép nối tới các cổng này. Bổ sung

thêm tùy chọn secure trong /etc/exports nghĩa là nó sẽ chỉ liệt kê các truy vấn đến từ các cổng 1-1024

trên máy khách, do đó mối nguy hiểm từ những người dùng không phải là quản trị cao cấp trên máy trạm

không thể xuất hiện và mở ra 1 sự tương tác giả mạo trên 1 cổng không được bảo mật. Tùy chọn này được

thiết lập mặc định.

4. Client security

a. Tùy chọn gắn kết “nosuid” – the nosuid mount option

Vài khái niệm về SUID

Đôi khi bạn gặp lổi khi cố gắng thực thi 1 chương trình, nó báo rằng chương trình đó phải được khởi động bởi

quyền SUID.

SUID viết tắt của set user ID. có nghĩa là nếu SUID được thiết đặt cho 1 ứng dụng/file nào đấy, sau đó ID tài

khoản của bạn sẽ được thiết lập như là chủ nhân của ứng dụng/file đấy thay cho người dùng hiện tại, trong khi thực

thi chương trình đó. điều này có nghĩa là trong trường hợp tối có một ứng dụng mà chủ sở hữu của nó là 'root' và

nó đã được thiết lập SUID, sau đó khi tôi chạy ứng dụng đó như người dùng bình thường, ứng dụng đó sẽ vẩn được

chạy như dưới quyền 'root'. Từ khi SUID bit báo cho linux biết rằng user ID root được thiết lập cho ứng dụng này

và bất cứ khi nào ứng dụng đó được thực thi, nó phải được thự thi giống như khi được thực thi dưới quyền root (từ

lúc root sở hữu file này).

Trong trường hợp bạn đã thật sự hiểu vấn đề trên, bạn có thể đang lo lắng-nó có phải là 1 lổi bảo mật nghiêm

trọng. Nếu người dùng có khả năng chạy ứng dụng như quyền root, nó trở thành sự xâm phạm trắng trợn như là

mối đe dọa tới an ninh hệ thống. Trong thực tế SUID được dùng như là 1 cách để tăng độ an toàn cho hệ thống.

Chúng ta có thể cấm những chương trình SUID để làm biến mất hệ thống file NFS với tùy chọn nosuid.

Vài chương trình trên linux, như passwd được gọi là chương trình “suid”: chúng thiết lập ID của những

người đang chạy chúng thành ID chủ nhân file đó. Nếu 1 file cùng được quản lý bởi root và suid, chương

trình sẽ thực thi với quyền root, vì thế chúng có thể thực hiện các công việc mà chỉ root mới có quyền

thực hiện (như là ghi chép trên file chứa mật khẩu).

Việc sử dụng tùy chọn nosuid là ý tưởng tốt, và bạn nên xem xét áp dụng nó trên tất cả các ổ đĩa NFS

được gắn kết. Điều này có nghĩa là người dùng có quyền root trên máy chủ không thể tạo 1 chương trình

suid-root trên file hệ thống, đăng nhập máy trạm như người sử dụng bình hường và dùng chương trình

suid-root đó để trở thành người quản trị cao cấp trên máy trạm. Một người nào đấy cũng có thể chặn truy

Page 14: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 14

cập đối với các file trên hệ thống đã được gắn kết hoàn toàn với tùy chọn noexec. Nhưng điều này nhiều

khả năng không thực tế hơn việc nosuid vì r ng 1 file hệ thống ít nhất có khả năng ngăn chặn 1 vài kịch

bản hoặc chương trình cần được thực thi.

b. Tùy chọn gắn kết “broken_suid” – the broken_suid mount option

Một vài chương trình cũ ( ví dụ xterm ) thường tin vào việc root có thể thực thi ở mọi khu vực. Điều

này sẽ bị phá vỡ ở các nhân linux mới trên các gắn kết NFS. Các vấn đề bảo mật liên quan đó là những

chương trình thực hiện kiểu hoạt động này của suid có thể quen với việc thay đổi uid của bạn ở bên ngoài

máy chủ nfs thực hiện việc ánh xạ uid. Vì thế, mặc định broken_suid được vô hiệu hóa trong nhân linux.

Nếu bạn đang sử dụng 1 bản phân phối linux cũ, 1 vài loại chương trình suid cũ hoặc 1 vài bản unix cũ

hơn, bạn có thể phải gắn kết từ máy trạm với tùy chọn broken_suid. Tuy nhiên các bản unix và linux gần

đây có xterm và những chương trình như thế chỉ giống như có khả năng thực thi bình thường, họ gọi

những chương trình đó để thực hiện việc setuid.

Giải thích: setuid là một tiến trình có thể thiết lập quan hệ của người sử dụng có hiệu lực và super-user

(root). Có nghĩa là mặc dù bất kỳ người dùng nào cũng có thể chạy tiến trình, nhưng sau đó tiến trình có

thể đòi hỏi những đặc quyền gốc (root). Một ví dụ về setuid là tiến trình wservice ArcStorm.

5. NFS và tường lửa

Khi 1 dịch vụ chạy ngầm khởi động, nó yêu cầu 1 cổng còn trống từ bản đồ ánh xạ. Portmapper đưa ra 1

cổng cho tiến trình và ghi lại dấu vết của cổng đó. Khi các máy chủ hoặc những tiến trình khác cần giao

tiếp với tiến trình ngầm, chúng yêu cầu số cổng từ portmapper để truy tìm tiến trình. Vì thế các cổng sẽ

không ngừng bị thả nổi, vì các cổng khác nhau có thể rảnh vào các thời điểm khác nhau và vì thế

portmapper sẽ phân bổ chúng (port) mỗi lần mỗi khác. Đây là vấn đề đau đầu cho việc thiết lập tường lửa

nếu như bạn chưa bao giờ biết được khu vực mà các tiến trình sẽ diễn ra, sau đó không biết chính xác

những cổng nào để cho phép truy cập. Đây không hẳn là một vấn đề lớn đối với nhiều người đang chạy

trên mạng LAN được bảo vệ hoặc bị cô lập. Với người dùng trên mạng công cộng thì điều này thật khủng

khiếp.

Trong phiên bản nhân 2.4.13 và sau này bạn không còn phải lo lắng về việc thả nổi của các cổng. Bây

giờ tất cả các tiến trình ngầm liên quan đến NFS có thể được “đính” với 1 cổng. Hầu hết chúng dể dàng

thực hiện k m tùy chọn –p khi được khởi động. Các tiến trình ngầm đó được khởi động với 1 vài đối số

hoặc tùy chọn, chúng được mô tả sau đây:

Portmap luôn sử dụng cổng 111 trên giao thức tcp và udp. Nfsd trên cổng 2049(tcp/udp).

Một số tiến trình khác: statd, mountd, lockd, rquotad thường sẽ được chuyển tới cổng khả dụng

đầu tiên do portmapper chỉ định.

Để những tác động của statd kết hợp với 1 cổng cụ thể, sử dụng tùy chọn –p số cổng. Để những

tác động của statd đáp ứng trên 1 cổng cụ thể, thêm vào tùy chọn –o số cổng khi khởi động nó.

Để những tác động của mountd kết hợp với cổng cụ thể, sử dụng thuộc tính –p số cổng

Page 15: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 15

Ví dụ: để statd phát đi trên cổng 32765, nghe trên cổng 32766, và mountd nghe trên cổng 32767, ta gõ

lệnh sau:

# statd -p 32765 -o 32766

# mountd -p 32767

lockd khởi động khi được kernel gọi. Việc đó khiến bạn phải vượt qua các tùy chọn modul hay

tùy chọn nhân (kernel) để khiến lockd nghe và hồi đáp trên chỉ 1 cổng nào đấy.

Nếu bạn đang dùng modul có thể nạp tải và muốn chỉ rõ những tùy chọn này trong file

/etc/modules.conf thì hãy thêm dòng sau:

options lockd nlm_udpport=32768 nlm_tcpport=32768

Dòng trên sẽ xác định giao thức tcp và udp trên cổng 32768 cho lockd.

Nếu bạn không sử dụng modul nạp tải hoặc nếu bạn đã biên dịch lockd vào trong nhân thay vì xây dựng

nó như 1 modul, bạn sẽ cần vượt qua điều này b ng tùy chọn trong sự khởi động của nhân.

Nó trông tự như thế này :

vmlinuz 3 root=/dev/hda1 lockd.udpport=32768 lockd.tcpport=32768

Nếu bạn đang sử dụng hạn ngạch (quota) và dùng nrc.quotad để khiến nó có khả năng xem được trên

nfs, bạn sẽ cần phải đưa nó vào tài khoản khi thiết lập tường lửa. Có 2 nơi chứa mã nguồn của

rpc.rquotad, một ở nơi chứa nfs-utils, còn lại ở nơi chứa quota-tools. Chúng không hoạt động đồng nhất

với nhau: Một cái được cung cấp với sự hỗ trợ bởi nfs-utils nối tiến trình ngầm tới 1 cổng với lệnh dẫn

hướng –p, nhưng phần n m trong quota-tools thì không như thế.

Ta cùng lấy 1 ví dụ về việc thiết lập tường lửa trên máy chủ:

NFS server 192.168.0.42

Client 192.168.0.45

Trong ví dụ ở phần trên ta có:

statd nhận các truy vấn ở cổng 32765, hồi đáp trên cổng 32766

mountd buộc phải gắn với cổng 32767

Các thông số của lockd được thiết lập để gắn cho cổng 32768

nfsd trên cổng 2049

portmapper trên cổng 111

Và chúng ta không sử dụng quotas

Sử dụng IP HANINS, một tường lửa đơn giản trông sẽ như thế này:

Page 16: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 16

Dòng đầu tiên cho biết sự chấp nhận tất cả các phần rời rạc của gói tin (ngoại trừ mảnh tin đầu tiên sẽ

được sử lý như gói tin bình thường). Trên lý thuyết không có gói tin nào đi qua cho đến khi nó được ghép

lại. Dĩ nhiên có những cuộc tấn công được gây ra bởi việc gây quá tải 1 máy tính với các mảnh gói tin.

Nhưng NFS sẽ không hoạt động chính xác cho đến khi bạn để các mảnh tin đi qua.

Các dòng khác cho biết việc chấp nhận các kết nối cụ thể từ bất kỳ cổng nào trên máy trạm đến các cổng

cụ thể mà chúng tôi đã làm cho nó sẵn sàng sử dụng được trên máy chủ. Có nghĩa là nếu có 1 máy trạm

192.158.0.46 cố gắng liên lạc với máy chủ NFS thì nó sẽ không thể gắn kết…

Với những cổng có khả năng gắn kết, hiển nhiên là rất dể dàng để điều khiển những gì các máy chủ

được cho phép để gắn kết các chia sẻ NFS của bạn. Điều đang nói đó là NFS không phải là 1 giao thức mã

hóa và bất cứ ai trên cùng mạng vật lý có thể phát hiện sự lưu thông (các gói tin) và tái hiện lại các thông

tin đang được chuyển qua lại.

6. Truyền đa giao thức NFS thông qua SSH

ơ bản về SSH:

SSH (Secure Shell) là một giao thức mạng dùng để thiết lập kết nối mạng một cách bảo mật. SSH hoạt động ở lớp

trên trong mô hình phân lớp TCP/IP. Các công cụ SSH (như là OpenSSH, ...) cung cấp cho người dùng cách thức

để thiết lập kết nối mạng được mã hoá để tạo một kênh kết nối riêng tư.

SSH là một chương trình tương tác giữa máy chủ và máy khách có sử dụng cơ chế mã hoá đủ mạnh nhằm ngăn

chặn các hiện tượng nghe trộm, đánh cắp thông tin trên đường truyền. Các chương trình trước đây: telnet, rlogin

không sử dụng phương pháp mã hoá. Vì thế bất cứ ai cũng có thể nghe trộm thậm chí đọc được toàn bộ nội dung

của phiên làm việc bằng cách sử dụng một số công cụ đơn giản. Sử dụng SSH là biện pháp hữu hiệu bảo mật dữ

liệu trên đường truyền từ hệ thống này đến hệ thống khác.

SSH làm việc thông qua 3 bước đơn giản:

Định danh host - xác định định danh của hệ thống tham gia phiên làm việc SSH.

Mã hoá - thiết lập kênh làm việc mã hoá.

Chứng thực - xác thực người sử dụng có quyền đăng nhập hệ thống.

Một phương án để mã hóa luồng lưu thông dữ liệu trong NFS trên mạng là sử dụng khả năng chuyển

tiếp cổng của SSH . Tuy nhiên làm như vậy có 1 hạn chế nghiêm trọng nếu bạn không hoàn toàn tin tưởng

vào người dùng cục bộ trên máy chủ.

ipchains -A input -f -j ACCEPT -s 192.168.0.45

ipchains -A input -s 192.168.0.45 -d 0/0 32765:32768 -p 6 -j ACCEPT

ipchains -A input -s 192.168.0.45 -d 0/0 32765:32768 -p 17 -j ACCEPT

ipchains -A input -s 192.168.0.45 -d 0/0 2049 -p 17 -j ACCEPT

ipchains -A input -s 192.168.0.45 -d 0/0 2049 -p 6 -j ACCEPT

ipchains -A input -s 192.168.0.45 -d 0/0 111 -p 17 -j ACCEPT

ipchains -A input -s 0/0 -d 0/0 -p 6 -j DENY -y -l

ipchains -A input -s 0/0 -d 0/0 -p 17 -j DENY -l

Page 17: NFS NIS Full 2003 Edit

Network File System GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 17

Bước đầu tiên là chia sẻ file cho localhost (máy chủ cục bộ). Ví dụ chia sẻ thư mục /home thì ta thêm

dòng sau vào file /etc/exports

: /home 127.0.0.1(rw)

Bước tiếp theo là dùng ssh để chuyển tiếp cổng. Ví dụ, ssh có thể báo cho máy chủ nh m chuyển tiếp tới

bất kỳ cổng nào trên bất kỳ máy nào từ 1 cổng trên máy trạm.

Giả sử như ở phần trước, máy chủ của chúng ta là 192.158.0.42 và đã gắn kết đến cổng 32767 với tham

số -p 32767 . Trên máy trạm ta gõ vào:

# ssh [email protected] -L 250:localhost:2049 -f sleep 60m

# ssh [email protected] -L 251:localhost:32767 -f sleep 60m

Mục đích lệnh trên là điều khiển ssh trên máy trạm thực hiện bất kỳ truy vấn trực tiếp ở cổng 250 của

máy trạm và chuyển hướng nó (request), đầu tiên là thông qua sshd trên máy chủ, sau đó là trên cổng

2049 của máy chủ. Dòng lệnh thứ 2 tương tự, điều khiển việc giao nhận giữa các yêu cầu truy xuất đến

công 251 trên máy trạm và cổng 32767 của máy chủ. Localhost tương đương với máy chủ, điều này nghĩa

là việc chuyển hướng sẽ được thực hiện trên chính máy chủ. Cổng kết nối có thể có cách khác để chuyển

tiếp tới bất kỳ máy tính nào, và các truy vấn sẽ giống như là xuất phát từ bên ngoài (thực tế là từ trong

chính server) nếu như chúng đến từ máy chủ.

7. Tóm tắt

Nếu bạn dùng hosts.allow, hosts.deny, root_squash, nosuid và các cổng chức năng được ưu tiên trong

portmapper/NFS software, bạn tránh được nhiều lổi được biết đến hiện nay trong NFS và có thể cảm

thấy an toàn. Nhưng chưa hết, sau tất cả điều đó: khi kẻ đột nhập truy cập mạng, họ có thể khiến các mã

lệnh lạ xuất hiện, chuyển hướng hay đọc trộm thư điện tử khi /home hoặc /var/mail được chia sẻ trong

NFS. Vì vài lý do trên, bạn đừng bao giờ nên truy cập khóa bảo vệ PGP (một phương pháp mã hóa dữ

liệu) trên NFS. Hoặc ít nhất bạn nên biết những nguy cơ liên quan…NFS và portmaper bản chất là 1 hệ

thống con rất phức tạp, do đó không hoàn toàn sẽ không có lổi mới được phát hiện, lổi trong thiết

kế của nó hoặc do cách chúng ta sử dụng…

Page 18: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 18

B. NIS-NETWORK INFORMATION SERVICE

I. Giới Thiệu Sơ Lược Về NIS

Dịch vụ thông tin mạng NIS cho phép bạn tạo ra các tài khoản có khả năng chia sẻ trên mọi hệ thống

trong mạng của bạn.

NIS là 1 dịch vụ cho phép chứng thực user tập trung:

Các tài khoản người dùng chỉ được tạo ra trên NIS server. Các NIS client tải thông tin và mật khẩu cần

thiết từ NIS server để chứng thực mỗi khi user đăng nhập.

Một lợi thế đó là user chỉ phải thay đổi mật khẩu trên NIS server, thay vì tại mổi hệ thống trong mạng.

Điều này khiến NIS phổ biến trong các phòng thí nghiệm về máy tính, các dự án phát triển phần mềm

phân tán hoặc ở bất cứ nơi nào mà nhiều nhóm phải chia sẻ nhiều máy tính khác nhau.

Quá trình chức thực user không được mã hóa.

NIS không mã hóa thông tin tài khoản và mật khẩu gởi tới máy trạm vào mổi lúc đăng nhập. Mọi người

sử dụng đều có quyền truy cập đến nơi NIS server chứa file mã hóa mật khẩu.

II. Cấu Hình NIS

Một số lệnh với NIS:

ypcat - Cho phép in ra một số giá trị trong NIS map

ypwhich - Tìm kiếm server hiện tại cho host đang sử dụng.

ypclnt - Cung cấp một giao diện đồ họa cho YP (Yellow Pages) cho hệ thống con.

yppasswd - Đổi lại password cho NIS Domain

ypmake - Tạo mới một hash map.

ypinit - Cấu hình host trở thành Server or client

yppush - update version cho map

Page 19: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 19

1. Cấu hình NIS server:

Thao tác cấu hình NIS server không khó nhưng lại trải qua rất nhiều bước (nhưng chúng có thể được bỏ

qua).

a. Cài đặt các gói dịch vụ

Tải và biên dịch gói ypserv package, sau đó cài đặt nó.

b. Thay đổi file /etc/sysconfig/network

Bạn phải thêm NIS domain mà bạn muốn dùng vào cuối file trên, ví dụ domain đó là NIS-SCHOOL-

NETWORK

#/etc/sysconfig/network

NISDOMAIN="NIS-SCHOOL-NETWORK"

c. Thay đổi file /etc/yp.conf

NIS server cũng phải đồng thời là NIS client, vì thế bạn phải điều chỉnh lại nội dung file config của NIS

client /etc/yp.conf , thêm vào localhost.

# /etc/yp.conf - ypbind configuration file

ypserver 127.0.0.1

d. Khởi động các dịch vụ NIS server liên quan

Khởi động các dịch vụ NIS cần thiết trong /etc/init.d và dùng lệnh chkconfig để chắc r ng chúng có thể

tự khởi động cùng với máy tính.

[root@bigboy tmp]# service portmap start

Starting portmapper: [ OK ]

[root@bigboy tmp]# service yppasswdd start

Starting YP passwd service: [ OK ]

[root@bigboy tmp]# service ypserv start

Setting NIS domain name NIS-SCHOOL-NETWORK: [ OK ]

Starting YP server services: [ OK ]

[root@bigboy tmp]#

[root@bigboy tmp]# chkconfig portmap on

[root@bigboy tmp]# chkconfig yppasswdd on

[root@bigboy tmp]# chkconfig ypserv on

Page 20: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 20

Các dịch vụ cần có của NIS server

Để kiểm tra trạng thái các dịch vụ trong bảng trên trước khi chuyển qua bước tiếp theo, bạn có thể dùng

lệnh rpcinfo

[root@bigboy tmp]# rpcinfo -p localhost

program vers proto port

100000 2 tcp 111 portmapper

100000 2 udp 111 portmapper

100009 1 udp 681 yppasswdd

100004 2 udp 698 ypserv

100004 1 udp 698 ypserv

100004 2 tcp 701 ypserv

100004 1 tcp 701 ypserv

[root@bigboy tmp]#

Hai dịch vụ ypbind và ypxfrd sẽ không khởi động chính xác cho đến khi bạn khởi tạo NIS domain. Bạn

hãy khởi động chúng sau khi hoàn tất việc khởi tạo.

e. Khởi tạo NIS domain

Bây giờ bạn đã quyết định tên của NIS domain, bạn sẽ phải dùng lệnh ypinit dể tạo ra các tập tin xác

thực liên quan cho tên miền. bạn sẽ được nhắc nhập tên máy chủ NIS, mà trong trường hợp này là bigboy.

Với thủ thuật này, các tài khoản nonprivileged (không có đặc quyền) sẽ tự động truy cập thông qua NIS

[root@bigboy tmp]# /usr/lib/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS

servers. bigboy is in the list of NIS server hosts. Please continue to add

the names for the other hosts, one per line. When you are done with the

list, type a <control D>.

next host to add: bigboy

Page 21: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 21

next host to add:

The current list of NIS servers looks like this:

bigboy

Is this correct? [y/n: y] y

We need a few minutes to build the databases...

Building /var/yp/NIS-SCHOOL-NETWORK/ypservers...

Running /var/yp/Makefile...

gmake[1]: Entering directory `/var/yp/NIS-SCHOOL-NETWORK'

Updating passwd.byname...

Updating passwd.byuid...

Updating group.byname...

Updating group.bygid...

Updating hosts.byname...

Updating hosts.byaddr...

Updating rpc.byname...

Updating rpc.bynumber...

Updating services.byname...

Updating services.byservicename...

Updating netid.byname...

Updating protocols.bynumber...

Updating protocols.byname...

Updating mail.aliases...

gmake[1]: Leaving directory `/var/yp/NIS-SCHOOL-NETWORK'

bigboy has been set up as a NIS master server.

Now you can run ypinit -s bigboy on all slave server.

[root@bigboy tmp]#

Chú ý: bạn phải đảm bảo portmap đang chạy trước khi thực hiện bước này, nếu không sẽ nhận được

thông báo lổi dạng như:

failed to send 'clear' to local ypserv: RPC: Port mapper failureUpdating group.bygid...

Bạn sẽ phải xóa thư mục /var/yp/NIS-SCHOOL-NETWORK và khởi động lại portmap, yppasswd,

ypserv trước khi thử làm lại bước này.

Page 22: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 22

f. Khởi động 2 dịch vụ ypbind và ypxfrd

Bây giờ đã có thể khởi động 2 dịch vụ này vì NIS domain đã được khởi tạo

[root@bigboy tmp]# service ypbind start

Binding to the NIS domain: [ OK ]

Listening for an NIS domain server.

[root@bigboy tmp]# service ypxfrd start

Starting YP map server: [ OK ]

[root@bigboy tmp]# chkconfig ypbind on

[root@bigboy tmp]# chkconfig ypxfrd on

g. Kiểm tra lại xem các dịch vụ đã chạy ổn chưa

[root@bigboy tmp]# rpcinfo -p localhost

program vers proto port

100000 2 tcp 111 portmapper

100000 2 udp 111 portmapper

100003 2 udp 2049 nfs

100003 3 udp 2049 nfs

100021 1 udp 1024 nlockmgr

100021 3 udp 1024 nlockmgr

100021 4 udp 1024 nlockmgr

100004 2 udp 784 ypserv

100004 1 udp 784 ypserv

100004 2 tcp 787 ypserv

100004 1 tcp 787 ypserv

100009 1 udp 798 yppasswdd

600100069 1 udp 850 fypxfrd

600100069 1 tcp 852 fypxfrd

100007 2 udp 924 ypbind

100007 1 udp 924 ypbind

100007 2 tcp 927 ypbind

100007 1 tcp 927 ypbind

[root@bigboy tmp]#

Page 23: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 23

2. Thêm người dùng NIS

Có thể đăng nhập vào NIS server để tao tài khoản người dùng mới và bạn sẽ được cấp kèm 1 mật khẩu

cho NIS user đó.

Khi hoàn thành, bạn phải dùng lệnh make để cập nhật lại các tập tin xác thực trong /var/yp

Thủ tục này kích hoạt tất cả NIS, các tài khoản nonprivileged sẽ tự động truy cập thông qua NIS. Đồng

thời nó chia sẻ thông tin về đặc tính của người dùng được lưu trữ tại các file /etc/passwd và /etc/group

(ví dụ như thông tin về login shell, nhóm người dùng, thư mục chính…).

[root@bigboy tmp]# useradd -g users nisuser

[root@bigboy tmp]# passwd nisuser

Changing password for user nisuser.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

[root@bigboy tmp]# cd /var/yp

[root@bigboy yp]# make

gmake[1]: Entering directory `/var/yp/NIS-SCHOOL-NETWORK'

Updating passwd.byname...

Updating passwd.byuid...

Updating netid.byname...

gmake[1]: Leaving directory `/var/yp/NIS-SCHOOL-NETWORK'

[root@bigboy yp]#

Bạn có thể kiểm tra xem các thông tin chứng thực đã được cập nhật hay chưa b ng lệnh ypmatch, kết

quả trả về là chuỗi mật khẩu đã mã hóa của người dùng đó.

[root@bigboy yp]# ypmatch nisuser passwd

nisuser:$1$d6E2i79Q$wp3Eo0Qw9nFD/::504:100::/home/nisuser:/bin/bash

[root@bigboy yp]

Ta cũng có thể dùng lệnh getent có cú pháp tương tự, tuy nhiên khác ypmatch, nó không đưa ra chuỗi

mật khẩu mã hóa khi chạy lệnh trên máy chủ, mà nó chỉ ra nơi chứa file passwd. Trên máy client thì kết

quả trả về giống như lệnh ypmatch.

[root@bigboy yp]# getent passwd nisuser

nisuser:x:504:100::/home/nisuser:/bin/bash

[root@bigboy yp]#

Page 24: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 24

3. Cấu hình NIS client

a. Chạy authconfig

Authconfig hoặc authconfig-tui là những chương trình tự động thiết lập các file NIS.

[root@smallfry tmp]# authconfig-tui

Khi hoàn thành, nó sẽ tạo ra một file /etc/yp.conf, file này định nghĩa một số thứ khác, địa chỉ IP của

NIS server cho 1 tên miền cụ thể. Nó cũng thay đổi file /etc/sysconfig/network để định nghĩa NIS domain

mà các NIS client phụ thuộc.

# /etc/yp.conf - ypbind configuration file

domain NIS-SCHOOL-NETWORK server 192.168.1.100

#/etc/sysconfig/network

NISDOMAIN=NIS-SCHOOL-NETWORK

b. Khởi động các dịch vụ ngầm liên quan tới NIS client

Khởi động dịch vụ ypbind client và portmap trong thư mục /etc/init.d và dùng lệnh chkconfig để

khiến chúng tự khởi động sau mổi lần máy tính khởi động lại.

[root@smallfry tmp]# service portmap start

Starting portmapper: [ OK ]

[root@smallfry tmp]# service ypbind start

Binding to the NIS domain:

Listening for an NIS domain server.

[root@smallfry tmp]#

[root@smallfry tmp]# chkconfig ypbind on

[root@smallfry tmp]# chkconfig portmap on

c. Kiểm tra việc phân giải tên miền

Bạn phải kiểm tra xem việc phân giải tên miền có đúng với địa chỉ IP hay không

# File: /etc/hosts (smallfry)

#192.168.1.100 bigboy

# File: /etc/hosts (bigboy)

#192.168.1.102 smallfry

Page 25: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 25

d. Kiểm tra việc truy cập tới NIS server

Bạn có thể dùng lện ypcat, ypmatch,getent để chắc chắn r ng quá trình giao tiếp với máy chủ diễn ra

chính xác.

[root@smallfry tmp]# ypcat passwd

nisuser:$1$Cs2GMe6r$1hohkyG7ALrDLjH1:505:100::/home/nisuser:/bin/bash

quotauser:!!:503:100::/home/quotauser:/bin/bash

ftpinstall:$1$8WjAVtes$SnRh9S1w07sYkFNJwpRKa.:502:100::/:/bin/bash

www:$1$DDCi/OPI$hwiTQ.L0XqYJUk09Bw.pJ/:504:100::/home/www:/bin/bash

smallfry:$1$qHni9dnR$iKDs7gfyt..BS9Lry3DAq.:501:100::/:/bin/bash

[root@smallfry tmp]#

[root@smallfry tmp]# ypmatch nisuser passwd

nisuser:$1$d6E2i79Q$wp3Eo0Qw9nFD/:504:100::/home/nisuser:/bin/bash

[root@smallfry tmp]#

[root@smallfry tmp]# getent passwd nisuser

nisuser:$1$d6E2i79Q$wp3Eo0Qw9nFD/:504:100::/home/nisuser:/bin/bash

[root@smallfry tmp]#

Các nguyên nhân phát sinh lổi có thể là:

Thiết lập sai authconfig trong /etc/yp.conf , /etc/sysconfig/network và /etc/nsswitch.conf

Không chạy lệnh ypinit trêm NIS server.

NIS không được khởi động trên NIS server hoặc client.

Việc định tuyến giữa server và client bị lổi, hoặc do tường lửa chặn việc lưu thông trong mạng

a. Thử đăng nhập vào NIS server

Sau các bước thiết lập trên NIS server, thêm người dùng và cấu hình NIS client, ta sẽ thử đăng nhập vào

NIS server từ client. Nếu việc đăng nhập thất bại có thể là do 2 nguyên nhân chính: tường lửa chặn việc

truy cập thông qua SSH và TELNET hoặc là do 2 dịch vụ trên chưa được khởi động trên máy client.

i. Đăng nhập thông qua Telnet

[root@bigboy tmp]# telnet 192.168.1.201

Trying 192.168.1.201...

Page 26: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 26

Connected to 192.168.1.201.

Escape character is '^]'.

Red Hat Linux release 9 (Shrike)

Kernel 2.4.20-6 on an i686

login: nisuser

Password:

Last login: Sun Nov 16 22:03:51 from 192-168-1-100.simiya.com

[nisuser@smallfry nisuser]$

ii. Đăng nhập thông qua SSH

[root@bigboy tmp]# ssh -l nisuser 192.168.1.102

[email protected]'s password:

[nisuser@smallfry nisuser]$

Trong một vài phiên bản linux, dịch vụ SSH trên máy client không tự động cập nhật lại nội dung file

/etc/nsswitch.conf mà bạn đã thay đổi cho đến khi SSH được khởi động lại. vì lí do đó nên ta sẽ không

truy vấn đến NIS server được, trừ khi khởi động lại SSH trên máy client.

[root@smallfry root]# service sshd restart

Stopping sshd:[ OK ]

Starting sshd:[ OK ]

[root@smallfry root]#

Page 27: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 27

III. Minh Họa Việc Cấu Hình NIS

Cấu hình trên 2 máy dùng CentOS: 1 máy là server, 1 máy là client.

Trên máy 1 cài gói ypserv-2.19-3.rmp

Khai báo NIS domain: mở file sau

Thêm dòng sau vào cuối file

Page 28: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 28

Khai báo NIS DOMAIN b ng cách mở file cấu hình sau:

Thêm dòng sau vào cuối file: khai báo NISdomain chính là máy mình b ng IP lookback:

Sau đó dùng lệnh sau để xem các port đã đăng ký

Page 29: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 29

Sau đó cần cập nhật CSDL cho nis server b ng lệnh sau:

Ở đây bạn có thể add 1 user vào. Hoặc có thể add user sau. Ở đây mình sẽ add user sau b ng

cách nhấn phím "Ctrl +D "

Page 30: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 30

máy sẽ báo cài đặt thành công NIS domain

để xem CSLD của NIS server vừa update xong ta gõ lệnh sau:

Page 31: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 31

Start NIS client:

Tạo user để cho client login vào NIS server và import user vào NIS domain

Import các user vào NIS domain

Xem, kiểm tra các user đã có trong NIS domain chưa

Page 32: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 32

Lưu ý : nếu bạn tạo mới 1 user b ng lệnh useradd thì user chỉ n m trên local để nó thuộc NIS domain

bạn cần import user đó vào như ở trên

IV. Bảo Mật

Cách thông thường để thay đổi mật khẩu NIS là chạy lệnh yppasswd trên NIS client. Lệnh này sử dụng

giao thức yppasswd và cần tiến trình rpc.yppasswdd đang chạy trên máy NIS server. Giao thức này có

điểm bất lợi, đó là các mật khẩu cũ sẽ được gởi đi dưới dạng văn bản thuần-clear text (không được mã

hóa) trên mạng. Điều này không có gì đáng bàn nếu việc thay đổi mật khẩu thành công, trong trường hợp

này mật khẩu cũ sẽ được ghi đ bởi mật khẩu mới. nhưng nếu trường hợp việc thay đổi mật khẩu thất bại

giữa chừng, và kẻ tấn công có thể bắt – sử dụng mật khẩu không được mã hóa đó để đăng nhập mạng. Tồi

tệ hơn: nếu người quản lý hệ thống thay đổi mật khẩu NIS cho một ai đấy, mật khẩu root (root password)

của máy chủ NIS sẽ được truyền đi dưới dạng văn bản thuần trên mạng.

Để tránh tình trạng này, ta có thể sử dụng lệnh rpasswd trong gói pwdutils với tính an toàn cao hơn.

rpasswd thay đổi mật khẩu của tài khoản người dùng trên máy chủ thông qua kết nối SSL an toàn. Một

người dùng bình thường chỉ có thể thay đổi mật khẩu của chính họ. Nếu người nào đó biết mật khẩu của

người quản trị hệ thống (trong trường hợp này là root password trên máy chủ NIS), người đó có thể thay

đổi mật khẩu của bất kỳ tài khoản nào nếu gọi lệnh rpasswd với tùy chọn –a.

-a, --admin

With this option, rpasswd connects as administrator user to the

remote server. The user has to supply the administrator password

and can change then every password

Page 33: NFS NIS Full 2003 Edit

Network Information Service GVHD: Nguyễn Tấn Khôi

Phan Xuân Phước Thịnh-Phan Thị Bích Thủy Page 33

Phụ Lục:

Một số khái niệm:

loadable module: modun có thể nạp tải

Network Loadable Module (Netware) (NLM): modun có thể nạp tải mạng

Source tree: thuật ngữ chỉ thư mục – nơi mà mã nguồn sẽ được biên dịch

Traffic: sự lưu thông dữ liệu

Portmapper: sơ đồ cổng (port), chứa danh sách các ánh xạ cổng với các dịch vụ tương ứng (cấu

trúc tự như file C:\Windows\System32\drivers\etc\services trong windows)

Daemon: dịch vụ chạy ngầm trên hệ thống.

Export: chia sẻ file (quá trình export)

Tài liệu tham khảo:

Managing NFS and NIS – Hal Stern, Mike Eisle and Ricardo labiaga

Advanced Linux Network Administration – LinuxIT Technical Education Centre

Website: linuxhomenetworking.com, linux-nis.org, ubuntu-vn.org …

--------------------------HẾT--------------------------