Защити свой сервер с помощью hosts.allow и hosts.deny

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

 

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


После того, как TCP-пакеты были переданы компьютеру с Linux, среди других действий, их обрабатывают два файла - /etc/hosts.allow и /etc/hosts.deny. Эти два файла работают также как и стандартные правила брандмауэра. Первоначально демон tcpd обрабатывает пакеты пропуская их через содержимое файла hosts.allow, а затем через файл hosts.deny.

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

Синтаксис этих файлов очень прост:

служба: IP-адрес или имя хоста

Так, например, если мы хотим блокировать все smtp-пакеты, идущие к нашему серверу от mail.test.ru, нам необходимо ввести в файл hosts.deny следующую строчку:

smtp: mail.test.ru

Мы можем также указать вместо имени хоста и его IP-адрес (лучше всего физический, тем самым избегая проблем в безопасности DNS-сервера):

smtp: 192.168.1.10

С успехом можно использовать и прекрасную возможность использования знака "." в строке адреса, для обозначения сети. К примеру, если мы хотим разрешить доступ к нашему серверу по http из всей сети 192.168.10.0/24, то мы должны написать в hosts.allow следующее:

http: 192.168.10.

Также мы можем использовать этот знак, если хотим разрешить доступ к какой-либо службе всем компьютерам нашего домена, указав в hosts.allow следующее:

http: .test.ru

После этого все компьютеры домена test.ru будут иметь доступ к веб-службе на нашем сервере.

Ну, и самый простой способ (который как правило и употребляют новички-администраторы) - это указать:

mysqld: ALL

эта запись сделает доступной для всех вашу службу mysql. Надеюсь, вы догадались в какой файл нужно поместить эту строчку?

Конечно же в /etc/hosts.deny! А вот в /etc/hosts.allow внести запись типа:

mysqld: LOCAL

И тогда ваша mysql будет доступна для локальных приложений!

Помните - содержимое файлов /etc/hosts.allow и /etc/hosts.deny зависит только от ваших потребностей в защите вашего сервера. Пробуйте, по необходимости открывая или закрывая доступ к службам для тех или иных целей. Но не забывайте, что написание после знака ":" слова "ALL" (в файле /etc/hosts.allow) не дает вам гарантий в безопасности вашего сервера!

Успехов!