[Из песочницы] Базовая настройка Juniper серии SRX

Здесь уже есть несоклько статей про настройку маршрутизаторов Juniper SRX (например, раз, два, три и т.д.). В этой я постараюсь консолидировать полезную информацию, дополнив ее некоторыми приятными мелочами.Всех заинтересовавшихся прошу под кат.В мои руки попал новенький Juniper SRX240B и все нижесказанное будет относиться к нему. А т.к. JunOS позиционируется как единая ОС для всей серии (как минимум), то… сами делайте выводы. Также я использую версию JunOS 12.1×46-D20.5 (самая последняя, на момент публикации поста):

cartman@gw-jsrx240# run show version Hostname: gw-jsrx240 Model: srx240b JUNOS Software Release [12.1×46-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.1×44D10 поддерживается 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 MSKversion 12.1×46-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 и т.д.

© Habrahabr.ru