Администрирование систем 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 и попытайтесь проверить ее работоспособность, установив соединение с соответствующим портом.
http://rus-linux.net/MyLDP/BOOKS/LSA/ch27.html
|