Nguồn: http://linux.web.cern.ch/linux/scientific4/docs/rhel-rg-en-4/s1-tcpwrappers-xinetd.html
1. Khái niệm
xinetd daemon (viết tắt của eXtended InterNET Daemon) là một TCP wrapped super service, để kiểm soát truy cập một tập con những dịch vụ mạng thông dụng như: FTP, IMAP và Telnet, ... Nó cũng cung cấp những tuỳ chọn cấu hình xác định để kiểm soát truy cập, logging, binding, wwwection và việc sử dụng tài nguyên
Khi client thử kết nối đến một dịch vụ mạng được kiểm soát bởi xinetd, nó nhận được yêu cầu và kiểm tra bất kỳ truy cập TCP wrappers nào. Nếu truy cập được cho phép, xinetd xác nhận rằng kết nối được cho phép dưới access rules cho dịch vụ đó, và dịch vụ đó được gán một lượng tài nguyên xác định được định nghĩa trong rules. Sau đó một instance của dịch vụ yêu cầu được khởi tạo và trao sự kiểm soát kết nối cho nó. Khi kết nối được thiết lập, xinetd không gây bất cứ trở ngại nào trong việc giao tiếp giữa client host và server nữa.
2. Các files cấu hình cho xinetd
Những files cấu hình cho xinetd như sau:
/etc/xinetd.conf - File cấu hình toàn cục
Thư mục /etc/xinetd.d - thư mục chứa tất cả các file cấu hình cho mỗi dịch vụ xác định
- File cấu hình /etc/xinetd.conf
xinetd.conf chứa đựng các cấu hình chung cho tất cả các dịch vụ được kiểm soát bởi xinetd. Nó chỉ được đọc khi dịch vụ xinetd được khởi tạo, do đó bất kỳ thay đổi nào trong cấu hình, bạn đều phải restart (hoặc reload) xinetd để có hiệu lực. Dưới đây là ví dụ cho Fedora 8:
Code:
defaults
{
log_type = SYSLOG daemon info
log_on_failure = HOST
log_on_success = PID HOST DURATION EXIT
cps = 50 10
instances = 50
per_source = 10
}
includedir /etc/xinetd.d
Ý nghĩa của các tham số:
log_type: SYSLOG authpriv: chỉ định đầu ra của service log. Bạn có thể gửi nó đến SYSLOG
log_on_success: Cấu hình cho việc log nếu kết nối thành công. HOST name và Process ID sẽ được log vào /var/log/secure
log_on_failure: cấu hình cho việc log khi kết nối bị dropped hoặc không được phép truy cập /var/log/secure
cps: giới hạn tỷ lệ các kết nối. Bao gồm 2 tham số. Tham số đầu tiên là giới hạn số lượng kết nối trong 1s. Nếu tỷ lệ các kết nối cao hơn giá trị này, dịch vụ sẽ tạm thời bị disabled. Tham số thứ 2 là thời gian chờ (tính bằng s) để enable lại dịch vụ sau khi nó bị disabled. Giá trị mặc định là 50 connections và thời gian nghỉ là 10s
instances: số lượng lớn nhất các requests mà xinetd có thể handle tại một thời điểm
per_source: giới hạn số lượng kết nối cho mỗi địa chỉ nguồn
includedir: đọc các file cấu hình cho các dịch vụ khác nằm trong thư mục /etc/xinetd.d
Thư mục này chứa đựng các file cấu hình cho mỗi dịch vụ được quản lý bởi xinetd. Cũng như xinetd.conf, thư mục này cũng chỉ được đọc khi xinetd được khởi tạo. Để bất kỳ thay đổi này có hiệu lực, bạn phải khởi động lại dịch vụ xinetd
Định dạng của các file nằm trong thư mục /etc/xinetd.d cũng sử dụng quy ước tương tự như /etc/xinetd.conf. Lý do chính để cấu hình của mỗi dịch vụ được lưu trong 1 file riêng biệt là nhằm tạo sự dễ dàng trong việc tuỳ biến, cũng như đỡ ảnh hưởng đến các dịch vụ khác
Ví dụ về rsync:
Code:
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = yes
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
Ý nghĩa các tham số:
service: định nghĩa tên dịch vụ, luôn phải thuộc /etc/services
disable: dịch vụ có được active hay không
flags: Gán thuộc tính cho kết nối.
socket_type: loại socket mạng. Trường này có thể nhận các giá trị: stream, dgram, raw
wait: định nghĩa dịch vụ là single-threaded (yes) hay multi-threaded (no)
user: người dùng có quyền chạy dịch vụ đó. root hoặc nobody thường được dùng ở đây.
server: đường dẫn của dịch vụ
server_args: chỉ định các tham số đưa vào cho server. Trong ví dụ này: rsync là một daemon nên yêu cầu đưa vào tuỳ chọn --daemon
log_on_failure: định nghĩa các tham số logging được thêm vào với những gì đã định nghĩa trong xinetd.conf
Làm việc với xinetd
Khởi động dịch vụ:
Code:
# /etc/init.d/xinetd start
Dừng dịch vụ:
Code:
# /etc/init.d/xinetd stop
Xác định xem xinetd có đang chạy hay không
Code:
# /etc/init.d/xinetd status
xinetd (pid 2110) is running...
Khởi động lại dịch vụ
Code:
# /etc/init.d/xinetd restart