1. Trang chủ
  2. » Giáo án - Bài giảng

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

33 601 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 833,6 KB

Nội dung

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.. Các cli

Trang 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 1 Dương Mạnh Khánh

Trang 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ọ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

Trang 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áng4/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

Trang 4

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

Trang 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

Trang 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 dòng text trong file cấu hình /etc/exports có cú pháp như sau :

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

T

r o n g đ ó :

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

Trang 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ạytrên server

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

Trang 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:

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:

Trang 9

program vers proto port

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”

Trang 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

Trang 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

Trang 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:

# 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

Trang 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

Trang 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

Trang 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õ

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

Trang 16

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ủ

Ngày đăng: 11/05/2017, 11:31

TỪ KHÓA LIÊN QUAN

w