Брандмауэры и специальное программное обеспечение 8 Часть 4

Вид материалаРеферат

Содержание


Символьные расширения
Разнообразные особенности
Подобный материал:
1   ...   54   55   56   57   58   59   60   61   ...   101

Символьные расширения


Символьные расширения — это комбинации специальных символов, которые в процессе обработки текстовой информации заменяются некоторыми данными. Допускается использовать следующие символьные расширения:

- %а (%А) — адрес сетевого узла клиента (сервера);

- %с — какая-либо информация о клиенте (в зависимости от того, что известно), это может быть запись в формате пользователь@узел и IP-адрес или просто IP-адрес; - %d — имя процесса демона (например, in.teLnetd);

- %h (%H) — имя сетевого узла или IP-адрес клиента (сервера);

- %n (%N) — имя сетевого узла клиента (сервера) или «unknown» или «paranoid» если имя недоступно;

- %р — идентификатор процесса (PID) демона;

- %s — информация о сервере: демон@узел или IP-адрес или просто имя демона, в зависимости от того, какая информация доступна;

- %u — имя пользователя (или unknown);

- %% — в результирующем тексте заменяется на обычный символ процента (%).

'

Разнообразные особенности


Несмотря на свою гибкость и богатый набор возможностей, программа TCP Wrappers обладает рядом недостатков. Во-первых, TCP Wrappers не может корректно работать с UDP. Если бы эта программа могла бы обслуживать UDP, ее автор назвал бы ее IP Wrappers или TCP/UDP Wrappers. Одна из причин этого кроется в том, что метадемон inetd вызывает службы UDP с ключом wait (ожидание). Демоны, вызываемые с ключом wait, не покидают очередь ожидания сразу же после приема пакета UDP. Таким образом, информация о первом подключившемся к службе клиенте будет внесена в журнал, однако если второй клиент подключится к этой же службе раньше, чем демон покинет очередь ожидания, сведения о нем не будут внесены в журнал. Помимо этого TCP Wrappers не будет корректно работать также в отношении служб, основанных на RPC, то есть таких, которые в файле /etc/services помечены как rpc/tcp.

Программу TCP Wrappers не следует использовать совместно с web-сервером Apache. Дело в том, что этот сервер обладает встроенным механизмом TCP Wrappers и использование совместно с ним программы tcpd является излишеством. Конфигурирование Apache выполняется приблизительно так же, как и конфигурирование tcpd, поэтому если вы освоили работу с tcpd, вы сможете выполнить также настройку Apache.

tcpdchk


Утилита tcpdchk позволяет проверить наличие синтаксических ошибок в файле hosts.allow. Утилита поддерживает множество ключей командной строки и режимов работы. Например, ключ -d предписывает утилите использовать файл hosts.allow (и hosts.deny, если он используется), расположенный в текущем каталоге, а не в каталоге /etc. Конечно, если текущий каталог совпадает с каталогом /etc, этот режим будет бесполезным для вас, однако воспользовавшись ключом -d, вы сможете протестировать разрабатываемый вами набор правил, прежде чем использовать его на практике.

При использовании ключа -v утилита tcpdchk будет отображать на экране каждую обрабатываемую строку, а также порядок ее обработки. Пример вывода этой утилиты представлен в листинге 15.1. В этом листинге осуществляется обработка набора правил, рассмотренного в самом начале, с внесенными в него добавлениями из дальнейшего текста.

Листинг 15,1. Вывод утилиты tcpdchk

# tcpdchk _v

Using network configuration file: /etc/inetd.conf

>>> Rule /etc/hosts.allow line 1:

daemons: ALL

clients: .void.org EXCEPT david@bar.void.org

option: ALLOW

access: granted

>>> Rule /etc/hosts.allow line 2:

daemons: ALL EXCEPT in.telnetd

clients: david@bar.void.org

option: ALLOW

access: granted

>>> Rule /etc/hosts.allow line 4:

daemons: in.telnetd

clients: david@bar.void.org

option: spawn (/usr/sbin/safe_finger _1 @client_hostname | /usr/bin/mail root) &

option: DENY

access: denied

>>> Rule /etc/hosts.allow line 5:

daemons: in.ftpd

clients: ALL

option: ALLOW

access: granted

>>> Rule /etc/hosts.allow line 6:

daemons: ALL

clients: ALL

option: DENY

access: denied

Если утилита tcpdchk не может обнаружить используемый вами файл inetd.conf, вы можете воспользоваться ключом -i, после которого следует указать полный путь к файлу inetd.conf. Этот же ключ может оказаться полезным в процессе тестирования пробной конфигурации inetd (когда тестовый файл inetd.conf располагается в каталоге, отличающемся от /etc).

Наконец, ключ -а проверяет наличие возможности доступа, который явно не разрешен в составе конфигурации tcpd, иными словами, какие демоны могут быть запущены клиентами благодаря тому, что в файле hosts.allow отсутствуют правила, явно разрешающие доступ к этим демонам.

tcpdmatch


Утилита tcpdmatch позволяет выполнять конкретные тесты в отношении ваших конфигурационных файлов. Ключ -d позволяет тестировать файл hosts.allow, расположенный в вашем текущем каталоге (как и в случае с утилитой tcpdchk). Ключ -i позволяет указать полный путь к файлу inetd.conf.

При запуске tcpdmatch необходимо использовать следующий формат:

tcpdmatch демон[@сервер] [пользователь@]клиент

Параметр сервер можно использовать для сетевых узлов, оснащенных несколькими сетевыми картами. Некоторые примеры показаны в листинге 15.2.

Листинг 15.2. Пример вывода утилиты tcpdmatch

# tcpdmatch in.telnetd bar
warning: bar: hostname alias
warning: (official name: bar.void.org)
client: hostname bar.void.org
client: address 192.168.0.2
server: process in.telnetd
matched: /etc/hosts.allow line 1
option: ALLOW

access: granted

# tcpdmatch in.telnetd david@bar
warning: bar: hostname alias
warning: (official name: bar.void.org)
client: hostname bar.void.org
client: address 192.168.0.2
client: username david

server: process in.telnetd

matched: /etc/hosts.allow line 4

option: spawn (/usr/sbin/safe_finger _1 Pbar.void.org | /usr/bin/mail root) &

option: DENY

access: denied

# tcpdmatch in.ftpd locutus2.calderasystems.com
client: hostname locutus2.calderasystems.com
client: address 207.179.39.2

server: process in.ftpd

matched: /etc/hosts.allow line 5

option: ALLOW

access: granted

# tcpdmatch in.telnetd locutus2.calderasystems.com
client: hostname locutus2.calderasystems.com
client: address 207.179.39.2

server: process in.telnetd

matched: /etc/hosts.allow line 6

option: DENY

access: denied