Tải bản đầy đủ (.pdf) (33 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.29 MB, 33 trang )

NFS & NIS

GVHD: Nguyễn Tấn Khôi

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.
b.

/etc/exports _________________________________________________________________________________ 6
/Etc / hosts.allow và / etc / hosts.deny ____________________________________________________________ 7

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

2.
a.
b.

Khởi động portmapper ________________________________________________________________________ 8


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.
b.

Tùy chọn gắn kết “nosuid” – the nosuid mount option _______________________________________________13
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.
b.
c.
d.
e.

Cài đặt các gói dịch vụ ________________________________________________________________________19
Thay đổi file /etc/sysconfig/network _____________________________________________________________19
Thay đổi file /etc/yp.conf ______________________________________________________________________19
Khởi động các dịch vụ NIS server liên quan _______________________________________________________19
Khởi tạo NIS domain _________________________________________________________________________20

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

Page 1


NFS & NIS


f.
g.

GVHD: Nguyễn Tấn Khôi

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

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

2.
3.

Cấu hình NIS client __________________________________________________________________ 24
a.
b.
c.
d.
a.

Chạy authconfig _____________________________________________________________________________24
Khởi động các dịch vụ ngầm liên quan tới NIS client ________________________________________________24
Kiểm tra việc phân giải tên miền ________________________________________________________________24
Kiểm tra việc truy cập tới NIS server _____________________________________________________________25
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


iệ Cấu Hình NIS ___________________________________________________ 27

III.

Minh Họ

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

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

Page 2


NFS & NIS

GVHD: Nguyễn Tấn Khôi

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

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

Page 3


NFS & NIS

GVHD: Nguyễn Tấn Khôi

Đề 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ụ.

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

Page 4


Network File System

GVHD: Nguyễn Tấn Khôi

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.

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

Page 5


Network File System

II.

GVHD: Nguyễn Tấn Khôi

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

/etc/exports
/var/lib/nfs/rmtab
/var/lib/nfs/xtab
/etc/host.allow
/etc/host.deny

ác dịch vụ NFS Server
rpc.portmap
rpc.mountd
rpc.nfsd
rpc.statd
rpc.rquotad
rpc.rquotad

ác file script và câu lệnh
/etc/rc.d/init.d/nfs
nfstat
showmount
rpcinfo
exportfs

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.

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

Page 6


Network File System




GVHD: Nguyễn Tấn Khôi

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.

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

Page 7


Network File System

GVHD: Nguyễn Tấn Khôi

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:

rpc.portmap
rpc.mountd, rpc.nfsd

rpc.statd, rpc.lockd (nếu cần
thiết)
rpc.rquotad

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:

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

Page 8


Network File System

GVHD: Nguyễn Tấn Khôi

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.
inh Họa Việc ấu Hình NFS:

III.

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”

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


Page 9


Network File System



GVHD: Nguyễn Tấn Khôi

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.

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

Page 10



Network File System

GVHD: Nguyễn Tấn Khôi

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



IV.

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.

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

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

Page 11


Network File System

GVHD: Nguyễn Tấn Khôi

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:

# 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

Trước tiên, hãy chỉnh sửa02:13:22
/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

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

Page 12


Network File System

GVHD: Nguyễn Tấn Khôi

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

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


Page 13


Network File System

GVHD: Nguyễn Tấn Khôi

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

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

Page 14


Network File System

GVHD: Nguyễn Tấn Khôi

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:

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

Page 15


Network File System

GVHD: Nguyễn Tấn Khôi


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

Dòngipchains
đầu tiên cho
sự chấp
nhận-d
tất 0/0
cả các
rờiDENY
rạc của
-A biết
input
-s 0/0
-pphần
6 -j
-ygói
-ltin (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
ipchains
-A input
-scông
0/0 được
-d 0/0
17 việc

-j DENY
-ltải 1 máy tính với các mảnh gói tin.
lại. Dĩ nhiên
có những
cuộc tấn
gây -p
ra bởi
gây quá
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ủ.

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

Page 16


Network File System

GVHD: Nguyễn Tấn Khôi

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 -L 250:localhost:2049 -f sleep 60m
# ssh -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…

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

Page 17


Network Information Service

GVHD: Nguyễn Tấn Khôi

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

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

Page 18



Network Information Service

GVHD: Nguyễn Tấn Khôi

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-SCHOOLNETWORK
#/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

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

Page 19


Network Information Service

GVHD: Nguyễn Tấn Khôi

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

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

Page 20


Network Information Service

GVHD: Nguyễn Tấn Khôi

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.

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

Page 21


Network Information Service

f.

GVHD: Nguyễn Tấn Khôi

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

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

111 portmapper

798 yppasswdd

600100069


1 udp

600100069

1 tcp

850 fypxfrd
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]#

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

Page 22


Network Information Service

GVHD: Nguyễn Tấn Khôi

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]#

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

Page 23


Network Information Service

GVHD: Nguyễn Tấn Khôi

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

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

Page 24


Network Information Service

GVHD: Nguyễn Tấn Khôi

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...

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

Page 25


×