Как и любой демон, xinetd управляется сигналами:
♦ SIGHUP заставит xinetd перечитать файлы конфигурации и остановить службы, с этого момента отключенные;
♦ SIGQUIT остановит xinetd;
♦ SIGTERM остановит xinetd, остановив предварительно все запущенные им серверы;
♦ SIGUSR1 выведет дамп состояния в файл /var/run/xinetd.dump.
11.3.3.1. Защита xinetd
Суперсервер xinetd достаточно защищен, но его конфигурационный файл придется защитить вам самим. Естественно, нужно установить ему права доступа, разрешив только чтение в только суперпользователю:
# chmod 400 /etc/xinetd.conf
Чтобы никто не смог изменить, удалить, переименовать этот файл, установите ему атрибут «i» (только на файловой системе ext2 или ext3):
# chattr +i /etc/xinetd.conf
11.3.3.2. Пример файла конфигурации /etc/xinetd
Теперь, как и обещал, привожу пример файла конфигурации. В этом листинге перечислены чаще всего используемые сервисы с оптимальными атрибутами. Конечно же, вам предстоит решить, какие сервисы вы будете использовать, а какие нет. Возможно, вы также измените и их атрибуты — например, время работы того или иного сервиса.
Листинг 11.1. Фрагмент файла конфигурации /etc/xinetd
# Параметры по умолчанию для всех возможных сервисов
defaults
{
# Число серверов, которые могут быть активны одновременно
instances = 25
# Параметры протоколирования
log_type = FILE /var/log/servicelog
log_on_success = HOST PID
log_on_failure = HOST RECORD
# Параметры доступа
only_from = 111.11.111.0 111.111.112.0
only_from = localhost 192.168.1.0/32
# Отключенные сервисы
disables = tftp
}
service login {
flags = REUSE
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/etc/in.rlogind
log_type = SYSLOG local4 info
}
# Сервис telnet - эмуляция терминала удаленных систем
# для интерфейса обратной петли
service telnet {
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/etc/in.telnetd
bind = 127.0.0.1
log_on_failure += USERID
}
# Сервис telnet — эмуляция терминала удаленных систем
service telnet {
flags = REUSE
disable = yes
socket_type = stream
wait = no
user = root
server = /usr/etc/in.telnetd
bind = 192.231.139.175
redirect = 128.138.202.20 23
log_on_failure += USERID
}
service ftp {
socket_type = stream
wait = no
user = root
server = /usr/etc/in.ftpd
server_args = -1
instances = 4
log_on_success += DURATION USERID
log_on_failure += USERID
access_times = 2:00-8:59 12:00-23:59
nice = 10
}
service name {
socket_type = dgram
wait = yes
user = root
