Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Администрирование систем Linux. Краткая информация о сетевых службах

Оригинал: Introduction to networking
Автор: Paul Cobbaut
Дата публикации: 12 марта 2015 г.
Перевод: A. Панин
Дата перевода: 2 апреля 2015 г.

Глава 27. Краткая информация о сетевых службах

27.1. Краткая информация о межсетевом экране iptables

27.1.1. Межсетевой экран iptables

В состав ядра Linux включен межсетевой экран с сохранением состояний, носящий имя iptables. Для остановки межсетевого экрана iptables в дистрибутиве Red Hat следует использовать утилиту service.

root@RHELv4u4:~# service iptables stop
Flushing firewall rules:                                   [ OK ]
Setting chains to policy ACCEPT: filter                    [ OK ]
Unloading iptables modules:                                [ OK ]
root@RHELv4u4:~# 

Простейший способ настройки межсетевого экрана iptables заключается в использовании инструмента с графическим интерфейсом, такого, как утилита kmyfirewall из состава окружения рабочего стола KDE или утилита Security Level Configuration Tool. Последнюю утилиту вы можете найти в меню приложений окружения рабочего стола в разделе "Системные утилиты - Безопасность" или запустить вручную, выполнив команду system-config-securitylevel в командной оболочке bash. Упомянутые инструменты позволяют осуществлять элементарную настройку межсетевого экрана. У вас имеется возможность принятия решения о том, следует ли активировать межсетевой экран, а также о том, какие стандартные порты должны быть открыты при активации межсетевого экрана. Вы можете даже добавить некоторые нестандартные порты. После того, как вы завершите настройку межсетевого экрана, в дистрибутиве Red Hat соответствующие правила будут записаны в файл конфигурации межсетевого экрана /etc/sysconfig/iptables.

root@RHELv4u4:~# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-F...NPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-F...NPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-F...NPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-F...NPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
root@RHELv4u4:~#

Для запуска службы межсетевого экрана следует выполнить команду service iptables start. С помощью утилиты chkconfig вы можете изменить настройки системы для запуска межсетевого экрана iptables в процессе загрузки системы.

root@RHELv4u4:~# service iptables start
Applying iptables firewall rules:                          [ OK ]
root@RHELv4u4:~# chkconfig iptables on
root@RHELv4u4:~# 

Одной из наиболее полезных возможностей межсетевого экрана iptables является возможность вывода подробной информации о состоянии межсетевого экрана в случае запроса этой информации с помощью команды service iptables status.

root@RHELv4u4:~# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
target     prot opt source               destination 
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination 
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

Chain RH-Firewall-1-INPUT (2 references)
target  prot opt source      destination 
ACCEPT  all  --  0.0.0.0/0   0.0.0.0/0 
ACCEPT  icmp --  0.0.0.0/0   0.0.0.0/0   icmp type 255 
ACCEPT  esp  --  0.0.0.0/0   0.0.0.0/0 
ACCEPT  ah   --  0.0.0.0/0   0.0.0.0/0 
ACCEPT  udp  --  0.0.0.0/0   224.0.0.251 udp dpt:5353 
ACCEPT  udp  --  0.0.0.0/0   0.0.0.0/0   udp dpt:631 
ACCEPT  all  --  0.0.0.0/0   0.0.0.0/0   state RELATED,ESTABLISHED 
ACCEPT  tcp  --  0.0.0.0/0   0.0.0.0/0   state NEW tcp dpt:22 
ACCEPT  tcp  --  0.0.0.0/0   0.0.0.0/0   state NEW tcp dpt:80 
ACCEPT  tcp  --  0.0.0.0/0   0.0.0.0/0   state NEW tcp dpt:21 
ACCEPT  tcp  --  0.0.0.0/0   0.0.0.0/0   state NEW tcp dpt:25 
REJECT  all  --  0.0.0.0/0   0.0.0.0/0   reject-with icmp-host-prohibited 

root@RHELv4u4:~# 

Для создания с нуля правил межсетевого экрана необходимо понимать принципы функционирования стека протоколов TCP/IP. Отличные руководства по написанию правил межсетевого экрана iptables могут быть найдены в сети по ссылкам: http://iptables-tutorial.frozentux.net/iptables-tutorial.html и http://tldp.org/HOWTO/IP-Masquerade-HOWTO/.

27.2. Практическое задание: межсетевой экран iptables

1. Проверьте, выполняется ли служба межсетевого экрана в вашей системе.

2. Остановите службу межсетевого экрана.

27.3. Корректная процедура выполнения практического задания: межсетевой экран iptables

1. Проверьте, выполняется ли служба межсетевого экрана в вашей системе.

root@rhel55 ~# service iptables status | head
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination 
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination 
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0 

Chain OUTPUT (policy ACCEPT)

2. Остановите службу межсетевого экрана.

root@rhel55 ~# service iptables stop
Flushing firewall rules:                                   [ OK ]
Setting chains to policy ACCEPT: filter                    [ OK ]
Unloading iptables modules:                                [ OK ]
root@rhel55 ~# service iptables status
Firewall is stopped.

27.4. Супердемоны xinetd и inetd

27.4.1. Информация о супердемонах

В прошлом, когда объем оперативной памяти компьютеров был строго ограничен, был разработан суперсервер, предназначенный для прослушивания всех сокетов с заданными номерами портов и запуска соответствующего демона при необходимости. Такие службы, как swat, telnet и ftp обычно обслуживаются подобным суперсервером. Супердемон xinetd является более современной реализацией супердемона inetd. Мы будем обсуждать вопросы настройки обоих упомянутых супердемонов.

Даже в не очень современных дистрибутивах, таких, как RHEL5 и Ubuntu 10.04, супердемоны inetd или xinetd не активируются по умолчанию до того момента, когда какое-либо из приложений явным образом потребует их активации.

27.4.2. Какой из супердемонов используется: inetd или xinetd?

В первую очередь следует установить, используется ли в вашей системе супердемон inetd или супердемон xinetd. В данном дистрибутиве Debian 4.0 Etch используется супердемон inetd.

root@barry:~# ps fax | grep inet
 3870 ?        Ss     0:00 /usr/sbin/inetd

А в данном дистрибутиве Red Hat Enterprise Linux 4 с обновлением 4 используется супердемон xinetd.

[root@RHEL4b ~]# ps fax | grep inet
 3003 ?        Ss     0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid

Оба демона имеют идентичный набор функций (прослушивание множества портов, запуск сторонних демонов при необходимости), но они используют отличные файлы конфигурации.

27.4.3. Супердемон xinetd

Демон xinetd обычно называется супердемоном, так как он осуществляет прием множества входящих соединений и запускает сторонние демоны по мере необходимости. При приеме запроса на соединение демон xinetd будет в первую очередь проверять файлы со списками доступа к службам по протоколу TCP (TCP wrappers) (/etc/hosts.allow и /etc/hosts.deny), после чего передаст управление соединением стороннему демону. Данный супердемон настраивается с помощью основного файла конфигурации /etc/xinetd.conf, а также специальных файлов конфигурации из директории /etc/xinetd.d. Давайте рассмотрим содержимое основного файла конфигурации /etc/xinetd.conf.

paul@RHELv4u2:~$ cat /etc/xinetd.conf 
#
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/

defaults
{
instances               = 60
log_type                = SYSLOG authpriv
log_on_success          = HOST PID
log_on_failure          = HOST
cps                     = 25 30
}

includedir /etc/xinetd.d

paul@RHELv4u2:~$ 

В соответствии с значениями параметров из данного файла конфигурации, демон xinetd может обрабатывать 60 клиентских запросов одновременно. Он использует вспомогательный программный компонент authpriv для журналирования IP-адреса узла и идентификатора процесса успешно запущенного демона. Если служба (или протокол, связанный с демоном) получает более 25 запросов в секунду, он приостанавливает передачу последующих запросов на 30 секунд.

Директория /etc/xinetd.d содержит более специфичные конфигурационные файлы. Давайте также рассмотрим один из них.

paul@RHELv4u2:~$ ls /etc/xinetd.d
amanda     chargen-udp  echo      klogin       rexec   talk
amandaidx  cups-lpd     echo-udp  krb5-telnet  rlogin  telnet
amidxtape  daytime      eklogin   kshell       rsh     tftp
auth       daytime-udp  finger    ktalk        rsync   time
chargen    dbskkd-cdb   gssftp    ntalk        swat    time-udp
paul@RHELv4u2:~$ cat /etc/xinetd.d/swat 
# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \
#              to configure your Samba server. To use SWAT, \
#              connect to port 901 with your favorite web browser.
service swat
{
port            = 901
socket_type     = stream
wait            = no
only_from       = 127.0.0.1
user            = root
server          = /usr/sbin/swat
log_on_failure  += USERID
disable         = yes
}
paul@RHELv4u2:~$

Параметры служб должны быть приведены в файле /etc/services. Параметр port соответствует порту службы, причем его значение должно совпадать с соответствующим номером порта службы из файла /etc/services. Параметр socket_type должен иметь значение stream в случае служб, работающих с протоколом TCP (и значение dgram в случае служб, работающих с протоколом UDP). Параметр log_on_failure += позволяет добавлять идентификатор пользователя в запись журнала, формат которой описывается в файле конфигурации /etc/xinetd.conf. Значением последнего параметра disable может быть строка yes или no. Установка значения no приведет к активации службы!

Обратитесь к страницам руководств man xinetd и man xinetd.conf для ознакомления с другими параметрами конфигурации рассматриваемого супердемона.

27.4.4. Супердемон inetd

Данный супердемон использует всего один конфигурационный файл /etc/inetd.conf. Каждый протокол или демон, запросы к которому принимаются, описывается с помощью одной строки в данном файле.

root@barry:~# grep ftp /etc/inetd.conf 
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /boot/tftp
root@barry:~#

Вы можете деактивировать службу в рамках описанного выше файла конфигурации inetd.conf, добавив символ # в начале соответствующей строки. Ниже приведен пример деактивированного веб-интерфейса vmware (в данном случае принимались соединения на порту 902 по протоколу TCP).

paul@laika:~$ grep vmware /etc/inetd.conf 
#902 stream tcp nowait root /usr/sbin/vmware-authd vmware-authd

27.5. Практическое задание: супердемоны inetd и xinetd

1. Проверьте все находящиеся в вашем распоряжении системы и установите, используются ли в этих системах супердемон xinetd или супердемон inetd.

2. Изучите файлы конфигурации супердемонов.

3. (В том случае, если у вас имеется возможность установки пакета программного обеспечения telnet, замените все упоминания службы swat на telnet в следующих заданиях.) Установлены ли файлы, относящиеся к службе swat, в вашей системе? Если нет установите соответствующие пакеты программного обеспечения и обратите внимание на изменения, внесенные в файлы конфигурации супердемона (x)inetd. Активирована ли по умолчанию служба swat?

4. Деактивируйте службу swat и попытайтесь проверить ее работоспособность, установив соединение с соответствующим портом. Снова активируйте службу swat и попытайтесь проверить ее работоспособность, установив соединение с соответствующим портом.


Предыдущий раздел: Оглавление Следующий раздел:
Глава 26. Краткая информация о сетевой файловой системе   Глава 28. Ядро Linux