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" тоже будет проигнорирована!