Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МУ2799_Лаб1-5_Linux

.pdf
Скачиваний:
21
Добавлен:
11.05.2015
Размер:
833.85 Кб
Скачать

address <IР-адрес>

netmask <маска подсети>

gateway <шлюз по умолчанию> }

Если в файле присутствует строчка auto <интерфейс>, то операционная система настроит указанный интерфейс в процессе загрузки.

Если указана строчка allow-hotplug <интерфейс>, то интерфейс будет автоматически настроен по запросу подсистем ядра.

Сетевой интерфейс можно настроить несколькими способами. Способ настройки интерфейса определяется в строчке iface. Метод loopback

используется для настройки loopback-интерфейса, метод dhcp означает, что интерфейсу IP-адрес будет назначен службой DHCP; метод static означает,

что интерфейсу будет назначен статический IP-адрес.

Кроме того, машина Сервер должна быть сконфигурирована как маршрутизатор. Для этого в каталоге /etc/init.d следует создать файл forward, содержащий строчку

#!/bin/sh

echo "1" > /proc/sys/net/ipv4/ip_forward

Затем в каталоге /etc/rcS.d следует создать символическую ссылку

на файл /etc/init.d/forward:

In -s /etc/init.d/froward /etc/rcS.d/S60forward

Созданный сценарий /etc/init.d/forward динамически изменяет значение переменной ядра net.ipv4.ip_forward, которая разрешает или запрещает продвижение IP-пакетов. Во время запуска ядро считывает значения своих переменных из файла /etc/sysctl.conf. Поскольку машина Сервер будет всегда работать как маршрутизатор, то имеет смысл разрешить продвижение IP-пакетов во время загрузки ядра операционной системы. Для этого следует в файл /etc/sysctl.conf добавить строчку

net.ipv4.ip_forward=1

12

2.2. Настройка службы NAT

В операционной системе GNU/Linux трансляция сетевых адресов является частным случаем задачи преобразования сетевых пакетов. Правила преобразования пакетов задаются с помощью программы iptables. Формат командной строки этой программы таков:

iptables [-t <таблица>] {-А | -D} <последовательность> <правило> [<опции>]

iptables [-t <таблица>] -I <последовательность> [<номер правила>]

<правило> [<опции>]

 

iptables [-t <таблица>]

-R <последовательность> <номер правила>

<правило> [<опции>]

 

iptables [-t <таблица>]

-L [<последовательность>]

iptables [-t <таблица>]

-F [<последовательность>]

iptables [-t <таблица>]

-Р <последовательность> <действие>

iptables [-t <таблица>]

{-N | -X} <последовательность>

Таблицы правил.

Ключ -t указывает таблицу правил, над которой

будет произведена операция, определенная следующим ключом; если этот ключ не указан, то операция будет произведена над таблицей filter. В

ядро 2.6.x встроены следующие таблицы: filter, nat, mangle, raw.

Таблица filter предназначена для решения задачи фильтрации пакетов, nat

— для решения задачи трансляции сетевых адресов, mangle — для решения задач преобразования сетевых пакетов, не связанных с трансляцией сетевых адресов (например, изменение времени жизни пакета), raw — для решения задач отслеживания состояния соединения.

Операции. Следующий ключ определяет действие над таблицей правил.

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

(ключ ), удалить правило (ключ -D), вставить правило в определенную позицию (ключ -I), заменить правило (ключ -R), вывести все правила (ключ

-L), удалить все правила (ключ -F), задать действие по умолчанию (ключ ),

создать или удалить пользовательскую последовательность (ключи -N и -X

соответственно).

13

Последовательности правил. Правила в таблицах группируются в

последовательности, которые делятся на встроенные и пользовательские.

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

последовательности связаны с событиями жизненного цикла пакета в системе.

При получении пакета ядро проверяет правила из последовательности

PREROUTING. При получении пакета, адресованного локальному интерфейсу,

ядро проверяет правила из последовательности INPUT. При передаче пакета с одного локального интерфейса на другой ядро проверяет правила из по-

следовательности FORWARD. Перед маршрутизацией локального пакета ядро проверяет правила из последовательности OUTPUT. После маршрутизации пакета, полученного из сети, ядро проверяет правила из последовательности

P0STR0UTING. Поскольку разные таблицы правил предназначены для реше-

ния разных задач, то в разные таблицы встроены разные последовательности

правил.

Рис. 4. Жизненный цикл IP-пакета

14

Наглядное представление о жизненном цикле пакета в ядре

OCGNU/Linux дает рис. 4.

Правила. Правило представляет собой конъюнкцию элементарных

условий, т. е. правило срабатывает, когда срабатывают все его элементарные

условия. Некоторые элементарные условия приведены в таблице 1.

 

 

Таблица 1

 

Элементарные условия правил iptables

 

 

 

 

 

 

Условие

Описание

 

 

 

 

 

 

-[!]р

Это условие срабатывает, когда в

IP-пакет

 

<протокол>

инкапсулирован пакет указанного протокола. Такими

 

 

протоколами могут быть tcp, udp, icmp и некоторые

 

 

другие

 

 

 

 

 

-[!]s <адрес>

Это условие срабатывает, когда IP-пакет был порожден в

 

[/<маска>]

подсети, определяемой указанными адресом и маской

 

 

 

 

-[!]d <адрес>

Это условие срабатывает, когда IP-пакет направляется в

 

[/<маска>]

подсеть, определяемую указанными адресом и маской

 

 

 

 

-[!]i

Это условие срабатывает, если пакет был получен через

 

<интерфейс>

указанный интерфейс

 

 

 

 

 

-[!]о

Это условие срабатывает, если пакет должен быть

 

<интерфейс>

передан через указанный интерфейс

 

 

 

 

 

 

Если перед названием элементарного условия стоит знак «!», то условие будет срабатывать в ситуации, противоположной описанной.

Программа iptables может загрузить в ядро модули, проверяющие другие условия для пакета. Например, модуль tcp может проверять номера портов в заголовке TCP, состояние TCP-соединения, модуль mac

физический адрес отправителя, модуль iprange может проверять,

принадлежит ли IP-адрес отправителя или получателя указанному диапазону, connlimit может отслеживать количество соединений и т. д.

15

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

В следующей таблице описаны некоторые встроенные действия.

 

 

 

 

 

Таблица 2

 

 

Действия iptables

 

 

 

 

 

 

 

 

 

 

Действие

Описание

 

 

 

 

 

 

 

 

 

ACCEPT

Это действие продолжает жизненный цикл пакета

 

 

 

 

 

 

DROP

Это действие прерывает жизненный цикл пакета

 

 

 

 

 

QUEUE

Это действие отправляет пакет в пользовательскую очередь

 

 

коммуникационной подсистемы

ядра

NETLINK.

Эта

 

 

подсистема была специально спроектирована для того, что-

 

 

бы упростить разработку анализаторов сетевых протоколов

 

 

 

 

RETURN

Это действие прерывает обработку текущей пользователь-

 

 

ской последовательности и продолжает обработку вызвав-

 

 

шей последовательности

 

 

 

 

 

 

 

 

REJECT

Это действие аналогично DROP,

но имеет дополнительный

 

 

параметр

-reject-with, который

определяет

тип

 

 

ошибки, о которой хост-отправитель будет уведомлен с

 

 

помощью протокола ICMP

 

 

 

 

 

 

 

SNAT

Это действие заменяет адрес отправителя пакета на адрес,

 

 

указанный

в параметре -to-source. Это действие

 

 

допустимо указывать только в последовательности

 

 

P0STR0UTING таблицы nat

 

 

 

 

 

 

 

MAQUERADE

Это действие заменяет адрес отправителя пакета на адрес

 

 

интерфейса, через который будет отправлен пакет. Это дей-

 

 

ствие допустимо указывать только в последовательности

 

 

P0STR0UTING таблицы nat

 

 

 

 

 

 

 

 

 

 

 

16

 

Продолжение таблицы 2

 

 

 

DNAT

Это действие заменяет адрес получателя на адрес, указанный

 

 

в аргументе -to-destination. Этот аргумент имеет

 

 

следующий формат: <IР-адрес получателя>:<ТСР-

 

 

порт получателя> Это действие допустимо указывать

 

 

только в последовательности PREROUTING и OUTPUT

 

 

таблицы nat. Это действие позволяет организовать проброс

 

 

портов через NAT

 

 

 

 

3. Пример выполнения лабораторной работы

Рассмотрим сеть (рис. 5):

Рис. 5. Пример схемы сети для первой части лабораторной работы

3.1. Настройка сетевых адаптеров

Конфигурационный файл /etc/network/interfaces на машине Сервер может выглядеть следующим образом:

auto lo

iface lo inet loopback

auto eth0

17

iface eth0 inet static address 192.168.205.4 netmask 255.255.255.0 gateway 192.168.205.2

auto eth1

iface eth1 inet static address 10.3.5.1 netmask 255.255.255.0

Конфигурационный файл /etc/network/interfaces на машине Клиент может выглядеть следующим образом:

auto lo

iface lo inet loopback auto eth0

iface eth0 inet static address 10.3.5.2 netmask 255.255.255.0 gateway 10.3.5.1

3.2. Настройка службы NAT

Для того чтобы настроить трансляцию сетевых адресов для сети,

изображенной на рис. 5, на машине Сервер следует выполнить команду:

iptables -t nat

-A POSTR0UTING

-о eth0

-j SNAT --to-source 192.168.205.

Лабораторная работа №3 «Установка и настройка сервера DNS»

Цель работы — изучение сервера DNS для операционной системы

GNU/Linux.

18

1.Задание кафедры

1.На виртуальной машине Сервер полигона установить сервер DNS.

2.На DNS-сервере создать зоны прямого и обратного просмотра, занеся туда информацию обо всех машинах полигона.

3.Прописать на всех машинах полигона корректный DNS-суффикс и на-

строить все компьютеры полигона на использование установленногоDNS-

сервера для разрешения DNS-запросов.

4.Настроить установленный сервер DNS на перенаправление запросов, ко-

торые он не может разрешить, нa DNS-сервер кафедры АСУ

(172.19.42.10).

5.Настроить установленный DNS-сервер таким образом, чтобы он имел воз-

можность разрешать DNS-запросы о хостах, находящихся в других поли-

гонах: для зон DNS полигонов, находящихся на компьютерах РС50-РС53,

использовать условное перенаправление запросов; для зон DNS полиго-

нов, находящихся на компьютерах РС54-РС56, создать зоны заглушки;

сделать установленный DNS-сервер носителем вторичных зон DNS поли-

гонов, находящихся на компьютерах РС57-РС60.

2.Указания к выполнению работы

Существует несколько свободных реализаций DNS-сервера. Наиболее известные приведены ниже.

BIND—кэширующий, рекурсивный и авторитетный DNS-сервер [1]. К

недостаткам следует отнести «тяжеловесность» (на виртуальной машине демон использует около 10 Мб памяти), а также наличие серьѐзных проблем в безопасности, которые, вообще говоря, характерны для любой монолитной реализации DNS-сервера — по этой причине на некоторых корневых DNS-серверах BIND был заменѐн на NSD. Более безопасными следует признать такие архитектуры DNS-серверов, в которых функции авторитетных и рекурсивных DNS-серверов выполняют независимые друг от друга процессы.

19

NSD—авторитетный DNS-сервер [2]. Этот DNS-сервер может быть носителем как первичных, так и вторичных зон DNS, однако не поддерживает динамические обновления зон — разработчики предлагают использовать код BIND'а для того, чтобы добавить в NSD

возможность обновления зон.

Unbound — кэширующий рекурсивный DNS-сервер [З]. Может выполнять функции авторитетного сервера, но не поддерживает передачу зон. К достоинствам этого сервера следует отнести малое потребление памяти: связка Unbound+NSD потребляет в 4 раза меньше памяти, чем выполняющий те же функции BIND; кроме того в архитектуру сервера изначально были заложены элементы обеспечения безопасности (проверка DNS-ответов, работа с минимальными привилегиями, изоляция рабочего каталога (chrooting),

противостояние некоторым хакерским атакам). Единственным недостатком этого сервера является то, что в нѐм отсутствует функция безусловного перенаправления DNS-запросов, хотя, возможно, от этой функции разработчики решили отказаться по соображениям безопасности.

DJBDNS—набор DNS-утилит, в котором акцент сделан на модульность: основные функции системы DNS (переадресация и кэширование DNS-запросов, разрешение DNS-запросов для первичных зон, передача зон) выполняются разными процессами. Недостатком реализации следует признать то, что эти процессы находятся под управлением супервизора, работающего с правами суперпользователя.

Рассмотрим настройки сервера BIND.

2.1. Настройка поведения сервера BIND

В дистрибутив Debian сервер BIND входит в виде пакета bind9.

Настройки сервера BIND хранятся в конфигурационном файле, путь к

которому следует передать через ключ командной строки; по умолчанию,

20

используется файл /etc/named.conf. В общем случае, конфигурационный файл сервера состоит из двух частей: параметров работы сервера и описаний зон DNS.

Параметры работы сервера задаются в секции options, которая, в

простейшем случае, имеет следующий синтаксис: options {

[ recursive = { yes I no }; ]

[ forwarders { <список 1Р-адресов> }; ]

};

В принципе, секция options является необязательной. Опция recursive разрешает или запрещает серверу выполнять рекурсивные DNS-запросы. Опция forwarders указывает, какому DNS-серверу следует переадресовывать DNS-запросы, которые данный сервер разрешить не в состоянии.

Каждая зона описывается в секции zone, которая, в простейшем

случае, имеет следующий синтаксис: zone <имя зоны> {

type { master | slave | stub | forward }; [check-names { warn | fail | ignore };]

[masters {<IР-адреса авторитетных DNS-серверов;};]

[forwarders { <IР-адреса кэширующих DNS-серверов;};]

[allow-transfer {<список IP-адресов в нотации CIDR>};] [allow-updates {<список IP-адресов в нотации CIDR>};] [file "<путь к файлу зоны>"; ]

};

Опция type определяет тип зоны. Если значение этой опции равно master, то эта зона является первичной; в этом случае необходимо указать значение опции file, значения опций masters и forwarders в этом случае указывать нельзя.

21