Бруй В.В., Карлов С.В. - Linux-сервер - пошаговые инструкции - инсталляции и настройки (1077321), страница 63
Текст из файла (страница 63)
Конфигурационный файл /etc/xinetd.d/imaps14. Файл инициализации /etc/init.d/xinetd260Часть 4. Программное обеспечение для ограничения доступа к серверу...Программа хinetd, так же как и программа tcpserver из пакета ucspi-tcp, предназначена для запускаприложений, которые не могут выполняться в режиме демона.Данная программа обладает следующими возможностями:• обеспечивает механизмы управления доступом;• предотвращает атаки отказа в обслуживании;• обеспечивает возможность регистрации большого количества пользователей;• обеспечивает повременной доступ службам;• ограничивает число запускаемых серверов.К сожалению, xinetd недостаточно корректно работает с рядом служб, например, ftp и ssh.
Поэтомуавторы рекомендуют использовать для запуска служб, которые не могут выполняться в режиме сервера,программы из пакета ucspi-tcp, обладающие большим быстродействием, надежностью и приемлемыми показателями безопасности.Желающие протестировать xinetd могут воспользоваться рекомендациями настоящей главы.Ограничения и допущенияИсходные коды находятся в каталоге /var/tmp.Все операции выполняются пользователем с учетной записью root.Используется дистрибутив ASPLinux 7.3 (Vostok).Перекомпиляция ядра не требуется.Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистрибутивов Linux, но авторы это не проверяли.ПакетыПоследующие рекомендации основаны на информации, полученной с домашней страницы проектаxinetd по состоянию на 02.05.2003.
Регулярно посещайте домашнюю страницу проектаhttp://www.xinetd.org/ и отслеживайте обновления.Исходные коды xinetd содержатся в архиве xinetd-version.tar.gz (последняя доступная намомент написания главы стабильная версия xinetd-2.3.11.tar.gz).Инсталляция с помощью rpm-пакетовЕсли вы предпочитаете использование системы со стандартным ядром и программным обеспечением,установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить следующиеоперации.ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исходных кодов.Шаг 1Проверьте, установлен ли пакет программы xinetd с помощью следующей команды:[root@drwalbr /]# rpm –iq xinetdШаг 2В случае его отсутствия перейдите в каталог, где находится пакет xinetd-2.3.51.asp.i386.rpm.
Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие вдистрибутив, в каталог /home/distrib, то выполните команду:[root@drwalbr /]# cd /home/distribи установите:[root@drwalbr distrib]# rpm –ihv xinetd-2.3.5-1.asp.i386.rpmили обновите пакет:[root@drwalbr distrib]# rpm –Uhv xinetd-2.3.5-1.asp.i386.rpmПосле установки пакета перейдите к настройке программы.Компиляция, оптимизация и инсталляция xinetdДля установки xinetd из исходных кодов необходимо выполнить следующие операции.Глава 21. xinetd – программное обеспечение для запуска обычных программ в режиме сервера261Шаг 1Проверьте подлинность и целостность полученных архивов с исходными кодами (для получения более подробной информации о порядке действий см.
соответствующий раздел главы 12).Шаг 2Распакуйте архивы с исходными кодами xinetd в каталоге /var/tmp:[root@drwalbr /]# cd /var/tmp/[root@drwalbr tmp]# tar xzpf xinetd-2.3.11.tar.gzШаг 3Сконфигурируйте исходные коды xinetd:[root@drwalbr tmp]# cd xinetd-2.3.11/[root@drwalbr xinetd-2.3.11]# CFLAGS="-O2 -march=i686 -funroll-loops";export CFLAGS./configure \--prefix=/usr \--sysconfdir=/etc \--with-loadavg \--mandir=/usr/share/manШаг 4Откомпилируйте, проинсталлируйте xinetd, создайте и сохраните список установленных файлов:[root@drwalbr xinetd-2.3.11]# make[root@drwalbr xinetd-2.3.11]# find /* > /root/xinet1[root@drwalbr xinetd-2.3.11]# make install[root@drwalbr xinetd-2.3.11]# rm -f /usr/sbin/itox[root@drwalbr xinetd-2.3.11]# rm -f /uar/sbin/xconv.pl[root@drwalbr xinetd-2.3.11]# rm -f /usr/ahare/lnan/man8/itox.8[root@drwalbr xinetd-2.3.11]# chmod 0510 /usr/sbin/xinetd[root@drwalbr xinetd-2.3.11]# strip /usr/sbin/xinetd[root@drwalbr xinetd-2.3.11]# find /* > /root/xinetd2[root@drwalbr xinetd-2.3.11]# diff /root/xinet1 /root/xinet1 >/root/xinetd.installed[root@drwalbr xinetd-2.3.11]# mv /root/xinet.installed/very_reliable_place/ xinet.installed.YYYYMMDDШаг 5Удалите архивы и каталоги с исходными кодами xinetd:[root@drwalbr /]# cd /var/tmp/[root@drwalbr tmp]# rm -rf xinetd-2.3.11/[root@drwalbr tmp]# rm-f xinetd-2.3.11.tar.gzШаг 6Если в вашей системе имеются файлы /etc/hosts.allow и /etc/hosts.deny, то удалите их:[root@drwalbr /]# rm-f /etc/hosts.allow[root@drwalbr /]# rm-f /etc/hosts.denyКонфигурирование xinetdКонфигурирование xinetd осуществляется с использованием следующих файлов:• главного конфигурационного файла /etc/xinetd.conf;• файлов из каталога /etc/xinetd.d;• файла инициализации /etc/init.d/xinetd.Конфигурационный файл /etc/xinetd.confШаг 1Создайте файл /etc/xinetd.conf в соответствии с приведенными рекомендациями и вашими потребностями:defaults{262Часть 4.
Программное обеспечение для ограничения доступа к серверу...instance=60log_type=SYSLOG authprivlog_on_success= HOST PIDlog_on_failure= HOSTonly_from=per_source=5}includedir/etc/xinet.dгде строка:instance = 60определяет максимальное количество одновременно создаваемых соединений для любой службы, выполняемой через xinetd. Если для данной службы не определено собственное значение параметра instance(как это сделать – показано ниже), то при ее запуске будет использоваться значение, определенное в рассматриваемой строке.
Эта опция используется для защиты служб, запущенных с использованием xinetd отDоS-атак.Строка:log_type = SYSLOG authprivопределяет способ регистрации. В данной редакции для регистрации используется служба syslogd.При использовании параметра FILE, т. е. строки вида:log_type = FILE /var/log/servicelogрегистрация осуществляется в файл /var/log/servicelog.Строкаlog_on_success = HOST PIDопределяет, что будет регистрироваться при успешном обращении к службе, запущенной с использованиемxinetd.
В рассматриваемом примере регистрируется IP-адрес компьютера, с которого осуществляется обращение к вашему серверу и номер процесса. Опция log_on_success, кроме того, может использоваться соследующими параметрами:• USERID – регистрация идентификатора пользователя;• EXIT – регистрация кода завершения процесса;• DURATION – регистрация продолжительности сеанса.Строка:log_on_failure = HOSTопределяет, что будет регистрироваться при неудачной попытке обращения к службе, запущенной с использованием xinetd. В рассматриваемом примере регистрируется IP-адрес компьютера, с которого осуществляется обращение к вашему серверу.Опция log_on_failure, кроме того, может использоваться со следующими параметрами:• USERID – регистрация идентификатора пользователя;• ATTEMPT – подтверждение факта неудачного запуска сервера;• RECORD – регистрация максимально полной информации об удаленной системе, с которой осуществляется обращение к вашему серверу.Строка:only_from =запрещает доступ к службам, запускаемым с использованием xinetd, с любых IP-адресов.
Далее, создаваяфайлы в каталоге /etc/xinetd.d, можно разрешить доступ к соответствующим службам только с определенных удаленных систем.Строка:per_source = 5ограничивает максимальное количество соединений – в рассматриваемом примере 5 – которое может бытьустановлено между определенным удаленным IP-адресом и сервером.
Значение может быть выражено целым числом или параметром unlimited, снимающим ограничения на количество устанавливаемых соединений. Этот параметр может быть использован для защиты от DоS-атак.Строка:includedir /etc/xinetd.dопределяет каталог, в котором находятся конфигурационные файлы, используемые xinetd для запуска соответствующих серверов. В рассматриваемом примере используется каталог /etc/xinetd.dШаг 2Установите права доступа к файлу и определите его владельцем пользователя root:[root@drwalbr /]# chmod 600 /etc/xinetd.conf[root@drwalbr /]# chown 0.0 /etc/xinetd.confГлава 21.
xinetd – программное обеспечение для запуска обычных программ в режиме сервера263Каталог /etc/xinetd.dВ каталоге /etc/xinetd.d необходимо создать файлы, ответственные за запуск соответствующихслужб. Ниже приведены примеры конфигурационных файлов для запуска с использованием xinetd следующих служб:• защищенного протокола получения электронной почты – pop3s;• time;• chargen;• echo;• daytime;• imaps.Конфигурационный файл /etc/xinetd.d/pop3sДля запуска службы защищенного протокола получения электронной почты pop3s с использованиемxinetd создайте файл /etc/xinetd.d/pop3s, руководствуясь вашими потребностями и ниже приведенными рекомендациями:service pop3s{socket type= streamwait= nouser= rootserver= /usr/sbin/ipop3donly_from= 0.0.0.0/0no_access= 207.35.78.10instances= 30log_on_success+= DURATION HOSTlog on failure+= HOSTnice= -2disable= no}где строка:service pop3sопределяет название конфигурируемой службы.ЗАМЕЧАНИЕ Имя службы, заданное в этой строке, программа будет использовать для поиска служебной информации в файле /etc/services.
Если вы не знаете правильное и точное название необходимойслужбы, то определите его, просмотрев файл /etc/services.Строка:socket_type = streamопределяет тип сокета, используемого с соответствующей службой. Опция может использоваться с параметрами stream, dgram, raw, rdm или seqpacket.В строке:wait = noесли значение параметра установлено "yes", служба запускается в режиме single-threaded, т. е. запускаетсяслужба и xinetd перестает обрабатывать запросы клиентов к ней. Если используется устанавливаемое поумолчанию значение "no", то xinetd запускает службу в режиме multi-threaded, т. е. запускает службу и продолжает обрабатывать запросы к ней.Строка:user = rootопределяет имя пользователя, запускающего службу.