Использование супердемона xinetd
В GNU/Linux широко используется современная альтернатива супердемону inetd — расширенный демон xinetd (extended Internet services daemon), об- ладающий лучшими качествами, чем inetd в плане возможностей конфигу- рирования и безопасности.
Как и inetd, супердемон xinetd позволяет запускать как многопоточные службы (multi-treated), создавая новый серверный процесс для каждого за- проса, так и однопоточные (single-treated), в которых один экземпляр сервер- ного процесса обслуживает все поступающие запросы (обычно только для протокола UDP).
Одним из преимуществ xinetd перед inetd является возможность запуска простыми пользователями непривилегированных служб. Супердемон xinetd не требует наличия имени сервиса в файле /etc/services.
Супердемон xinetd позволяет управлять доступом к любому сервису на ос- нове:
r адреса удаленного хоста;
r времени доступа;
r имени удаленного хоста;
r домена, к которому принадлежит удаленный хост.
Супердемон xinetd обеспечивает возможность реконфигурации в ходе вы- полнения. Некоторые характеристики xinetd приведены далее в списке.
r xinetd может останавливать процессы служб, удаленных из конфигу- рации;
r может останавливать процессы служб, не удовлетворяющих ограничениям;
r позволяет ограничивать количество экземпляров серверов для каждого сервиса;
r может ограничить количество экземпляров сервера, запущенных для об- служивания соединений с одного адреса;
r супердемон xinetd позволяет ограничить размер создаваемых журнальных файлов;
r способен налагать ограничения на исходящие соединения;
r позволяет останавливать сервисы, расходующие ресурсы свыше ограни- чения;
r предоставляет широкие возможности по настройке журналирования;
r не ограничивает возможное количество передаваемых демону аргументов;
r можно связывать сервисы с заданными сетевыми интерфейсами;
r запускаемые xinetd службы могут отсутствовать в /etc/services;
r супердемоны xinetd и inetd могут работать параллельно.
Супердемон xinetd настраивается с помощью конфигурационного файла
/etc/xinetd.conf. Конфигурационный файл /etc/inetd.conf может быть преобра- зован в файл /etc/xinetd.conf командой itox.
В общем виде формат записей конфигурации xinetd таков:
service <служба>
{
<атрибут> <оператор> <значение> <значение> ...
...
}
Оператор присваивания <оператор> может быть одним из:
D = — присвоение значения атрибуту;
D =- — удаление атрибута;
D =+ — добавление атрибута.
Файл /etc/xinetd.conf содержит настройки по умолчанию (пример 21.7).
Пример 21.7. Файл /etc/xinetd.conf |
defaults
{
}
log_type = SYSLOG authpriv log_on_success = PID HOST log_on_failure = HOST instances = 25
per_source = 5
only_from = 127.0.0.1
includedir /etc/xinetd.d
Команда includedir заставляет супердемон прочитать все индивидуальные конфигурационные файлы служб в каталоге /etc/xinetd.d.
Настройка log_type определяет тип журналирования. Здесь журналирование будет осуществляться с помощью службы syslog, причем запись сообщений будет осуществляться в канал authpriv. При успешном запуске службы (log_on_success) в журнал будут записаны номер процесса запущенного для обслуживания соединения демона и имя хоста, инициировавшего соедине- ние. В случае отказа в запуске (log_on_failure) в журнал будет занесено лишь имя хоста.
Настройка instances ограничивает максимальное количество экземпляров демонов для каждой конкретной службы, а per_source — максимальное ко- личество демонов для обслуживания соединений из одного источника.
Ограничение only_from = 127.0.0.1 разрешает обращение к службам толь- ко с локального хоста.
Любые настройки из секции defaults файла /etc/xinetd.conf могут быть пере- определены в файлах индивидуальной настройки служб в каталоге
/etc/xinetd.d. Удобно задавать такие имена файлов индивидуальных настроек служб, чтобы они соответствовали именам служб в /etc/services, хотя это не является требованием.
Далее приведен пример 21.8 содержимого файла индивидуальной настройки для службы FTP, реализованной с помощью демона vsftpd (Very Secure FTP Daemon).
Пример 21.8. Файл настроек службы |
cat /etc/xinetd.d/vsftpd service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd server_args = /etc/vsftpd/vsftpd.conf log_on_success += DURATION USERID log_on_failure += USERID
nice = 10
disable = yes
}
Настройка disable = yes запрещает супердемону xinetd прослушивать порт для запуска данной службы. Если необходимо, чтобы супердемон прослуши- вал данный порт и запускал демон этой службы, следует установить disable
= no и послать сигнал SIGHUP супердемону (пример 21.9).
Пример 21.9. Включение службы xinetd |
# cat /etc/xinetd.d/vsftpd service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd server_args = /etc/vsftpd/vsftpd.conf log_on_success += DURATION USERID log_on_failure += USERID
nice = 10
disable = no
}
# pkill -1 xinetd
# netstat -ta
Active Internet connections (servers and established)
Proto | Recv-Q | Send-Q Local | Address | Foreign | Address | State |
tcp | 0 *:ssh | *:* | LISTEN | |||
tcp | 0 *:ftp | *:* | LISTEN |
Из примера видно, что после того, как в файле настроек /etc/xinetd.d/vsftpd установка disable = yes была заменена на disable = no и супердемону xinetd был передан сигнал SIGHUP, порт FTP стал доступен для соединений.
Сервер vsftpd будет в данном случае исполняться от имени суперпользова- теля, что диктует настройка user = root. Причем он будет выполняться с пониженным приоритетом, что определено настройкой nice = 10.
При запуске супердемоном процесса vsftpd последнему в качестве аргумен- та будет передано имя файла его конфигурации /etc/vsftpd/vsftpd.conf.
Настройки log_on_failure и log_on_success изменены по сравнению с на- стройками по умолчанию: к ним добавляется информация о соединении, где USERID — идентификатор пользователя, а DURATION — длительность сеанса.
Дата добавления: 2015-06-12; просмотров: 1269;