Меню

Настройка маршрутизатора на freebsd

Настраиваем безопасный роутер на базе FreeBSD

Архив номеров / 2006 / Выпуск №6 (43) / Настраиваем безопасный роутер на базе FreeBSD

ВАСИЛИЙ ОЗЕРОВ

Настраиваем безопасный роутер на базе FreeBSD

Существует два ошибочных мнения. Одно гласит, что безопасности в настройке сервера много не бывает, другое – что она не нужна вовсе. В первом случае работать в системе становится неудобно, во втором – важная информация не защищена от посторонних. Где же золотая середина?

Речь пойдет о том, как увеличить безопасность FreeBSD, работающей в качестве маршрутизатора между локальной сетью и Интернетом. Так как мы будем настраивать роутер, то о большом количестве пользователей на нем речи не идет. Также я предполагаю, что компьютер имеет доступ в Интернет с внешним IP-адресом.

Говоря о безопасности в общем (не только о компьютерной), мы неизменно возвращаемся к одному очень простому и действенному правилу: все, что человек создал, он может и уничтожить. Это правило работает везде и всегда. Возвращаясь к безопасности операционных систем, можно говорить об их защите очень долго, но все вернется опять к этому правилу: операционную систему создал человек, и, следовательно, всегда найдется другой человек, который сможет обойти ее защиту, какой бы мощной она ни была.

Безопасность системы в целом складывается из трех факторов:

Рассмотрим каждый из этих факторов подробно.

Большинство взломов происходит из-за ошибок в ядре. Ядро для операционной системы – это основа: оно управляет всеми операциями, производимыми в компьютере, и, следовательно, без ядра работа системы невозможна, в частности, из-за отсутствия контроля за входными значениями функций. Функции работают на уровне ядра и как следствие имеют абсолютные привилегии, поэтому некоторые хакеры усердно ищут уязвимости для повышения привилегий в системе.

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

Человек, нашедший уязвимость, может сообщить о ней разработчику или использовать уязвимость для взлома.

В первом случае разработчик, как правило, в кратчайшие сроки устранит уязвимость и выложит обновления для ядра. Вам же как системному администратору достаточно вовремя обновить систему (ядро).

Второй вариант происходит достаточно редко и грозит взломом многих серверов. Опасен он тем, что вы думаете, что система надежна защищена, хотя на самом деле это не так. Рано или поздно, разработчики узнают о существовании уязвимости и все возвращается к первому случаю.

Уязвимости в программном обеспечении находят гораздо чаще, нежели в самой системе. Если программа достаточно популярна, то в ней будут стараться найти уязвимости, чтобы получить возможность взломать достаточно большое количество серверов. Человек, который нашел уязвимость, может пойти двумя путями, которые аналогичны описанным ранее. Автор программы рано или поздно узнает об уязвимости и выпустит обновление к программе. А ваша задача – всего лишь вовремя обновить ПО.

Эта составляющая является главной для безопасности системы в целом! Ни одна система не может «похвастаться» безопасностью без дополнительной настройки. Все ОС придется аккуратно настроить перед тем, как они смогли бы противостоять хакерским атакам.

На основании вышеизложенного понятно, что от грамотной настройки сервера и его поддержки зависит практически все, а выполнить эти требования может только компетентный специалист. Следовательно, говоря о безопасности ОС, мы должны сравнивать настройки систем, а не сами системы. Если у кого-то взломали FreeBSD, то это не говорит о том, что вся система FreeBSD уязвима, это говорит только о том, что ее неправильно настроили.

Как настроить FreeBSD

Итак, переходим от теории к практике. Настраивать систему мы будем также по трем направлениям, описанным ранее.

Итак, у вас установлена FreeBSD со стандартным ядром GENERIC, которое включает в себя поддержку избыточного количества устройств и функций. Это достаточно просто объяснить: разработчик не знает, какая у вас система, какие устройства и т. д., а стандартное ядро практически всегда позволяет загрузиться на любом компьютере. Конфигурирование ядра – задача довольно тривиальная. Требуется совсем немного времени, чтобы «выкинуть» из конфигурационного файла ядра все, что не нужно, потом, добавив дополнительные возможности, перекомпилировать его. Зачем пересобирать ядро:

Отключение поддержки ненужных устройств я оставляю на ваше усмотрение, подробности смотрите на официальном сайте FreeBSD (http://www.freebsd.org/doc/ru_RU.KOI8R/books/handbook/kernelconfig-config.html). Сразу добавляем в конфигурационный файл опции для firewall: я предпочитаю использовать в качестве firewall pf, поэтому речь пойдет о нем. Приступаем к конфигурированию и компиляции ядра (комментарии начинаются с «//», их писать не нужно!):

// Включаем поддержку firewall

// Запрещает перезагрузку клавишами

// Включаем поддержку ALTQ для шейпинга пакетов

Источник

Роутер на Freebsd 10 для доступа в интернет

Введение

Будем использовать следующую версию системы для решения нашей задачи по настройке шлюза:

Если вы еще не установили систему, то рекомендую мою статью с подробным описанием установки Freebsd 10 с видео в конце. Если вдруг будете устанавливать в качестве виртуальной машины на Hyper-V, то у меня есть отдельная заметка на эту тему с описанием поддержки ядром freebsd гипервизора Hyper-V.

На сервере установлены 2 сетевые карты:

В нашу задачу по настройке программного freebsd роутера будет входить настройка маршрутизации на сервере, установка и настройка ipfw, включение nat, настройка локального dhcp и dns сервера.

Подготовка сервера к настройке шлюза

Подробно вопрос настройки сервера Freebsd 10 я рассмотрел отдельно. Рекомендую ознакомиться с материалом. Здесь я не буду останавливаться на нюансах, а просто приведу команды, которые нам необходимы, без комментариев и подробных пояснений.

Любую настройку я предпочитаю начинать с обновления системы. Выполним его:

Теперь установим mc, я привык работать в нем:

Включаем синхронизацию времени. Для этого добавляем в /etc/rc.conf

И запускаем демон ntpd:

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

Не забываем добавить dns сервер в /etc/resolv.conf.

Настройка ipfw и ядерного nat на Freebsd 10

Для того, чтобы включить firewall и nat на будущем freebsd маршрутизаторе можно просто подгрузить необходимые модули ядра. Так сделать проще всего и быстрее, но есть нюанс. Как только вы загружаете модуль ipfw, вы теряете доступ к серверу. Если вы работаете не за консолью, а скорее всего это так, тем более если у вас вообще нет доступа к консоли сервера, то делать так не рекомендуется по понятным причинам. Поэтому мы поступим по-другому. Добавим необходимые опции в ядро, в том числе и опцию, которая делает по-умолчанию фаервол открытым, соберем новое ядро и установим его. Так мы не потеряем удаленный доступ к серверу.

Перед сборкой ядра обновим исходники системы. Я предпочитаю это делать через svn. Если он у вас не установлен, то установите:

Теперь обновляем исходники:

Копируем стандартное ядро и добавляем туда новые строки:

Собираем и устанавливаем новое ядро:

Добавляем в файл /boot/loader.conf строку:

Добавляем в /etc/rc.conf следующие строки (комментарии уберите):

Идем в указанную папку и создаем там файл для правил ipfw:

Копируем скрипт безопасного редактирования правил и делаем его исполняемым:

Подробно о том, что это за скрипт и как он работает я рассказал в теме по настройке freebsd, ссылку на которую давал в начале. Активируем новые правила запуском скрипта:

Откроется список правил в редакторе по-умолчанию. Там уже будут все правила. Можете еще раз их проверить и если все в порядке, сохраняете файл и выходите из редактора. В консоли вы увидите следующее:

Проверим примененные правила:

Если доступ к роутеру не потеряли, значит все в порядке. Можно перезагрузить сервер и все добавленные параметры в rc.conf активируются. Сделайте это и попробуйте на каком-нибудь компьютере в сети пропинговать адрес в интернете по ip, к примеру 8.8.8.8. Если пинги пройдут, значит все в порядке.

Поле того, как убедитесь, что ipfw настроен корректно, правила применятся и доступ к серверу есть, можете перевести его из открытого режима работы (последнее правило автоматически устанавливается allow all from any to any) в закрытый. Для этого в файл /boot/loader.conf добавьте строку и перезагрузите сервер:

На этом основная настройка шлюза на Freebsd 10 окончена. Клиенты смогут выходить в интернет. Но для удобства необходимо на шлюз установить и настроить dhcp и dns сервер, для обслуживания запросов пользователей. Иначе придется вручную забивать сетевые параметры и использовать сторонний dns сервер.

Установка и настройка dnsmasq

Для нашего роутера на freebsd подойдет любой dns и dhcp сервер. Можно использовать традиционные named и dhcp-server. Но для простоты и удобства, когда не нужен дополнительный функционал, я предпочитаю использовать простой и быстрый в настройке dnsmasq.

Устанавливаем dnsmasq на Freebsd шлюз:

Приводим конфиг к следующему виду:

Добавляем в /etc/rc.conf:

Все, теперь наш шлюз полностью готов. Настраиваем на клиентах получение настроек по dhcp и проверяем работу интернета.

Информацию о выданных leases dhcp сервера dnsmasq можно посмотреть в файле /var/db/dnsmasq.leases.

Анализ сетевой активности в freebsd с помощью iftop

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

Устанавливаем iftop на настроенный Freebsd шлюз:

Запускаем iftop с указанием интерфейса и отображением используемых портов:

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

Заключение

Подведем итог того, что сделали. За короткое время настроили полноценный шлюз (по сути программный роутер) на базе Freebsd 10 для обеспечения выхода в интернет клиентов за сервером. При этом обеспечили автоматическое получение настроек. Даже на скромном виртуальном сервере такой шлюз способен переварить достаточно большой траффик.

Вся настройка занимает буквально 10-15 минут. Основное время уходит на сборку ядра. Чем выше версия Freebsd, тем дольше оно собирается, несмотря на то, что скорости железа существенно возрастают.

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

Этого достаточно для полноценной работы шлюза на Freebsd 10. Если есть необходимость подсчета пользовательского траффика или ограничения доступа к определенным ресурсам, можно настроить прокси сервер squid и sams2 к нему.

Источник

Одминский блог

Блог о технологиях, технократии и методиках борьбы с граблями

Как настроить машрутизатор средствами FreeBSD

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

Так что не боясь предстать капитаном очевидность в этот раз я распишу как организовать программный маршрутизатор средствами FreeBSD. И хотя писалось все это еще под 4.2, но тем не менее и под 7.4 все эти же рецепты применимы, разве только с той разницей, что все пакеты отличаются версиями с большую сторону. Сказать откровенно, я предпочитаю программные маршрутизаторы за их дешевизну, простоту и быстроту в настройке, поскольку для программного маршрутизатора сгодится любая древняя машинка, главное чтобы в ней была возможность поставить дополнительные сетевухи. При этом программный маршрутизатор отличается от аппаратных аналогов тем, что произведя один раз настройку маршрутизатора вы следующий настроите уже за полчаса, а не будите копаться в мануалах нового для вас агрегата, купленного клиентом с оказией, не понимая почему це фича вдруг оказалась багой. К тому же вменяемый аппаратный маршрутизатор стоит не малых денег и вполне сопоставим по стоимости с хорошим компом, который помимо того что будет с сотни раз мощнее, также при этом сможет, естественно при желании, стать принт-сервером, фаерволом, проксей, поточным антивирем и еще чем угодно, и что самое основное- это решение маштабируемое, то есть добавление нового интерфейса сопряжено с гораздо меньшими затратами, нежели при попытке расширения аппаратного маршрутизатора, главное подобрать материнку с 2-3 слотами под сетевуху, ибо найти две интегрированные не проблема. И естественно формула скорость работы/цена для программного маршрутизатора будет на порядки ниже аппаратного, так как стоимость гигабитного маршрутизатора уже будет сопоставима с покупкой мощного сервера для офиса. Ну это просто вода относительно того за что я люблю программные рутеры, а теперь собственно перейдем к самой настройке маршрутизатора.

Для начала устанавливаем систему FreeBSD 7.4 и настраиваем её в соответствии с нашими требованиями, то есть можно настроить как защищенную систему если она торчит в инет, или служит для защиты серверной фермы от локалки; ну а ленивцы могут ограничиться просто установкой нужных пакетов, если она будет служить просто для маршрутизации пакетов между сетями внутренней сети предприятия.

Собственно для начала имеем две сетки: 192.168.0.0/24 (основная) и 192.168.10.0/24 (дополнительная) которые нам и надо совокупить посредством нашего настроенного сервера FreeBSD, в который мы же загодя воткнули две-три-четыре и более сетевых карт (максимум который у меня прекрасно существовал было 5 сопряженных сетей, не считая вирутальных интерфейсов). Предположим что для сетевых интерфейсов мы выбрали IP адреса: 192.168.0.1 и 192.168.10.1

Источник

Читайте также:  Настройка эквалайзера 10 полос
Рубрика: Безопасность / Сетевая безопасность