Как заменить grub загрузчиком windows



ТЕХНИЧЕСКОЕ ВЫСШЕЕ ОБРАЗОВАНИЕ В БРНО БРНО ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

1 Техническое высшее образование в Брно Брно Технологическое факультет электротехники и института коммуникационных технологий телекоммуникационного факультета электротехники и департамента связи по телекоммуникационным учреждению интернет -шлюза Linux с использованием передового фильтрации магистра . ТОМАШ МАТОХА ИНГ. МОЙМИР ЕЛИНЕК БРНО 2009

2 ТЕХНИЧЕСКОЕ ВЫСШЕЕ ОБРАЗОВАНИЕ В БРН Факультет электротехники и коммуникационных технологий Институт телекоммуникаций Дипломная работа Магистерская специализация Телекоммуникации и информационные технологии Студент: Bc. Томаш Матоха ID: Год: 2 Учебный год: 2008/2009 НАИМЕНОВАНИЕ ТЕМЫ: Реализация интернет-шлюза на Linux с расширенной фильтрацией ИНСТРУКЦИЯ ПО ПОДГОТОВКЕ: Реализация интернет-шлюза с использованием операционной системы Linux Gentoo, создание и тестирование передовых методов безопасности. Цель также состоит в том, чтобы сравнить поведение в различных дистрибутивах Linux и реализовать базу данных для хранения соответствующих данных. РЕКОМЕНДУЕМАЯ ЧТЕНИЕ: [1] NEMETH, E., SNYDER, G., HEIN T. Linux — Полное руководство администратора. Computer Press, стр. ISBN: [2] ŠŤASTNÝ, Петр. Типы таблиц в MySQL [онлайн] [цит. по ссылке]. Доступно на WWW: Дата задания: Дата подачи: Руководитель: Ing. Моймир Елинек проф. Инж. Камил Врба, CSc. Председатель совета кафедры ВНИМАНИЕ: Автор дипломной работы не должен нарушать авторские права третьих лиц при создании диссертации, в частности не должен неправомерным образом вмешиваться в авторские права других лиц и должен полностью осознавать последствия нарушение положений 11 и последующих Закона об авторском праве № 121/2000 Сб., включая возможныеуголовно-правовых последствий, вытекающих из положения 152 Закона об уголовных преступлениях № 140/1961 Coll.

3 РЕЗЮМЕ Работа Реализация интернет-шлюза на Linux с расширенной фильтрацией направлена ​​на установку операционной системы Linux на старые компьютеры, которая функционирует как шлюз для подключения клиентов во внутренней сети к Интернету. В работе описано создание расширенной фильтрации с помощью iptables. Показаны некоторые виды защиты от атак из Интернета. Расширенные механизмы управления трафиком (например, tcaqdisc) обсуждаются в следующих главах.Эта система очередей оказывается очень полезной в тех случаях, когда необходимо иерархически распределять трафик между пользователями. Описаны типы очередей и построена конфигурация для клиентов во внутренней сети. Также упоминается использование кэширующего DNS-сервера, а также приложения denyhosts, которое повышает общую безопасность системы. Наличие собственного DNS-сервера оправдывает себя, особенно если мы хотим уменьшить трафик данных. Последняя глава посвящена серверу RADIUS и его реализации с использованием базы данных apache и mysql. Описаны возможности некоторых вариантов конфигурации отдельных сервисов, а также приведены примеры конфигураций. Наконец, демонстрируется система аутентификации пользователей через сервер RADIUS. Вся работа пытается дать комплексное представление о проблеме безопасности и фильтрации. КЛЮЧЕВЫЕ СЛОВА CBQ, HTB, Denyhosts, SSH, шлюз, привязка, радиус, AAA, Linux, Gentoo, маршрутизатор, брандмауэр, DNS, ядро ​​Linux, авторизация. АННОТАЦИЯ Диссертация Создание интернет-шлюза Linux с использованием расширенной фильтрации посвящена установке операционной системы Linux на старые компьютеры, которая функционирует как шлюз для подключения клиентов во внутренней сети к Интернету. В диссертации описывается создание расширенного фильтра с использованием iptables. Показаны некоторые виды защиты отатаки из Интернета. В других главах обсуждаются расширенные механизмы управления трафиком (такие как atcandaqdisc), системная очередь, которая очень полезна там, где необходимо иерархически разделить трафик между пользователями. В нем описаны типы очередей и собранные конфигурации для клиентов во внутренней сети. В следующей главе описывается тип DNS-сервера, предназначенный только для кэширования, и приложения, запрещающие хосты, что повышает общую безопасность системы. Наличие собственного сертифицированного DNS-сервера, особенно если мы хотим уменьшить трафик данных. В последней главе описывается сервер RADIUS и его реализация с использованием базы данных Apache и MySQL. Кроме того, описаны варианты конфигурации и приведены примеры конкретных конфигураций. Наконец, была представлена ​​система аутентификации через сервер RADIUS. В диссертации делается попытка дать комплексное представление о безопасности и фильтрации. КЛЮЧЕВЫЕ СЛОВА CBQ, HTB, Denyhosts, SSH, шлюз, привязка, радиус, AAA, Linux, Gentoo, маршрутизатор, брандмауэр, DNS, ядро ​​Linux, авторизация.

4 MATOCHA T. Реализация интернет-брандмауэров на Linux с защищенным фильтром. Брно: Высокие технические ученые. Факультет электротехники и коммуникационных технологий. Ústav telekomunikací, Počet stran 83., Počet příloh 4. Ведущее дипломированное предприятие Ing. Моймир Елинек.

5 PROHLÁŠENÍ Prohlašuji, že svou diplomovou práci na téma Realizace internetové brány na Linuxu spokročilýmfiltrováním jsemvypracovalsamostatněpodvedenímvedoucíhodiplomové práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou všechny citovány v práci a uvedeny v seznamu literatury na konci práce. Яко автор руководил дипломатической практикой после завершения, а также в сотрудничестве с вытворенным тето дипломатической практикой, которую он не поручил авторской праве третий особ, зеймен йсэм незасах недоволенв отношении личных авторских прав других людей, и я полностью осведомлен о последствиях нарушения положений 11 и последующих Закона об авторском праве № 121/2000 Coll., включая возможные уголовные последствия, вытекающие из положений 152 Уголовного закона № 140. /1961 Сб. ВБрнедне (подпись автора)

6 Благодарности Я благодарю научного руководителя Ing. Моймир Елинек, аспирант Института телекоммуникаций BUT Брно. Он дал мне значительную свободу в выполнении задания, благодаря чему я смог применить свои знания об операционной системе Gentoo Linux. В то же время я был бы очень признателен за его терпение, а также за то, что он всегда встречает меня с добрым лицом.

7 СОДЕРЖАНИЕ 1 Конфигурация системы Введение Установка операционной системы Linux Подготовка дисков Создание разделов Выбор файловой системы Создание файловой системы Установка архива Portage и Stage Настройка параметров компиляции Установка базовой системы Конфигурация ядра Конфигурация системы Основные сетевые настройки Загрузчик Дополнительные инструменты Брандмауэр Что это брандмауэр? Типы межсетевых экранов Netfilteraiptables Модули Netfilter Использует правила на сервере Базовая защита Защита от сканирования портов Мониторинг соединений Проблема MTUuADSL Маскарад Typeofservice(TOS) Qosvlinux Дисциплинирует очереди Бесклассовые очереди Очереди на основе классов Iroute2 на сервере Принцип правил Реализация правил. 40

8 4 Другие подходящие приложения DNS Иерархия доменов Разделение DNS Bindnaserver Denyhosts Сервер RADIUS Структура Radius Пакет RADIUS Протокол учета MySQL+Apache+Freeradius MySQL Freeradius Функции Apache Заключение 58 Ссылки 60 Список символов, количеств и сокращений 62 Список приложений 65 A Приложения к тексту 66 A.1 Часть 1.-Настройка ядра для поддержки frameworkunetfilter A.2 Часть 2.-Обзор полезных приложений proserver A.3 Часть 3.-Настройка сервера Apache B Настройки брандмауэра 69 C Qdisc 75 D Содержание прилагаемого DVD 81

9 СПИСОК ИЗОБРАЖЕНИЙ 1.1Пример подключения сервера в качестве шлюза с использованием 2-х интерфейсов Описание пути прохождения пакета через netfilter Полное представление прохождения пакета через presiptables Представление распределения распределения трафика Распределение средней загрузки трафика Принцип аутентификации с использованием сервера radius Структура пакета RADIUS Структура AVPpart пакета RADIUS Форма входа. 57

10 СПИСОК ТАБЛИЦ 1.1 Список необязательных параметров для загрузки системы с носителя Команды, используемые для создания необходимых файловых систем. Здесь хорошо видно, что ext2 и ext3 отличаются использованием -j, включающим индексацию Включение опции динамической загрузки и удаления модулей во время выполнения Настройка процессора для сервера, построенного на архитектуре x86 с процессором emp Настройка FAT и поддержка NTFS для платформ работающих на ОС Windows Возможные значения Включение модуля поликода, создание VPN А.1 Настройка поддержки фреймворка netfilter и iptables в ядре серии А.2 Несколько важных программ для правильного функционирования сервер. 67

11 ВВЕДЕНИЕ Сегодня практически каждый столкнулся с Интернетом — всемирной системой взаимосвязанных компьютерных сетей. По сути, это одна большая сеть, состоящая из множества более мелких сетей. Чтобы компьютеры могли общаться друг с другом, мы должны использовать так называемые протоколы. Наиболее известным протоколом Интернета является протокол http 1. Интернет представляет собой соединение компьютерных сетей с использованием так называемых узлов. Узлом может быть, например, устройство под названием роутер 2, или, в нашем случае, компьютер, который в первую очередь предназначен для этой цели. Мы обычно называем такой компьютер шлюзом, который представляет собой не что иное, как интерфейс между внешней сетью (Интернет) и внутренней сетью (локальной сетью). Как у каждого дома есть свой почтовый адрес, так и в Интернете есть уникальные идентификационные номера, которые мы называем IP-адресами. Разбиваем IP-адреса на несколькоклассов, но для нас важно то, что сегодня наиболее используемая версия IPv4 состоит всего из четырех байтов, что дает нам 2 32 возможных комбинации (некоторые комбинации зарезервированы заранее для определенных целей), что дает примерно 4,3 миллиарда комбинаций. Из сделанного вывода нам ясно, что общее количество возможных уникальных адресов отнюдь не головокружительно, ведь в мире всего около 5 миллиардов человек, именно поэтому интернет-провайдер обычно назначает нам один IP-адрес . С точки зрения Интернета, не имеет значения, находится ли один клиентский компьютер за шлюзом или локальная сеть, состоящая из нескольких компьютеров, Интернет предстает как один клиент с единым адресом. Для того, чтобы иметь возможность разделить таким образом трафик между локальными компьютерами, мы используем мектомунат 3. Маршрутизаторы часто не имеют такой свободы настроек, как на шлюзе, работающем на компьютере, поэтому выгодно заменить маршрутизатор на шлюз, особенно там, где мы хотим определенным образом определить правила трафика, будь то маршрутизация портов, фильтрация и т. д. Количество клиентов также имеет решающее значение. Для одного клиента наверное нет особого смысла настраивать шлюз, а вот простого роутера с базовыми настройками будет достаточно. Однако возникает другая ситуация, если мы хотим использовать другие сетевые службы, например, ssh 4 или веб-сервер. Здесь мы снова применим почти неограниченные возможности настройки. В начале хорошо бы иметь хотя бы примерное представление о том, какую функцию будут выполнять ворота. Что касается аппаратной части, процессор с частотой от 500 МГц до 1 ГГц, МБ ОЗУ, достаточно быстрые жесткие диски и сетевой интерфейс не менее 100 Мбит легко справляются с большинством типичных задач и в то же время маршрутизируют объемные потоки данных. Существует множество факторов, влияющих на производительность сервера, и поэтому, если от такого старого компьютера не ожидается, что он сможет обрабатывать большую базу данных с сотнями обращений в день, ничто не мешает его использованию. В общем, самая главная проблемаПамять. Здесь действует правило чем больше, тем лучше, потому что каждое запущенное приложение, каждое соединение cp 5 выделяет память, если предполагается запустить уже упомянутый веб-сервер, наличие достаточного количества памяти окупается вдвойне. Однако это не 9

12 хороших серверов (шлюзов) для использования при максимальной нагрузке, некоторый запас всегда пригодится. Другое железо уже не столь важно, особенно графический адаптер, ведь сервер настраивается только вначале, например, с помощью монитора, а последующее его обслуживание будет осуществляться через сетевой интерфейс. В этом случае подойдет любой старый доступный графический адаптер. Последним шагом является выбор подходящей операционной системы, которая будет работать на сервере. Здесь вы можете выбрать один из нескольких вариантов. Почти все знают продукты Microsoft и их Windows, будь то настольные или серверные. Недостатков использования продуктов Microsoft достаточно много, а потому с операционной системой Linux выбор идет совсем в другом направлении. добавлять разные утилиты и разные демоны, это создает так называемый дистрибутив. В настоящее время существует множество дистрибутивов, и выбор в большей или меньшей степени зависит от пользователя и от того, для чего используется выбранный дистрибутив. систем, здесь мы будем иметь дело с дистрибутивом Gentoo, который использует систему bsd с 8 портами, называемую portage, которая представляет собой систему пакетов, обеспечивающую большую гибкость в установке и обслуживании всей системы. В этом дистрибутиве у вас есть полный контроль над тем, какие пакеты будут или не будут установлены. В этом случае вся система строится на заказ, в соответствии с конкретными пожеланиями пользователя. Однако это усложняет установку, поэтому не рекомендуетсяновички. 1 (HypertextTransferProtocol) — интернет-протокол, изначально предназначенный для обмена гипертекстовыми документами в формате HTML. 2 Маршрутизатор или маршрутизатор — это сетевое устройство, которое пересылает дейтаграммы в указанное место назначения, используя так называемую маршрутизацию. 3 (NetworkAddressTranslation) — это метод изменения сетевого трафика через шлюз путем перезаписи IP-адреса по умолчанию или IP-адреса назначения порта. 4 (Secure Shell) — это программа, обеспечивающая безопасную связь между двумя компьютерами с использованием прозрачного шифрования. 5 (TransmissionControlProtocol) — один из основных протоколов набора интернет-протоколов. 6 GNU — это проект, ориентированный на свободное программное обеспечение. 7 Gentoo второго маленького и быстрого пингвина, г произносится как словагин. 8 (BerkeleySoftwareDistribution) — производная версия Unix, распространяемая Калифорнийским университетом в Беркли. 10

13 1 КОНФИГУРАЦИЯ СИСТЕМЫ 1.1 Введение После выбора дистрибутива Gentoo в качестве операционной системы, которая будет работать на шлюзе, можно выбрать подходящий ПК, например, с процессором Intel Pentium с частотой 1,5 ГГц, 384 МБ ОЗУ. Память. Что касается жесткого диска, то подойдет более старый размером 20 ГБ, потому что брандмауэр не считается используемым для хранения пользовательских данных или в качестве сервера ftp 1. 1.2 Установка операционной системы Linux Можно выбрать несколько вариантов загрузки дистрибутива Gentoo[1], но самым простым является компакт-диск с минимальной установкой, который занимает менее 140 МБ. Важно выбрать для какой компьютерной архитектуры будет компилироваться система стандарт не выбирает архитектуру 2х86 на которой построено подавляющее большинство старых компьютеров 3. После загрузки с установочного носителя на экране появится следующее :boot: В случае ошибки загрузки вы можете ввести параметры, изменяющие процесс загрузки 1.1. agpgart используется при проблемах с графикой, зависание acpi=on загружает поддержку прошивки ACPI ide=nodma отключает DMA, если устройство IDE работает некорректно doscsi тестирует систему на устройстве SCSI nokeymapотключает выбор раскладки клавиш docache загружает в память весь CD-ROM, тем самым освобождая CD-ROM nousb отключает загрузку USB-модулей из initrd, отключает горячее подключение nodhcp отключает автоматическое использование DHCP nohotplug отключает автоматический запуск службы горячего подключения noload=modulx отключает загрузку конкретных модулей ядра Таблица 1.1: Список необязательных параметров при загрузке системы с носителя. 1 (FileTransferProtocol) — это протокол, предназначенный для передачи файлов между компьютерами, на которых могут работать разные операционные системы (он не зависит от платформы), см. [3]. 2 x86 или 80×86 — это общее название микропроцессора, построенного изначально на 16-битной архитектуре, а позже на 32-битной. 3 В настоящее время название в основном называется архитектурой amd64, что в дистрибутиве Gentoo является обозначением процессоров с 64-битной архитектурой. 11

14 Нажмите клавишу Enter, чтобы начать загрузку Linux. После загрузки должно быть обеспечено работоспособное сетевое соединение, так как система устанавливается с минимального установочного компакт-диска. Это небольшой загрузочный компакт-диск без излишеств, единственная цель которого — запустить систему, затем активировать сетевой интерфейс, и вся система будет загружена из Интернета. Работает ли уже сетевое соединение, проверяется командой: # /sbin/ifconfig Для правильной работы соединения можно использовать команды ping или links 1. Использование команды net-setup Если сетевой интерфейс работает неправильно, или вообще используется команда net-setup. Это самый простой способ настроить сеть. Программа задает несколько вопросов о сетевом интерфейсе и просто устанавливает интерфейс за нас. Худший вариант, если ядро ​​не может загрузить модуль для сетевой карты, то есть не распознает драйвер. В этом случае вам необходимо загрузить основной модуль вручную. Команду ls можно использовать для отображения поддерживаемых модулей ядра: # ls /lib/modules/ uname -r /kernel/drivers/net Последующий выбранный драйверсетевой интерфейс устанавливается с помощью команды modprobe. Другим вариантом настройки является использование команд ifconfigaroute. Подготовка дисков Разделы дисков и диски помечаются в Linux именами, которые отличаются от общеизвестных соглашений, принятых в других операционных системах (например, в продуктах Microsoft). Драйверы устройств в каталоге /dev используются для связи устройств (таких как жесткий диск, мышь и т. д.) с системой. Если в системе присутствует жесткий диск IDE или компакт-диск типа tapi 3 aide, доступ к этим драйверам осуществляется через устройство /dev/hda/dev/hdb и т. д. Аналогичным образом осуществляется доступ к отдельным разделам жесткого диска. через устройство /dev/hda1/dev/hda2 и т. д. Напротив, дисковые накопители типа SCSI 4 и все устройства, подключенные через контроллеры sat, выглядят как /dev/sda/dev/sdb с соответствующим числовым обозначением, аналогично IDE тип. Программа fdisk используется для создания разделов диска для операционной системы Linux. 1 Это текстовая версия интернет-браузера. 2 Подробное описание использования этих команд можно найти, например, в [2]. 3 AdvancedTechnologyAttachment (ATA) — это стандартная компьютерная шина для подключения устройств хранения данных, таких как жесткие диски или компакт-диски, см. [3]. 4 SCSI (SmallComputerSystemInterface) — это стандартный интерфейс, наиболее часто используемый в мощных рабочих станциях и серверах. Преимуществом является возможность подключения большего количества жестких дисков, чем при использовании интерфейса IDE/ATA, см. [3]. 12

15 1.2.2 Создание разделов При создании разделов действует правило, согласно которому вам необходимо создать как минимум один раздел для программного обеспечения и один раздел для области подкачки. Лучший вариант — создать отдельный раздел для базовой файловой системы, один раздел для подкачки и отдельные разделы для потенциальных пользователей. Еще одним преимуществом разделения сервера является размещение каталога /var в отдельном разделе, так как они расположены там.общие каталоги спула, файлы журналов и различные другие элементы, которые регулярно изменяются и увеличиваются во время возникновения проблемы. Эта мера предотвращает проблемы в будущем, если базовая файловая система будет перегружена. Все программы устанавливаются в директорию /usr, так что тоже размещайте их отдельно. Последний вариант — разместить загрузочный каталог /boot на отдельном разделе, так как он содержит скомпилированное ядро, загружаемое в ОЗУ во время загрузки. В этом случае этот раздел может быть не смонтирован по умолчанию. Информацию об использовании программы fdisk можно найти в соответствующей литературе[2]. Что касается размера отдельных разделов, то стандартно выбрать раздел для базовой файловой системы размером около 5 ГБ. Как минимум вдвое больше при использовании прокси-сервера. Для загрузочного раздела достаточно 64 МБ, т. к. здесь хранится только образ ядра и, возможно, другие конфигурационные файлы. файловая система Файловая система Linux обеспечивает хранение информации на диске. При правильном выборе файловой системы обычно учитываются несколько аспектов, особенно достаточная производительность, изменение размера и стабильность. Уместно использовать так называемую журналируемую файловую систему, которая представляет собой способ, которым файловая система хранит информацию о текущих операциях. Согласно журналу, если произойдет сбой и Linux не будет правильно закрыт, в конечном итоге он будет восстановлен в правильном состоянии. Для наглядности ниже приводится краткое описание некоторых файловых систем Linux: EXT2 Первая версия была выпущена в 2008 г. Эта файловая система до сих пор является своего рода стандартом с достаточной поддержкой на многих компьютерах. Самым большим преимуществом является его стабильность, недостатком является то, что его код не используется совместно с файловой системой ext3. Ext2 не журналируется, особенно подходит для загрузочного раздела и вообще для разделов, где частоне получает доступ к содержимому и не изменяет его. EXT3 Впервые представлен в Расширяет исходную файловую систему ext2 для поддержки журналов, но может быть перемонтирован как ext2. Большим преимуществом является возможность обновления с ext2 до ext3.jdeo очень большая и надежная файловая система. 13

16 Другим преимуществом является его безопасная возможность увеличения и уменьшения. Он также имеет возможность дополнительной индексации с использованием b-деревьев. ReiserFS Представлена ​​в своем главном преимуществе — отличной производительности при работе с небольшими или большим количеством файлов, в чем она значительно превосходит ext2 или ext3. Он очень масштабируемый и имеет журналирование метаданных. Недостатком являются длительные задержки чтения/записи для больших объемов данных. Однако в обычных условиях он широко используется. JFS Это высокопроизводительная файловая система журналирования от IBM. Это современная 64-битная файловая система с журналированием. Он поддерживает различные размеры блоков для оптимизации производительности и организации каталогов с использованием так называемых i-узлов. XFS Выпущена компанией CGI в 2000 г. В первую очередь предназначена для хранения данных на дисках больших серверов. XFS является наиболее многофункциональным. Он поддерживает журнал, может эффективно работать со многими файлами, его производительность достаточно сбалансирована. XFS имеет отличные служебные программы и ряд специальных возможностей. Создание файловой системы Для создания файловой системы на разделе диска в дистрибутиве Gentoo имеются инструменты, перечисленные в таблице 1.2. Пример создания загрузочного раздела с использованием файловой системы ext2 в первом разделе вводится следующим образом: # mke2fs /dev/hda1 Команда mkswap используется для создания раздела подкачки. после чего указывается используемый раздел, на котором необходимо создать место для хранения. Последующая активация раздела подкачки выполняется командой swapon, снова указывающей раздел, в котором находится подкачка. ext2 mke2fs ext3 mke2fs-j reiserfs mkreiserfs xfs mkfs.xfs jfs mkfs.jfs Таблица 1.2: Команды, используемые для созданиянеобходимые файловые системы. Здесь вы можете ясно видеть, что ext2 и ext3 отличаются использованием -j, который включает индексацию. 14

Читайте также:  Как прописать vlan на windows

17 1.2.5 Установка архива Portage и Stage Даже перед установкой системы на новые файловые разделы эти разделы должны быть правильно подключены или смонтированы. Для этого используется команда mount. Для этого используются следующие команды: # mount /dev/hda3 /mnt/gentoo # mkdir /mnt/gentoo/boot # mount /dev/hda1 /mnt/gentoo/boot Вторая команда создает каталог для монтирования загрузочного раздела . Они также создают другие каталоги для /vara/usr.На следующем шаге stage3 устанавливает архив, который всегда актуален в Интернете с помощью команды links. Вам нужно перейти в точку монтирования /mnt/gentoo, после чего нужный этап будет загружен в каталог releases/x86/2008.0/stages/. Это стадия развития. Не рекомендуется использовать ниже. Пример использования команды links можно увидеть здесь: # links Скачанный архив распаковывается с помощью tar и теперь мы приступаем к установке дерева портежей, представляющего собой набор файлов, которые будут использоваться позже. Далее портеж снова загружается по ссылкам, на этот раз в каталог snapshots/. Здесь выбирается последний архив, который находится под именем portage-latest.tar.bz2, и после скачивания он снова будет распакован.Настройка параметров для компиляции. Для этого Gentoo использует конфигурационный файл /etc/make.conf, в котором определяются параметры компиляции, характерные для выбранной архитектуры, для достижения максимально возможной оптимизации системы. Подробный обзор настроек можно найти в файле /etc/make.conf.example. Переменная CHOST устанавливается по умолчанию в зависимости от используемой архитектуры. Переменные CFLAGS и CXXFLAGS выбираются специально в соответствии с данным типом процессора. ЗаПроцессор Intel Pentium 4, эти значения будут установлены в упомянутом файле конфигурации. CHOST=»i686-pc-linux-gnu» CFLAGS=»-march=pentium4 -O2 -pipe -fomit-frame-pointer» CXXFLAGS=»$ » MAKEOPTS=»-j2″ Параметр -O2 указывает оптимизацию class, который принимает значения от 0 до 3. Не рекомендуется устанавливать максимально возможную глубину оптимизации, потому что не все 15

18 программ могут быть скомпилированы. Параметр -pipe использует каналы. Последний параметр fomit-frame-pointer отключает хранение указателя кадра в регистрах, что рекомендуется для данного типа процессора. Переменная MAKEOPTS определяет, сколько параллельных компиляций нужно запустить. По умолчанию установлено количество процессоров в системе плюс один Установка базовой системы С помощью пары команд: # mirrorselect -i -o >> /mnt/gentoo/etc/make.conf # mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf указывает системе использовать инструмент mirrorselect, который записывает адреса образов в файл /etc/make.conf для загрузки необходимых файлов через portage. Вторая команда устанавливает адрес сервера синхронизации дерева портежей. Следующим шагом будет копирование настроек DNS, чтобы сеть работала даже после входа в новую систему как суперпользователь. Делается это командой: # cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf как видите, этот параметр находится в файле /etc/resolv.conf. Последним шагом является монтирование файловой системы /proc (виртуальный интерфейс ядра) и /dev: # mount -t proc none /mnt/gentoo/proc # mount -o bind /dev /mnt/gentoo/dev Теперь мы готовы к войти в систему don.изменить активную среду с текущего установочного компакт-диска на новую систему. Важной частью команды является env-update, которая создает новую среду и исходный файл /etc/profile, который загружает переменные среды в память. # chroot/mnt/gentoo /bin/bash # env-update # source /etc/profile # export PS1=»(chroot) $PS1″ Остается только выбрать правильный профиль, в котором указаны значения по умолчанию CHOST, CFLAGS и др. важные переменные. Чтобы узнать, какой профиль используется в данный момент, введите следующую команду: # ls -FGg /etc/make.profile 16

19 Данная архитектура напрямую указывается в профиле, и, в основном, можно выбрать определенную предустановку, используя профиль /desktop или /server. Здесь был выбран профиль/сервер, полный путь которого выглядит так: /usr/portage/profiles/default/linux/x86/2008.0/server/ Остается еще одна важная системная настройка, а именно использование так -так называемые USE-флаги. Флаг USE используется для установки того, что система будет компилировать с любыми параметрами. Таким образом, программы могут быть скомпилированы с различной поддержкой в ​​зависимости от пользователя. Пользователь имеет над ней полную власть, система будет деаконирована.Большинство стандартных дистрибутивов Linux устанавливаются с максимально возможной поддержкой всех возможных приложений, что совершенно не нужно и к тому же такая система занимает очень много места. Часто в системе присутствует несколько разных редакторов, несколько мультимедийных проигрывателей, несколько графических интерфейсов типа KDE и GNOME. Эта переменная используется для определения знаний, упомянутых выше. Параметры, которые будет поддерживать система, уже определены во время установки. Эти настройки могут отличаться для рабочего стола, графической станции или сервера. Следует отметить, что эти параметры относятся не только к выбору пакетов, но и к функциям, которые будет предоставлять скомпилированный пакет. USE-флаги делятся на глобальные и локальные, глобальные настройки влияют на всю систему и все пакеты. Этот параметр указан в файле /etc/make.conf. Напротив, локальные настройки используются для воздействия на конкретный пакет. Этот параметр делаетвыполняется в файле /etc/portage/package.use. Список доступных USE-флагов для используемого профиля отображается с помощью команды: # less /usr/portage/profiles/use.desc В следующем примере показаны некоторые настройки сервера в файле /etc/make.conf. Здесь можно увидеть, например, поддержку apache, mysql, php, samba, bindu и т. д. Наоборот, запрещена поддержка приложений, использующих графические библиотеки, такие как qt, gtk, сам X-сервер и т. д. USE= «-kde -gnome -X -gtk -qt3 -qt4 aalib acpi apache2 caps cdb cddb ctype curl dbus ftp hal dhcp dhcpcd javascript mmx modplug mysql php php php5 samba sdl snmp spl sockets sse svga svg unicode xml UTF-8 сленг truetype-fonts type1 -fonts crypt zlib -3dnow -3dfx -3dnowext -altivec usb -wifi -smartcard -ibm -irda truetype ssl network pic -oracle -oss sse2 -alsa радиус символической ссылки -ipv6 -cups syslog resolvconf -berkdb loop-aes imap libwww maildir sasl» 17

20 1.2.8 Конфигурация ядра Ядро операционной системы Linux обычно называют ядром 1. В этой главе речь пойдет о правильной настройке и сборке ядра. Это, пожалуй, самая важная часть настройки сервера. Акцент при сборке пользовательского ядра заключается в том, что весь код и данные, принадлежащие ядру, жестко загружаются в память компьютера, а это означает, что их нельзя хранить на жестком диске. Если ядро ​​компилировалось каким-то инструментом автоматической настройки, бывает, что в нем компилируются драйвера, которых либо нет у пользователя, либо он ими не пользуется. Такое ядро ​​становится излишне большим и занимает место в памяти. Пользовательская сборка уменьшает размер ядра и, таким образом, освобождает место в памяти для других приложений. Есть две большие версии ядра для x86. Первый — это так называемые vanilla-sources, представляющие собой сырое ядро, разработанное непосредственно разработчиками ядра. Альтернативой являются gentoo-sources, которые обычно уже существуют.модифицирован для большей производительности и расширен для поддержки различных драйверов. По умолчанию выгоднее выбрать уже модифицированное ядро. Установка выполняется командой: # emerge gentoo-sources Эта команда скачивает и устанавливает текущую версию ядра, которая находится в так называемой стабильной ветке. Если по определенным причинам требуется ядро ​​из тестовой ветки, т.к. используется какое-то новое железо, для которого драйвер еще не встроен в ядро ​​напрямую из-за его промежуточной разработки, его загрузку необходимо настроить в файле /etc/portage/ файл package.keywords. Пользователь может узнать больше о настройках этого файла в [4]. В нормальных условиях ядра из стабильной ветки будет достаточно. Теперь ядро ​​нужно настроить и подготовить к компиляции. Использование автоматических конфигураторов лучше полностью избегать из-за проблем, описанных выше. Прежде чем настраивать ее самостоятельно, полезно знать, какое оборудование содержит система. Один из возможных способов узнать это — использовать пакет pciutils. Запустите интерфейс конфигурации ядра следующими командами: # cd /usr/src/linux # make menuconfig Появится интерфейс конфигурации, в котором есть соответствующие пункты для настройки. Самые основные параметры сервера перечислены в следующих таблицах. В первую очередь выбирается поддержка загрузки модулей.Основная задача ядра состоит в выделении памяти и процессорного времени программам, управлении компьютерными устройствами и абстрагировании функций, см. [3]. 18

21 Включить поддержку загружаемых модулей [*] Выгрузка модулей [*] Принудительная выгрузка модулей [*] Автоматическая загрузка модулей ядра Таблица 1.3: Включить параметр для динамической загрузки и удаления модулей во время выполнения. Эта опция включает динамическую загрузку модулей. В большинстве случаев используется этот вариант. Другой вариант — настройки процессора в таблице 1.4. Что касается установки частоты таймера, то она обычно выбирается для серверазначение Гц. Если сервер используется для мультимедийных приложений, также выбирается более высокая частота. На используемые настройки файловой системы влияет только то, какие из них используются. Также уместно включить поддержку файловых систем обработки FAT и NTFS 1 в зависимости от типа и характеристик процессора Семейство процессоров (intel P4/ более ранний Netburst на базе Xeon) Частота таймера (250 Гц) Таблица 1.4: Параметры процессора для сервера на базе x86 Архитектура с процессором P4. использование сервера для обмена данными между пользователями с операционной системой Windows, см. таблица 1.5. Файловые системы Файловые системы DOS/FAT/NT [*] Поддержка файловой системы MSDOS [*] Поддержка файловой системы VFAT (Windows-95) (852) Кодовая страница по умолчанию для FAT (iso8859-2) Набор iocharset по умолчанию для FAT [M] Поддержка файловой системы NTFS [* ] Поддержка записи в NTFS Таблица 1.5: Параметры поддержки FAT и NTFS для платформ, работающих на ОС Windows. Сервер также будет использовать протокол PPPoE, благодаря которому получается аутентифицированный доступ к высокоскоростным сетям передачи данных, обычно не предоставляемым disp 2. Параметры поддержки этого протокола можно найти в таблице FAT и NTFS, которые являются используемыми файловыми системами. на платформах Windows. 2 Интернет-провайдер. 19

22 драйвера устройств [*] Поддержка сетевых устройств [*] Поддержка PPP (протокола точка-точка) [*] Поддержка PPP для асинхронных последовательных портов [*] Поддержка PPP для synttyports [M] Сжатие PPP Deflate [M] PPP через Ethernet (ЭКСПЕРИМЕНТАЛЬНАЯ) Таблица 1.6: Параметры поддержки протокола PPPoE в ядре серии 2.6.x. Последней важной настройкой является настройка самой сети с поддержкой брандмауэра. Когда опущена настройка использования протоколов, которая обычно включена по умолчанию, рекомендуется включить в ядре поддержку фреймворка netfilter, который опосредует фильтрацию пакетов, а также iptables, которые в дальнейшем будут определять свойства брандмауэра. Подробный обзорэтой настройки показано в таблице, приведенной в Приложении A.1. Сконфигурированное ядро ​​теперь можно скомпилировать и установить в системе. Следующая команда компилирует ядро. Вторая команда, когда ядро ​​компилируется, копирует готовый образ ядра туда, где он будет при загрузке. По умолчанию для этой цели был зарезервирован раздел, расположенный в каталоге /boot. Звездочка указывает, что на этом этапе ядро ​​может называться как угодно, например, storagedisk. # сделать && make modules_install # cp arch/i386/boot/bzimage /boot/* Конфигурация системы Далее необходимо установить информацию о разделах файлов. В Linux этот параметр записывается в файл /etc/fstab. Параметр используется, чтобы сделать все файловые разделы доступными при загрузке системы. Общий процесс подключения (монтирования) отдельных разделов состоит в назначении разделов определенному каталогу. Более подробная информация о настройках находится в [2]. Ниже приведены настройки настроенного сервера. /dev/hda1 /boot ext2 noauto,noatime 1 2 #boot /dev/hda2 none swap sw 0 0 #swap /dev/hda5 /usr ext3 noatime 0 2 #user /dev/hda6 /var ext3 noatime 0 3 #var / dev/hda7 /home ext3 noatime 0 4 #home /dev/hda8 / ext3 noatime 0 1 #root 20

23 /dev/hdc /mnt/cdrom auto noauto,ro 0 0 #cdrom Основные сетевые настройки Каждому компьютеру в локальной сети следует дать имя для удобной ориентации и легкой идентификации. Настройки выполняются в файле /etc/conf.d/hostname. Лучше всего выбирать короткие броские имена. Способ настройки файла показан ниже, где вместо метки сервера подставляется выбранное имя: HOSTNAME=»server» Если у пользователя есть зарегистрированный домен и назначенный публичный IP-адрес от провайдера, это устанавливается в файл /etc/conf.d/net, как показано ниже, где вместо имени доменаподставляется зарегистрированный домен: dns_domain_lo=»domain_name» Сама сеть так же задается в файле /etc/conf.d/net. Необходимо правильно настроить этот файл, так как как только будет введена новая система (необходимое условие для корректной работы сети), из этого файла будет загружена конфигурация для отдельных сетевых интерфейсов. Подробный обзор правильных настроек можно найти в файле /etc/conf.d/net.example. Для первоначального ввода сервера в локальную сеть конфигурационный файл можно отредактировать следующим образом: сам сервер в локальной сети. Вторая команда сообщает серверу, к какому шлюзу маршрутизировать, а третья — для установки dns 1. Интерфейс eth1 идентифицирует физический сетевой интерфейс на сервере. В Linux все интерфейсы LAN называются ethx, где x обозначает идентификационный номер. Чтобы в дальнейшем использовать сервер в качестве шлюза, понадобятся два интерфейса. Внешняя сеть будет подключена через один, а локальная сеть будет подключена через второй.Если используется интерфейс wifi, он, вероятно, будет называться wlanx или rax. Описанный пример с двумя интерфейсами можно увидеть на рисунке 1.1. Если планируется использование dhcp-сервера, конфигурация файла /etc/conf.d/net для используемого интерфейса может выглядеть следующим образом: config_eth0=( «dhcp» ) dhcp_eth0=»nodns nontp nonis» требуется для автоматического запуска при запуске, мы используем: 21

24 Рисунок 1.1: Пример подключения сервера в качестве шлюза с использованием 2 интерфейсов. # rc-update add net.eth0 default # rc-status Первая команда загружает сетевой интерфейс при запуске системы. Вторая команда показывает, какие интерфейсы и демоны используются в данный момент. В файле /etc/hostsнастраивает zv.resolving, который преобразует имена компьютеров в ips с помощью dns, наконец, проверяется правильность настроек файла /etc/resolv.conf, где находятся адреса DNS-серверов от провайдера. Также представлена ​​конфигурация связи ppp, обслуживаемая демоном pppd. Этот интерфейс обычно подключается к физической сетевой карте компьютера, создавая виртуальный интерфейс с именем ppp0. config_ppp0=( «ppp» ) link_ppp0=»eth0″ plugins_ppp0=( «pppoe» ) pppd_ppp0=( «noauth» «defaultroute» «holdoff 3» «child-timeout 60» «lcp-echo-interval 15» «lcp-echo -failure 3″ noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp ) username_ppp0=»name» password_ppp0=»password» Во второй строке указывается, на каком физическом интерфейсе будет создан виртуальный. Третья строка записывает pppoemodule, в скобках данные конкретные, например proadsl 2 соединения. Последние две строки указывают логин и пароль, под которыми 22

25 демон ppp войдет в ISP. Загрузчик Загрузчик — это программа, загружающая ядро ​​в память после запуска. Чаще всего он хранится в vmbr 1, либо в загрузочном секторе одного из разделов диска.Загрузчики Linux могут быть загружены на съемные носители (дискеты, флешки и т.д.), с которых также может загружаться система. Загрузчик не обязательно должен использоваться только для выбора конкретной ОС, он также может выбирать между различными конфигурациями и версиями ядра или загружать сразу несколько ОС. Введенные параметры в основном задаются вручную, но можно использовать и автоматические конфигураторы. Обычно в Linux используются следующие два загрузчика: LILO — загрузочная программа, позволяющая загружать любую операционную систему. Он не зависит от конкретной файловой системы и может загружать операционную систему как с гибких дисков, так и с жестких дисков. При загрузке может быть выбрана одна версия ядра, у которой могут быть установлены разные параметры. ЛИЛО возможноустановить либо в MBR, либо в загрузочные сектора отдельных разделов. GRUB — это трехэтапная загрузочная программа. Таким образом, он имеет несколько преимуществ перед двухэтапным загрузчиком LILO. На первом этапе загрузки монтируются необходимые файловые системы, затем он загружает файл конфигурации с диска и, наконец, позволяет вам выбрать размер списка загружаемых ОС. После внесения любых изменений в файл конфигурации LILA загрузчик необходимо перезаписать с новой конфигурацией в MBR. GRUB устанавливается только в первый раз, и при изменении конфигурационного файла его не нужно перезагружать.Grub имеет еще второй шаг в командной строке, где ядро, которое даже не указано в конфигурационном файле, но есть расположенный на соответствующем разделе, может загружаться динамически. Для этого сервера достаточно выбрать LILO, который в целом проще в настройке и более чем достаточен для требуемых целей. Затем LILO устанавливается с помощью emerge lilo. Пример настроек LILA в /etc/lilo.conf: boot=/dev/hda prompt timeout=50 1 DNS (DomainNameSystem) — иерархическая система доменных имен, которая реализуется DNS-серверами, см. [3]. 2 (AsymetricDigitalSubscriberLine) Это тип DSL, который имеет асимметричное соединение, когда скорость данных, передаваемых пользователю, выше, чем скорость исходящих данных. см. [3]. 23

26 default=gentoo_2008_s_27_0.7 image=/boot/kernel r10-server-v0.7 label=gentoo_2008_s_27_0.7 только для чтения root=/dev/hda8 Подробное описание других параметров конфигурации, предлагаемых LILO, можно найти по адресу [ 5] а также grubuna[6]. если конфигурация уже сделана, будет выполнена команда /sbin/lilo, которая запишет настройки в MBR.throw и пользователь может их использовать. Возможно, потребуется отредактировать файл /etc/make.conf, чтобы добавить USE-флаги для необходимых пакетов программ. В таблице из Приложения A.2 показано несколько основных пакетов, которые будут использоваться. Список всех доступных пакетов можно найти в [9]. Весь список отсортирован по подкатегориям, что в основном представляет собой дерево портежей. В каждой подкатегории есть множество программ, в зависимости от того, что конкретно интересует пользователя. Для использования всего, что связано с сетью, интересна категория net-misc, где вы можете найти различные приложения для сервера и других используемых компьютеров. На последнем шаге осталось создать пароль для пользователя root командой passwd и пока перезагрузить дополнительную систему. Теперь сервер настроен и готов к более сложной настройке. Как правило, не рекомендуется входить в систему как пользователь root, поэтому вы создаете пользователя, под которым вы входите в систему на сервере. Однако эта опция не является обязательной и пока не понадобится. 1 MBR (MasterBootRecord) — это загрузочный сектор, который находится в первом секторе жесткого диска, в котором находится загрузчик. 24

27 2 БРАНДМАУЭР 2.1 Что такое брандмауэр? Обычно маршрутизация выполняется пассивно на маршрутизаторах без какой-либо проверки обратной связи. Другим важным аспектом является тот факт, что по умолчанию ни один порт не открыт внутрь, или, наоборот, все открыты, при этом пользователь не имеет ни малейшего представления о том, какой опасности он подвергается с точки зрения внешнего мира (интернета). Пакеты обычно маршрутизируются, и не делается различия между хорошими и плохими пакетами. Если мы хотим контролировать пакеты, проходящие между нашей внутренней сетью и Интернетом, мы включаем брандмауэр между этими двумя разными мирами, задачей которого является предотвращение проникновения злоумышленников во внутреннюю сеть или на сам шлюз, где находятся различные приложения, восприимчивые кэти атаки. Подключение брандмауэра создает воображаемую стену, которая стоит на пути пакетов, входящих и исходящих из нашей сети. Для каждого брандмауэра определены определенные правила, которые им управляют. Каждый пакет состоит из большого количества собственных данных, но, в частности, он содержит заголовок, который содержит IP-адрес источника и получателя, порт источника и получателя, на который предназначен пакет, и другие важные поля, такие как это 1 и т. д. Затем пакет может быть доставлен к месту назначения, отброшен или заголовки пакетов могут быть перезаписаны различными способами с помощью так называемого .nat firewall. Типы межсетевых экранов Пакетная самая старая форма. Принцип заключается в определении IP-адреса источника, IP-адреса назначения и адреса порта, что означает, что он фильтруется на третьем и четвертом уровнях модели ISO/OSI. Преимуществом является высокая скорость обработки, недостатком — недостаточный уровень контроля при соединении. Это совершенно критично для некоторых протоколов (особенно для тех, которые используют видео/аудио). Первыми представителями были именно ipchains. С сохранением состояния Эти брандмауэры работают по тому же принципу, что и старые типы пакетных брандмауэров, но они могут хранить информацию об уже разрешенных соединениях. Далее он может использовать эту информацию для принятия решения о том, принадлежит ли проходящий в данный момент пакет к разрешенному соединению или, наоборот, должен пройти новый процесс принятия решения при установлении нового соединения. Еще одним улучшением по сравнению со старыми типами брандмауэров является создание так называемого состояния виртуального соединения для протоколов без сохранения состояния. Что касается преимуществ и недостатков, то они аналогичны пакетным брандмауэрам. Современный статус 1 (TypeofService) 8 битов, указывающих тип услуги в заголовке IP-пакета, см. [3]. 2 (NetworkAddressTranslation) — это метод изменения сетевого трафика путем перезаписи IP-адреса по умолчанию и/или IP-адреса назначения. см. [3]. 25

28 межсетевых экранов способны проверять проходящие соединения вплоть до передачи данных известных протоколов и приложений. Применение В противном случае тоженазываются прокси-брандмауэрами. Коммуникация происходит таким образом, что к этому прокси подключается инициатор соединения, который обрабатывает все входящие соединения и открывает новое соединение с сервером (назначением). Однако с точки зрения сервера вышеупомянутый прокси выступает в качестве инициатора соединения. На обратном проходе все вращается. Все управление осуществляется на седьмом уровне модели ISO/OSI. Прокси-брандмауэры обычно также переписывают исходный адрес инициатора соединения в свой выходной адрес. Они работают как NAT, что обеспечивает относительно высокую безопасность данных протоколов. Недостатком является большой расход вычислительной мощности и памяти. Еще есть вариант так называемого прозрачного прокси, который позволяет перенаправлять трафик в сети без ведома инициатора подключения. 2.3 Netfilter и iptables Netfilter теперь реализован по умолчанию в ядре. Это структура, которая определяет пять точек на пути каждого пакета, в которых описанные ниже модули могут решить, что делать с пакетом, т.е. определить политику фильтрации. Путь каждого пакета netfilter показан на рис. 2.1 1. Система netfilter дополнительно состоит из нескольких таблиц, содержащих цепочки правил фильтрации и любых дальнейших модификаций проходящих пакетов. Рисунок 2.1: Описание пути пакета через сетевой фильтр. 26

Читайте также:  Windows update не запущена как запустить

29 Netfilter работает в основном на уровне 2 сетевой модели TCP/IP, но также может работать и на уровне 3. Самофильтрация выполняется набором модулей и расширением iptables. Модулей несколько, и основная причина такого разделения заключается в том, что пользователь устанавливает в ядро ​​только те, которые ему действительно нужны. Сам iptables предназначен для расширения с помощью этих модулей и управления ими. Путь пакета через весь процесс iptables дополнительно показан на рис. 2.2.2, где весь процесс проходит через серию цепочек и таблиц. Рисунок 2.2: Полное представление пакета, проходящего через iptables. 1 Поглощение[10]. 2Поглощение[11]. 27

30 Из предыдущей картинки видно, что базовых таблиц 4, raw, filter, mangleat.Цепочки противоположны базовым 5. Каждый входящий пакет сначала попадает в цепочку PREROUTNG. Эта строка является шлюзом к брандмауэру. Здесь рассматривается предварительная обработка пакетов. Модифицируется, например, TOS или выполняется так называемая DNAT (перезапись адреса назначения), которая представляет собой перезапись исходного адреса. При этом мы можем, например, перенаправить пакет на указанный адрес во внутренней сети и т. д. Когда пакет проходит через эту цепочку и последнюю таблицу nat, наступает время решить, будет ли пакет перенаправлен (перенаправлен на другой адрес) или предназначен для местной станции. Если он предназначен для локальной станции, он попадает в цепочку INPUT, где производится дальнейшее редактирование в таблице mangle и filter. Если пакет покидает локальную станцию, он сначала попадает в цепочку OUTPUT, где снова выполняется политика таблиц по образу до таблицы filter, что является точкой, когда пакет действительно покидает локальную станцию ​​и попадает в POSTROUTING. выходная цепочка. Здесь производится окончательная корректировка, например, SNAT (транскрипция исходного адреса) и выход. Если на выходе цепочки PREROUTING выполняется перенаправление на станцию, отличную от локальной, пакет попадает в цепочку FORWARD, где он перенаправляется, а затем снова входит в цепочку POSTROUTING для окончательной корректировки в таблицах mangle и nat. Помимо прочего, Netfilter включает в себя модуль мониторинга соединений (IP NF CONNTRACK и IP NF MATCH STATE), который позволяет усилить контроль фильтруемых пакетов. Информация о соединениях, которые поддерживает этот модуль, разделена на 4 группы[12]: NEW — пакет относится к пакетам, создающим новое соединение. ESTABLISHED — пакет является легитимным пакетом уже существующего соединения. RELATED — пакет не принадлежит ESTABLISHED, но как-то связан с уже существующим легитимнымсоединение (например, сообщение об ошибке ICMP). INVALID — пакет, который не попал ни в одну из предыдущих категорий, или по каким-то причинам не мог быть отнесен к какой-либо категории. Это должно быть объявлено устаревшим. Модули Netfilter Приложение A.1 перечисляет, какие модули должны быть скомпилированы в ядро ​​для правильной работы брандмауэра. Список некоторых модулей с описанием приведен здесь: Модуль CONFIG PACKET позволяет определенным приложениям напрямую обращаться к сетевым устройствам. 28

31 Модуль CONFIG NETFILTER, предназначенный для использования сервера в качестве брандмауэра или шлюза в Интернет. Модуль CONFIG IP NF CONNTRACK позволяет отслеживать соединение. Необходим для NAT и маскарада (будет объяснено позже). Модуль CONFIG IP NF FTP для мониторинга и настройки правильного FTP-соединения. Модуль CONFIG IP NF IPTABLES важен для любой фильтрации с помощью iptables. Модуль CONFIG IP NF MATCH LIMIT добавляет LIMIT, который позволяет указать, сколько пакетов может пройти через заданное правило в минуту. Модуль CONFIGIPNFMATCHMAC предназначен для фильтрации по MAC-адресам 1. Модуль CONFIG IP NF MATCH MARK позволяет проверять помеченные пакеты. Он используется в таблице mangle. Модуль CONFIG IP NF MATCH MULTIPORT позволяет определить диапазон исходных или целевых портов в одном правиле. Модуль CONFIG IP NF MATCH TOS реализует маркировку пакетов на основе их поля TOS в заголовке. Модуль CONFIG IP NF MATCH TCPMSS позволяет маркировать пакеты на основе их полей mss 2. Модуль CONFIG IP NF MATCH STATE предназначен для контроля состояния соединения. Модуль CONFIG IP NF FILTER добавляет таблицу фильтров к строкам INPUT, OUTPUT и FORWARD. Модуль CONFIG IP NF TARGET REJECT вводит так называемую цель REJECT, которая отличается от цели отбрасывания тем, что не отбрасывает пакет, а отправляет сообщение об ошибке на пять мп. 1 (MediaAccessControl) физический адрес, который является уникальным идентификатором сетевого интерфейса. см. [3] 2(MaximumSegmentSize) указывает максимальную длину сегмента, которую может принять страница. 29

32 CONFIG IP NF Модуль NAT включает трансляцию адресов. Представляет таблицу nat. Модуль CONFIG IP NF TARGET MASQUERADE добавляет masquerade, который похож на SNAT, но мы используем его, если не знаем IP-адрес в Интернете. CONFIG IP NF TARGET REDIRECT Модуль, используемый при перенаправлении (например, прозрачный прокси). Модуль CONFIG IP NF TARGET LOG позволяет вести журнал, например, в syslogd. Оглядываясь назад, он может определить, что происходит с пакетами. Модуль CONFIG IP NF TARGET TCPMSS правильно устанавливает размер MSS в соответствии с 1. Модуль CONFIG IP NF TARGET MARK позволяет маркировать пакеты. 2.4 Правила, используемые на сервере Базовое управление iptables здесь описываться не будет, все подробно задокументировано, например, в [13]. О правильной настройке межсетевого экрана можно сказать по известному правилу «разрешено» или «запрещено», другими словами, все пакеты, не соответствующие заданному правилу фильтрации, отбрасываются. Поэтому устанавливаются неявные правила, которые применяются, если адекватное правило не найдено при просмотре таблиц. Ниже приведены настройки iptables по умолчанию, так как после компиляции все включено, рекомендуется все отключить: iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP Основные средства защиты Некоторые программы используют службу AUTH. Это служба, которая информирует все другие серверы или клиенты по запросу, какой пользователь является владельцем соединения. Не рекомендуется открывать эту службу с точки зрения безопасности. При этом, однако, сбрасывать пакеты с помощью команды DROP не рекомендуется, так как другие программы могут использовать их с пользой, поэтому они вежливо отказываются. 1 (PathMaximumTransmitUnit) указывает максимальный размер сегмента пути пакета. 30

33 iptables -A INPUT -i ppp0 -p tcp —dport 113 -j REJECT \ —reject-with tcp-reset Этоправило на вход из интернета отклоняет запросы авторизации и устанавливает флаг сброса. Еще одна базовая защита сервера — так называемая IP-спуфинг. Это подмена адреса, которая часто используется в атаках. Базовой защитой является так называемый rp-фильтр. Используйте эту команду, чтобы включить эту защиту. эхо «1» > /proc/sys/net/ipv4/conf/ppp0/rp_filter При наличии нескольких интерфейсов все они включаются по очереди. Если требуется дальнейшее усиление этой защиты, в правилах iptables создается новая строка со следующими правилами: iptables -N spoofing iptables -A spoofing -s /16 -j DROP iptables -A spoofing -s /12 -j DROP iptables -A spoofing -s /8 -j DROP Эта строка последовательно применяется ко входу интернет-интерфейса, как к строке INPUT, так и к строке FORWARD. Перечисленные диапазоны адресов предназначены для частных сетей и не должны подключаться к Интернету или отображаться на стороне входа в Интернет. Существует ряд других адресов, которые зарезервированы для личных целей и поэтому могут быть отфильтрованы, как указано выше. Диапазоны этих адресов можно посмотреть, например, здесь[14]. Сегодня актуально так называемое Synflooding. Он использует свойства протокола TCP при установлении соединения. Злоумышленник начинает использовать Syn-флуд для отправки множества запросов на установку нового подключения к входу сервера. К сожалению, речь идет не об установлении соединения, а об исчерпании системного буфера из-за полуоткрытых соединений. Здесь показан один из возможных способов защиты: iptables -N syn_flood iptables -A syn_flood -m limit —limit 1/s —limit-burst 10 -j RETURN iptables -A syn_flood -j LOG —log-prefix=»syn_flood package : » iptables -A syn_flood -j DROP Правило определяет количество флагов SYN намаксимальное количество 10 в 1 секунду. Если лимит превышен, он регистрируется, а затем отбрасывается. Эта строка дальше 31

34 применяется к входному интерфейсу из Интернета в цепочку INPUT. Если требуется переадресация во внутреннюю сеть, это правило также применяется к цепочке FORWARD. Возможны и другие способы, например [15]. Ping of death — пожалуй, самый известный вид атаки. Жертва буквально завалена пакетами эхо-запросов ICMP. Простая защита — задать количество таких запросов в секунду на входном интерфейсе. iptables -A INPUT -i ppp0 -p icmp —icmp-type echo-request \ -m limit —limit 1/s —limit-burst 5 -j ACCEPT Защита от сканирования портов Сканирование портов определяет, какие порты TCP/UDP открыты или закрыто. У каждого открытого порта есть соответствующее приложение, которое прослушивает запросы и отвечает на них. Фильтруемый порт таков, что за него отвечает определенное приложение, которое слушает, но может решать, кому отвечать. Если порт закрыт, приложение не прослушивается. Существует несколько типов сканирования портов. Нулевое сканирование — это когда для TCP-пакета не установлены флаги. Так как при обычном соединении установлен как минимум ACK, сервер отправляет обратно сообщение об ошибке, что является первым симптомом, по которому злоумышленник может легко определить, какие порты открыты. iptables -A INPUT -i ppp0 -p tcp —tcp-flags ALL NONE -j DROP Сканирование Xmas — это метод, при котором либо установлены все флаги, что никогда не может произойти в реальной работе, либо сканирование Xmas с установленными флагами FIN, URG и ПШ. Удаленный сервер отвечает на такой пакет флагом RST, если порт закрыт, если открыт, то игнорируется. Защита: iptables -A INPUT -i ppp0 -p tcp —tcp-flags ALL ALL -j DROP iptables -A INPUT -i ppp0 -p tcp —tcp-flags ALL FIN,URG,PSH-j DROP Все эти правила также применять кстрока FORWARD, если используется переадресация во внутреннюю сеть. Если требуется уведомление об атаке, это делается с помощью логирования и установки максимального количества входящих пакетов данного типа. iptables -A INPUT -i ppp0 -p tcp —tcp-flags ALL ALL -j LOG -m limit \ —limit 15/m —log-level 1 —log-prefix «Xmas:» 1 (DenialofService)отказ of service — это метод атаки на интернет-сервисы, приводящий к перегрузке запросов и сбою или, как минимум, неработоспособности. см. [3] 32

35 2.5 Мониторинг соединения В межсетевом экране с отслеживанием состояния реализованы более продвинутые функции мониторинга соединения и фильтрации пакетов. На стр. 28 описаны состояния каждого соединения. iptables -A FORWARD -m состояние —state INVALID -j DROP iptables -A FORWARD -p tcp! —syn -m state —state NEW -j DROP iptables -A FORWARD -i eth1 -p all -m state —state NEW -j ACCEPT iptables -A FORWARD -m state —state ESTABLISHED, RELATED -j ACCEPT First правило отбрасывает все недопустимые пакеты. Второе правило отбрасывает любой пакет, пытающийся установить новое соединение без флага SYN. Третье правило разрешает создание новых соединений из внутренней сети в Интернет, а последнее правило разрешает все уже установленные соединения. Эти правила также следует применять к цепочке INPUT для обеспечения безопасности приложений на сервере. Сканирование портов также частично регулируется этими правилами состояния. 2.6 Проблема MTUuADSL Как уже упоминалось выше, размер сегмента не всегда одинаков на пути всего соединения. Сервер подключен к Интернету с помощью ADSL, и проблемы с MTU, как правило, заметны. Большую часть времени некоторые веб-страницы не могут быть загружены, соединение прерывается, если размер пути не принимает вызов. узкое место. Эта проблема решается данным методом, который устанавливает максимальное значение MSS, которое он находит на пути aв то же время он указывает удаленному серверу/клиенту не отправлять пакеты, размер которых превышает установленное значение. Для этой системы не используется трафик ICMP. iptables -A FORWARD -p tcp —tcp-flags SYN,RST SYN \ -j TCPMSS —clamp-mss-to-pmtu Снова можно применить к строке INPUT. 2.7 Маскарад Маскарад работает по принципу SNAT. Каждое новое исходящее соединение перезаписывает ip-адрес и исходный порт на выходном интерфейсе в Интернет после публичного, который обычно присваивается каждым сервером, после чего вносит запись в таблицу ipconntrack masquerade, согласно которой публичный адрес снова перезаписывается на частную внутреннюю при обратном проходе. Обратно соединения не устанавливаются, т.к. из интернета за входом 33

Интерфейс 36 обычно не виден, поэтому он служит какой-то точке зрения безопасности, устанавливается следующей командой: iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE Маскарад подключается к таблице nat , в котором выполняются все настройки, касающиеся адресов и портов источника и получателя. 2.8 Тип службы (tos) TOS — это метод оптимизации путей данных. Это позволяет сократить время обработки пакетов или, наоборот, максимально увеличить пропускную способность данных. Все подключено к столу mangle. TOS — это восьмибитное поле, используемое в качестве набора флагов. Значение относится к политике qos 1. Указанное правило указывает: Если это служба SSH 2, предпочесть ее. iptables -t mangle -A PREROUTING -p tcp —sport ssh \ -j TOS —set-tos Minimize-Delay iptables -t mangle -A PREROUTING -p tcp —dport ssh \ -j TOS —set-tos Minimize -Задержка Заявленные правила фильтрации и модификации трафика используются для повышения общей безопасности всего сервера, особенно от атак извне (интернет). Кроме того, правила используются для разрешения определенных портов для различных приложений, работающих на сервере. Сценарий установки брандмауэра приведен в Приложении B. 1(QualityofService) обеспечивает справедливое распределение скоростей, что предотвращает перегрузку сети. см. [3] 2 (SecureShell) безопасный протокол связи. 34

37 3 QOSVLINUXU Каждый лучше настроенный сервер с фильтрацией iptables еще не гарантирует качество услуг. Это в основном используется при передаче мультимедийных приложений, но сегодня также и в обычном трафике TCP/IP. Параметры QoS делятся на: Потеря пакетов указывает на количество отправленных пакетов, которые были получены с ошибкой или вообще не были получены в пункте назначения. Односторонняя задержка указывает время, которое требуется для отправки пакета и его получения в пункте назначения. Дисперсия задержки определяет разницу двух односторонних задержек для двух отправленных пакетов. Важно, особенно для IP-телефонии. Пропускная способность определяет скорость передачи данных, обычно в секунду. 3.1 Дисциплины очередей Очередь трафика — это способ, которым мы определяем прохождение всего трафика через сервер. Сам протокол TCP не имеет какой-либо стандартной реализации способа распределения, например, скорости передачи между взаимодействующими сторонами Бесклассовые очереди Эта система очередей включает только грубое формирование трафика на интерфейсе без какого-либо более глубокого разделения. Он используется по умолчанию на большинстве устройств (см. TOS выше). Pfifo fast Базовая очередь типа «первым пришел – первым вышел» Эта очередь имеет 3 основных диапазона на основе TOS. Пакет систематически помещается в одну из очередей, что указывает либо на минимизацию задержки, либо на максимизацию пропускной способности, либо на неявную очередь. Очередь 0 имеет самый высокий приоритет, очередь 2 — самый низкий. В Таблице 3.1 показаны рекомендуемые дистрибутивы для наиболее часто используемых сервисов. Пример определения соединения pfifoqueue, использующего пакет iproute2, представляющий собой набор функций, регулирующих трафик в сети протоколов TCP и UDP. 35

38 Тип службы Вариант установки битов telnet, ssh 1000минимальная задержка управления ftp 1000 минимальная задержка данных ftp 0100 максимальная пропускная способность dns(udp) 1000 минимальная задержка dns(tcp) 0000 по умолчанию, нормальная dns(zone transfers) 0100 максимальная пропускная способность управление smtp 1000 минимальная задержка данных smtp 0100 максимальная пропускная способность icmp 0000 по умолчанию, нормальная (наиболее распространенный) Таблица 3.1: В таблице показаны настройки битов в соответствии с RFC[3] tc qdisc add dev eth0 handle 1:0 root dsmark index 1 default0 tc qdisc add dev eth0 handle 2:0 parent 1:0 pfifo limit 20 первая команда включает маркировку пакетов на интерфейсе, вторая затем указывает очередь pfifo, вмещающую 30 пакетов. Token Bucket Filter Этот алгоритм используется только для ограничения общей пропускной способности на сетевом интерфейсе, принцип заключается в использовании буфера 1, в котором хранятся пакеты, после чего они отправляются с необходимой скоростью. Если буфер переполняется, пакеты отбрасываются. tc qdisc add dev ppp0 root tbf rate 230kbit latency 50ms Burst1540 Значимая фронтация применима, например, для ADSL-соединений.Фронтация перенесена из модема, где она большая, но часто полностью перегруженная. Это приводит к огромным задержкам и, особенно при асимметричных соединениях, когда загрузка отличается от загрузки до десятичной дроби, невозможно достаточно хорошо управлять услугами, требующими небольшой задержки. По команде подключаем очередь tbf к интерфейсу ppp0. Создает очередь, которая устанавливает максимальную скорость 256 кбит. Значение задержки определяет, как долго пакеты могут находиться в очереди. Пакетное значение по-прежнему регулирует максимальный размер сегмента, который применяется, если значение скорости на самом деле выше. 1 Буферная память — часть памяти, которая предназначена для временного хранения данных, образует своеобразный стек. 36

39 Stochastic Fairness Queuing SFQ — наиболее сложный способ управления трафиком. Группа поровну разделена междупотоки данных. Каждое такое соединение или поток имеет как бы свою очередь, из которой затем равномерно берется трафик и предоставляется для дальнейшей обработки. SFQ — это стохастическая система. На самом деле он не создает очередь для каждого соединения, что потребовало бы особенно большого объема памяти, но содержит внутренний алгоритм, который ограничен конечным числом очередей и использует алгоритм хеширования. Подробнее об этом вопросе подробно написано в [16]. tc qdisc add dev eth0 parent 1:3 handle 3:0 sfq perturb 10 В приведенном выше примере мы снова подключаем sfq к устройству eth0. Если оставить в стороне классы, которые будут описаны ниже, интересным моментом является значение возмущения, которое перенастраивает алгоритм хеширования в секунду. То есть определяет некую периодичность, когда проверяется справедливая система отбора из очередей Очереди на основе классов Принципом такого ограничения (шейпинга) трафика является создание целой системы классов и подклассов. Это похоже на дерево, где родитель имеет наивысший приоритет, а дочерние элементы берут на себя правила от родителя, в то же время определяя свои собственные правила. Каждый класс может быть дополнительно подключен к другим фильтрам, создавая очень сложную систему управления трафиком. Подробное описание функции класса описано в [17]. Приоритетная очередь Приоритетная очередь больше похожа на pfifo fast (стр. 35). Каждое соединение имеет определенный приоритет на определенной основе. Когда приходит пакет, ему не назначается скорость на основе битов ToS, а ставится в очередь. Наименьшее число имеет наивысший приоритет. Поэтому пакеты из очереди с более высоким приоритетом всегда будут отправляться первыми. tc qdisc add dev eth0 root handle 1: prio tc qdisc add dev eth0 parent 1:1 handle 10: sfq tc qdisc add dev eth0 parent 1:2 handle 20: sfq tc qdisc add dev eth0 parent 1:3 handle 30: sfq Implicit создаются три очереди. Очередь 10 имеет наивысший приоритет. Очевидно такжеэто то, как очередь далее подключается к ssfq. 37

40 Организация очереди на основе классов Гораздо интереснее система CBQ. Он не только делит трафик на классы, но и ограничивает пропускную способность. Эта система давно используется и богата функциями и подклассами. tc qdisc add dev eth0 root handle 1:0 cbq пропускная способность \ 4Mbit avpkt 1000 ячейка 8 tc class add dev eth0 parent 1:1 classid 1:2 cbq пропускная способность 4Mbit rate 2Mbit weight 0.2Mbit prio 1 выделение 1514 ячеек 8 maxburst 20 avpkt 1000 Creates со сложной системой правил. На интерфейс навешивается корневая очередь, имеющая максимальную пропускную способность 4 Мбит. Параметр avpkt указывает средний размер пакета. Чтобы это выяснить, желательно какое-то время мониторить трафик, например программой Tcpdump 1. Вторая часть создает подкласс, который имеет гарантированно наименьшую скорость 2 Мбит. Параметр веса регулирует вероятность отправки пакетов из этого класса, если другой подкласс не использует выделенную ему гарантированную полосу пропускания. Таким образом, это позволит отправлять больше данных в данном раунде. Hierarchical Token Bucket Htb более оптимизирован по сравнению с Cbq и действительно учитывает заданную пропускную способность для каждого листа дерева (подкласса). В этой системе каждому диапазону снова выделяется минимальная пропускная способность, и он может заимствовать у родственных подклассов, если у них есть неиспользуемая пропускная способность, но никогда за счет родителя. Эта система распределения полосы пропускания многократно проверяет всех родителей и детей и регулирует скорость на основе заданных параметров. tc class add dev eth0 parent 1: classid 1:1 htb rate 4Mbit tc class add dev eth0 parent 1:1 classid 1:11 htb rate \ 512Kbit ceil 4Mbit tc class add dev eth0 parent 1:1 classid 1:12 htb rate \ 1536kbit ceil 4Mbit tc class add dev eth0 parent 1:1 classid 1:13 htb rate \ 2Mbit ceil 4Mbit Создается три подкласса, для каждого из которых задана гарантированная скорость (сумма должна равняться максимальной скоростилинии) и потолок (параметр ceil). 1 Tcpdump — инструмент для анализа сетевого трафика. 38

Читайте также:  Как на компьютере windows сделать потише

41 3.2 Iroute2 на сервере Пакет iproute2 представляет собой сводку всех функций для проверки сетевого трафика в Linux. Это очень сложный инструмент, с помощью которого можно настроить сложные Qos. Для более сложного управления трафиком на сервере используется система очередей htb (стр. 38). Подробный пример принципа htb можно найти в [18]. Основная идея распределения трафика основана на том, что для подключения к Интернету используется линия ADSL со скоростями 8192/512кбит. Однако общеизвестно, что при ADSL-соединениях теоретическая скорость значительно отличается от реальной, иногда более чем на 50%. скорость около 320 кбит. Для установки верхнего предела (потолка) для htb рекомендуется уменьшить эти пределы примерно на 10%. Окончательная скорость загрузки и выгрузки установлена ​​на 4000/300 кбит. Еще одна проблема заключалась в том, чтобы разумно распределить пропускную способность между примерно 10 пользователями, особенно с точки зрения скорости загрузки. Совершенно бесполезно пытаться подключить такое количество пользователей к такой относительно низкой скорости и надеяться, что она будет работать как-то сама по себе, без особых проблем, без использования более конкретного разделения полосы. В настоящее время приложения, будь то передача мультимедиа или простой просмотр веб-страниц, потребляют среднюю скорость загрузки данных где-то между 5-40 КБ/с. Конечно, это вполне достаточная скорость для одного пользователя, но для нескольких пользователей, которые либо пользуются IP-телефонией, либо слушают музыку, либо смотрят потоковое видео и, что не менее важно, скачивают черный через sp2p-сети, очень скоро возникнет ситуация, когда общая скорость загрузки исчерпана. Лоток на модеме тоже переполняется и отбрасывает или отбрасывает вседругие пакеты. В этой ситуации наступает полный хаос. Сервисы, требующие быстрого ответа, конфликтные ситуации с загрузкой данных по http-протоколу и другие. При первых попытках оставить такую ​​сеть на произвол судьбы возникла вышеописанная проблема. Конечно, скорость загрузки тесно связана со скоростью загрузки данных. Нет смысла внедрять такие методы управления трафиком только в одностороннем порядке. Загрузка данных так же важна, как и их загрузка. Последним приоритетом было перераспределение скоростей в зависимости от типа протоколов. Это особенно важно для лучшего отклика и определения приоритетов выбранных портов, на которых работают пользовательские или серверные приложения. 39

42 3.2.1 Принцип правил Вся конфигурация выполняется с помощью приложения etc 1, которое является частью пакета iproute2. Дисциплины всегда обозначаются обозначением х:х, где первый х обозначает номер создаваемой части дерева, а второй х номер класса, эти номера следует выбирать как уникальные, а также соответствующим образом оформлять для наглядности . На рис. 3.1 показано общее расположение классов и их потомков (листьев) для направления трафика из внешней сети во внутреннюю сеть. Рисунок 3.1: Иллюстрация схемы распределения трафика. Корневая ветка с пометкой 100 предназначена для приложений, требующих быстрых ответов, занимающих в основном небольшие объемы данных и, конечно же, сервис SSH. Следующая ветвь с пометкой 900 имеет значение остаточного трафика. Все несущественное, в то же время также приложения, связывающиеся из Интернета с внутренней сетью или сервером (исходные порты в основном выше 1024), будут ранжированы с самым низким приоритетом. Последняя ветвь 300 служит для справедливого распределения скорости между пользователями в зависимости от их целевого IP-адреса.Цифры от 10 предложить количество пользователей во внутренней сети Реализация правил Первое правило называется висит на физическом интерфейсе корневой qdisc, который не размечен 1:0.Указанный по умолчаниюзначение указывает, где следует сортировать дейтаграммы и пакеты, не соответствующие какой-либо ветви. 1 Заангл.трафикконтроль 40

43 tc qdisc add dev eth1 handle 1:0 root htb default 900 Далее на сам qdisc нужно повесить основной класс с пометкой 1:1 Второе число указывает на сам класс (ветвь). В дополнение к указанию скорости со значением rate, есть также значение Burst, которое определяет размер пакета, который будет отправлен, если очередь находится в очереди. Реальная скорость зависит от этого параметра, значение Burst должно быть родительским для каждого и немного выше, чем у дочерних. Мы рассчитываем размер пакета как: максимальная скорость передачи * частота таймера. Частота таймера обычно составляет 10 мс на распространенных архитектурах. На сервере выставляем 4мс.Помимо значения Burst есть и другие специфические значения для улучшения и более точных настроек[16]. tc class add dev eth1 parent 1:0 classid 1:1 htb \ rate 4000kbit Burst 2000 Теперь вы можете увидеть пример разделения трафика на одну из трех основных групп. У этой группы гарантированная скорость 200кбит/с, потолок 4000кбит/с. Важным пунктом является значение prio, задающее наивысший приоритет, остальные три группы имеют аналогичные настройки, при этом приоритет разный, а потолок для наименее важной группы также установлен в 2000 кбит/с. tc class add dev eth1 parent 1:1 classid 1:100 htb\rate 200кбит ceil 4000кбит Burst 1800 prio 0 Скорость раздачи для самих пользователей зависит от их количества. Гарантированная скорость рассчитывается как максимальная скорость/количество пользователей. tc class add dev eth1 parent 1:300 classid 1:10 htb \ rate 400kbit ceil 4000kbit Burst 1600 prio 1 Быстрая очередь pfifo неявно устанавливается для каждого листового класса. Однако здесь используется очередь типа sfq для более справедливого распределения пропускной способности. tc qdisc add dev eth1 parent 1:10 handle 10:0 sfq perturb 10 Каждый созданный класс или лист должен быть связан склассификатором fwmark, который напрямую подключается к маркировке пакетов значением MARK. tc filter add dev eth1 протокол ip handle 10 fw flowid 1:10 А теперь следует сама маркировка на основе требуемых правил. 41

44 iptables -t mangle -A DOWN -p icmp -j MARK —set-mark 100 iptables -t mangle -A DOWN -p tcp -m length —length :64 -j MARK \ —set-mark 100 iptables -t mangle -A DOWN -p tcp —sport ssh -j MARK —set-mark 100 iptables -t mangle -A DOWN -p tcp —sport 1024: j MARK \ —set-mark 900 iptables — t mangle -A DOWN -d j MARK —set-mark 10 iptables -t mangle -A DOWN -m mark —mark 0 -j MARK —set-mark900 Первое правило устанавливает для всех протоколов icmp высший класс. Защита от атак через icmp решена выше с помощью брандмауэра. Другое правило также помечает все мелкие пакеты, которые обычно используются при установлении соединения, в высший класс. Затем включение службы ssh также в наивысшем приоритете. Все исходные порты из Интернета выше 1024 отмечены самым низким приоритетом. Следующее деление осуществляется в соответствии с IP-адресом назначения пользователя, и, наконец, всем непомеченным пакетам автоматически назначается самый низкий приоритет. Аналогичная настройка используется для направления трафика из внутренней сети в Интернет, только он делится не по количеству пользователей, а по типу протоколов и портов. Гигант. 3.2 показана схема разделения полосы для направления загрузки. Весь сценарий установки представлен в приложении. Рисунок 3.2: Распределение трафика по направлению загрузки. 42

45 4 ДРУГИЕ ПОДХОДЯЩИЕ ПРИЛОЖЕНИЯ Для еще более эффективной работы сервера рекомендуется установить несколько приложений, которые помогут ему работать должным образом. Это своего рода усовершенствование всей системы, при этом учитываются вопросы безопасности. 4.1 DNS DNS — это иерархическая система имен, называемых доменами. Эта служба реализуется протоколами UDP и TCP напорт 53. Суть в том, чтобы преобразовать IP-адреса в доменные имена, которые людям легче запомнить. Для локальных целей достаточно отредактировать файл hosts, расположенный в каталоге /etc. Таким образом, мы реализуем простое назначение каждой станции одному IP-адресу pc_name.domain_name pc_name Иерархия доменов Основной единицей иерархии является домен. Он может содержать несколько серверов или пользовательских компьютеров, которые каким-либо образом связаны между собой. Один домен также может содержать несколько поддоменов. Это создает домены первого, второго и n-го порядка. Вершиной всей системы является так называемый корневой домен. Корневые серверы имен предоставляют файл корневой зоны другим DNS-серверам для обеспечения правильной работы. Обычно они являются частью глобально распределенной базы данных. Сам файл корневой зоны меняется не часто и находится под управлением организации 1. Полный список корневых серверов можно найти, например, здесь[19] Распределение DNS Для больших сетей целесообразно включить систему DNS в управление базы имен. Однако эта база данных не обязательно служит только для более четкого описания отдельных станций, но и для трансляции адресов из Интернета. За каждым доменом зарезервировано несколько серверов имен, которые являются для него авторитетными, а значит, предоставляют гарантированно достоверную информацию обо всех компьютерах, принадлежащих этому домену в данный момент. Мы можем разделить типы DNS-серверов на: Первичный — это авторитетный сервер, который определяет содержимое доменов. 1 (InternetAssignedNumbersAuthority) отвечает за глобальную координацию DNSroot, IP-адресов и других протоколов. 43

46 Secondary Служит резервным сервером. Обычно он копирует данные с основного сервера, но не может изменить их сам. Он обрабатывает запросы так же, как основной DNS-сервер. Только кэширование. Эти серверы не являются авторитетными ни для какихдомен, используется для хранения ранее обработанных запросов Bind на сервере Приложение Bind[20], вероятно, является наиболее широко используемым DNS-сервером для Linux/Unix. Почти все крупные организации используют эту систему, которая в первую очередь предназначена для интенсивного трафика DNS-запросов. Для небольшой сети построение первичных и вторичных DNS-серверов не имеет общего значения, поэтому в этом разделе основное внимание уделяется кэшированию DNS. Эта система особенно выгодна там, где не очень быстрая линия для выхода в Интернет. Проблема с асимметричным подключением заключается именно в исходящем трафике. Кэш DNS, таким образом, запоминает запросы, которые он обрабатывал до истечения 1. Если приходит тот же запрос, он не обращается повторно к первичным серверам в Интернете (как правило, у каждого интернет-провайдера он свой), а обрабатывается в уровень внутренней сети. Это, конечно, снижает трафик, особенно для загрузок, когда UDP-датаграммы с удаленными DNS-запросами не отправляются постоянно. Не рекомендуется запускать Bind под пользователем root из соображений безопасности, поэтому желательно создать специального именованного пользователя, под которым он будет запускаться. В дистрибутиве Gentoo эта опция выполняется после компиляции команды bind. emerge —config = Эта команда создает специальную иерархию каталогов /chroot/dns/, в которой будет выполняться вся конфигурация привязки. Файл /chroot/dns/etc/bind/named.conf используется для самой настройки. Особенно важен пункт options, в котором задаются следующие параметры: auth-nxdomain no; Это значение указывает, что дополнительная информация о сети не предоставляется. Еще одна важная настройка: вперед вперед; экспедиторы < ; 1 (TimeToLive) период действия записи DNS. 44

47 >; ; В первом пункте написано бинду: если не знаете ответа, спросите у серверов, указанных ниже.IP-адреса и dns серверов, перечисленных за форвардерами, совпадают с этими удаленными DNS.Следующая опция сообщает бинду, какие адреса слушать. слушать < ; ; > Последний вариант — файлы локальной зоны. В большинстве случаев они уже неявно заданы, как и файл named.ca, содержащий список корневых DNS-серверов. зона «.» В < тип подсказки; файл «named.ca»; > зона «localhost» В < мастер-тип; файл «pri/localhost.zone»; разрешить обновление < никто; > > зона «127.in-addr.arpa» IN < мастер-тип; файл «pri/127.zone»; разрешить обновление < никто; > > Как последний вариант, необходимо в файле resolv.conf в каталоге /etc, где в качестве DNS-сервера указан локальный шлейф. DNS-сервер, предназначенный только для кэширования, запускается с помощью /etc/init.d/named start. Правильность работы можно проверить с помощью команды dig[некоторый адрес]. копать землю ;; Время запроса: 25 мс dig ;; Время запроса: 2 мс 45

48 Из примера видно, что первый запрос на выяснение адреса не сохранился в памяти (кеше) DNS-сервера. Это заняло 25 мс, потому что он должен был запросить удаленный сервер (ip-адрес в файле named.conf). После повтора запроса прошло всего 2 мс, запрос нашелся в памяти и его нужно было отправить дальше. 4.2 Denyhosts Denyhosts — это приложение, написанное для Linux и используемое для защиты от атак на серверные службы, особенно от так называемых контрсервисы брутфорс-атакиsh. Denyhosts проверяет файл журнала аутентификации, в котором записываются все недавние неудачные попытки входа в систему. Он считывает IP-адрес злоумышленника и сравнивает количество неверных попыток входа в систему с максимальным значением, установленным пользователем. Если это значение превышает указанный предел, denyhosts сохранит запись в файле /etc/hosts.deny. После записи записи в файл все попытки с IP-адреса злоумышленника блокируются. Кроме того, он использует глобальную синхронизацию базы данных со всеми заблокированными IP-адресами, которые он регулярно обновляет. Необходимыйоднако обратите внимание, что запись не обязательно должна храниться в базе данных постоянно, но можно выбрать длину. Если мы хотим специально настроить адреса, которые всегда должны быть разрешены, мы вносим запись в файл /etc/hosts.allow. Этот файл всегда читается первым перед hosts.deny. Конфигурация этого приложения находится в файле /etc/denyhosts.conf. Он содержит несколько конкретных параметров, наиболее важными из которых являются: PURGE_DENY = Этот параметр указывает, как долго должна храниться блокирующая запись. BLOCK_SERVICE = Теперь мы определяем, какие службы мы хотим заблокировать. DENY_THRESHOLD_(различные комбинации) =

Здесь задается потолок, при котором вводится запись, если атакующий его превышает. SYNC_SERVER = SYNC_INTERVAL = Эти параметры позволяют использовать синхронизацию заблокированных IP-адресов из центральной базы данных и настройку интервала, в котором она будет происходить. Это приложение предоставляет еще больше возможностей, которые подробно описаны в документе[21]. Интересно наблюдать длину лога с заблокированными IP-адресами, которая достигает нескольких сотен строк в сутки. 46

49 5 RADIUS SERVER Конечно необходимы все механизмы контроля доступа к серверу и безопасности из внешнего мира (интернет), нельзя оставлять сервер незащищенным от всех возможных злоумышленников извне. Если человек думает о возможностях, как лучше защитить такую ​​станцию, которая ежедневно успешно или безуспешно сопротивляется атакам извне, ему следует подумать и о вопросе внутренней безопасности. Нигде нет правила, что атаки происходят только в одностороннем порядке. Таким же образом, когда хакер пытается проникнуть в серверную систему, он может попытаться проникнуть в так называемую черную систему изнутри. данные, или просто повредить систему просто для удовольствия. Часто целью атаки является просто установить связь сИнтернет-провайдер без необходимости платить что-либо. В прежние времена, когда весь трафик обеспечивался только по кабелю, не было особых причин заботиться о безопасности передаваемых данных в той мере, в какой это было установлено развитием беспроводной передачи. Если злоумышленник хотел получить доступ, он должен был проткнуть себя где-нибудь на кабеле и начать прослушивание.Сегодня все подобные атаки находятся на очень продвинутой стадии, потому что любая такая попытка вызывает изменение импеданса на линии, и более чувствительную детектор может легко обнаружить его. Сегодня особенно популярна беспроводная передача, так называемый Wi-Fi 1. Его развитие положило начало популяризации передачи интернета не по кабелю, а по радиоканалу. Однако этот факт благоприятствует злоумышленникам, ведь обнаружить такую ​​атаку в радиоканале гораздо сложнее, чем в кабельной линии. Сначала была слабая защита в виде ключей WEP 2, позже были разработаны более продвинутые методы шифрования PUWPA 3. Основой безопасности является отказ в доступе к сети злоумышленникам или нежелательным пользователям, а также контроль законных пользователей, которым разрешен доступ. Для этой цели часто используется так называемый aaa 4, который в настоящее время предоставляется через стандарт сервера Radius ieee802.1x 5. AAA — это аббревиатура для аутентификации, авторизации и учета. Аутентификация означает проверку личности пользователя вышестоящим органом аутентификации. Эта функция выполняется сервером RADIUS с использованием соответствующего протокола. Авторизация означает предоставление прав доступа выбранному пользователю. Однако авторизация предоставляется только тому пользователю, который уже успешно прошел процесс аутентификации. В противном случае пользователю будет отказано в правах доступа. Бухгалтерский учет относится к своего рода сбору информации о заданных пользователях. Это может быть, например, количество переданных данных, общая продолжительность сетевого соединения и т. д. 47

50 Это показано на рисунке 5.1.Принцип аутентификации с использованием сервера Radius. В этой системе обычно используется протокол EAP, который предназначен для связи между клиентом 6 и точкой доступа 7 на основе сертификатов, что является очень безопасным методом связи. Рисунок 5.1: Принцип аутентификации с помощью сервера RADIUS. Сначала проверяется, есть ли у клиента действующий сертификат. В противном случае не будет реальной связи с сервером RADIUS. Если это так, доступ к серверу радиуса разрешен. На основании своих данных он предоставляет доступ в сеть, что показано в пункте 3. Однако при реализации интернет-шлюза используется прямая связь с сервером RADIUS. Хотя эта система менее безопасна, ее вполне достаточно для небольшой сети. 5.1 Radius Сервер RADIUS управляет службами аутентификации и авторизации через UDP-порт 1812, в то время как учет осуществляется через UDP-порт 1813. Транзакция между сервером RADIUS и клиентом аутентифицируется общим секретом, который никогда не передается по сети. Все необходимые данные о пользователе впоследствии отправляются в зашифрованном виде. 1 Wi-Fi — это стандарт для локальных беспроводных сетей. 2 (WiredEquivalentPrivacy) — исходный стандарт безопасности, см. [3] 3 (Wi-FiProtectedAccess), более продвинутый метод безопасности, см. [3] 4 Zangl.аутентификация, авторизация, учет. 5 Протокол, обеспечивающий безопасность доступа к компьютерной сети. 6 Водная терминология, именуемая просителем. 7 Терминология, содержащаяся в воде, называется аутентификатором. 8 Eng.RemoteAuthenticationDialInUserService. 48

51 Чтобы получить доступ к радиусу, пользователь вводит свое имя и назначенный пароль. Это создает своего рода запрос, называемый Access-Request, который точно содержит имя пользователя, пароль и идентификационный номер порта, через который подключен пользователь. Этот запрос отправляется повторно, если радиус не возвращает ответа. Получив запрос на доступ,радиус ищет либо в файле, где определены клиенты, либо в базе данных пользователей и находит соответствующую запись. Он содержит список нескольких параметров о клиенте. Если запрос не соответствует ни одному из параметров, пользователю возвращается сообщение об отказе в доступе, которое представляет собой уведомление об отказе в доступе. Если все соответствует параметрам, он отправляет пользователю ответ Access-Accept, в который также вставляет список значений, относящихся к пользователю.Структура пакета RADIUSПакет Radius инкапсулируется в часть данных пакета Дейтаграмма UDP. В качестве порта назначения установлено значение При обмене сообщениями исходный и целевой порты автоматически меняются местами. Рисунок 5.2 (использован из [22]) показывает структуру. Рисунок 5.2: Структура пакета RADIUS. Значение в поле кода представляет тип пакета. Всякий раз, когда пакет с указанным недопустимым значением достигает радиуса, он автоматически отбрасывается. Таблица 5.1 описывает возможные значения в этом поле. Поле идентификатора пакета применяется при правильном сопоставлении запросов и ответов. Поле длины определяет размер пакета радиуса. Он также служит для проверки ошибок. Если пакет на самом деле меньше значения, указанного в этом поле, он отбрасывается. Длина пакета может быть от 20B до 4096B. 49

Поделиться с друзьями
ОС советы