Базовая настройка Juniper серии SRX

Здесь уже есть несоклько статей про настройку маршрутизаторов Juniper SRX (например, раз, два, три и т.д.). В этой я постараюсь консолидировать полезную информацию, дополнив ее некоторыми приятными мелочами.

Всех заинтересовавшихся прошу под кат.

В мои руки попал новенький Juniper SRX240B и все нижесказанное будет относиться к нему. А т.к. JunOS позиционируется как единая ОС для всей серии (как минимум), то… сами делайте выводы. Также я использую версию JunOS 12.1X46-D20.5 (самая последняя, на момент публикации поста):
cartman@gw-jsrx240# run show version 
Hostname: gw-jsrx240
Model: srx240b
JUNOS Software Release [12.1X46-D20.5]


Для начала поставим небольшой круг задач, которые будем решать:
  • Source NAT
  • DHCP Server
  • DNS Server
  • SSH Hardening
  • IDP, Security Features


Поехали…

Source NAT


Для настройки source NAT достаточно выполнить следующие команды:

cartman@gw-jsrx240# show security nat | display set 
set security nat source rule-set trust-to-untrust from zone trust
set security nat source rule-set trust-to-untrust to zone untrust
set security nat source rule-set trust-to-untrust rule source-nat-rule match source-address 0.0.0.0/0
set security nat source rule-set trust-to-untrust rule source-nat-rule then source-nat interface


Или в виде конфига:

cartman@gw-jsrx240# show security nat                            
source {
    rule-set trust-to-untrust {
        from zone trust;
        to zone untrust;
        rule source-nat-rule {
            match {
                source-address 0.0.0.0/0;
            }
            then {
                source-nat {
                    interface;
                }
            }
        }
    }
}


При таком конфиге ВСЕ сети, которые будут сконфинурированы на внутренних интерфейсах роутера будут NAT'иться. Если нужно NAT'ить только некоторые, то вместо:

set security nat source rule-set trust-to-untrust rule source-nat-rule match source-address 0.0.0.0/0


нужно написать (пример приведен для сети 172.16.1.0/27):

set security nat source rule-set trust-to-untrust rule source-nat-rule match source-address 172.16.1.0/27


DHCP Server


Теперь настроим наш SRX в качестве DHCP сервера. Предполагается, что интерфейсы уже сконфигурированы и нам нужно настроить DHCP сервер только для интерфейса vlan.0:

cartman@gw-jsrx240# show system services dhcp | display set 
set system services dhcp maximum-lease-time 21600
set system services dhcp default-lease-time 21600
set system services dhcp pool 172.16.1.0/27 address-range low 172.16.1.2
set system services dhcp pool 172.16.1.0/27 address-range high 172.16.1.30
set system services dhcp pool 172.16.1.0/27 router 172.16.1.1
set system services dhcp propagate-settings vlan.0


Или в виде конфига:

cartman@gw-jsrx240# show system services dhcp     
maximum-lease-time 21600;
default-lease-time 21600;
pool 172.16.1.0/27 {
    address-range low 172.16.1.2 high 172.16.1.30;
    router {
        172.16.1.1;
    }
}
propagate-settings 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 серверу можно посмотреть следующей командой:

cartman@gw-jsrx240# run show system services dhcp statistics 
Packets dropped:
    Total                      0

Messages received:
    BOOTREQUEST                0
    DHCPDECLINE                0
    DHCPDISCOVER               0
    DHCPINFORM                 0
    DHCPRELEASE                0
    DHCPREQUEST                0

Messages sent:
    BOOTREPLY                  0
    DHCPOFFER                  0
    DHCPACK                    0
    DHCPNAK                    0


DNS Server


Теперь перейдем к настройке DNS сервера. Начиная с версии Junos OS 12.1x44D10 поддерживается DNS proxy, давайте же его настроим:

cartman@gw-jsrx240# show system services dns | display set 
set system services dns forwarders 8.8.8.8
set system services dns forwarders 8.8.4.4
set system services dns dns-proxy interface vlan.0
set system services dns dns-proxy cache gw-jsrx240.HOME.local inet 172.16.1.1


Или в виде конфига:

cartman@gw-jsrx240# show system services dns                  
forwarders {
    8.8.8.8;
    8.8.4.4;
}
dns-proxy {
    interface {
        vlan.0;
    }
    cache {
        gw-jsrx240.HOME.local inet 172.16.1.1;
    }
}


Здесь мы настроили работу DNS сервера на интерфейсе vlan.0; создали A-запись для gw-jsrx240.HOME.local (само собой таких записей можно сделать несколько); и настроили DNS forwarders для всех остальных DNS запросов.

Если DNS сервер нужно включить для всех внутренних интерфейсов, то это можно сделать следующим образом (если VLAN'ов несколько, то и настройки нужно делать соответствующие):

cartman@gw-jsrx240# show system name-server | display set 
set system name-server 172.16.1.1


Или в виде конфига:

cartman@gw-jsrx240# show system name-server 
172.16.1.1;


Статистику по DNS запросам можно посмотреть следующим образом:

cartman@gw-jsrx240# run show system services dns-proxy statistics 
DNS proxy statistics        :
    Status                  : enabled          
    IPV4 Queries received   : 0                
    IPV6 Queries received   : 0                
    Responses sent          : 0                
    Queries forwarded       : 0                
    Negative responses      : 0                
    Positive responses      : 0                
    Retry requests          : 0                
    Pending requests        : 0                
    Server failures         : 0                
    Interfaces              : vlan.0


Записи в DNS cahce посмотреть вот так (без вывода самого кэша устройства, т.к. записей там очень много):

cartman@gw-jsrx240# run show system services dns-proxy cache


Очистить DNS cache вот так:

cartman@gw-jsrx240# run clear system services dns-proxy cache


SSH Hardening


Теперь попробуем обезопасить наш SSH сервер (даже если он смотрит наружу) (вместо SSH_RSA_PUBLIC_KEY нужно вставить свой SSH RSA Public Key):

cartman@gw-jsrx240# show system services ssh | display set 
set system services ssh root-login deny
set system services ssh protocol-version v2
set system services ssh connection-limit 5
set system services ssh rate-limit 5

cartman@gw-jsrx240# show system login | display set           
set system login retry-options tries-before-disconnect 5
set system login retry-options backoff-threshold 1
set system login retry-options backoff-factor 10
set system login retry-options minimum-time 30
set system login user cartman full-name "FIRST_NAME LAST_NAME"
set system login user cartman uid 2000
set system login user cartman class super-user
set system login user cartman authentication ssh-rsa "SSH_RSA_PUBLIC_KEY"


Или в виде конфига:

cartman@gw-jsrx240# show system services ssh                  
root-login deny;
protocol-version v2;
connection-limit 5;
rate-limit 5;

cartman@gw-jsrx240# show system login           
retry-options {
    tries-before-disconnect 5;
    backoff-threshold 1;
    backoff-factor 10;
    minimum-time 30;
}
user cartman {
    full-name "FIRST_NAME LAST_NAME";
    uid 2000;
    class super-user;
    authentication {
        ssh-rsa "SSH_RSA_PUBLIC_KEY"; ## SECRET-DATA
    }
}


Пояснения:
  • 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


cartman@gw-jsrx240# show security screen | display set 
set security screen ids-option untrust-screen icmp ping-death
set security screen ids-option untrust-screen ip source-route-option
set security screen ids-option untrust-screen ip tear-drop
set security screen ids-option untrust-screen tcp syn-flood alarm-threshold 1024
set security screen ids-option untrust-screen tcp syn-flood attack-threshold 200
set security screen ids-option untrust-screen tcp syn-flood source-threshold 1024
set security screen ids-option untrust-screen tcp syn-flood destination-threshold 2048
set security screen ids-option untrust-screen tcp syn-flood timeout 20
set security screen ids-option untrust-screen tcp land


Или в виде конфига:

cartman@gw-jsrx240# show security screen                  
ids-option untrust-screen {
    icmp {
        ping-death;
    }
    ip {
        source-route-option;
        tear-drop;
    }
    tcp {
        syn-flood {
            alarm-threshold 1024;
            attack-threshold 200;
            source-threshold 1024;
            destination-threshold 2048;
            timeout 20;
        }
        land;
    }
}


В самом конце...


Не забываем сделать commit, иначе никакие изменения не вступят в силу:
cartman@gw-jsrx240# commit check 
configuration check succeeds


cartman@gw-jsrx240# commit 
commit complete


Итого


Итоговый конфиг можно посмотреть ниже. Маршрутизатор обладает всеми необходимыми функциями за вполне уместные деньги.

cartman@gw-jsrx240# show
cartman@gw-jsrx240# show
## Last changed: 2014-07-12 20:15:48 MSK
version 12.1X46-D20.5;
system {
host-name gw-jsrx240;
domain-name HOME.local;
domain-search HOME.local;
time-zone Europe/Moscow;
authentication-order password;
root-authentication {
encrypted-password "$1$ENCRYPTED_PASSWORD"; ## SECRET-DATA
}
name-server {
172.16.1.1;
}
name-resolution {
no-resolve-on-input;
}
login {
retry-options {
tries-before-disconnect 5;
backoff-threshold 1;
backoff-factor 10;
minimum-time 30;
}
user cartman {
full-name «FIRST_NAME LAST_NAME»;
uid 2000;
class super-user;
authentication {
ssh-rsa «SSH_RSA_PUBLIC_KEY»; ## SECRET-DATA
}
}
}
services {
ssh {
root-login deny;
protocol-version v2;
connection-limit 5;
rate-limit 5;
}
dns {
forwarders {
8.8.8.8;
8.8.4.4;
}
dns-proxy {
interface {
vlan.0;
}
cache {
gw-jsrx240.HOME.local inet 172.16.1.1;
}
}
}
web-management {
https {
port 443;
system-generated-certificate;
interface vlan.0;
}
session {
idle-timeout 300;
session-limit 2;
}
}
dhcp {
maximum-lease-time 21600;
default-lease-time 21600;
pool 172.16.1.0/27 {
address-range low 172.16.1.2 high 172.16.1.30;
router {
172.16.1.1;
}
}
propagate-settings vlan.0;
}
}
syslog {
archive size 100k files 3;
user * {
any emergency;
}
file messages {
any critical;
authorization info;
}
file interactive-commands {
interactive-commands error;
}
}
max-configurations-on-flash 5;
max-configuration-rollbacks 5;
license {
autoupdate {
url ae1.juniper.net/junos/key_retrieval;
}
}
ntp {
server 0.pool.ntp.org prefer;
server 1.pool.ntp.org;
server 2.pool.ntp.org;
server 3.pool.ntp.org;
}
}
interfaces {
interface-range interfaces-trust {
member-range ge-0/0/1 to ge-0/0/15;
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/0 {
unit 0 {
family inet {
dhcp;
}
}
}
ge-0/0/1 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/2 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/3 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/4 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/5 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/6 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/7 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/8 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/9 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/10 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/11 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/12 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/13 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/14 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
ge-0/0/15 {
unit 0 {
family ethernet-switching {
vlan {
members vlan-trust;
}
}
}
}
vlan {
unit 0 {
family inet {
address 172.16.1.1/27;
}
}
}
}
protocols {
stp;
}
security {
screen {
ids-option untrust-screen {
icmp {
ping-death;
}
ip {
source-route-option;
tear-drop;
}
tcp {
syn-flood {
alarm-threshold 1024;
attack-threshold 200;
source-threshold 1024;
destination-threshold 2048;
timeout 20;
}
land;
}
}
}
nat {
source {
rule-set trust-to-untrust {
from zone trust;
to zone untrust;
rule source-nat-rule {
match {
source-address 0.0.0.0/0;
}
then {
source-nat {
interface;
}
}
}
}
}
}
policies {
from-zone trust to-zone untrust {
policy trust-to-untrust {
match {
source-address any;
destination-address any;
application any;
}
then {
permit;
}
}
}
from-zone trust to-zone trust {
policy trust-to-trust {
match {
source-address any;
destination-address any;
application any;
}
then {
permit;
}
}
}
}
zones {
security-zone untrust {
screen untrust-screen;
interfaces {
ge-0/0/0.0 {
host-inbound-traffic {
system-services {
ping;
ssh;
dhcp;
}
}
}
}
}
security-zone trust {
host-inbound-traffic {
system-services {
all;
}
protocols {
all;
}
}
interfaces {
vlan.0;
}
}
}
}
vlans {
vlan-trust {
vlan-id 10;
l3-interface vlan.0;
}
}


Если будет выдан инвайт, опишу настройки PPPoE, Dynamic VPN, Site-to-Site VPN и т.д.
Поделиться публикацией
Ой, у вас баннер убежал!

Ну. И что?
Реклама
Комментарии 13
    +1
    Если будет выдан инвайт
    Звучит как угроза :)
      0
      Ну раз уж такая пьянка и пишите об srx240, то упомянули бы что с недавнего времени у Juniper появился виртуальный SRX240 со всеми фичами который можно безвозмездно скачать :)
        0
        Имеется ввиду тот, который запускается в GNS3 как в этой статье?
          0
          Нет, в статье там Olive, по сути FreeBSD с накатаным Dev кодом от Juniper. А vSRX это официальная сборка от Juniper, готовый OVA темплейт для разворачивания в гипервизор.
            0
            А вот за ссылку спасибо, пригодится
          0
          А можно ли поподробнее о виртуальном 240м?
            0
            По ссылке описание — SRX Series Gateway Capabilities secure the perimeter or edge in multitenant private, public, or hybrid environments.
            Регистрируетесь на сайте. И скачиваете образ на 60 дней для ознакомления
          0
          Спасибо за мануал :)
          Но есть замечание —

          Секция IDP, Security Features не блещет пояснениями того что делает. Совершенно. Особенно человеку который с juniper работает недавно. А ведь именно для таких людей вы написали статью.

          Да и в официальной KB как то более расписано что делается
          SRX Getting Started — Configure Screen Protection
            0
            Обязательно учту замечания и чуть позже (сейчас времени нет) добавлю описание в эту секцию
            0
            Хорошо было бы системно выложить информацию по Juniper на xgu.ru
              0
              «итого» жел-но тоже под теги засунуть
                0
                В примере nat для конкретной подсети — разве там прописывается не псевдоним, который нужно потом назначить на зону и присвоить ему адрес подсети? Так пишутся policy based правила и кажется также это работает и в вашем примере
                  0
                  а нет, ошибся.
                  В NAT правилах прописываются чистые подсети, без псевдонимов.

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

                Самое читаемое