• Категории
  • Подписка
  • Разместить статью
26/01/11 6 1828 Управление Internet-службами
-

Варианты использования поддержки TCP Wrappers

Не все Internet-службы запускаются с помощью inetd или xinetd, яркий пример тому — SSH. В этом случае мы не можем использовать TCP Wrappers или xinetd для блокирования доступа хакеру. Даже если будет заблокирован доступ с помощью telnet и FTP, хакер удастся установить соединение по SSH. Поэтому для многих Internet-служб предусмотрена возможность компиляции с поддержкой TCP Wrappers. Кстати, OpenSSH — одна из таких программ. При компиляции SSH запустите программу configure с параметром -with-tcp-wrappers. Впоследствии в файл /etc/hosts.allow можно добавить следующую строку:

sshd: .example.com .trusted_network.org  trusted_machine.example.org

Наводим контакт с производителями программ

Если в интересующую программу не была добавлена возможность поддержки TCP Wrappers, то можно обратиться к поставщикам данной программы с соответствующей просьбой. К сожалению, это не всегда помогает. Но шансы повышаются во много раз, если самостоятель­но определить, как добавить эту возможность и предоставить заплату поставщикам.

Ручное добавление в программу поддержки TCP Wrappers

Программу с открытым исходным кодом можно изменять самостоятельно, чтобы она соответ­ствовала потребностям конкретного пользователя. Ниже представлен пример программного кода, который необходим для добавления поддержки TCP Wrappers в программу Web-службы. Для примера была использована программа stunnel (http://www.stunnel.org/ (см. www.stunnel.org)), что предпо­лагает использование языка С и того, что для программы, использующейся в процессе компонов­ки, установлена переменная препроцессора USE_LIBWRAP.

Приведенный ниже файл заголовка необходимо разместить в начале своей С-программы:

/* TCP wrappers  */
#ifdef USE_LIBWRAP
#include
int allow_severity=LOG_NOTICE;
int deny_severity=LOG_WARNING;
#endif

В функции, которая управляет соединением, добавим следующую строку при объявлении переменной:

#ifdef  USE_LIBWRAP
        struct   request_info request;
#endif

Затем, после установки соединения, но перед выполнением каких-либо действий с данны­ми используем функцию hosts_access библиотеки TCP Wrappers для определения того, следует ли обработать данные или немедленно оборвать соединение:

#ifdef USE_LIBWRAP
         request_init (&request, RQ_DAEMON, options.servname, RQ_FILE, local, 0);
         fromhost (&request);
         if   (!hosts_access(&request)) {
                  log (LOG_WARNING, "Connection from %s:%d REFUSED by  libwrap",
                         inet_ntoa (addr.sin_addr), ntohs (addr.sin_port));
                  /*место для программного кода,   предназначенного для разрыва соединения*/;
	}
#endif

6 комментариев на «“Варианты использования поддержки TCP Wrappers”»

  1. Спасибо, как-раз то, что искал. Сайт прекрасен! =)

  2. Спасибо большое за статью, качественно написанна и содержит много полезной информации. Несмотря на то, что данная тема достаточно часто обсуждается в сети, понастоящему стоещего ресурса нет. Буду ждать новых статей.

  3. Полезная информация. Теперь буду знать.

  4. Александр:

    Спасибо за статью) как раз искал информацию по TCP Wrappers

  5. Vladimir:

    Вот я прочел статью и понял что хак дело тонкое, спасибо за статью очень подробно написано!

  6. http://www.c-mt.ru:

    Очень интересная информация.

Добавить комментарий

Яндекс.Метрика