Hosts deny in linux

Файл hosts в Linux

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

Всему причиной файл hosts. Если вы раньше пользовались Windows, то, наверное, уже слышали о таком файле. Там чаще всего он использовался для того, чтобы быстро заблокировать доступ к какому-либо ресурсу. Но применение его гораздо шире. В этой статье мы рассмотрим, как настроить файл hosts в Linux, а также какие возможности он нам предоставляет.

Разрешение доменных имён в Linux

Прежде чем мы перейдём к самому файлу hosts, нужно разобраться, как происходит поиск IP-адреса для доменного имени в Linux. Я говорил, что операционная система сразу же отправляет запрос DNS-серверу, но это не совсем так. Существует определённый порядок поиска, согласно которому он выполняется. Этот порядок установлен в конфигурационном файле /etc/nsswitch.conf

Здесь нас интересует строчка hosts. В ней в порядке очередности записаны службы, которые используются для поиска IP-адреса для доменного имени. Пункт files означает использование файла /etc/hosts, а dns — сервиса доменных имён интернета. Если files расположена перед hosts, это означает, что сначала система попытается найти домен в /etc/hosts, а уже потом по DNS. По умолчанию дело обстоит именно так.

Настройка файла hosts в Linux

Нужный нам файл находится в директории /etc/. Для его открытия можно использовать любой текстовый редактор как в командной строке, так и в графическом интерфейсе, только открывать его нужно с правами суперпользователя. Например, с помощью vim:

Синтаксис файла довольно простой. В нём находится несколько строчек с доменными именами и IP-адресами, которые нужно для них использовать. Каждая из них выглядит вот так:

ip_адрес домен алиас

Обычно первая же строчка создаёт правило для перенаправления всех запросов к домену localhost на локальный IP-адрес — 127.0.0.1:

Также в этом файле по умолчанию размещаются перенаправления для имени вашего компьютера и для IPv6-адресов. Вы можете создать свои настройки для любого нужного домена. Для этого нужно добавить строчку в конец файла. Например, направим все запросы к домену losst.pro на ip 127.0.0.1:

Обратите внимание, что здесь указывается только домен, без протокола. Префикс http или https указывать не нужно, иначе ничего работать не будет. А вот для поддомена www нужно создавать отдельную запись или записывать его в виде алиаса. Например:

127.0.0.1 losst.pro www.losst.pro

Теперь при запросе домена losst.pro будет открываться наш локальный IP. Чтобы вернуть доступ к оригинальному ресурсу, достаточно убрать добавленную строчку. Но вы можете использовать не только локальный адрес, но и любой другой. Это очень удобно, если вы только зарегистрировали домен и доменная зона ещё не успела обновиться, а вы уже хотите работать с новым сайтом. Просто добавьте данные в /etc/hosts и работайте как обычно.

Читайте также:  Windows 10 установочная флешка linux

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Как защитить сетевые службы с помощью TCP-оболочек в Linux

В этой статье мы объясним, что такое обертки TCP и как настроить их для настроенного брандмауэра.

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

Понимание hosts.allow и hosts.deny

Когда сетевой запрос достигает вашего сервера, TCP-оболочки используют hosts.allow и hosts.deny (в указанном порядке), чтобы определить, следует ли разрешить клиенту использовать данную службу. .

По умолчанию эти файлы пусты, все закомментированы или не существуют. Таким образом, все разрешено через уровень оболочек TCP, и вашей системе остается полагаться на брандмауэр для полной защиты. Поскольку это нежелательно, по причине, которую мы указали во введении, убедитесь, что оба файла существуют:

# ls -l /etc/hosts.allow /etc/hosts.deny

Синтаксис обоих файлов одинаков:

  1. услуги – список служб, разделенных запятыми, к которым должно применяться текущее правило.
  2. клиенты представляют собой список разделенных запятыми имен хостов или IP-адресов, на которые распространяется правило. Принимаются следующие подстановочные знаки:
    1. ALL соответствует всему. Применяется как к клиентам, так и к услугам.
    2. LOCAL соответствует хостам без точки в их FQDN, например, localhost.
    3. ИЗВЕСТНО указывает на ситуацию, когда имя хоста, адрес хоста или пользователь известны.
    4. НЕИЗВЕСТНО противоположно ИЗВЕСТНО.
    5. PARANOID вызывает разрыв соединения, если обратный поиск DNS (сначала по IP-адресу для определения имени хоста, а затем по имени хоста для получения IP-адресов) в каждом случае возвращает разные адреса.

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

    К сожалению, не все сетевые службы поддерживают использование оболочек TCP. Чтобы определить, поддерживает ли их данная служба, выполните следующие действия:

    # ldd /path/to/binary | grep libwrap

    Если приведенная выше команда возвращает вывод, он может быть упакован в TCP. Примером этого являются sshd и vsftpd, как показано здесь:

    Как использовать TCP-оболочки для ограничения доступа к службам

    При редактировании /etc/hosts.allow и /etc/hosts.deny не забудьте добавить новую строку, нажав Enter после последнего непустая строка.

    Чтобы разрешить доступ по SSH и FTP только к 192.168.0.102 и localhost и запретить всем остальным, добавьте эти две строки в /etc/hosts.deny . :

    и следующую строку в /etc/hosts.allow :

    sshd,vsftpd : 192.168.0.102,LOCAL
    # # hosts.deny This file contains access rules which are used to # deny connections to network services that either use # the tcp_wrappers library or that have been # started through a tcp_wrappers-enabled xinetd. # # The rules in this file can also be set up in # /etc/hosts.allow with a 'deny' option instead. # # See 'man 5 hosts_options' and 'man 5 hosts_access' # for information on rule syntax. # See 'man tcpd' for information on tcp_wrappers # sshd,vsftpd : ALL ALL : ALL 
    # # hosts.allow This file contains access rules which are used to # allow or deny connections to network services that # either use the tcp_wrappers library or that have been # started through a tcp_wrappers-enabled xinetd. # # See 'man 5 hosts_options' and 'man 5 hosts_access' # for information on rule syntax. # See 'man tcpd' for information on tcp_wrappers # sshd,vsftpd : 192.168.0.102,LOCAL 

    Эти изменения вступают в силу немедленно, без необходимости перезапуска.

    На следующем изображении вы можете увидеть эффект удаления слова LOCAL из последней строки: FTP-сервер станет недоступен для localhost. После того, как мы вернем подстановочный знак, сервис снова станет доступным.

    Чтобы разрешить все службы хостам, имя которых содержит example.com , добавьте эту строку в hosts.allow :

    и чтобы запретить доступ к vsftpd для машин на 10.0.1.0/24, добавьте эту строку в hosts.deny :

    В последних двух примерах обратите внимание на точку в начале и в конце списка клиентов. Он используется для обозначения «ВСЕХ хостов и/или клиентов, имя или IP-адрес которых содержат эту строку».

    Была ли эта статья полезной для вас? У вас есть вопросы или комментарии? Не стесняйтесь, напишите нам, используя форму комментария ниже.

    Источник

    Защити свой сервер с помощью 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 следующую строчку:

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

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

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

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

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

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

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

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

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

    Источник

    How to edit hosts.deny and hosts.allow?

    I want to block some hosts in Ubuntu, so how could I edit hosts.deny file to block some hosts like example.com. And one more thing I have installed dnsmasq in Ubuntu, so can I check the entries of the dns’s cached by dnsmasq ? If yes then how? Thanks in advance.

    3 Answers 3

    ALL: 192.168.1.2 ALL: example.org 

    This denies all service to 192.168.1.2 and example.org. For further information, take a look here: http://linux.about.com/od/commands/l/blcmdl5_hostsde.htm

    dnsmasq -d should give you the cached entries but I’m not so sure about that.

    To block an IP Address with iptables:

    iptables -A INPUT -s 11.22.33.44 -j DROP 
    iptables -D INPUT -s 11.22.33.44 -j DROP 

    nd i have done ALL: 78.159.111.140 in hosts.deny file. But still this page is getting loaded in my browser.

    Hosts.deny blocks those IPs accessing services on your computer but you are accessing their server. You could use iptables or edit your /etc/hosts like this: 127.0.0.1 78.159.111.140

    hosts.allow and hosts.deny are deprecated. They are used by TCP Wrappers, host-based access control, http://en.wikipedia.org/wiki/TCP_Wrapper

    If you want to block access to a service, you need to find whether that service has been compiled with TCP Wrappers. I highly doubt that Ubuntu services still use TCP Wrappers.

    The TCP Wrappers library is found in /lib/libwrap.so.0 If you want to check whether lighttpd (Web server) supports TCP Wrappers, run

    > ldd /usr/sbin/lighttpd linux-vdso.so.1 => (0x00007fff2a5ff000) libpcre.so.3 => /lib/libpcre.so.3 (0x00007f69af837000) libdl.so.2 => /lib/libdl.so.2 (0x00007f69af633000) libattr.so.1 => /lib/libattr.so.1 (0x00007f69af42d000) libssl.so.0.9.8 => /lib/libssl.so.0.9.8 (0x00007f69af1db000) libcrypto.so.0.9.8 => /lib/libcrypto.so.0.9.8 (0x00007f69aee4b000) libfam.so.0 => /usr/lib/libfam.so.0 (0x00007f69aec42000) libc.so.6 => /lib/libc.so.6 (0x00007f69ae8bf000) /lib64/ld-linux-x86-64.so.2 (0x00007f69afa90000) libz.so.1 => /lib/libz.so.1 (0x00007f69ae6a8000) > _ 

    It does not mention libwrap , so at least this service does not support TCP Wrappers, and will ignore /etc/hosts. .

    Источник

Оцените статью
Adblock
detector