Этот документ охватывает вопросы обеспечения безопасности процессов и сервисов для операционной системы NetBSD. Kyrie Irving All Shoes Большинство информации в этом документе может быть также отнесено и к другим BSD системам.
NetBSD, защита процессов и сервисов: Введение Начиная с версии NetBSD 1.5 в состав системы входит полный набор, встроенных по умолчанию в ядро, инструментов системного и сетевого администратора. С 1.5 release установка по умолчанию стала значительно более безопасной, что делает систему более привлекательной. Наряду с защищенностью, NetBSD — также наиболее переносимая операционная система в мире и при этом сохраняет высокую эффективность, имеет множество дополнительных возможностей и невероятно стабильна. Цель этого документа Уже существует большое количество документации по настройке NetBSD firewalls, IP network address translation (IPNAT) и Secure Shell, но все они разрознены и целью данного документа является объединение и некоторая детализация накопленного материала. Оглавление 1. Краткий обзор основных компонентов 2. Конфигурирование NetBSD Secure Shell 3. Конфигурирование IP Filter 4. IP Network Address Translation 5. Конфигурация и запуск служб 6. Дополнительные/Альтернативные продукты 7. Примеры файлов конфигурации 8. Дополнительные ссылки Краткий обзор основных компонентов В этом разделе мы проведем краткий обзор материала, изложенного в остальных главах.
Пример установки Для большей наглядности, давайте представим сеть, с которой нам предстоит в дальнейшем работать:
Эта схема довольно обычна и весьма распространена в организациях, получающих доступ в сеть через своего Internet — провайдера. Конечная цель фаервола состоит в том, чтобы позволить клиентам из сети 172.16.0.0 взаимодействовать с Internet. Чего мы хотим? Нам необходимо передать определенный трафик из внутреннего периметра, доступ к самому фаерволу будет осуществляться через SSH. Данная таблица описывает взаимодействие внутренних сетевых сервисов, фаервола и Internet.
Обратите внимани на то, что мы должны иметь возможность транслировать трафик служб DNS, SMTP, HTTP и FTP. Следует также учесть, что правила IPFILTER для создания соединения и передачи трафика очень похожи. Больше чем один способ… Примите во внимание, что есть много способов решения данной задачи. Например, такая:
В демилитаризованной зоне можно было бы разместить общедоступные серверы, сервисы FTP и т.д. В нашем примере мы не будем использовать ДМЗ, так как у нас нет никаких серверов, которые должны быть доступны из Internet, например DNS сервера, являющегося главным для какой-либо зоны. Конфигурирование NetBSD Secure Shell
Начиная с NetBSD 1.5 Secure Shell был включен в состав операционной системы. Заданная по умолчанию конфигурация sshd сделана весьма хорошо, однако, давайте разберем настройку демона ssh, дабы иметь об этом представление. Настройка /etc/ssh.conf клиента
Как видно, названия параметров весьма красноречивы и однозначны. Настройка /etc/ssh.conf сервера Файл конфигурации сервера также весьма хорош даже с параметрами по умолчанию.
Этот файл немного жестче, по сравнению с клиентским, например запрещен X11 forwarding, что оправдано для фаервола. Для того, чтобы включить X11 forwarding, необходимо исправить в файле конфигурации следующие строки:
Администратору нечего редактировать в файле конфигурации sshd, пусть все остается по умолчанию. Конфигурирование IP Filter
NetBSD использует ipfilter как фаервол, заданный по умолчанию. С NetBSD 1.5, ipfilter интегрирован в ядро, однако, мы рассмотрим случай, как заставить работать ipfilter и ipnat на более ранних релизах. Понимание файла ipf.conf Файл, который управляет правилами для ipfilter обычно называется /etc/ipf.conf. В этом разделе мы пробежимся через параметры настройки, которые нам необходимы, однако несравненно более авторитетные документы могут быть найдены на http://www.obfuscation.org/ipf/ во всем разнообразии. В основном, ipfilter оперирует двумя основными принципами: 1. Соответствие текущей строке 2. Последнее правило заменяет предидущие Вот пример самого простого ipf.conf:
Согласно первой строке, разрешен любой трафик на любом интерфейсе. Во второй строке, однако, весь трафик на любом интерфейсе блокирован. Синтаксис Главным образом, синтаксис ipfilter прост и почти естественен. NIKE FREE 5.0 Для того, чтобы пропустить трафик используются связки pass in и pass out. Интерфейс может быть как определен, так и не определен:
И для определенного интерфейса:
Все замечательно. Взглянем на конфигурацию, которая нам нужна. asics gel lyte v Мы уже знаем, что нам необходимо пропускать и разрешать соединения по SSH. bottes timberland pas cher
Рассмотрим ключевые слова:
Пример написания Взглянем на фесь файл вооруженным взглядом. Nike Hurley
Важно обратить внимание, что на одном интерфейсе, fxp0, мы хотим иметь возможность пропускать трафик сети 172.16.0.0 (так как наша внутренняя сеть — 172.16.0.0). Чтобы сделать это, мы можем использовать следующие правила:
Обратите внимание, что сеть 172.16.0.0/12 пропущена, хотя и должна была быть заблокирована на интерфейсе ep0. Мы рассмотрим этот момент чуть позже. Режем все! Затем мы отключим весь трафик к ep0, следовательно мы не должны явно указывать для блокировки сеть 172.16.0.0.
Пишем правила как для клиента Internet Затем мы хотим заставить систему сетевой защиты иметь возможность работать подобно Internet клиенту:
Разрешаем остальное Теперь добавим протоколы, которые мы хотим разрешить. Обратите внимание, что если Вы имеете один из этих типов сервисов, запущеных на машине с фаерволом,
IP Filter для модемного подключения Модемное соединение отличает то, что адрес интерфейса каждый раз назначается удаленной стороной и обычно случайным образом. Это, своего рода, вызов ipfilter! В случае динамического адреса правила фильтрации должны быть написаны с несколько низжей степенью безопасности. Другими словами, ipfilter не может использовать в правилах IP адрес, хотя использование имени интерфейса тоже дает достаточную гарантию безопасности. (Пр.п — у PF данная возможность есть, сам переводил FAQ. То, что я перевожу сейчас или слишком старо, или действительно ipfilter не может использовать динамический адрес в правилах фильтрации?) Вот пример правил, использующих IP адрес:
Для модемного соединения мы должны заменить набор правил на это:
Ну и что хорошего мы вынесли из этой главы? Во первых — блокируйте все лишнее, во вторых — если не используется какая-либо служба и не предполагается доступ ее из Internet, разрешайте только входящий трафик. Не используйте для соединения с системой ничего, кроме ssh. Дополнительная информация Я строго рекомендую прочитать ipf howto для получения более детальной информации и изучения различных стратегий фильтрации. (Пр.п — я тоже) IP Network Address Translation
Начиная с NetBSD 1.5, ipnatтакже включен по умолчанию в ядро. Задачей IPNAT является взять исходный IP адрес и транслировать его в адрес другого сетевого интерфейса. Это также известно как masquerading. Как должен выглядеть наш /etc/ipnat.conf Это очень просто:
Первым правилом мы проксируем ftp через интерфейс ep0. Следующая строка разрешает tcp/udp, устанавливая соответствие между внутренним адресом и внешним адресом. Последняя строка просто маскарадит адреса сети 172.16.0.0/16 в адрес 216.68.250.60. Этих правил вполне достаточно для наших целей. Другие интересные вещи Вот несколько довольно интересных моментов. Например, как мы можем пробросить соединение внутрь нашей сети:
Это очень удобно, если Вы хотите иметь в нутри сети сервер, доступный извне или у Вас есть ДМЗ, в которой размещаются общедоступные сервисы. Также такое правило может быть использовано при организации связи двух локальных сетей, но это не лучший способ. Кончно, большинство администраторов разместило бы общедоступные сервисы (например вэб-сервер) в пределах ДМЗ и использовали бы ipfilter, разрешив к нему только http и ssh. Но если у Вас больше, чем один внешний адрес? Также все просто:
Наконец, диапазон portmap может быть откорректирован, если Вы чувствуете в этом необходимость. ipnat и модемное соединение Очень много домашних пользователей используют модемное соединение, для связи с Internet и у большинства из них — динамчески назначаемый IP адрес. Может показаться, что мы не сможем использовать ipnat, которому требуется указание внешнего IP адреса для работы, но это только кажется… В случае постояннгого соединения мы делаем так:
Это правило говорит нам, что все адреса сети 172.16.0.0/16 транслируются в любые адреса сети 216.68.0.0/16. Учитывая тот факт, что при модемном соединении всегда назначается один адрес, записываем правила так:
В этих правилах мы указываем осуществлять трансляцию сети 172.16.0.0 в один единственный адрес, который будет принадлежать внешнему интерфейсу. Конфигурация и запуск служб
Ну, мы готовы к запуску. Вот то, что должно работать на машине, выполняющей функции фаервола:
Дополнительно, может потребоваться включить форвардинг пакетов в ядре. Включение IP Forwarding Включаем форвардинг, используя sysctl:
Для того, чтобы сохранить изменения полсле перезагрузки, внесите изменения в /etc/sysctl.conf:
Для релизов NetBSD, младших, чем 1.5 необходимо в ядре установить поддержку ipfilter:
Если Вы хотите, чтобы был доступен ipmon:
Начиная с NetBSD 1.5, все rc настройки, принимаемые по умолчанию, находятся в файле /etc/defaults/rc.conf. Размещение пользователем в файле /etc/rc.conf управляющих инструкций, имеет приоритет над /etc/defaults/rc.conf. Целью этого является сделать систему более стабильной , так как ранее все настройки располагались в /etc/rc.conf и могли быть по неосторожности или в ходе обновлений привести к краху системы. Что необходимо разместить в /etc/rc.conf:
На i386 платформах также стоит разрешить wscons:
Запуск служб Есть два пути активации сервисов: 1. Перезагрузка системы 2. Запуск rc скриптов Я предпочитаю запуск сервисов вручную, чтобы убедиться в их работоспособности и после этого перезапустить систему, для того, чтобы выяснить — происходит ли нормальный запуск во время начальной загрузки. Запуск «вручную» Зпуск любого сервиса осуществляется очень просто:
Также сервис может быть и остановлен:
Для запуска нашей системы сетевой защиты нам необходимо выполнить:
Запуск sshd и ipmon может производиться в произвольном порядке, но ipfilter должен быть запущен раньше ipnat. Дополнительные/Альтернативные продукты
NetBSD 1.5 уже достаточно укомплектовано средствами мониторинга и контроля информационной безопасности, но системный администратор наверняка захочет посмотреть средства сторонних разработчиков. Portsentry Portsentry — довольно обширный инструмент. (Пр.п — достаточно подробную статью на русском можно найти здесь — http://linuxcenter.ru:8080/lib/security/) Будучи установленной, данный инструмент отслеживает все попытки соединения с хостом и сканирования портов хоста. Установить Portsentry можно из системы портов:
Файл конфигурации будет находиться в:
Конфигурация портов: В файле конфигурации есть три набора портов, для TCP и UDP соответственно, выбор производится раскомментированием, по умолчанию используется средний набор.
Обнаружение Advanced Stealth Для этого необходимо указать номера портов, которые portsentry будет мониторить в расширенном режиме:
Также можно исключить некоторые порты (типа NetBIOS)
Файлы конфигурации В NetBSD эти файлы живут в /usr/pkg/*:
Варианты реакции: # 0 = Do not block UDP/TCP scans. Yeezy Boost 350 V2 # 1 = Block UDP/TCP scans. # 2 = Run external command only (KILL_RUN_CMD)
Сброс маршрута: Строка, сбрасывающая маршрут для NetBSD уже раскомментирована:
Отметим, что для некоторых систем может быть изменен набор правил фильтрации, например для ipfw FreeBSD:
Возможно Вы используете другой тип сетевой защиты, но portsentry допускает использование синтаксиса Вашего пакетного фильтра. TCP Wrappers: В этом разделе находится текст, помещенный в /etc/hosts.deny.
Внешние команды: Внешняя команда или скрипт могут быть вызваны следующим образом:
Здесь также может стоять и команда, изменяющая правила фильтраци. Значение счетчика сканирования Этот параметр указывает порог срабатывания portsentry. Tennessee Volunteers По умолчанию стоит 0, но 1 позволяет более-менее исключить ложные срабатывания. Port Banner Этот параметр описывает сообщение, возвращаемое в ответ на попытку подключиться к порту.
NMAP NMAP — это сканер портов. Позволяет сканировать отдельные хосты и диапазоны сетей. В настоящее время данная утилита доступна через систему портов. Устанавливаем:
<Используем: У NMAP очень много вариантов использования, поэтому мы рассмотрим только 3: 1. Сканирование одного хоста 2. Сканирование группы хостов 3. soldes nike air max pas cher Fjallraven Kanken Large Сканирование NetBSD firewall Сканирование одного хоста: В качестве примера будем использовать очень небезопасную машину внутри сети:
Сканирование группы хостов Тоже ничего сложного:
После выполнения задания в выходном файле будет находиться информация по отрытым портам работающих машин в данной сети.
Сканирование NetBSD firewall Ну и наконец — гвоздь программы:
Время сканирования впечатляет…
Tags: bsd, dns, forward, freebsd, ftp, HTTP, ipfw, linux, nat, openbsd, ppp, proxy, sysctl, tun, tunnel