Руководство администратора Linux по безопасности

       

TCP-WRAPPERS


Wietse's TCP-WRAPPERS позволяют Вам ограничивать подключения к различным сервисам на основании IP-адреса и другой информации, но что даже более важно, так это то, что такая система позволяет Вам конфигурировать ответ. TCP_WRAPPERS входят во многие дистрибутивы, а вообще-то их можно скачать с

ftp://ftp.porcupine.org/pub/security.


Использование TCP_WRAPPERS существенно облегчает защиту от внешних атак. TCP_WRAPPERS управляется двумя файлами:

/etc/hosts.allow /etc/hosts.deny

hosts.allow проверяется первым, и его правила проверяются сверху вниз. В случае нахождения правила с разрешением для Вас (то есть, Вашего хоста, домена, маски подсети или других сетевых параметров), Вы получите доступ к сервису. Если ничего подходящего не найдено, проверяется hosts.deny в поисках таких же правил. Этот файл ничем не отличается от предвдущего, кроме того, что все данные в нем интерпретируются как запреты определенным системам подключаться к защищаемой системе. Первое же найденное правило приведет к тому, что доступа Вы не получите. Если ничего не найдено, доступ будет предоставлен. Если Вы придерживаетесь пессиместичной стратегии защиты, впишите :

в hosts.deny:

ALL: 0.0.0.0/0.0.0.0

что запретит все услуги для всех, кроме тех услуг, которые явно разрешены для тех систем, которым явно дано разрешение (помните, что по умолчанию доступ разрешен). Можно также избрать такой подхож в отношении только некоторых сервисов, скажем, telnet, а другие, например, ftp, оставить открытыми всем. Для этого впишите:

в hosts.allow:

in.telnetd: 10.0.0.0/255.255.255.0 # allow access from my internal network # of 10.0.0.* in.ftpd: 0.0.0.0/0.0.0.0 # allow access from anywhere in the world

в hosts.deny:

in.telnetd: 0.0.0.0/0.0.0.0 # deny access to telnetd from anywhere

Или если Вы желаете быть действительно безопасными:

ALL: 0.0.0.0/0.0.0.0 # deny access to everything from everywhere

Это может воздействовать и на сервисы типа ssh и nfs, так что будьте очень внимательны!



Вы можете просто внести в список все услуги, которые Вы используете отдельно:

in.telnetd: 0.0.0.0/0.0.0.0 ipop3d: 0.0.0.0/0.0.0.0

Если некоторый сервис не упомянут в inetd.conf и не имеет политики запрета по умолчанию, это не сервис, а дыра в системе. Более безопасное (и немного больше работы, но в конечном счете меньшее количество работы, чем восстанавливать сервер) иметь запрет в качестве значения по умолчанию правил для firewall и TCP_WRAPPERS.

man-страницы для TCP_WRAPPERS очень хорошие, и вызываются командами:

man hosts.allow man hosts_allow

и/или:

man hosts.deny man hosts_deny

Один глюк в TCP_WRAPPERS, который недавно выскочил на Bugtraq, TCP_WRAPPERS интерпретирует в hosts.allow и hosts.deny следующим способом:

1) Обрезает все символы \ (продолжение строки), делая все строки полными (помните также, что максимальная длина строки около 2k, лучше использовать несколько строк в некоторых случаях).

2) Обрезает все строки, начинающиеся на #, то есть все комментарии. Таким образом

# this is a test # in.ftpd: 1.1.1.1 \ in.telnetd: 1.1.1.1

Это означает, что строка "in.telnetd: 1.1.1.1" тоже будет проигнорирована!



Содержание раздела