Базова настройка 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:00 (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 і т.д.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.