Библиотека сайта 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 |