63
Zabezpieczenie routerów Juniper przed światem zewnętrznym Jacek Skowyra

Jacek Skowyra Juniper Routers Security

  • Upload
    mike

  • View
    34

  • Download
    4

Embed Size (px)

DESCRIPTION

Juniper Routers Security

Citation preview

Page 1: Jacek Skowyra Juniper Routers Security

Zabezpieczenie routerów Juniper przed światem zewnętrznym

Jacek Skowyra

Page 2: Jacek Skowyra Juniper Routers Security

Agenda

˥ Dostęp fizyczny

˥ Data Plane

˥ Control Plane

˥ Zarządzanie

˥ Filtry

Page 3: Jacek Skowyra Juniper Routers Security

Agenda

Page 4: Jacek Skowyra Juniper Routers Security

Dostęp fizyczny - zabezpieczenie konsoli

˥ Jedyny domyślny dostęp w „nowym” urządzeniu

˥ Wiszące sesje

˥ Odzyskiwanie hasła

set system ports console log-out-on-disconnect

set system ports console insecure set system root-authentication encrypted-password " “ set system ports console disable

Page 5: Jacek Skowyra Juniper Routers Security

Dostęp fizyczny - zabezpieczenie portu aux

˥ Domyślnie zablokowany

˥ Może być użyty jako dodatkowy port konsoli

set system ports disable

set system ports insecure

Page 6: Jacek Skowyra Juniper Routers Security

Dostęp fizyczny - zabezpieczenie portu diagnostycznego

˥ SCB, SSB, SFM, FEB

˥ Brak hasła

set system diag-port-authentication plain-text-password

set system pic-console-authentication plain-text-password

Page 7: Jacek Skowyra Juniper Routers Security

Craft terminal T320 LCD Display EX4200 Reset button J2350

Page 8: Jacek Skowyra Juniper Routers Security

Dostęp fizyczny - zabezpieczenie craft terminala

˥ Oglądanie statusu

˥ Przywracania konfiguracji domyślnej

˥ Włączanie/wyłączanie FPC/PIC

set chassis craft-lockout

set chassis config-button no-clear

set chassis config-button no-rescue

Page 9: Jacek Skowyra Juniper Routers Security

Dostęp fizyczny - zabezpieczenie LCD

˥ Power, environment, version

˥ Halt, reboot, rescue-config, factory-default

show chassis lcd-menu

set chassis lcd-menu fpc 0 menu-item „status-menu show-version” disable

set chassis lcd-menu fpc 0 maintance-menu disable

Page 10: Jacek Skowyra Juniper Routers Security

Rodzaje pakietów:

˥ Pakiety przełączane

˥ Pakiety nie wymagające obróbki przez RE

Router Pakiety przełączane

Routing Engine

FIB Interfejs

wyjściowy

Interfejs

wejściowy

Page 11: Jacek Skowyra Juniper Routers Security

Rodzaje pakietów:

˥ Pakiety skierowane do urządzenia

˥ Pakiety, których adresem docelowym jest urządzenie (zarządzanie, routing). Wymagają obsługi przez procesor

Router Pakiety przełączane Pakiety skierowane do urządzenia

Routing Engine

FIB Interfejs

wyjściowy

Interfejs

wejściowy

Page 12: Jacek Skowyra Juniper Routers Security

Rodzaje pakietów:

˥ Pakiety niestandardowe

˥ Pakiety IPv4, IPv6 posiadające ustawione opcje w nagłówku

˥ Pakiety z wygasającym TTL

Router Pakiety przełączane Pakiety skierowane do urządzenia Pakiety niestandardowe

Routing Engine

FIB Interfejs

wyjściowy

Interfejs

wejściowy

DROP

Page 13: Jacek Skowyra Juniper Routers Security

Rodzaje pakietów:

˥ Pakiety inne niż IP

˥ PPP LCP, pakiety ISIS (CLNS), L2 keepalive

Router Pakiety przełączane Pakiety skierowane do urządzenia Pakiety niestandardowe Pakiety inne niż IP

Routing Engine

FIB Interfejs

wyjściowy

Interfejs

wejściowy

DROP

Page 14: Jacek Skowyra Juniper Routers Security

Data plane

˥ Filtry firewall’a

˥ uRPF

˥ IP header

Page 15: Jacek Skowyra Juniper Routers Security

Data plane – filtry firewall’a

˥ Podstawowa metoda sprawdzania przesyłanych danych

˥ Filtry mogą być umieszczane na wejściu jak i na wyjściu interfejsu

˥ Każdy filtr składa się z jednego lub więcej segmentu

˥ Na końcu każdego filtra znajduje się domyślna akcja DENY

Page 16: Jacek Skowyra Juniper Routers Security

Data plane – filtry firewall’a

filter filter-name {

term term-name {

from {

match-conditions;

}

then {

action;

nonterminating-actions;

}

}

term implicit-rule {

then discard;

}

}

set interfaces ge-0/0/0 unit 0 family inet filter input filter-name

Page 17: Jacek Skowyra Juniper Routers Security

Data plane – unicast RPF

˥ Filtrowanie pakietów wejściowych o nieprawidłowych adresach źródłowych

˥ Używa FIB’a do sprawdzania adresów źródłowych dzięki czemu jest niezależny od zmian w routingu

˥ Możliwe dwa tryby pracy: strict oraz loose

Page 18: Jacek Skowyra Juniper Routers Security

Data plane – unicast RPF

˥ uRPF Strict

˥ Adres źródłowy musi być w tablicy routingu

˥ Adres źródłowy musi być osiągalny przez interfejs wskazany w tablicy routingu, jako interfejs przez który jest osiągalna najkrótsza ścieżka do danego adresu źródłowego

˥ Domyślny tryb

set interface ge-0/0/0 unit 5 family inet rpf-check <fail-filter filter-name>

˥ uRPF Loose

˥ Adres źródłowy musi być w tablicy routingu

˥ Adres źródłowy musi być osiągalny przez dowolny interfejs

set interface ge-0/0/0 unit 5 family inet rpf-check <fail-filter filter name> mode loose

Page 19: Jacek Skowyra Juniper Routers Security

Data plane – IP header options

˥ RFC 791 – każde urządzenie obsługujące protokół IP, musi wspierać pole IP Option

˥ Wymaga obsługi przez procesor

˥ Zastosowanie dzisiaj

˥ RSVP

˥ IGMP 2, 3

Page 20: Jacek Skowyra Juniper Routers Security

Control plane

˥ Control plane (RE) odpowiada za procesowanie wielu różnych typów pakietów:

˥ pakiety routingowe

˥ pakiety z ustawionymi ip options

˥ pakiety L2

˥ Control plane odpowiada także np. za obsługę CLI

˥ Każdy control plane ma skończoną ilość mocy procesora czy pamięci

Page 21: Jacek Skowyra Juniper Routers Security

Control plane – ochrona

˥ Blokowanie niepotrzebnych usług

˥ Policing

˥ MD5

Page 22: Jacek Skowyra Juniper Routers Security

Control plane – blokowanie niepotrzebnych usług

˥ IP Source Routing ˥ Umożliwia wysyłającemu pakiet ustawienie ścieżki po której ma się on poruszać (strict)

lub określenie pojedyńczego routera, przez który pakiet musi przejść

˥ Od wersji junos 8.5 wyłączony standardowo

set chassis no-source-route

˥ IP Directed Broadcast ˥ Umożliwia wysyłanie pakietu do adresu broadcast danej podsieci

˥ Wyłączony, można włączyć per interfejs

˥ Proxy ARP ˥ Router odpowiada na zapytania ARP w imieniu innych urządzeń

˥ Wyłączony, można włączyć per interfejs

˥ Default ARP Policer ˥ Junos posiada policer na pakiety ARP przesyłane do RE

˥ Dodatkowe ogracznienia dla arp’ów mogą być wprowadzanie per interfejs

Page 23: Jacek Skowyra Juniper Routers Security

Control plane – policing

˥ Blokowanie pakietów niepożądanych

˥ Pakiety pofragmentowane

˥ Pakiety z sieci o ograniczonym zaufaniu

˥ Zezwolenie na wymagane pakiety ˥ Protokoły routingu (ospf, bgp, isis)

˥ Serwisy (ssh, telnet)

˥ Zarządzanie (snmp, ntp, dns)

˥ Diagnostyka (icmp, traceroute)

˥ Ograniczenie pozostałych pakietów ˥ Rate limit ICMP, TCP, UDP

Page 24: Jacek Skowyra Juniper Routers Security

Control plane – MD5, IPSec

˥ Oprócz statycznej definicji sąsiadów w poszczególnych protokołach, dodatkowa weryfikacja za pomocą hash MD5

˥ Protokoły wykorzystujące MD5

˥ NTP

˥ BGP

˥ ISIS

˥ OSPF

˥ RIP

˥ LDP

˥ OSPFv3 IPSec SA

Page 25: Jacek Skowyra Juniper Routers Security

Zarządzanie

˥ Zarządzanie użytkownikami

˥ Zdalny dostęp do routera

˥ SNMPv2, v3

˥ Syslog

˥ NTP

˥ Niezabezpieczone usługi

˥ Zabezpieczone usługi

Page 26: Jacek Skowyra Juniper Routers Security

Zarządzanie użytkownikami

˥ Radius, Tacacs+

˥ Lokalna baza użytkowników

˥ Klasy użytkowników

Page 27: Jacek Skowyra Juniper Routers Security

Radius set system radius-server 10.10.10.1

set system radius-server 10.10.10.1 secret $lk2#&sf

set system radius-server 10.10.10.1 port 1812 (domyślny)

set system radius-server 10.10.10.1 source-address 1.1.1.1

set system accounting events …

set system accounting destination radius server 10.10.10.1

Page 28: Jacek Skowyra Juniper Routers Security

Tacacs+

set system tacplus-server 10.10.10.1

set system tacplus-server 10.10.10.1 secret $lk2#&sf

set system tacplus-server 10.10.10.1 port 49 (domyślny)

set system tacplus-server 10.10.10.1 source-address 1.1.1.1

set system accounting events …

set system accounting destination tacplus server 10.10.10.1

Page 29: Jacek Skowyra Juniper Routers Security

Lokalna baza użytkowników

˥ Dwa typy kont:

˥ root, konto domyślne

˥ Konta użytkowników

˥ Konto root ˥ Domyślnie bez hasła

˥ Przywileje administratora

˥ Poza bazą użytkowników

˥ Konta użytkowników

˥ Każdy użytkownik musi być przypisany do klasy

˥ Różne poziomy użytkowników

˥ Przynajmniej jedno konto z pełnymi prawami w przypadku awarii

Page 30: Jacek Skowyra Juniper Routers Security

Lokalna baza użytkowników

set system root-authentication plain-text-password

set system login message …

set system login retry-options …

set system login password minimum-lenght …

set system login password change-type character-set

Set system login password change-type set-transitions

set system login password minimum-changes 3

set system login user test_1 class test_1

set system login user test_1 authentication plain-text-password

Page 31: Jacek Skowyra Juniper Routers Security

Klasy użytkowników – role

˥ Przypisanie użytkownikom odpowiednich grup uprawnień

˥ Operatorzy

˥ Administratorzy

˥ View only

˥ Definiowanie dozwolonych/zabronionych komend

set system login class test_1 permissions clear

set system login class test_1 permissions interface-control

set system login class test_1 permissions maintenance

set system login class test_1 permissions view

set system login class test_1 deny-commands .(start *)|(request system software)|(request chassis)

Page 32: Jacek Skowyra Juniper Routers Security

SNMP v2

˥ Hasła (community) niezabezpieczone – zalecane zarządzanie Out Of Band

˥ Domyślnie wyłączone, brak standardowych community

˥ Konfiguracja widoków dla grup użytkowników

set snmp view inventory-only oid system include

set snmp view community test view inventory-only

set snmp view community test view authorization read-only

set snmp view community test view clients 10.10.10.5/32

Page 33: Jacek Skowyra Juniper Routers Security

SNMP v3

˥ Hasła (community) zabezpieczone – szyfrowanie

˥ Wprowadzone pojęcie użytkownika

˥ Konfiguracja widoków dla grup użytkowników

set snmp v3 usm local-engine user nms-user authentication-sha authentication-password $safsf&

set snmp v3 usm local-engine user nms-user privacy-aes128 privacy-password $Y5wIm@4

Page 34: Jacek Skowyra Juniper Routers Security

Syslog

˥ Ustandaryzowany protokół, którego zadaniem jest logowanie lokalnie lub na zdalnym urządzeniu informacji z urządzenia

set system syslog user * any emerygency

set system syslog file message any info

set system syslog file audit interactive-commands any

set system syslog file processes deamon any

set system syslog console any any

set system syslog host 10.10.10.8 log-prefix hostname

Page 35: Jacek Skowyra Juniper Routers Security

NTP – Network Time Protocol

set system time-zone Europe/Warsaw

set system ntp boot-server 10.10.10.33

set system ntp authentication-key 1 type md5 value asdf2

set system ntp trusted-key 1

set system ntp server 10.10.10.33 key 1 prefer

set system ntp server 10.10.10.234 key 1

set system ntp source-address 1.1.1.1

Page 36: Jacek Skowyra Juniper Routers Security

Niezabezpieczone usługi

˥ Wszystkie usługi, których pakiety nie są zaszyfrowane

˥ Powinny być wyłączone

delete system services rsh

delete system services rlogin

delete system services ftp

delete system services finger

delete system services telnet

delete system services web-management http

Page 37: Jacek Skowyra Juniper Routers Security

Zabezpieczone usługi

˥ SSH

set system services ssh protocol-version v2

set system services ssh root-login deny

set system services ssh connection-limit 5

set system services ssh rate-limit 2 (na minutę)

˥ Web management

set security certificates local cert load-key-file name.pem

set system services web-management https local-certificate cert

set system services web-management https interface ge-0/0/0.0

Page 38: Jacek Skowyra Juniper Routers Security

Adres domyślny dla usług

˥ Domyślnie dla każdej usługi generującej na routerze pakiety wysyłane na serwera, domyślnym adresem źródłowym jest adres interfejsu leżącego na ścieżce do serwera

˥ Dobrym zwyczajem jest ustawienie adresu źródłowego dla takich usług na adres Loopback

set system default-address-selection

Page 39: Jacek Skowyra Juniper Routers Security

Filtry firewall

˥ Filtry mogą być dodane jako input lub output

˥ W przypadku interfejsu lo0 (RE) input oznacza ruch w kierunku RE, a output ruch wychodzący z RE

˥ W przypadku pozostałych interfejsów input oznacza ruch wchodzący do urządzenia na danym interfejsie, a output ruch opuszczający urządzenie na danym interfejsie

˥ Filtry firewall muszą mieć zdefiniowany protokół

˥ Filtr danego protokołu można przypisać tylko do interfejsu obsługującego dany protokół

˥ Przykładowe protokoły filtrów

˥ Ipv4 (family inet)

˥ Ipv6 (family inet6)

˥ Mpls (family mpls)

Page 40: Jacek Skowyra Juniper Routers Security

Filtry firewall

˥ Każdy filtr jest przeglądany od góry do dołu

˥ Jeżeli w pierwszym segmencie (term) nie zostanie dopasowane żadne wyrażenie, następny segment jest przeglądany

˥ Każdy filtr posiada domyślnie akcję DENY ANY w przypadku braku dopasowania

Page 41: Jacek Skowyra Juniper Routers Security

Filtry firewall

[firewall family inet] ilter example-filter { term 1 { from { source-address 10.0.0.0/8; } then { log; accept; } } term 2 { from { source-address 192.168.0.0/16; } then { accept; } } term 3 { from { source-address 172.16.0.0/12; } term 4 { from { source-address 200.200.0.0/24; } then { log; }

Discard packet

Packet Yes Does

packet match term 1?

Accept packet Log packet

Yes Does packet match

term 2?

Accept packet Log packet

Yes Does packet match

term 3?

Accept packet

Yes Does packet match

term 4?

Accept packet Log packet

No

No

No

No

Page 42: Jacek Skowyra Juniper Routers Security

Filtry firewall

[firewall family inet] filter example-filter { term 1 { from { protocol tcp; source-address 10.0.0.0/8; source-address 192.168.0.0/16; source-address 172.16.0.0/12; } then { accept; } } }

Page 43: Jacek Skowyra Juniper Routers Security

Filtry firewall

[firewall family inet] filter example-filter { term 1 { from { protocol tcp; source-address 10.0.0.0/8; source-address 192.168.0.0/16; source-address 172.16.0.0/12; } then { accept; } } }

No Discard packet

Yes Accept packet

Yes Accept packet

Yes Accept packet

Discard packet

Is the protocol

tcp?

Does packet match

SA 10.ʹ8?

Does packet match SA

192.168.ʹ16?

Does packet match SA

172.16.ʹ12?

Yes

No

No

No

List of match conditions (source-address)

Packet

Page 44: Jacek Skowyra Juniper Routers Security

Filtry firewall – akcje

accept terminating The packet is accepted.

discard terminating The packet is discarded.

reject message-type terminating The packet is rejected and the corresponding ICMP message is generated.

routing-instance routing-instance

terminating Routes the packet using the specified routing-instance.

next term non-terminating Continues to the next term for evaluation.

count counter-name non-terminating Counts the number of packets passing this term. A counter name is specific to the filter that uses it, so all interfaces that use the same filter increment the same counter.

forwarding-class class-name

non-terminating Classifies the packet to the specific forwarding class.

log non-terminating Logs the packet’s header information in memory on the packet forwarding engine (PFE). This is a Frist In First Out (FIFO buffer and is limited to about 400 entries.

loss-priority priority non-terminating Sets the scheduling priority of the packet.

policer policer-name non-terminating Applies rate limits to the traffic using the named policer.

sample non-terminating Samples the traffic on the interface. Use this non-terminating action only when sampling is enabled.

syslog non-terminating Records information in the system logging facility. This non- terminating action can be used with all actions except discard.

Page 45: Jacek Skowyra Juniper Routers Security

Filtry firewall – liczniki

˥ Może być tylko jeden licznik na każdy filtr

˥ Jeżeli filtr jest użyty w kilku miejscach, to posiadają domyślnie jeden wspólny zagregowany licznik, interface-specific powoduje wyłącznie

[firewall family inet] filter example-filter { term 1 { from { source-address 10.0.0.0/8; source-address 192.168.0.0/16; source-address 172.16.0.0/12; } then { count rfc1918; accept; } } }

Page 46: Jacek Skowyra Juniper Routers Security

Filtry firewall – logowanie

˥ Logowanie działa line rate

˥ Tylko ok. 400 ostatnich wpisów jest przechowywanych w pamięci

[firewall family inet] filter example-filter { term 1 { from { source-address 10.0.0.0/8; source-address 192.168.0.0/16; source-address 172.16.0.0/12; } then { count rfc1918; accept; } } term 2 { then { log; discard; } } }

Page 47: Jacek Skowyra Juniper Routers Security

Filtry firewall – wiele filtrów w jednym kierunku

˥ W systemie junos istnieje możliwość użycia kilku filtrów w danym kierunku

˥ Każdy z filtrów jest przeglądany w kolejności występowania

˥ Jeżeli pakiet zostanie dopasowany wewnątrz danego filtra, następny filtr nie jest już przeglądany

˥ Domyślna akcja DENY ANY występuje w ostatnim filtrze

Page 48: Jacek Skowyra Juniper Routers Security

Filtry firewall – wiele filtrów w jednym kierunku

Discard

First filter

Match

Term

Match

Term

Match

Packet

Additional filters

Match

Term

Match

Term

Match

Term Term

Page 49: Jacek Skowyra Juniper Routers Security

Filtry firewall – wiele filtrów w jednym kierunku

interfaces { lo0 { unit 0 { family inet { filter { input-list [ accept-web accept-ssh discard-all ]; } address 127.0.0.1/32; } } } }

Page 50: Jacek Skowyra Juniper Routers Security

Policing – rate-limiting

˥ Policery działają wspólnie z filtrami aby ograniczyć, zmienić oznaczenia ruchu dopasowanego do filtrów

˥ Każdy policer składa się z następujących elementów:

˥ Nazwa

˥ Parametr przekroczenia wartości (if-exceeding)

˥ Akcja

firewall { policer policer-name { filter-specific; if-exceeding { bandwidth-limit bps; bandwidth-percent number; burst-size-limit bytes; } then { policer-action; } } }

Page 51: Jacek Skowyra Juniper Routers Security

Policing Token bucket

Yes

No

Bucket-size (burst-size-limit)

Policer-action (discard, forwarding-class

or loss-priority)

Accept packet and subtract packet size

from bucket

Constant-rate token replenishment (bandwidth-limit)

Bursty arrivals

Enough tokens?

Page 52: Jacek Skowyra Juniper Routers Security

Policing

˥ Bandwidth-limit – ustawiamy ile bitów jest dozwolonych w ciągu jednej sekundy, dozwolone wartości to także k,m,g

˥ Z uwagi na charakterystykę algorytmu token-bucket ilość akceptowanych pakietów w ciągu sekundy może być nieznacznie większa od bandwidth-limit

˥ Burst-size-limit definiuje jak duży jest bucket, a co za tym idzie jakie są możliwe przekroczenia limitów

Page 53: Jacek Skowyra Juniper Routers Security

Policing filter specific lub term specific

˥ Domyślnie junos tworzy jeden policer na każdy segment (term)

˥ Jeżeli filtr firewall posiada wiecej niż jeden segment gdzie akcją jest wykonanie policera, to dla każdego segmentu będzie oddzielny policer

˥ Słowo kluczowe filter-specific w konfiguracji policera powoduje utworzenie jednego policer na cały filtr firewall, wszystkie segmenty dzielą wtedy wspólnie dany policer

Page 54: Jacek Skowyra Juniper Routers Security

Policing

firewall { family inet { filter limit-ssh { term 1 { from { protocol tcp; port ssh; } then { policer 10m; accept; } } } } } policer 10m { filter-specific; if-exceeding { bandwidth-limit 10m; burst-size-limit 625k; } then discard; } }

Page 55: Jacek Skowyra Juniper Routers Security

Dziękuję za uwagę

Page 56: Jacek Skowyra Juniper Routers Security
Page 57: Jacek Skowyra Juniper Routers Security

DODATKI

˥ Przykładowy filtr Control Plane

Page 58: Jacek Skowyra Juniper Routers Security

FILTR Control Plane

filter protect-re { term synflood-protect { from { source-prefix-list { bgp-neighbors; mgmt-nets; } protocol tcp; tcp-flags "(syn & !ack) | fin | rst"; } then { policer limit-100k; accept; } } term allow-bgp { from { prefix-list { bgp-neighbors; } protocol tcp; destination-port bgp; } then accept; }

Page 59: Jacek Skowyra Juniper Routers Security

term allow-ospf {

from { source-prefix-list { ipv4-interfaces; } destination-prefix-list { ospf-all-routers; ipv4-interfaces; } protocol ospf; } then accept; } term allow-ssh { from { prefix-list { mgmt-nets; } protocol tcp; destination-port ssh; } then { policer limit-10m; accept; } }

Page 60: Jacek Skowyra Juniper Routers Security

term allow-snmp {

from { prefix-list { snmp-servers; } protocol udp; destination-port 161; } then { policer limit-1m; accept; } } term allow-ntp { from { prefix-list { ntp-servers; localhost; } protocol udp; destination-port ntp; } then { policer limit-32k; accept; }

Page 61: Jacek Skowyra Juniper Routers Security

}

term allow-radius { from { prefix-list { radius-servers; } protocol udp; source-port [ 1812 1813 1645 ]; } then { policer limit-32k; accept; } } term icmp-frags { from { is-fragment; protocol icmp; } then { syslog; discard; } }

Page 62: Jacek Skowyra Juniper Routers Security

term allow-icmp {

from { protocol icmp; icmp-type [ echo-request echo-reply unreachable time-exceeded ]; } then { policer limit-1m; accept; } } term allow-traceroute { from { protocol udp; destination-port 33434-33523; } then { policer limit-1m; accept; } } term tcp-established { from { protocol tcp; source-port [ ssh bgp ]; tcp-established; } then { policer limit-10m; accept; } }

Page 63: Jacek Skowyra Juniper Routers Security

term default-deny { then { log; syslog; discard; } } }