Информационный портал по безопасности
Базовая настройка Juniper серии SRX
Автор: admin от 14-07-2014, 10:15, посмотрело: 2 703
Здесь уже есть несоклько статей про настройку маршрутизаторов Juniper SRX (например, раз, два, три и т.д.). В этой я постараюсь консолидировать полезную информацию, дополнив ее некоторыми приятными мелочами.
Всех заинтересовавшихся прошу под кат.
В мои руки попал новенький Juniper SRX240B и все нижесказанное будет относиться к нему. А т.к. JunOS позиционируется как единая ОС для всей серии (как минимум), то… сами делайте выводы. Также я использую версию JunOS 12.1X46-D20.5 (самая последняя, на момент публикации поста):
Для начала поставим небольшой круг задач, которые будем решать:
- Source NAT
- DHCP Server
- DNS Server
- SSH Hardening
- IDP, Security Features
Source NAT
Для настройки source NAT достаточно выполнить следующие команды:
Или в виде конфига:
При таком конфиге ВСЕ сети, которые будут сконфинурированы на внутренних интерфейсах роутера будут NAT’иться. Если нужно NAT’ить только некоторые, то вместо:
нужно написать (пример приведен для сети 172.16.1.0/27):
DHCP Server
Теперь настроим наш SRX в качестве DHCP сервера. Предполагается, что интерфейсы уже сконфигурированы и нам нужно настроить DHCP сервер только для интерфейса vlan.0:
Или в виде конфига:
В данном случае мы устанавливаем время жизни lease’а в 6 часов (6 * 60 мин * 60 сек = 21600 сек); default gateway делаем 172.16.1.1; начинаем раздавать адреса с 172.16.1.2 и заканчиваем 172.16.1.30 (диапазон, в пределах которого будет работать DHCP сервер).
Эти опции будут действовать только для интерфейса vlan.0. В случае необходимости, его можно заменить на реальное имя интерфейса, например на ge-0/0/1.
Статистику по DHCP серверу можно посмотреть следующей командой:
DNS Server
Теперь перейдем к настройке DNS сервера. Начиная с версии Junos OS 12.1x44D10 поддерживается DNS proxy, давайте же его настроим:
Или в виде конфига:
Здесь мы настроили работу DNS сервера на интерфейсе vlan.0; создали A-запись для gw-jsrx240.HOME.local (само собой таких записей можно сделать несколько); и настроили DNS forwarders для всех остальных DNS запросов.
Если DNS сервер нужно включить для всех внутренних интерфейсов, то это можно сделать следующим образом (если VLAN’ов несколько, то и настройки нужно делать соответствующие):
Или в виде конфига:
Статистику по DNS запросам можно посмотреть следующим образом:
Записи в DNS cahce посмотреть вот так (без вывода самого кэша устройства, т.к. записей там очень много):
Очистить DNS cache вот так:
SSH Hardening
Теперь попробуем обезопасить наш SSH сервер (даже если он смотрит наружу) (вместо SSH_RSA_PUBLIC_KEY нужно вставить свой SSH RSA Public Key):
Или в виде конфига:
Пояснения:
- root-login deny — запрещаем root’у подключаться по SSH
- protocol-version v2 — используем только версию протокола SSHv2
- connection-limit 5 — максимальное количество одновременных SSH подключений
- rate-limit 5 — максимальное количество SSH подключений в минуту
- tries-before-disconnect 5 — сколько раз будет разрешено попыток ввода пароля, после чего сессия будет разорвана
- backoff-threshold 1 — через ЭТО количество неправильных попыток ввода пароля будет включена задержка
- backoff-factor 10 — после достижения backoff-threshold пользователь будет заблокирован на 10 сек.
- minimum-time 30 — количество секунд, отведенное на ввод пароля, после чего сессия будет разорвана
Я предпочитаю оставлять root’у возможность входить по паролю, но только через console; остальным пользователям только по ключам с указанными выше ограничениями.
IDP, Security Features
Или в виде конфига:
В самом конце.
Не забываем сделать commit, иначе никакие изменения не вступят в силу:
Итого
Итоговый конфиг можно посмотреть ниже. Маршрутизатор обладает всеми необходимыми функциями за вполне уместные деньги.
Если будет выдан инвайт, опишу настройки PPPoE, Dynamic VPN, Site-to-Site VPN и т.д.
Источник
Начальная настройка маршрутизаторов Juniper JunOS
Вступление
Когда мы в первый раз настраиваем Джунипер, то нужно войти под пользователем root с пустым паролем. В дальнейшем система обязательно потребует указать ей рутовый пароль.
После ввода логина-пароля выходит приглашение командной строки:
В Junos OS есть три режима работы:
1. Юниксовый шел (sh), имеет приглашение типа “root@srx%”. Поскольку Junos OS основана на FreeBSD, то первое куда мы попадаем после логина – это юниксовый шел. В нем на Джунипере лучше ничего не делать. Вводим cli, нажимаем Enter и попадаем собственно в саму оболочку Junos OS.
2. Операционный режим, имеет приглашение “root@srx>”. Это по большому счету режим дебага и мониторинга. В нем можно просматривать важные параметры роутера, также в этом режиме происходит, например, обновление ПО и такие операции как перезагрузка-выключение. Если мы введем edit или configure, то попадаем в самый важный режим работы.
3. Конфигурационный режим, имеет приглашение “root@srx#”. В этом режиме осуществляется конфигурирование роутера, т.е. редактирование и применение конфига. Этот режим является основным режимом, в котором вам придется работать. Также, отсюда для удобства можно запускать команды операционного режима с помощью команды run. Например, нельзя запускать пинг из конфигурационного режима, но можно с помощью команды run:
Здесь и дальше я буду упоминать названия интерфейсов вида ge-0/0/x. Это гигабитные интерфейсы. Однако, Juniper SRX100 имеет 100-мбитные интерфейсы, они называются fe-0/0/x. На самом деле конфиг будет абсолютно тот же самый с точностью до имен интерфейсов, имейте ввиду.
Приступим к начальной настройке Джунипера из командной строки. Наши задачи:
1. Настроить root-аутентификацию и другие важные параметры (DNS, DHCP).
2. Настроить порты коммутатора (то, что в SOHO роутерах называют LAN-портами) на интерфейсах c ge-0/0/1 по ge-0/0/7.
3. Настроить Интернет на интерфейсе ge-0/0/0. Два варианта: либо IP-адрес нам выдает непосредственно провайдер, либо мы его получаем через PPPoE (кабельный интернет либо ADSL). Варианты с получение Интернета через VLAN и L2TP здесь рассматриваться не будут.
4. Настроить зоны и политики безопасности.
5. Настроить NAT на раздачу интернета в локальную сеть.
Это можно сделать двумя способами: вручную или путем мастера первоначальной настройки.
Мастер можно запустить из шела командой:
Мастер первоначальной настройки описан здесь: www.juniper.net/techpubs/hardware/junos-jseries/junos-jseries96/junos-jseries-hardware-guide/jd0e12614.html. В общем-то если вы знаете английский язык и ориентируетесь в терминах, то сможете настроить все сами без всяких мануалов, но на всякий случай приведу таблицу с расшифровкой параметров настройки.
Enter host name: | Здесь вводим имя Джунипера. Оно будет отображаться в приглашении командной строки. Играет чисто визуальную роль. |
Please enter root password: Retype root password: | Здесь вводим пароль супер-пользователя root (обязательно) |
Would you like to configure a domain name? [yes, no] (no): Enter domain name: | Здесь вводим имя домена (необязательно) |
Would you like to configure name server? [yes, no] (no): Enter IP address for the name server: Would you like to configure alternative name server? [yes, no] (no): Enter IP address for the name server: | Здесь вводим адрес первичного DNS-сервера (крайне желательно) А здесь адрес вторичного (необязательно) |
Configure the following network interfaces Identifier…Interface ….1……..ge-0/0/0 ….2……..ge-0/0/1 ….3……..ge-0/0/2 Please select interface identifiers: IP address for this interface: Subnet mask bit length for this interface [1–32] (32): Enter a security zone name to associate this interface to: | Здесь перечисляется список физических интерфейсов роутера. Если мы хотим сконфигурировать тот или иной интерфейс, то нам нужно выбрать его номер в списке Здесь вводим номер интерфейса |
Would you like to configure default gateway? [yes, no] (no): Enter IP address for the default gateway: | Здесь вводим адрес основного шлюза, который выдал нам провайдер. |
Would you like to create a new user account? [yes, no] (no): Enter a new user name: Enter user password Retype the password: | Здесь можно создать нового пользователя помимо root (необязательно). Может быть полезно, если роутер будет конфигурировать не один администратор. |
Would you like to configure SNMP Network Management? [yes,no] (no): Enter community string [public]: | Здесь можно назначить имя коммьюнити для мониторинга по SNMP (необязательно) |
После завершения настройки система выведет итоговую конфигурацию и запросит разрешение на применение параметров настройки (commit). После коммита мы вновь увидим приглашение командной строки и можем войти в cli.
Первоначальная настройка в CLI
А теперь то же самое, но более глубоко и в виде команд. Различные примеры первоначальной настройки можно посмотреть здесь: www.juniper.net/us/en/local/pdf/app-notes/3500153-en.pdf
Входим в режим конфигурирования:
Вводим имя Джунипера:
Имя роутера никак не влияет на его работу. Это чисто визуальный параметр, чтобы не запутаться в случае, если у нас не один, а несколько Джуниперов.
Установка пароля
После нажатия Enter система попросит вас два раза ввести новый пароль для рута.
Настройка интерфейсов
Далее, нам нужно настроить Интернет-интерфейс. Здесь мы рассмотрим самый простой случай, когда провайдер выдает нам статический белый IP-адрес явным образом. Настройка Интернета через PPPoE будет рассмотрена позднее. Допустим, провайдер выдал нам адрес 1.2.3.4 с маской 255.255.255.240 == /28 (префикс подсети). Надо отметить, что джунипер не понимает маску подсети в ее классической октетной записи, а только в виде префикса.
Настраиваем основной шлюз провайдера. Допустим в нашем случае это 1.2.3.1
Теперь давайте настроим веб-интерфейс Джунипера. Нам нужно сделать так, чтобы он был доступен только из внутренней сети и недоступен из Интернета:
Включаем ssh-доступ к роутеру:
Теперь надо настроить интерфейсы коммутатора (LAN-порты), т.е. те интерфейсы, которые будут подключены к нашей локальной сети. Опять же, возможны варианты: мы можем присвоить одному интерфейсу, например к ge-0/0/1, как описано выше адрес типа 192.168.1.1 и подключаем к этому интерфейсу корпоративные свитчи, но в этом случае через остальные порты Джунипера мы уже не сможем подключить клиентские компьютеры к подсети 192.168.1.0/24. Конкретно для нашей задачи получается немного неэкономично и негибко, хотя в других случаях такой вариант является нормальным.
Намного более удобный вариант для нашей задачи – это сделать все остальные порты Джунипера равными по своим правам, что позволит подключать сетевые устройства к любому порту, по аналогии с обычными неуправляемыми свитчами. Для этого надо сделать все остальные порты членами одной виртуальной локальной сети (VLAN).
Этой командой мы создали interface-range, т.е. набор интерфейсов, под названием interfaces-trust и включили в данный диапазон порты с 1 по 7. Данный вид группировки интерфейсов экономит нам время, т.к. нужно вводить меньше команд.
Этой командой мы сказали, что интерфейсы из данного набора являются портами коммутатора (family ethernet-swtiching) и все вместе принадлежат к одному VLAN под названием vlan-trust.
Здесь мы создаем собственно сам vlan-trust и говорим, что данный влан терминируется (имеет IP-адрес) на интерфейсе vlan.0
Ну и наконец создаем интерфейс vlan.0 и присваиваем ему адрес 192.168.1.1/24. Чей это адрес? Это адрес Джунипера в данном влане и он же будет являться основным шлюзом для клиентских компьютеров, подключаемых к портам коммутатора. По сути, что мы сделали? Мы сгруппировали физические интерфейсы от ge-0/0/1 до ge 0/0/7 в один логический vlan.0. Теперь все сетевые устройства, которые мы подключим к этим портам будут видеть друг друга в одном широковещательном домене 192.168.1.0/24.
Далее, нужно настроить адрес DNS-сервера (в данном примере Google Public DNS):
Настраиваем DHCP-сервер на интерфейсе vlan.0 (чтобы клиентские устройства получали настройки сети по DHCP)
Настраиваем зоны безопасности. Названия зон могут любыми, можно иметь большое количество зон и настраивать переходы между зонами в виде политик. Это очень удобный способ настройки безопасности. В данном примере у нас будет две зоны: trust (локальная сеть) и untrust (Интернет).
Здесь мы создаем зону безопасности untrust и присоединяем интерфейс ge-0/0/0, который у нас смотрит в Интернет, к этой зоне. Параметр зоны host-inbound-traffic обозначает какие сервисы и протоколы в зависимости могут получать доступ к самому Джуниперу. Например, в данном примере мы разрешили пинговать наш Джунипер извне, а также подключаться к нему по ssh. Если мы захотим получать Интернет-адрес по DHCP, то здесь нужно разрешить службу dhcp. Если мы захотим пользоваться IPsec-туннелями между Джуниперами, то нужно разрешить службу IKE, и так далее. То же относится и к протоколам маршрутизации. Например, чтобы разрешить обмен маршрутами OSPF, то нужно вписать опцию host-inboubd-traffic protocols ospf.
Настраиваем зону trust:
К зоне trust у нас принадлежит виртуальный интерфейс vlan.0, членами которого теперь, как вы догадались, являются физические интерфейсы от ge-0/0/1 до ge-0/0/7. Для зоны trust у нас разрешены любые сервисы и протоколы, например HTTP, то есть веб-интерфейс Джунипера. Из Интернета на его веб-интерфейс попасть нельзя, как указано в настройках зоны untrust.
Внимательно прочитайте последние два абзаца и постарайтесь хорошо понять назначение команды host-inbound-traffic, т.к. она напрямую влияет на безопасность нашей сети. Если мы не хотим, чтобы пользователи нашей сети могли обращаться к веб-интерфейсу Джунипера, мы можем оставить здесь все, как есть, но запретить это в политиках. Подробнее о политиках я напишу отдельную статью, т.к. это очень широкая тема для обсуждения
Настройка зон отображает их интерфейсы и разрешает траффик, адресованный самому роутеру. Политики транзитного траффика (проходящего сквозь Джунипер) описываются в другом месте в виде переходов между зонами.
Здесь описана политика траффика при переходе от зоны trust к зоне untrust. В данном примере из локальной сети в Интернет разрешены все запросы. Если мы захотим как-то ограничить пользователей нашей сети в использовании Интернета (например, запретить общение через ICQ или IRC), то здесь можно создать соответствующие запрещающие правила.
Здесь описана политика из зоны trust в зону trust. Опять же разрешены все переходы.
Политику из зоны untrust (Интернет) в зону trust (локальная сеть) описывать здесь не будем. Почему? Потому что политика по умолчанию стоит deny-all, т.е. все что явно не разрешено, то запрещено, а хосты из глобальной сети не должны иметь доступ к защищаемым Джунипером хостам, не так ли? Вообще, если мы не создали политику, то это не значит что ее нет вовсе. Она есть, только она пустая, а следовательно на все переходы отвечает запретом.
Последним номером в нашей сегодняшней программе будет настройка NAT для раздачи Интернета пользователям локальной сети.
Этим мы настроили Source NAT между локальной сетью и Интернетом. Теперь пользователи локалки могут спокойно пользоваться услугами глобальной сети.
Также, желательно включить систему предотвращения вторжений (IDP, intrusion detection prevention). Базовые ее настройки приведены здесь:
Заключительные настройки
После ввода всех команд нужно проверить их на синтаксис и на логику командой:
Если в нашем конфиге присутствуют какие-либо опечатки или чего-то не хватает, то система всегда сообщит нам об этом. Внимательно читайте вывод консоли, ибо Junos OS очень подробно и точно и объясняет, что нам нужно исправить! Если консоль выдаст commit check succeded, то значит все в порядке и можно писать:
После этого наши настройки сохраняться в памяти роутера и станут актуальными. Теперь можно подключать клиентские устройства, проверять пинги и Интернет. Если мы вдруг заметили, что применили что-то совсем не то и необходимо вернуться на предыдущую конфигу, то можно написать:
Эта команда вернет нас к предыдущей конфиге, которую, кстати, так же нужно коммитить. Число возможных откатов назад во времени по максимуму равно 49 и может быть настроено командой
то система выдаст нам дату и время предыдущих коммитов (максимум – 49)
Если мы выполняем удаленное конфигурирование Джунипера и боимся, что применение очередной политики или настройка интерфейса может привести к утрате связи с устройством, то можно пользоваться коммитом в следующем виде:
Эта команда применяет текущий конфиг, но лишь на определенное число минут, указанное в команде (по умолчанию 10). Если в течение этого времени не ввести просто commit, то по истечении времени Джунипер автоматом вернется к предыдущей конфиге. Это очень удобно для удаленного конфигурирования!
Итоговый конфиг приведен под спойлером
Источник