Хакер №024. Спецвыпуск
TCP WRAPPERS
плащ для админа
Спецвыпуск Xakep, номер #024, стр. 024-060-1
MеnderX (forother@fromru.com)
Пакет TCP Wrappers (wrappers - обертки) занимает 25-ое место (из 50) в рейтинге полезных админу (не буду скрывать, иногда и хакеру =) утилит, проводимом Insecure.org. Это место находится не так далеко от 18-ого, оккупированного iptables/netfilter/ipchains/ipfwadm. Что же это за обертки? Чем они полезны админу? Я постараюсь ответить на эти и многие другие вопросы, касающиеся TCP Wrappers, в рамках одной статьи.
ШО ЗА ФАНТИКИ?
Пакет этих оберток обеспечивает контроль доступа к системе (или сети). Также он логирует все коннекты к сервисам. Чтобы ты лучше понял механизм работы, я объясню на двух примерах: когда этот пакет установлен в системе и, соответственно, когда не установлен.
При старте системы запускается демон inetd/xinetd и ищет в файле /etc/inetd.conf или каталоге /etc/xinetd.d записи разрешенных сервисов. И когда он получает запрос от, например, клиента telnet, то запускает экземпляр другого демона - telnetd. Сам посуди, проще запускать демон telnetd тогда, когда он действительно нужен (то есть когда к нему уже обратились), чем постоянно поддерживать кучу служб! Но эти сервисы (сервисы, демоны, службы - одно и то же) по умолчанию не используют контроль доступа к системе, а сие не есть гуд.
Теперь посмотрим, что будет, если в системе установлен пакет TCP Wrappers. После получения запроса от клиента tcpd (это и есть обертка) перехватывает запрос и обрабатывает его (сверяет с установленными правилами), после этого он может или разрешить коннект (передать его нужному сервису, например, telnetd) или отказать в нем. Также он логирует все соединения, отправляя их демону syslogd (глянь - /etc/syslog.conf).
Рассмотрим структуру /etc/inetd.conf (если перед сервисом стоит #, значит - он закомментирован, т.е. запрещен, советую тебе оставить только самые нужные службы). Пример записи, когда пакет TCP Wrappers отсутствует в системе:
А теперь, когда присутствует:
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
Здесь демон /usr/sbin/tcpd обертывает демон telnetd.
Если у тебя в системе отсутствует файл /etc/inetd.conf, то, скорее всего, используется xinetd. Это усовершенствованный демон Инета, так что топай в /etc/xinetd.conf. Если там присутствует строка «includedir /etc/xinetd.d», то демон xinetd читает содержимое этого каталога и использует его как настроечный. В таком каталоге каждый файл содержит инфу об одной службе - чтобы запретить службу, достаточно удалить файл (или добавить в него строку «disable=yes»). На первом скрине виден конфигурационный файл службы телнет без использования фантиков, на втором - с использованием оных. Тоже очень хорошо видно, как tcpd обертывает telnetd.
Не лишним будет сказать, что xinetd имеет свои собственные функции ограничения доступа. Для ограничения добавь строку only_from = <доверенный хост> или no_access = <хост твоего врага> в файл настроек демона.
Теорией я тебя уже достаточно загрузил, пора переходить к практике, т.е. к настройке.
ИСПОЛЬЗОВАНИЕ
Скачать пакет TCP Wrappers (автор - Виетс Венема) ты можешь с этого фтп - ftp://ftp.porcupine.org/pub/security/, там же ты найдешь еще много утилит, связанных с security. Но особо не спеши, скорее всего этот пакет уже установлен у тебя в системе :). Для инстала распакуй архив, заходи в распакованную диру, далее тебе придется править Makefile под себя, а потом вводить make. Скомпилировав с ключом -DPARANOID, ты защитишь себя от ip-spoofing-а со стороны клиента, т.е. wrappers будут всегда проверять имя хоста дважды и при несовпадении в коннекте откажут =).
Содержание Вперед на стр. 024-060-2