...

понедельник, 14 июля 2014 г.

[Из песочницы] Базовая настройка 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 http://ift.tt/1sdK6Sk;

}

}

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 и т.д.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий