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

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

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 (878.53 KB, 33 trang )

NFS &

GVHD: Nguyễn Tấn

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


2.

6
6

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

Khởi
7 a.
8 b.
8

động

6
7

các

Khởi
Các

dịch

vụ



liên


động
tiến

quan
portmapper
ngầm:

trình

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

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

IV.

4.

Client
13 a.
Tùy
13 b.
14

Tùy

security
chọn
chọn

gắn
gắn

kết
kết

“nosuid”
“broken_suid”





the
the

nosuid
broken_suid

mount
mount

option
option

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
1.
19 a.
19 b.
19 c.
19 d.
19 e.
20

18

Cấu hình NIS server:

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


Dương Mạnh Khánh

Page 1


f.

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

2.

Thêm người dùng NIS

3.

Cấu hình NIS client

23
24
24 b.

ii.

Đăng nhập thông qua SSH

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


a.
Chạy authconfig
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
26

III.

Minh Họa việc 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


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.
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 đỡ em hoàn thành đề tài này.

Quảng Ngãi,ngày 08, tháng 05, năm 2017



Đề Tà i 06:
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ụ.


Network File

GVHD: Nguyễn Tấn

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.


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


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.


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

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:


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
764 mountd
mountd
100005 22 udp
tcp 766
100005
100005
100003

100003
300019
300019
100024
100024
100021
100021

3
3
2
3
1
1
1
1
13

udp
tcp
udp
udp
tcp
udp
udp
tcp
udp
udp

769 mountd

771 mountd
2049 nfs
2049 nfs
830 amd
831 amd
944 status
946 status
1042
1042 nlockmgr
nlockmgr

100021
100021
100021
100021

4
1
3
4

udp
tcp
tcp
tcp

1042 nlockmgr
1629 nlockmgr
1629 nlockmgr
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”


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.


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


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

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


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


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


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:


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

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
cơ 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ủ.


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…


Network Information

GVHD: Nguyễn Tấn

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


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


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


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-SCHOOLNETWORK/ypservers... Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/NIS-SCHOOLNETWORK' 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-SCHOOLNETWORK' 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.


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



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-SCHOOLNETWORK' Updating passwd.byname...
Updating passwd.byuid...
Updating netid.byname...
gmake[1]: Leaving directory `/var/yp/NIS-SCHOOLNETWORK' [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/bas
h [root@bigboy yp]#


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


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


×