Wrapper linux что это

Wrapper linux что это

Многие системные администраторы UNIX знакомы с использованием библиотеки TCP для управления доступа к определённым сетевым службам. Все сетевые службы, управляемые демоном xinetd (а также любые программы со встроенной поддержкой libwrap) могут использовать библиотеку TCP для управления доступом. xinetd может использовать файлы /etc/hosts.allow и /etc/hosts.deny для настройки доступа к системным службам. Как и следует из имени файла, hosts.allow (разрешить узлам) содержит список правил для клиентов, имеющих доступ к сетевым службам, управляемым xinetd , а hosts.deny (запретить узлам) содержит правила, запрещающие доступ. Файл hosts.allow имеет преимущество перед файлом hosts.deny . Правила разрешения или запрета доступа могут определяться для отдельного IP адреса (или имени узла) или для нескольких клиентов сразу. За дополнительной информацией обратитесь к Официальному справочному руководству по Red Hat Linux и странице руководства man hosts_access .

Для управления доступом к службам Интернет используется демон xinetd , который является безопасной заменой для inetd . Демон xinetd экономит системные ресурсы, обеспечивает управление доступом и протоколирование, а также может использоваться для запуска серверов специального назначения. xinetd можно использовать для предоставления доступа или запрета доступа только определённым узлам, для предоставления доступа к службе в определённое время, для ограничения количества входящих подключений и/или нагрузки, создаваемой подключениями и т.д.

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

Источник

Записки Джоя: TCP Wrappers в Red Hat Enterprise Linux

Введение

В области информационных технологий безопасность ни в коей мере не является результатом «одного-единственного решения»; другими словами, панацеи для защиты ваших систем не существует. Лучшие схемы защиты являются результатом совместной работы различных приложений и методов, таких как фильтрация пакетов с помощью iptables, принудительный контроль доступа (Mandatory Access Control, MAC) наподобие SELinux, разграничительный контроль доступа (Discretionary Access Control, DAC), реализуемый в виде системных прав и разрешений. Наконец, не сбрасывайте со счётов использование TCP Wrappers [Дословно — «TCP-обёртки». Устоявшегося перевода этого термина не существует, поэтому в дальнейшем, во избежание неоднозначности, будет использоваться оригинальный термин как более понятный большинству читателей. — прим.перев.], которые хорошо дополнят ваши правила файрволла.

[Гуру в области безопасности Брюс Шнайер (Bruce Schneier) часто указывает, что «безопасность — это не продукт, а процесс». Важнейшая составляющая безопасности даже не связана с инструментами, которые вы используете; это осознание необходимости постоянно быть в курсе происходящего и держать всё под контролем. Инструменты — это то, о чём нужно думать в последнюю очередь. — прим.ред.]

Описание

TCP Wrappers работают аналогично спискам доступа (Access Control List, ACL) на основе имён хостов. Их используют для фильтрации сетевого доступа к серверам, работающим по Интернет-протоколу (IP) на системах Linux, Unix или BSD. Они позволяют использовать имя хоста или сетевые адреса как критерии фильтрации, реализуя некоторый уровень управления доступом. Они ещё больше расширяют возможность демонов, работающих под управлением xinetd. При использовании этой техники все попытки доступа могут быть записаны в лог, ограничены, а клиенту отправлены соответствующие сообщения. Это может добавить ещё один уровень безопасности вашему окружению. TCP Wrappers, ко всему прочему, можно перенастраивать в режиме реального времени без перезагрузки сервисов, которые они защищают.

Преимущества

Соединения, которые разрешены, просто принимаются; те, которые запрещены — отклоняются. Некоторые сервисы смогут отправлять определённое сообщение об ошибке, как это делают SSH и vsftpd. Ниже приводится пример использования TCP Wrappers для защиты сервисов.

Читайте также:  Как перенести контакты windows live mail

Вот как выглядит с точки зрения клиента запрет на использование SSH:

Пример запрета FTP:

Как работают TCP Wrappers

Когда клиент пытается соединиться с сервисом, использующим TCP Wrappers, происходит следующее (эти шаги важно знать, поскольку порядок обращения к файлам имеет огромное значение и правила обрабатываются построчно):

  1. Проверяется файл /etc/hosts.allow. Если в нём найдено соответствие, доступ к сервису предоставляется.
  2. Проверяется файл /etc/hosts.deny. Если в нём найдено соответствие, доступ будет запрещён.
  3. В случае, если соответствующие правила не найдены, доступ предоставляется.

[Каждое правило может содержать действие ‘allow’ или ‘deny’ непосредственно в себе; в этом случае имя файла, в котором оно расположено, значения не имеет. В системах FreeBSD файл /etc/hosts.deny вообще не обрабатывается, и все правила должны быть размещены в /etc/hosts.allow с обязательным указанием действия. — прим.перев.]

Чтобы определить, какие процессы и демоны используют TCP Wrappers, выполните следующую команду:

Ниже приводится пример вывода этой команды:

Применение TCP Wrappers

Используя TCP Wrappers, всегда помните о следующих вещах. Во-первых, о порядке поиска соответствий. Во-вторых, о том, что поиск останавливается по первому совпадению. Любые изменения в /etc/hosts.allow или /etc/hosts.deny вступают в силу немедленно, без необходимости перезапускать какие-либо сервисы. Как и в случае с iptables, порядок правил играет решающую роль. Давайте рассмотрим команды, формирующие правила. Основной формат команд, используемых в /etc/hosts.allow и /etc/hosts.deny, следующий:

Здесь daemon_list — список из одного или более имён процессов или служебное слово (о них — далее); client_list — список из одного или более имён хостов, IP-адресов, шаблонов или служебных слов, на соответствие которым будет проверяться имя хоста или адрес клиента.

Пример правил /etc/hosts.allow и /etc/hosts.deny:

Обратите внимание на результат работы этих правил:

Подключение с station14.example.com (192.168.0.14)

Подключение с alien.example.com (192.168.0.247)

Служебные слова

(ПРЕДУПРЕЖДЕНИЕ: Всегда завершайте файлы /etc/hosts.allow и /etc/hosts.deny пустой строкой! Просто установите курсор в конец последней строки и введите символ возврата каретки (клавишей ). При невыполнении этого шага вы можете столкнуться с непредсказуемым поведением TCP Wrappers.)

Ниже приводится несколько примеров правил. Выполняемое ими действие определяется тем, в какой из файлов вы их поместите, при условии, что отсутствует явное указание на действие ‘allow’ или ‘deny’ в конце правила.

Использование Twist

Использование Spawn

Директива ‘spawn’ приводит к запуску дочернего процесса. Она может оказаться полезной для создания особых лог-файлов, отслеживающих доступ к сервису. Кроме того, с помощью этой директивы вы можете запускать собственные скрипты в фоновом режиме, незаметно для пользователя. В примере ниже мы записываем метку времени в лог-файл, так что мы сможем отслеживать FTP-соединения:

При этом в файлах /etc/hosts.allow и /etc/hosts.deny вы можете использовать следующие символы-заменители:

%a Адрес клиента
%A Адрес сервера
%c Информация о клиенте: user@host, user@address, имя хоста или просто адрес
%d Имя демона/процесса
%h Имя хоста клиента или адрес, если имя хоста недоступно
%H Имя хоста сервера или адрес, если имя хоста недоступно
%n Имя хоста клиента (либо ‘unknown’ или ‘paranoid’)
%N Имя хоста сервера (либо ‘unknown’ или ‘paranoid’
%p Идентификатор процесса (PID)
%s Информация о сервере: daemon@host, daemon@address или просто имя демона
%u Имя пользователя клиента (или ‘unknown’)
%% Одиночный символ ‘%’

(После подстановки символы, которые могут быть неверно восприняты командной оболочкой, заменяются символами подчёркивания.)

Заключение

TCP Wrappers отлично дополнят ваши нынешние инструменты безопасности. Но запомните, что всегда необходимо тщательно проверять любую реализацию защиты, прежде чем переносить её на работающие серверы!

Ссылки

Об авторе

Джой родился в Фениксе, и в 14 лет начал программировать на Timex Sinclair 1000. Им двигала надежда, что он сможет делать что-нибудь на этом «динозавре». Вскоре он стал искусно программировать на Бейсике и Ассемблере. В 1990 году Джой начал работать программистом, добавив к своему арсеналу Кобол, Фортран и Паскаль. С тех пор им овладела страсть ко всем областям информатики. В 2002 году он принялся за изучение RedHat Linux, после того как кто-то дал ему RedHat шестой версии. Это положило начало его новому увлечению — Linux. В настоящее время Джой завершает обучение по специальности «Сети Linux» и работает в «RedHat Academy» Аризонского колледжа. Также он является сотрудником Linux Gazette.

Читайте также:  Разработка консольных приложений для windows

Источник

Системные сервисы и tcp_wrappers

Как только вы подключаете вашу Linux систему к ЛЮБОЙ сети, вам сразу же нужно решить, какие сервисы предоставлять. Сервисы, которые вы не будете предоставлять, должны быть выключены, чтобы у вас было меньше вещей, о которых вам нужно беспокоиться, и взломщику будет меньше мест для выискивания дыр.

Существует много способов выключить сервисы в Linux. Вы можете посмотреть в файле /etc/inetd.conf, какие сервисы у вас предоставляются через inetd. Чтобы выключить все, что вам ненужно, просто закоментируйте соответствующие строчки, а затем пошлите вашему inetd SIGHUP (прим. перев. killall -HUP inetd).

Вы также можете удалить (или закомментрировать) соответствующие сервисы в файле /etc/services. Это означает, что локальный клиент также не сможет использовать эти сервисы (например, если вы удалите ftp, а затем попробуете сделать ftp связь с этой машины на удаленный компьютер, вы получите ошибку типа «неизвестный сервис»). Обычно не стоит удалять сервисы, если это не приносит дополнительного повышения уровня безопасности. Если локальный пользователь хочет использовать ftp в том случае, когда вы его уже закомментировали, он может создать своего собственного клиента, который будет использовать общий ftp порт и отлично работать.

Вот некоторые из сервисов, которые вам нужно оставить включенными:

mail, такие как pop-3 или imap

Если вы знаете, что вы не собираетесь использовать какие-то пакеты, лучше их полностью удалить. В дистрибутиве RedHat полностью удаляет пакет команда rpm -e. В Debian подобные вещи делает dpkg.

Дополнительно вам действительно лучше в файле /etc/inetd.conf выключить rsh/rlogin/rcp, включая login (используется rlogin), shell (используется rcp) и exec (используется rsh). Эти протоколы чрезвычайно небезопасны и часто были в прошлом причиной взломов.

Вы должны также проверить ваши /etc/rc.d/rcN.d, где N стартовые уровни вашей системы, на предмет наличия сервисов в этих каталогах, которые вам не нужны. Файлы в /etc/rc.d/rcN.d фактически являются символьными ссылками на файлы в каталоге /etc/rc.d/init.d. Переименование файлов в каталоге init.d выключит все символьные ссылки в /etc/rc.d/rcN.d. Если вы хотите выключить сервис только в определенном стартовом уровне, то переименуйте соответствующий файл, чтобы он начинался с маленькой буквы «s»?, а не с большой как надо (скажем S45dhcpd).

Если у вас rc файлы в стиле BSD, вам нужно проверить /etc/rc* для обнаружения ненужных программ.

Большинство дистрибутивов Linux поставляется с tcp_wrapper, которые «заворачивают» все ваши tcp сервисы. tcp_wrapper (tcpd) вызывается из inetd, а не является отдельным сервером. tcpd затем проверяет компьютер, который запрашивает сервис, и либо запускает реальный сервер либо запрещает доступ от этого компьютера. tcpd позволяет вам ограничить доступ к вашим tcp сервисам. Вы можете создать /etc/hosts.allow и добавить в него только те машины, которым нужно иметь доступ к сервисам на вашем компьютере.

Если вы являетесь домашним пользователем с коммутируемым доступом, то мы рекомендуем вам запретить доступ всем (deny ALL). tcpd также протоколирует все неудачные попытки доступа к сервисам, так что это позволят отследить возможные атаки. Если вы добавляете новые сервисы, вы обязательно должны сконфигурировать их, чтобы использовать основываясь на tcp_wrappers. Например, обыкновенный dial-up пользователь может запретить доступ к своему компьютеру извне, и в то же время иметь возможность забирать почту и путешествовать в интернете. Чтобы это сделать, вам нужно добавить к файлу /etc/hosts.allow:

Читайте также:  Windows для макбука pro

И конечно же /etc/hosts.deny должен содержать:

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

Источник

Брандмауэр уровня приложений — tcpwrappers

TCP Wrappers – изначально набор вспомогательных программ ‘запускалок’ (tcpd, miscd и вспомогательные программы), для контроля за IP адресами клиентов, стартующих сетевые сервисы через inetd. Основная функция, управляющая проверкой правил, hosts_access(request) была в последующем выделена в отдельную библиотеку libwrap . В настоящее время эту библиотеку используют самые разнообразные сервисы, такие как xinetd, sshd, rsyncs и т.п. Полный список программ, использующих TCP Wrappers, можно получить, выполнив следующую команду:

Функция hosts_access использует два конфигурационных файла /etc/hosts.allow и /etc/hosts.deny (в FreeBSD только /etc/hosts.allow ), которые могут иметь классический или расширенный синтаксис.

Классический вариант

В классическом варианте вначале проверяются все правила из hosts.allow . Если хоть одно правило применимо к паре сервис-клиент, то соединение устанавливается. Затем проверяются все правила из hosts.deny . При нахождении соответствия соединение отклоняется. Если правила нет, то соединение устанавливается. Чтобы явно разрешить доступ только по правилам из hosts.allow , необходимо добавить в hosts.deny правило ALL:ALL .

Классический синтаксис описан в man странице HOSTS_ACCESS(5). Файлы состоят из строк вида

  • daemon_list – список имён сервисов (в xinetd имена прописываются явно в конфигурации службы, для остальных программ они совпадают с именем исполняемого файла) или ключевое слово ALL;
  • client_list – список имён/адресов клиентов;
  • shell_command – вспомогательная команда, например, для логирования событий. В современном варианте это поле имеет другой формат.

Современный вариант

Файлы /etc/hosts.allow и /etc/hosts.deny эквивалентны по своему назначению. Каждое правило может содержать результат – allow или deny. Если в правиле результат не прописан явно, то он вычисляется по правилу классического варианта. Можно считать, что все правила находятся hosts.allow , а hosts.deny остается пустым. Выполняется первое найденное правило.

Синтаксис правил описан в man странице HOSTS_OPTIONS(5). Файлы состоят из строк вида

daemon_list, client_list полностью совместимы с классическим синтаксисом, а опции позволяют понизить привилегии, запустить дополнительную программу параллельно с сервисом или вместо него, и, наконец, принять решение allow или deny. Опции выполняются слева направо. Опция allow / deny должна стоять последней, поскольку после неё произойдёт запуск сервиса или прекращение работы.

Для запуска дополнительных программ используются две опции: spawn shell_command – запуск программы в параллельном процессе одновременно с сетевым сервисом, и twist shell_command – запуск программы в текущем процессе вместо сервиса. Командам в качестве параметров можно передать некоторую информацию о соединении. spawn не влияет на запуск основного сервиса, поэтому за ней должна следовать опция allow или deny. twist затирает текущий процесс и, соответственно, дальнейшие проверки опций. Однако, через параметры в twist можно передать имя исполняемого файла сервиса, чтобы выполнить его после дополнительных проверок.

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

В конце списка правил можно добавить правило по умолчанию ALL:ALL:deny , иначе подразумевается наличие ALL:ALL:allow .

Формат списка client_list

Список состоит из полей, разделённых пробелами и/или запятыми. Список может состоять из основной части и исключений, следующих за ключевым словом EXCEPT. Возможна группировка списков и исключений с помощью круглых скобок. В списке могут присутствовать IP адреса, имена хостов, ключевые слова и шаблоны.

Ключевые слова (часть опущена):

  • ALL – все хосты
  • PARANOID – хосты, у которых цепочка преобразований IP->Имя->IP даёт адрес, отличный от исходного.

Источник

Оцените статью