Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В

..pdf
Скачиваний:
95
Добавлен:
24.05.2014
Размер:
3.66 Mб
Скачать

Глава 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=60 log_type=SYSLOG authpriv log_on_success= HOST PID log_on_failure= HOST only_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

= stream

wait

= no

user

= root

server

= /usr/sbin/ipop3d

only_from

= 0.0.0.0/0

no_access

= 207.35.78.10

instances

= 30

log_on_success

+= DURATION HOST

log on failure

+= HOST

nice

= -2

disable

= 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

определяет имя пользователя, запускающего службу. В рассматриваемом примере это пользователь root. В некоторых случаях могут быть и другие пользователи, поэтому желательно проверить для всех служб, возможен ли их запуск пользователями с меньшими привилегиями.

Строка:

server = /usr/sbin/ipop3d

определяет путь к исполняемому файлу запускаемой службы. Строка:

only_from = 0.0.0.0/0

определяет IP-адреса систем, с которых разрешен доступ к службе pop3s на вашем сервере.

264

Часть 4. Программное обеспечение для ограничения доступа к серверу...

ЗАМЕЧАНИЕ Вспомните, что в файле /etc/xinetd.conf вы запретили доступ ко всем службам, запущенным с использованием xinetd со всех IP-адресов. Строка:

only_from = 0.0.0.0/0

переопределяет это правило только для службы pop3s, разрешая доступ к нему с любого IP-адреса. Вы так же можете использовать другие (более жесткие) параметры, ограничивающие диапазон IP-адресов, с которых возможно обращение клиентов к службе доставки электронной почты.

Строка:

no_access = 212.24.38.75

определяет IP-адреса удаленных систем, доступ с которых к службе запрещен. В данном случае определен один компьютер с IP-адресом 212.24.38.75.

Строка:

instance = 30

определяет число запросов, которое может обработать служба. Значение параметра "30", установленное в рассматриваемом примере, переопределяет значение "40", установленное в файле /etc/initd.conf для всех служб. Т. е. служба pop3s сможет обслуживать до 30 клиентских соединений одновременно.

Строка:

log_on_success += DURATION HOST

определяет дополнительные (в дополнение к тем, что были установлены в строке log_on_success в файле /etc/initd.conf) параметры, регистрируемые при успешном обращении к службе, запущенной с использованием xinetd. Это достигается использованием символов "+=".

Строка:

log on_failure += HOST

определяет дополнительные параметры, регистрируемые при неудачном обращении к службе. Строка:

nice = -2

определяет приоритет выполнения процесса. Минимальное значение параметра составляет "-20" (самый высокий приоритет), максимальное задается числом "19" (самый низкий приоритет). Более подробная информация об использовании этой опции может быть получена из руководства по команде nice:

[root@drwalbr /]# man 1 nice

Строка:

disable = no

определяет, разрешен запуск службы или нет. В рассматриваемом примере значение "no" снимает блокировку и разрешает запуск службы.

Конфигурационный файл /etc/xinet.d.d/time

Для запуска службы time создайте файл /etc/xinetd.d/time, руководствуясь приведенными ниже рекомендациями и вашими потребностями:

service time

 

{

 

socket type

= stream

wait

= no

user

= root

type

= INTERNAL

id

= time-stream

protocol

= tcp

only_from

= 192.168.1.0/24

disable

= no

}

 

service time-udp

 

{

 

socket type

= dgram

wait

= yes

user

= root

type

= INTERNAL

id

= time-dgram

protocol

= udp

only_from

= 192.168.1.0/24

port

= 37

disable

= no

}

 

Глава 21. xinetd – программное обеспечение для запуска обычных программ в режиме сервера

265

где строки:

socket type = stream и socket type = dgram

определяют, соответственно, тип сокета для соединений по протоколу TCP и UDP. Строки:

wait = no и wait = yes

определяют режим запуска службы. Если значение параметра установлено "yes", служба запускается в режиме single-threaded. Если используется устанавливаемое по умолчанию значение "no", то xinetd запускает службу в режиме multi-threaded.

Строка:

type = INTERNAL

определяет тип службы. Опция type может использоваться со следующими параметрами:

RPC – служба RPC (Remote Procedure Call);

INTERNAL – служба, поддерживаемая xinetd;

UNLISTED – служба, не перечисленная в файлах /etc/rpc и /etc/services.

Строки:

id = time-stream и id = time-dgram

используются для переопределения названия служб. В рассматриваемом примере используются различные названия для одной и той же службы, работающей с различными протоколами, соответственно, TCP и UDP.

Строки:

protocol = tcp и protocol = udp

определяют тип протокола, используемый службой. В рассматриваемом примере используются протоколы

TCP и UDP.

Строка:

port = 37

определяет номер порта, который прослушивается сервером.

Конфигурационный файл /etc/xinetd.d/chargen

Для запуска службы chargen создайте файл /etc/xinetd.d/chargen, руководствуясь приведенными ниже рекомендациями и вашими потребностями:

service chargen

 

{

 

socket_type

= stream

wait

= no

user

= root

type

= INTERNAL

id

= chargen-stream

protocol

= tcp

only from

= 192.168.1.0/24

noaccess

= 212.24.38.75

disable

= yes

}

 

service chargen-udp

 

{

 

socket_type

= dgram

wait

= yes

user

= root

type

= INTERNAL

id

= chargen-dgram

protocol

= udp

only from

= 192.168.1.0/24

no access

= 212.24.38.75

port

= 19

disable

= yes

}

 

Назначение всех строк, используемых в этом примере конфигурационного файла, аналогично приведенным выше.

266 Часть 4. Программное обеспечение для ограничения доступа к серверу...

Конфигурационный файл /etc/xinetd.d/echo

Для запуска службы echo

создайте файл /etc/xinetd.d/echo, руководствуясь приведенными

ниже рекомендациями и вашими потребностями:

service echo

 

{

 

socket_type

= stream

wait

= no

user

= root

type

= INTERNAL

id

= echo-stream

protocol

= tcp

only from

= 192.168.1.0/24

noaccess

= 212.24.38.75

disable

= yes

}

 

service echo-udp

 

{

 

socket_type

= dgram

wait

= yes

user

= root

type

= INTERNAL

id

= echo-dgram

protocol

= udp

only from

= 192.168.1.0/24

no access

= 212.24.38.75

port

= 7

disable

= yes

}

 

Назначение всех строк, используемых в этом примере конфигурационного файла, аналогично приведенным выше.

Конфигурационный файл /etc/xinetd.d/daytime

Для запуска службы daytime создайте файл /etc/xinetd.d/daytime, руководствуясь приведенными ниже рекомендациями и вашими потребностями:

service daytime

 

{

 

socket_type

= stream

wait

= no

user

= root

type

= INTERNAL

id

= daytime-stream

protocol

= tcp

only from

= 192.168.1.0/24

noaccess

= 212.24.38.75

disable

= yes

}

 

service daytime-udp

 

{

 

socket_type

= dgram

wait

= yes

user

= root

type

= INTERNAL

id

= echo-dgram

protocol

= udp

only from

= 192.168.1.0/24

no access

= 212.24.38.75

port

= 13

disable

= yes

}

 

Глава 21. xinetd – программное обеспечение для запуска обычных программ в режиме сервера

267

Назначение всех строк, используемых в этом примере конфигурационного файла, аналогично приведенным выше.

Конфигурационный файл /etc/xinetd.d/imaps

Для запуска службы imaps создайте файл /etc/xinetd.d/imaps, руководствуясь приведенными ниже рекомендациями и вашими потребностями:

service imaps

 

 

{

 

 

socket_type

=

stream

wait

=

no

user

=

root

server

=

/usr/sbin/imapd

only_from

=

0.0.0.0/0

no_access

=

212.24.38.75

instances

=

30

log_on_success

+= DURATION HOST

log on failure

+= HOST

nice

=

-2

redirect

=

172.16.181.105 993

bind

=

212.45.28.122

disable

=

yes

}

 

 

где строка:

 

 

redirect = 172.16.181.105

993

переадресовывает запросы к службе, якобы работающей на 993 порту сетевого интерфейса 212.24.38.75, на 993 порт сетевого интерфейса другой системы с IP-адресом 172.16.181.105.

Строка:

bind = 212.45.28.122

определяет IP-адрес сетевого интерфейса, прослушиваемого службой imaps. Назначение остальных строк, используемых в этом примере конфигурационного файла, рассмотрено выше.

Файл инициализации /etc/init.d/xinetd

Если вы хотите, что бы xinetd запускался автоматически при загрузке системы, необходимо выполнить следующие операции.

Шаг 1

Создайте файл /etc/init.d/xinetd, содержащий следующие строки:

#!/bin/bash

#This shell script takes care of starting and stopping Xinetd.

#chkconfig: 345 56 50

#description: Xinetd is a powerful replacement for inetd. It has access

\

#

control machanisms,

extensive logging capabilities, the \

#

ability to make services available based on time, and can

\

 

 

#

place limits on the

number of servers that can be

started, \

 

 

#

among other things.

 

#

 

 

#processname: /usr/sbin/xinetd

#config: /etc/sysconfig/network

#config: /etc/xinetd.conf

#pidfile: /var/run/xinetd.pid

prog="Xinetd"

PATH=/sbin:/bin:/usr/bin:/usr/sbin

# Source function library.

268

Часть 4. Программное обеспечение для ограничения доступа к серверу...

. /etc/init.d/functions

 

# Get config.

 

test -f

/etc/sysconfig/network && . /etc/sysconfig/network

test -f

/etc/sysconfig/xinetd && . /etc/sysconfig/xinetd

# Check

that networking

is up.

[ ${NETWORKING} = "yes"

] || exit 0

[ -f /usr/sbin/xinetd ] || exit 1 [ -f /etc/xinetd.conf ] || exit 1

RETVAL=0

start() {

echo -n $"Starting $prog: " LANG=en_US

LC_TIME=en_US

LC_ALL=en_US LC_MESSAGES=en_US LC_NUMERIC=en_US LC_MONETARY=en_US LC_COLLATE=en_US

export LANG LC_TIME LC_ALL LC_MESSAGES LC_NUMERIC LC_MONETARY LC_COLLATE

unset HOME MAIL USER USERNAME

daemon xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid "$EXTRAOPTIONS"

RETVAL=$? echo

touch /var/lock/subsys/xinetd return $RETVAL

}

stop() {

echo -n $"Stopping $prog: " killproc xinetd

RETVAL=$? echo

rm -f /var/lock/subsys/xinetd return $RETVAL

}

reload() {

echo -n $"Reloading configuration: " killproc xinetd -USR2

RETVAL=$? echo

return $RETVAL

}

restart() { stop start

}

condrestart() {

[ -e /var/lock/subsys/xinetd ] && restart return 0

}

Глава 21. xinetd – программное обеспечение для запуска обычных программ в режиме сервера

269

# See how we were called. case "$1" in

start) start

;;

stop) stop

;;

restart) restart

;;

reload) reload

;;

condrestart) condrestart

;;

*)

echo $"Usage: $0 {start|stop|restart|condrestart|reload}" RETVAL=1

esac

exit $RETVAL

Шаг 2

Сделайте файл исполняемой программой и определите его владельцем пользователя root:

[root@drwalbr /]# chmod 700 /etc/init.d/xinetd [root@drwalbr /]# chown 0.0 /etc/init.d/xinetd

Шаг 3

Если вы хотите, чтобы программа xinetd автоматически запускалась при загрузке системы, создайте соответствующие ссылки:

[root@drwalbr /]# chkconfig --add xinetd [root@drwalbr /]# chkconfig --level 345 xinetd on

Шаг 4

Для запуска xinetd используйте команду:

[root@drwalbr /]# /etc/init.d/xinetd start

Starting Xinetd:

[OK]

270

Часть 4. Программное обеспечение для ограничения доступа к серверу...

Глава 22

NTP – программное обеспечение для синхронизации времени

В этой главе:

1. Ограничения и допущения

2.Пакеты

3.Инсталляция с помощью rpm-пакетов

4.Компиляция, оптимизация и инсталляция NTP

5.Конфигурирование NTP

6.Конфигурационный файл /etc/ntp.conf для сервера

7.Конфигурационный файл /etc/ntp.conf для клиента

8.Конфигурационный файл /etc/ntp.drift

9.Конфигурационный файл /etc/ntp.drift

10.Файл инициализации /etc/init.d/ntpd

11. Тестирование NTP

12. Выполнение NTP в среде chroot-jail

Соседние файлы в предмете Информатика