Differences between revisions 12 and 13
Revision 12 as of 2008-08-15 01:08:03
Size: 15923
Editor: Allena
Comment: 50%
Revision 13 as of 2008-08-15 21:32:31
Size: 15953
Comment: Fixes.
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
В качестве примера рассмотрим DNS-сервер --- BIND. Уязвимости в BIND встречаются достаточно часто, и информация о них небесплатна. Таким образом, BIND потенциально опасен. В документации обычно предполагается, что конфигурационные файлы BIND размещены в {{{/etc}}} и {{{/var}}}. В ALTLinux часть конфигурационных файлов расположена в других каталогах. Естественно, все необходимые для работы каталоги включаются в изолированное окружение, в котором запускается приложение.
Корневым каталогом для BIND в ALTLinux является {{{/var/lib/bind}}}. Все файлы, необходимые для полноценной работы DNS сервера, находятся в {{{/var/lib}}}. Так как BIND запускается из обычного окружения, и сначала загружает динамические библиотеки, а затем самостоятельно вызывает chroot, необходимость помещать библиотеки в изолированное окружение отсутствует.
В качестве примера рассмотрим DNS-сервер --- BIND. Уязвимости в BIND встречаются достаточно часто, и информация о них небесплатна. Таким образом, BIND потенциально опасен. В документации обычно предполагается, что конфигурационные файлы BIND размещены в `/etc` и `/var`. В ALTLinux часть конфигурационных файлов расположена в других каталогах. Естественно, все необходимые для работы каталоги включаются в изолированное окружение, в котором запускается приложение.
Корневым каталогом для BIND в ALTLinux является `/var/lib/bind`. Все файлы, необходимые для полноценной работы DNS сервера, находятся в `/var/lib`. Так как BIND запускается из обычного окружения, и сначала загружает динамические библиотеки, а затем самостоятельно вызывает chroot, необходимость помещать библиотеки в изолированное окружение отсутствует.
Line 10: Line 10:
Как рассказывалось ранее, DNS служит для преобразования символьных имен в IP-адреса и обратно. DNS имеет иерархическую структуру. У каждой зоны есть свой DNS-сервер, кроме того, в каждой сети должна быть зарегистрирована служба, преобразующаяся IP-адрес в доменное имя(обратный DNS). Как рассказывалось ранее, DNS служит для преобразования символьных имен в IP-адреса и обратно. DNS имеет иерархическую структуру. У каждой зоны есть свой DNS-сервер, кроме того, в каждой сети должна быть зарегистрирована служба, преобразующаяся IP-адрес в доменное имя (обратный DNS).
Line 12: Line 12:
 *Домен, зарегистрированный за провайдером. В этом случае пользователь получает поддомены, которые будут связаны с соответствующими IP-адресами. При необходимости изменить доменное имя какой-либо машины, придется обращаться к провайдеру.
 *Собственный домен. В этом случае провайдер организует лишь обратный DNS. Способов получить собственный домен несколько:
  *Выбрать незанятое доменное имя и оплатить его аренду у специальной компании-регистратора, после чего информация об этом появится в базе whois. Арендатор становится администратором домена. В этом случае надо обеспечить существование определенного количества "живых" адресов в арендованном домене. Общая стоимость подобного решения составляет около 20 у.е. в год.
  *Получить на непонятных правах поддомен у владельца домена. В большинстве случаев это не требует дополнительных затрат. Часто такой подход используется при регистрации поддоменов для структурных подразделений организаций, например --- po.cs.msu.su. Администратором поддомена можете быть и не вы.
 * Домен, зарегистрированный за провайдером. В этом случае пользователь получает поддомены, которые будут связаны с соответствующими IP-адресами. При необходимости изменить доменное имя какой-либо машины, придется обращаться к провайдеру.
 * Собственный домен. В этом случае провайдер организует лишь обратный DNS. Способов получить собственный домен несколько:
  * Выбрать незанятое доменное имя и оплатить его аренду у специальной компании-регистратора, после чего информация об этом появится в базе whois. Арендатор становится администратором домена. В этом случае надо обеспечить существование определенного количества "живых" адресов в арендованном домене. Общая стоимость подобного решения составляет около 20 у.е. в год.
  * Получить на непонятных правах поддомен у владельца домена. В большинстве случаев это не требует дополнительных затрат. Часто такой подход используется при регистрации поддоменов для структурных подразделений организаций, например --- po.cs.msu.su. Администратором поддомена можете быть и не вы.
Line 18: Line 18:
Если задача состоит в организации интранета, например, для школы или компьютерного класса, то необходимости в регистрации доменных имен нет. Можно использовать какой угодно домен, при условии, что не происходит коллизий с уже существуюшими адресами. Если задача состоит в организации интранета, например, для школы или компьютерного класса, то необходимости в регистрации доменных имен нет. Можно использовать какой угодно домен, при условии, что не происходит коллизий с уже существующими адресами.
Line 24: Line 24:
pdnsd --- это DNS-сервер, изначально предназначенный для того, чтобы запускаться на очень плохих каналах, кэширующий все DNS-запросы, даже запросы к записям с очень малым времнем жизни. Кроме того, он весьма удобен в малых сетях без иерархии, когда всё, что необходимо --- это учесть все машины и настроить на них использование внутреннего DNS-сервера. pdnsd --- это DNS-сервер, изначально предназначенный для того, чтобы запускаться на очень плохих каналах, кэширующий все DNS-запросы, даже запросы к записям с очень малым временем жизни. Кроме того, он весьма удобен в малых сетях без иерархии, когда всё, что необходимо --- это учесть все машины и настроить на них использование внутреннего DNS-сервера.
Line 28: Line 28:
root@class305 ~]# apt-get install pdnsd root@demo ~]# apt-get install pdnsd
Line 33: Line 33:
[root@class305 ~]# rpmquery -l pdnsd [root@demo ~]# rpmquery -l pdnsd
Line 78: Line 78:
[root@class305 ~]# service pdnsd start [root@demo ~]# service pdnsd start
Line 83: Line 83:
## про редактирование dhcpd.conf было уже
Line 84: Line 85:
Для того, чтобы DNS-сервер использовал собственный DNS необходимо в качестве первого nameserver в /etc/resolv.conf указать 127.0.0.1. Для того, чтобы DNS-сервер использовал собственный DNS необходимо в качестве первого nameserver в `/etc/resolv.conf` указать 127.0.0.1.
Line 88: Line 89:
BIND(Berkeley Internet Name Domain, ранее Berkeley Internet Name Daemon) --- одна из самых функциональных и популярных в мире реализаций DNS-сервера, разарабатываемая Internet Service Consorcium. Большинство RFC по данной тематике разработаны этой же организацией. BIND (Berkeley Internet Name Domain, ранее Berkeley Internet Name Daemon) --- одна из самых функциональных и популярных в мире реализаций DNS-сервера, разарабатываемая Internet Service Consorcium. Большинство RFC по данной тематике разработаны этой же организацией.
Line 92: Line 93:
[root@class305 ~]# cd /var/lib/bind/
[root@class305 bind]# ls
[root@demo ~]# cd /var/lib/bind/
[root@demo bind]# ls
Line 102: Line 103:
[root@class305 bind]# cat zone/localdomain [root@demo bind]# cat zone/localdomain
Line 116: Line 117:
Запись типа SOA определяет различные параметры зоны, такие как время жизни, время обновления и т.п. {{{serial}}} --- число, которое должно увеличиваться каждый раз, когда изменяется содержимое зоны. Обычно в serial указывают дату редактирования. Запись типа SOA определяет различные параметры зоны, такие как время жизни, время обновления и т.п. `serial` --- число, которое должно увеличиваться каждый раз, когда изменяется содержимое зоны. Обычно в serial указывают дату редактирования.
Line 121: Line 122:
[root@class305 bind]# cat zone/127.in-addr.arpa [root@demo bind]# cat zone/127.in-addr.arpa
Line 139: Line 140:
Для удобства конфигурирования нескольких DNS-серверов существует возможность указать один из серверов в качестве основного(master), а все остальные в качестве вторичных, slave-серверов. Slave-серверам задается адрес основного сервера, и в дальнейшем все slave автоматически синхронизируют настройки с master. Таким образом, можно легко организовать несколько DNS-серверов, идентичных с точки зрения внешнего мира. Для удобства конфигурирования нескольких DNS-серверов существует возможность указать один из серверов в качестве основного (master), а все остальные в качестве вторичных, slave-серверов. Slave-серверам задается адрес основного сервера, и в дальнейшем все slave автоматически синхронизируют настройки с master. Таким образом, можно легко организовать несколько DNS-серверов, идентичных с точки зрения внешнего мира.
Line 152: Line 153:
|| 50 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy, [[Allena]], MaximByshevskiKonopko || || || || 66 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy, [[Allena]], MaximByshevskiKonopko || || ||

Использование chroot

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

В качестве примера рассмотрим DNS-сервер --- BIND. Уязвимости в BIND встречаются достаточно часто, и информация о них небесплатна. Таким образом, BIND потенциально опасен. В документации обычно предполагается, что конфигурационные файлы BIND размещены в /etc и /var. В ALTLinux часть конфигурационных файлов расположена в других каталогах. Естественно, все необходимые для работы каталоги включаются в изолированное окружение, в котором запускается приложение. Корневым каталогом для BIND в ALTLinux является /var/lib/bind. Все файлы, необходимые для полноценной работы DNS сервера, находятся в /var/lib. Так как BIND запускается из обычного окружения, и сначала загружает динамические библиотеки, а затем самостоятельно вызывает chroot, необходимость помещать библиотеки в изолированное окружение отсутствует.

Настройка DNS

Как рассказывалось ранее, DNS служит для преобразования символьных имен в IP-адреса и обратно. DNS имеет иерархическую структуру. У каждой зоны есть свой DNS-сервер, кроме того, в каждой сети должна быть зарегистрирована служба, преобразующаяся IP-адрес в доменное имя (обратный DNS). Существует два способа использования доменных имён:

  • Домен, зарегистрированный за провайдером. В этом случае пользователь получает поддомены, которые будут связаны с соответствующими IP-адресами. При необходимости изменить доменное имя какой-либо машины, придется обращаться к провайдеру.
  • Собственный домен. В этом случае провайдер организует лишь обратный DNS. Способов получить собственный домен несколько:
    • Выбрать незанятое доменное имя и оплатить его аренду у специальной компании-регистратора, после чего информация об этом появится в базе whois. Арендатор становится администратором домена. В этом случае надо обеспечить существование определенного количества "живых" адресов в арендованном домене. Общая стоимость подобного решения составляет около 20 у.е. в год.
    • Получить на непонятных правах поддомен у владельца домена. В большинстве случаев это не требует дополнительных затрат. Часто такой подход используется при регистрации поддоменов для структурных подразделений организаций, например --- po.cs.msu.su. Администратором поддомена можете быть и не вы.

При использовании доменного имени желательно (обязательно, в случае собственного домена) обеспечить наличие не менее двух доменных DNS-серверов с существенно различными IP-адресами.

Если задача состоит в организации интранета, например, для школы или компьютерного класса, то необходимости в регистрации доменных имен нет. Можно использовать какой угодно домен, при условии, что не происходит коллизий с уже существующими адресами.

При наличии в сети DNS-сервера, клиентские машины узнают его адрес при помощи DHCP, и все DNS-запросы посылаются к нему. Таким образом можно организовать обращение по именам к локальным компьютерам.

pdnsd

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

Установим pdnsd:

root@demo ~]# apt-get install pdnsd

Посмотрим его состав:

[root@demo ~]# rpmquery -l pdnsd
/etc/pdnsd.conf
/etc/ppp/ip-up.d/0pdnsd
/etc/rc.d/init.d/pdnsd
/usr/sbin/pdnsd
/usr/sbin/pdnsd-ctl
/usr/share/doc/pdnsd-1.2.5
/usr/share/doc/pdnsd-1.2.5/AUTHORS
/usr/share/doc/pdnsd-1.2.5/COPYING.BSD
/usr/share/doc/pdnsd-1.2.5/ChangeLog
/usr/share/doc/pdnsd-1.2.5/ChangeLog.old
/usr/share/doc/pdnsd-1.2.5/NEWS
/usr/share/doc/pdnsd-1.2.5/README
/usr/share/doc/pdnsd-1.2.5/README.ALT
/usr/share/doc/pdnsd-1.2.5/README.par
/usr/share/doc/pdnsd-1.2.5/README.par.old
/usr/share/doc/pdnsd-1.2.5/THANKS
/usr/share/doc/pdnsd-1.2.5/TODO
/usr/share/doc/pdnsd-1.2.5/contrib
/usr/share/doc/pdnsd-1.2.5/contrib/README
/usr/share/doc/pdnsd-1.2.5/contrib/change_pdnsd_server_ip.pl
/usr/share/doc/pdnsd-1.2.5/contrib/dhcp2pdnsd
/usr/share/doc/pdnsd-1.2.5/contrib/pdnsd_dhcp.pl
/usr/share/doc/pdnsd-1.2.5/html
/usr/share/doc/pdnsd-1.2.5/html/dl.html
/usr/share/doc/pdnsd-1.2.5/html/doc.html
/usr/share/doc/pdnsd-1.2.5/html/faq.html
/usr/share/doc/pdnsd-1.2.5/html/index.html
/usr/share/doc/pdnsd-1.2.5/pdnsd.conf
/usr/share/doc/pdnsd-1.2.5/txt
/usr/share/doc/pdnsd-1.2.5/txt/faq.txt
/usr/share/doc/pdnsd-1.2.5/txt/intro.txt
/usr/share/doc/pdnsd-1.2.5/txt/manual.txt
/usr/share/man/man5/pdnsd.conf.5.bz2
/usr/share/man/man8/pdnsd-ctl.8.gz
/usr/share/man/man8/pdnsd.8.gz
/var/cache/pdnsd
/var/cache/pdnsd/pdnsd.cache
/var/run/pdnsd
/var/run/pdnsd/socket

Запустим, предварительно отредактировав конфигурационный файл pdnsd.conf:

[root@demo ~]# service pdnsd start

Чтобы начать использовать DNS-сервер осталось лишь отредактировать настройки DHCP.

Для того, чтобы DNS-сервер использовал собственный DNS необходимо в качестве первого nameserver в /etc/resolv.conf указать 127.0.0.1.

BIND

BIND (Berkeley Internet Name Domain, ранее Berkeley Internet Name Daemon) --- одна из самых функциональных и популярных в мире реализаций DNS-сервера, разарабатываемая Internet Service Consorcium. Большинство RFC по данной тематике разработаны этой же организацией. bind --- имя пакета, соответствующая служба называется named. Запускается BIND из изолированного окружения /var/lib/bind.

[root@demo ~]# cd /var/lib/bind/
[root@demo bind]# ls
dev  etc  var  zone

В подкаталоге /etc находятся конфигурационные файлы. В подкаталоге /zone размещена информация о зонах --- соответствиях между ip-адресами, доменами, почтовыми серверами, и т.п. Редактировать следует файл local.conf. При это стоит учитывать, что на момент использования этого файла BIND будет работать в изолированном окружении.

Пример настройки можно посмотреть в файле localdomain.

[root@demo bind]# cat zone/localdomain
$TTL    1D
@       IN      SOA     localhost. root.localhost. (
                                2008070800      ; serial
                                12H             ; refresh
                                1H              ; retry
                                1W              ; expire
                                1H              ; ncache
                        )
        IN      NS      localhost.
        IN      A       127.0.0.0
localhost       IN      CNAME   localhost.

Запись типа SOA определяет различные параметры зоны, такие как время жизни, время обновления и т.п. serial --- число, которое должно увеличиваться каждый раз, когда изменяется содержимое зоны. Обычно в serial указывают дату редактирования.

Аналогично задаётся обратное преобразование:

[root@demo bind]# cat zone/127.in-addr.arpa
$TTL    1D
@       IN      SOA     localhost. root.localhost. (
                                2008070800      ; serial
                                12H             ; refresh
                                1H              ; retry
                                1W              ; expire
                                1H              ; ncache
                                )
        IN      NS      localhost.
        0.0.0   IN      PTR     localdomain.
        1.0.0   IN      PTR     localhost.

Устройство обратной зоны ориентировано на сети, и поэтому в названии старший байт находится справа, а младшие слева (так как старшие байты идентифицируют сеть, а младшие --- хосты).

Обратите внимание, что при редактировании зоны, если вы не просто добавляете CNAME, необходимо внести соответствующие изменения и в зону обратного преобразования. Естественно, это надо делать, только если задача обратного DNS решается на этом же сервере. Напомним, что провайдер может предоставлять услугу обратного DNS, и в таком случае заботится о существовании и корректности зоны обратного преобразования должен он.

Для удобства конфигурирования нескольких DNS-серверов существует возможность указать один из серверов в качестве основного (master), а все остальные в качестве вторичных, slave-серверов. Slave-серверам задается адрес основного сервера, и в дальнейшем все slave автоматически синхронизируют настройки с master. Таким образом, можно легко организовать несколько DNS-серверов, идентичных с точки зрения внешнего мира.

Так же имеет смысл запретить рекурсивные запросы для всех машин, кроме тех, для адресации которых предназначен данный DNS-сервер.

DNS предоставляет возможность преоброзовывать символьное имя машины в её внутренний или внешний адрес в зависимости от того, откуда поступил запрос. Технология, обеспечивающаю эту функциональность, называется split horizon. В BIND она реализована как BIND View Clause.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

66

1

1

1

1

ArtemSerebriyskiy, Allena, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080731/04Chroot (last edited 2008-10-16 12:48:07 by FrBrGeorge)