LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В
..pdfГлава 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