русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Административные средства DNS


Дата добавления: 2013-12-23; просмотров: 759; Нарушение авторских прав


Шаг 12

Шаг 11

Шаг 10

Шаг 9

Шаг 8

Шаг 7

Шаг 6

Шаг 5

Шаг 4

Шаг 3

Шаг 2

Шаг 1

Мы должны найти совместно-используемые библиотеки от которых зависит named (named √ это DNS демон). Их будет нужно позже скопировать в chroot ⌠окружение■.

Для поиска подобных библиотек используйте следующую команду:

[root@deep /]# ldd /usr/sbin/named

libc.so.6 => /lib/libc.so.6 (0x40017000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

 

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

Сейчас мы должны определить chroot окружение и создавать корневой каталог для него. Мы выбрали каталог ⌠/chroot/named■, потому что хотим разместить ее на независимом разделе, чтобы предотвратить атаки на файловую систему. Раньше, во время инсталляции Linux мы создали раздел ⌠/chroot■ специально предназначенный для этого.

[root@deep /]# /etc/rc.d/init.d/named stop

(требуется ввести только если сещуствующий named демон запущен)

Shutting down named: [ OK ]

[root@deep /]# mkdir -p /chroot/named

Затем, создаем остальные каталоги:

[root@deep /]# mkdir /chroot/named/dev

[root@deep /]# mkdir /chroot/named/lib

[root@deep /]# mkdir /chroot/named/etc

[root@deep /]# mkdir -p /chroot/named/usr/sbin

[root@deep /]# mkdir -p /chroot/named/var/run



[root@deep /]# mkdir /chroot/named/var/named

 

Сейчас копируем основные конфигурационные файлы, файлы с описаниями зон, программы named named-xfer в необходимые места:

[root@deep /]# cp /etc/named.conf /chroot/named/etc/

[root@deep /]# cd /var/named ; cp -a . /chroot/named/var/named/

[root@deep /]# mknod /chroot/named/dev/null c 1 3

[root@deep /]# chmod 666 /chroot/named/dev/null

[root@deep /]# cp /usr/sbin/named /chroot/named/usr/sbin/

[root@deep /]# cp /usr/sbin/named-xfer /chroot/named/usr/sbin/

 

ВАЖНОЕ ЗАМЕЧАНИЕ. Для подчиненного сервера имен владельцем каталога ⌠/chroot/named/var/named■ и всех файлов расположенных в нем должен быть процесс с ⌠named■, иначе вы не сможете осуществить пересылку зоны. Чтобы сделать на подчиненном сервере владельцем каталога ⌠named■ и всех файлов лежащих в нем пользователя ⌠named■ используйте следующую команду:

 

[root@deep /]# chown -R named.named /chroot/named/var/named/

Копируйте разделяемые библиотеки определенные на шаге 1 в chroot каталог lib:

[root@deep /]# cp /lib/libc.so.6 /chroot/named/lib/

[root@deep /]# cp /lib/ld-linux.so.2 /chroot/named/lib/

Копируйте файлы ⌠localtime■ и ⌠nsswitch.conf■ в chroot каталог etc, чтобы элементы файлов регистрации были правильно установлены для вашей временной зоны:

[root@deep /]# cp /etc/localtime /chroot/named/etc/

[root@deep /]# cp /etc/nsswitch.conf /chroot/named/etc/

 

Для большей безопасности на некоторые файлы из каталога ⌠/chroot/named/etc■ мы должны установить бит постоянства:

[root@deep /]# cd /chroot/named/etc/

[root@deep etc]# chattr +i nsswitch.conf

[root@deep /]# cd /chroot/named/etc/

[root@deep etc]# chattr +i named.conf

Файл с атрибутом +i не может быть модифицирован, удален или переименован; к нему не может быть создана ссылка и никакие данные не могут быть записаны в него. Только суперпользователь может установить или снять этот атрибут.

 

Добавьте новый UID и новый GID для запуска демона ⌠named, если они еще не определены. Это важно, так как запуск его как root нарушит правильное функционирование ⌠окружения, а использование существующих пользовательских id позволит вашему сервису получить доступ к другим ресурсам.

Проверьте файлы ⌠/etc/passwd и ⌠/etc/group на наличие свободных UID/GID. В нашем примере, мы используем номер ⌠53 и имя ⌠named.

[root@dep]# useradd -c DNSServer -u 53 -s /bin/false -r -d /chroot/named named 2>/dev/null || :

 

Мы должны сказать syslogd (демону системы syslog) о новом chrooted сервисе: Обычно, процессы обращаются к syslogd через ⌠/dev/log■. chroot-овое ⌠окружение■, этого сделать не сможет, поэтому syslogd необходимо объяснить, что нужно слушать ⌠/chroot/named/dev/log■ вместо принятого по умолчанию ⌠dev/log■. Чтобы сделать это, нужно редактировать скрипт запуска syslog.

Редактируйте скрипт syslog (vi +24 /etc/rc.d/init.d/syslog) и измените следующую строку:

daemon syslogd -m 0

Должна читаться как:

daemon syslogd -m 0 -a /chroot/named/dev/log

 

Скрипт для запуска ISC BIND/DNS по умолчанию настроен для запуска его вне chroot ⌠окружения. Мы должны внести следующие изменения в файл named (vi /etc/rc.d/init.d/named), чтобы исправить это:

[ -f /usr/sbin/named ] || exit 0

Должна читаться:

[ -f /chroot/named/usr/sbin/named ] || exit 0

[ -f /etc/named.conf ] || exit 0

Должна читаться:

[ -f /chroot/named/etc/named.conf ] || exit 0

 

daemon named

Должна читаться:

daemon /chroot/named/usr/sbin/named -t /chroot/named/ -unamed -gnamed

Опция ⌠-t говорит named запускаться, используя новое chroot окружение.

Опция ⌠-u определяет пользователя от имени которого стартует named.

Опция ⌠-g определяет группу от имени которой стартует named.

 

В BIND 8.2, команда ⌠ndc■ стала двоичным файлом (ранее, это был скрипт), которая в этой конфигурации не работает. Чтобы исправить это, пакет ISC BIND/DNS должен быть скомпилирован из исходных кодов.

[root@deep /]# cp bind-src.tar.gz /vat/tmp

[root@deep /]# cd /var/tmp/

[root@deep tmp]# tar xzpf bind-src.tar.gz

[root@deep tmp]# cd src

[root@deep src]# cp port/linux/Makefile.set port/linux/Makefile.set-orig

Редактируем файл Makefile.set (vi port/linux/Makefile.set) и делаем в нем следующие изменения:

'CC=egcs -D_GNU_SOURCE'

'CDEBUG=-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions –g

'DESTBIN=/usr/bin'
'DESTSBIN=/chroot/named/usr/sbin'
'DESTEXEC=/chroot/named/usr/sbin'
'DESTMAN=/usr/man'
'DESTHELP=/usr/lib'
'DESTETC=/etc'
'DESTRUN=/chroot/named/var/run'
'DESTLIB=/usr/lib/bind/lib'
'DESTINC=/usr/lib/bind/include'
'LEX=flex -8 -I'
'YACC=yacc -d'
'SYSLIBS=-lfl'
'INSTALL=install'
'MANDIR=man'
'MANROFF=cat'
'CATEXT=$$N'
'PS=ps p'
'AR=ar crus'
'RANLIB=:'

Различие между Makefile, который мы использовали прежде и новым, заключается в изменении строк ⌠DESTSBIN=■, ⌠DESTEXEC=■ и ⌠DESTRUN=■. В них мы задаем новое месторасположение файлов и теперь программа ⌠ndc■ будет знать, где находится ⌠named■.

[root@deep src]# make clean
[root@deep src]# make
[root@deep src]# cp bin/ndc/ndc /usr/sbin/
[root@deep src]# cp: overwrite `/usr/sbin/ndc ? y
[root@deep src]# strip /usr/sbin/ndc

Мы создали двоичный файл, а затем копируем полученную программу ⌠ndc в ⌠/usr/sbin, переписывая старую. Мы не должны забыть выполнить команду strip для улучшения производительности.

 

Также хорошей идеей будет создание новых двоичных файлов ⌠named■ и ⌠named-xfer■, чтобы грантировано использовать одну и туже версию ⌠named■ и ⌠ndc■.

Для named:

[root@deep /]# cd /var/tmp/src
[root@deep src]# cp port/linux/Makefile.set-orig port/linux/Makefile.set
[root@deep src]# cp: overwrite `port/linux/Makefile.set ? y

Редактируйте файл Makefile.set (vi port/linux/Makefile.set) и внесите в него следующие изменения:

'CC=egcs -D_GNU_SOURCE'
'CDEBUG=-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions –g

'DESTBIN=/usr/bin'
'DESTSBIN=/usr/sbin'
'DESTEXEC=/usr/sbin'
'DESTMAN=/usr/man'
'DESTHELP=/usr/lib'
'DESTETC=/etc'
'DESTRUN=/var/run'
'DESTLIB=/usr/lib/bind/lib'
'DESTINC=/usr/lib/bind/include'
'LEX=flex -8 -I'
'YACC=yacc -d'
'SYSLIBS=-lfl'
'INSTALL=install'
'MANDIR=man'
'MANROFF=cat'
'CATEXT=$$N'
'PS=ps p'
'AR=ar crus'
'RANLIB=:'
[root@deep src]# rm -f .settings
[root@deep src]# make clean
[root@deep src]# make
[root@deep src]# cp bin/named/named /chroot/named/usr/sbin
[root@deep src]# cp: overwrite `/chroot/named/usr/sbin/named ? y
[root@deep src]# cp bin/named-xfer/named-xfer /chroot/named/usr/sbin
[root@deep src]# cp: overwrite `/chroot/named/usr/sbin/named-xfer ? y
[root@deep src]# strip /chroot/named/usr/sbin/named
[root@deep src]# strip /chroot/named/usr/sbin/named-xfer

Мы удалили файл ⌠.settings■, так как система кэширует в нем переменные и выполнили команду ⌠make clean■, чтобы убедиться, что у нас не возникнут старые наложения. После того, как создан файл ⌠named■, мы копируем его вместе с ⌠named-xfer■ в chroot каталог и используем команду ⌠strip■ для улучшения производительности новых исполняемых файлов.

Удаление ненужных файлов и каталогов.

[root@deep /]# rm -f /usr/sbin/named
[root@deep /]# rm -f /usr/sbin/named-xfer
[root@deep /]# rm -f /etc/named.conf
[root@deep /]# rm -rf /var/named/

Мы удаляем ⌠named■ и ⌠named-xfer■ из ⌠/usr/sbin■, так как они будут теперь запускаться из chroot каталога. Тоже самое проделываем и для файла ⌠named.conf■ и каталога ⌠/var/named■.

Мы должны тестировать новую chroot-овую конфигурацию ISC BIND/DNS.

Первое, перезапустите ваш syslogd демон:

[root@deep /]# /etc/rc.d/init.d/syslog restart

Shutting down kernel logger: [ OK ]

Shutting down system logger: [ OK ]

Starting system logger: [ OK ]

Starting kernel logger: [ OK ]

Теперь можно запустить chroot версию ISC BIND/DNS:

[root@deep /]# /etc/rc.d/init.d/named start

Starting named: [ OK ]

Проверяем, что ISC BIND/DNS запущен от имени пользователя ⌠named■ с новыми аргументами:

[root@deep /]# ps auxw | grep named
named 11446 0.0 1.2 2444 1580 ? S 23:09 0:00 /chroot/named/usr/sbin/named -t /chroot/named/ -u named √g named

Первая колонка говорит, что программа запущена с UID ⌠named■. Конец строки должен содержать ⌠named -t /chroot/named/ -u named √g named■, представляющие из себя новые аргументы.

Очистка после работы

[root@deep /]# rm -rf /var/tmp/src bind-src.tar.gz

Эта команда перемещает исходные файлы и tar архив, которые мы использовали при компиляции и инсталляции ISC BIND/DNS.

Дополнительная документация

Для получения большей информации вы можете читать следующие страницы руководства:

$ man dnsdomainname (1) √ показывает доменное имя системы
$ man dnskeygen (1) √ создает публичный, приватный и разделяемый секретные ключи для DNS Security
$ man dnsquery (1) √ запрос доменного имени, используя распознаватель (resolver)
$ man named (8) √ сервер доменной службы имен (DNS)
$ man hesiod_to_bind [hesiod] (3) √ Интерфейсная библиотека к серверу имен Hesiod
$ man ldconfig (8) √ определяет связи времени выполнения
$ man lesskey (1) √ определяет ключ связанный с less
$ man raw (8) - привязывает ⌠сырые■ символьные устройства Linux
$ man mkfifo (1) √ создает FIFO (именные каналы)
$ man named-bootconf (8) √ конвертирует конфигурационный файл сервера имен
$ man named-xfer (8) √ вспомогательный агент для входящей зонной пересылки
$ man named.conf [named] (5) √ конфигурационный файл
$ man Opcode (3) √ Отключает opcode-ы named, когда компилируется perl код
$ man dig (1) √ посылает запросы к серверу имен
$ man nslookup (8) √ создание интерактивных запросов к серверу имен
$ man ndc (8) √ программа контролирующая работу сервера имен

 

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



<== предыдущая лекция | следующая лекция ==>
Тема 5. Информация | Nslookup


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

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


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.