Inetd vă câc dịch vụ mạng

Một phần của tài liệu giáo trình hệ điều hành redhat linux (Trang 126)

X Window System: Lịch sử vă kiến trúc

Inetd vă câc dịch vụ mạng

1. Inetd

Unix có hai câchđể tổ chức câc dịch vụ mạng: hoặc lă khởi động ngay từ đầu chương trình server dưới dạng daemon, hoặc lă để công tâc khởi động chương trình dịch vụ theo yíu cầu (khi có yíu cầu kết nối) với sự trợ giúp của một tiến trình daemon khâc lă inetd (đọc lă inĩt đí). Trong trường hợp đầu, ta cần cho mỗi dịch vụ ít nhất một daemon vă tăi nguyín của hệ thống bị sử dụng ngay cả khi không có yíu cầu kết nối. Còn trong trường hợp sau ta cần một daemon cho tất cả câc dịch vụ. Tăi nguyín hệ thống chỉ thực sự bị chiếm dụng khi có yíu cầu kết nối. Vì vậy, chương trình server dạng daemon thường trực được dùng cho câc dịch vụ có yíu cầu kết nối thường xuyín nhưDNS, mail, Web ; còn sơ đồ qua inetd dănh cho câc dịch vụ với tần số sử dụng thưa như ftp, telnet, secure shell …

Chương trình inetd, còn gọi lă super-server, được sử dụng để khởi động câc daemon phục vụ câc dịch vụ mạng. inetd đợi câc nối mạng sau một số cổng được quy định bởi tập tin cấu hình /etc/inetd.conf. inetd của RedHat Linux 7.1 sử dụng tập tin /etc/xinetd.conf vă câc tập tin trong thư mục /etc/xinet.d. Khi có yíu cầu kết nối, inetd sẽ gọi chương trình server tương ứng để thiết lập câc kết nối vă phục vụ khâch hăng. Thông thường, inetd được khởi động ngay từ đầu bởi câc script dùng cho khởi động mây. inetd sẽ đọc file cấu hình /etc/inetd.conf khiđược gọi lín bộ nhớ. Sau đđy lă một văi dòng của tập tin /etc/inetd.conf

# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>

# Echo, discard, daytime, and chargen are used primarily for testing.

# To re-read this file after changes, just do a 'killall -HUP inetd'

#time stream tcp nowait root internal

#time dgram udp wait root internal

#

# These are standard services.

#

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

Bín cạnh tập tin cấu hình /etc/inetd.conf, tập tin /etc/services cũngđược inetd sử dụng để biết câc cổng (port) của câc chương trình server. Ví dụ một đoạn của tập tin /etc/services

ftp-data 20/tcp

ftp 21/tcp

fsp 21/udp fspd

ssh 22/tcp # SSH Remote Login Protocol

ssh 22/udp # SSH Remote Login Protocol

127 time 37/tcp timserver

time 37/udp timserver

rlp #9; 39/udp resource # resource location

nameserver 42/tcp name # IEN 116

whois 43/tcp nicname

re-mail-ck 50/tcp # Remote Mail Checking Protocol

re-mail-ck 50/udp # Remote Mail Checking Protocol

domain 53/tcp nameserver # name-domain server

domain 53/udp nameserver

Hai tập tin /etc/inetd.conf vă /etc/services quan hệ mật thiết với nhau. Cột đầu tiín bao gồm tín câc dịch vụ mạng vă cần phải giống nhau. Một dịch vụ muốn được hoạt động nhờ inetd phải khai bâo cổng mă nó đợi khâch hăng thông qua /etc/services vă dòng lệnh khởi động nó trong /etc/inetd.conf. Muốn tắt một dịch vụ, ta chỉ cần đặt dấu chú thích # trước dòng miíu tả dịch vụ vă khiđó, inetd sẽ không biết vă không gọi dịch vụ đó nữa. Nhưcâc bạn đọc nhận thấy nội dung của cột <server_path> <args> cho câc dịch vụ lă /usr/sbin/tcpd in.telnetd. Chương trình tcpd được inetd gọi lín trước để lăm một số công tâc kiểm tra vă ghi log trước khi chương trình dịch vụ thực được gọi lín. Cụ thể lă tcpd sẽ sử dụng

Cột <flags> cho biết chương trình inetd có phải đợi (wait) hay không (nowait) kết nối kết thúc trước khi "tiếp" một kết nối khâc. Ví dụ trín với telnet cho thấy nhiều chương trình khâch có thể được phục vụ một lúc qua cùng một cổng telnet 23. Tất nhiín chương trình server telnet cũng phải được thiết kế thích hợp với kiểu lăm việc đa khâch hăng năy.

Cột <user> quy định quyền của tiến trình khi nó được chạy trín bộ nhớ. Trong trường hợp có nghi ngờ về tính bảo mật của một dịch vụ, ta có thể giảm quyền của nó bằng câch thay đổi nội dung của cột năy.

Qua ví dụ trín ta thấy dịch vụ ftp sẽ được inetd gọi lín thông qua dòng lệnh /usr/sbin/tcpd in.ftpd -l –a khi có một chương trình khâch hăng dùng giao thức TCP gọi qua cổng 21.

Đọc thím. Tiến trình được sinh ra như thế năo? Trín một mây chủ Unix, thường có hăng chục tiến trình đang đồng thời hoạt động. Trín những mây chủ lớn vă bận bịu, có thể có hăng ngăn tiến trình cùng lúc.

Vậy tiến trìnhđược hình thănh nhưthế năo ?

Nếu con người được sinh ra bởi con người thì tiến trình cũng sinh ra bởi tiến trình. Chỉ có một điều khâc lă phải cần 2 người lăm cha mẹ mới có trẻ em (trừ những dự định clone người hiện nay), còn tiến trình thì chỉ có một tiến trình cha. Khi hệ thống khởi động, tiến trình đầu tiín lă init. Sau đó, init sẽ sinh ra câc tiến trình khâc cần thiết cho sự hoạt động của hệ thống. Ví dụ mỗi khi tađăng nhập hệ thống, tiến trình login sau khi kiểm tra mật khẩu sẽ sinh ra một tiến trình shell để người sử dụng có thể lăm việc thông qua câc dòng lệnh của shell. Có 2 lệnh liín quan tới việc hình thănh câc tiến trình lă lệnh fork vă execve. Lệnh fork cho phĩp hình thănh một tiến trình con giống hệt tiến trình cha vă cả hai sau đó cùngđược song song hoạt động vă được HĐH đối xử nhưnhau. Hai tiến trình năy chỉ khâc nhau về PID vă người ta có thể biết rằng hiện đang ở tiến trình bằng câch xem giâ trị trở về của lệnh fork: nếu bằng 0, ta đang ở tiến trình cha, nếu khâc 0 thì

129 if (fork() == 0) {

/* I am the child, I will become ls /usr/bin */

execl("/bin/ls","ls","/usr/bin", (char *) 0);

}

else {

/* I’m parent, do whatever perent’s sopposed to do*/

}

Câc biến tấu của execve tạo thănh một họ câc hăm exec (exec family). Linux có thím cloneđể tạo câc threads (tiểu tiến trình). Trong trường hợp hệ thống quâ tải, lệnh fork sẽ không thănh công do tăi nguyín hệ thống đê bị vĩt cạn. Khi đó ta sẽ có thông bâo lỗi trín măn hình gắn trực tiếp với mây chủ vă mây chủ cần được xem xĩt sửa chữa hoặc nđng cấp.

2. FTP

# default: on

# description: The wu-ftpd FTP server serves FTP connections. It uses \

# normal, unencrypted usernames and passwords for authentication. service ftp { disable = no socket_type = stream wait = no

user = root server = /usr/sbin/in.ftpd server_args = -l -a log_on_success += DURATION nice = 10 } 3. POP 3 # default: off

# description: The POP3S service allows remote users to access their mail \

# using an POP3 client with SSL support such as fetchmail. service pop3s { disable = no socket_type = stream wait = no user = root

131

4. IMAP

# default: off

# description: The IMAP service allows remote users to access their mail using \

# an IMAP client such as Mutt, Pine, fetchmail, or Netscape \ # Communicator. service imap { disable = no socket_type = stream wait = no user = root server = /usr/sbin/imapd

log_on_success += DURATION USERID

log_on_failure += USERID

Domain Name Server

Một phần của tài liệu giáo trình hệ điều hành redhat linux (Trang 126)

Tải bản đầy đủ (PDF)

(170 trang)