BGP 경로 인증
BGP에 대한 라우터 인증 이해
라우터 및 경로 인증과 경로 무결성을 사용하면 다른 라우터와 잘못된 라우팅 정보를 공유하도록 구성된 시스템이나 라우터의 공격을 받을 위험을 크게 완화할 수 있습니다. 이러한 종류의 공격에서는 공격받은 라우터를 속여 라우팅 루프를 만들거나, 공격받은 라우터의 라우팅 테이블을 크게 늘려 성능에 영향을 미치거나, 공격자가 분석할 수 있도록 라우팅 정보를 네트워크의 특정 위치로 리디렉션할 수 있습니다. 세그먼트에서 가짜 경로 광고를 보낼 수 있습니다. 이러한 업데이트는 경로의 소스를 확인하기 위한 인증 메커니즘이 마련되어 있지 않는 한 인접 라우터의 라우팅 테이블에 수락될 수 있습니다.
라우터 및 경로 인증을 사용하면 라우터가 암호(키)를 기반으로 신뢰할 수 있는 소스와 통신하고 있음을 확인할 수 있는 경우에만 정보를 공유할 수 있습니다. 이 방법에서는 해시된 키가 다른 라우터로 전송되는 경로와 함께 전송됩니다. 수신 라우터는 전송된 키를 자체 구성된 키와 비교합니다. 동일하면 경로를 수락합니다. 해시 알고리즘을 사용하면 키가 일반 텍스트로 유선으로 전송되지 않습니다. 대신 구성된 키를 사용하여 해시가 계산됩니다. 라우팅 업데이트는 키와 함께 해시 함수에 대한 입력 텍스트로 사용됩니다. 이 해시는 경로 업데이트와 함께 수신 라우터로 전송됩니다. 수신 라우터는 수신된 해시를 구성된 사전 공유 키를 사용하여 경로 업데이트에서 생성한 해시와 비교합니다. 두 해시가 동일한 경우 경로는 신뢰할 수 있는 소스에서 온 것으로 간주됩니다. 키는 송신 및 수신 라우터만 알 수 있습니다.
보안을 더욱 강화하기 위해 일련의 인증 키( 키체인)를 구성할 수 있습니다. 각 키에는 키체인 내에서 고유한 시작 시간이 있습니다. 키 집합 인증을 사용하면 피어링 세션을 중단하지 않고 암호 정보를 주기적으로 변경할 수 있습니다. 이 키 집합 인증 방법을 무중단 이라고 하는데, 피어링 세션을 다시 설정하거나 라우팅 프로토콜을 중단하지 않고 키가 한 키에서 다음 키로 롤오버되기 때문입니다.
전송 피어는 다음 규칙을 사용하여 활성 인증 키를 식별합니다.
시작 시간이 현재 시간보다 작거나 같습니다(즉, 미래가 아님).
시작 시간은 시작 시간이 현재 시간보다 작은(즉, 현재 시간에 가장 가까운) 체인의 다른 모든 키의 시작 시간보다 큽니다.
수신 피어는 수신 키 식별자를 기반으로 인증하는 키를 결정합니다.
전송 피어는 구성된 시작 시간을 기반으로 현재 인증 키를 식별한 다음 현재 키를 사용하여 해시 값을 생성합니다. 그런 다음 전송 피어는 TCP로 강화된 인증 옵션 개체를 BGP 업데이트 메시지에 삽입합니다. 객체에는 IANA에서 할당한 객체 ID, 객체 길이, 현재 키 및 해시 값이 포함됩니다.
수신 피어는 수신 TCP-enhanced 인증 옵션을 검사하고, 수신된 인증 키를 조회하고, 시작 시간, 시스템 시간 및 허용 오차 매개변수를 기반으로 키가 허용 가능한지 여부를 판별합니다. 키가 수락되면 수신 피어는 해시를 계산하고 업데이트 메시지를 인증합니다.
키체인을 TCP 세션에 처음 적용하면 세션이 재설정됩니다. 그러나 키체인이 적용되면 키체인에서 암호를 추가하거나 제거해도 TCP 세션이 재설정되지 않습니다. 또한 키 체인이 한 인증 알고리즘에서 다른 인증 알고리즘으로 변경되어도 TCP 세션이 재설정되지 않습니다.
참조
TCP 인증
일반적으로 TCP 인증은 다음과 같은 계층 수준에서 구성합니다.
-
[edit protocols bgp]
-
[edit protocols bgp group group-name]
-
[edit protocols bgp group group-name neighbor address]
TCP 인증 및 접두사 서브넷
Junos 디바이스는 BGP 그룹에 구성된 허용된 접두사 서브넷을 통해 검색된 BGP 피어에 대한 TCP 인증을 지원합니다.
BGP 세션의 TCP-AO 또는 TCP MD5에 대한 접두사 기반 인증을 구성하기 위해 다음 계층에서 문을 구성할 allow (all | prefix-list)
수 있습니다.
-
[edit protocols bgp group group-name]
-
[edit protocols bgp group group-name dynamic-neighbor dyn-name]
TCP 인증에 대한 보다 자세한 내용은 TCP를 참조해 주십시오.
예: BGP에 대한 라우터 인증 구성
모든 BGP 프로토콜 교환을 인증하여 신뢰할 수 있는 라우팅 디바이스만 AS(Autonomous System) 라우팅 업데이트에 참여하도록 보장할 수 있습니다. 기본적으로 인증이 비활성화됩니다.
요구 사항
시작하기 전에:
라우터 인터페이스를 구성합니다.
내부 게이트웨이 프로토콜(IGP)을 구성합니다.
개요
인증을 구성할 때 알고리즘은 전송된 패킷에 포함된 인코딩된 체크섬을 생성합니다. 수신 라우팅 디바이스는 인증 키(비밀번호)를 사용하여 패킷의 체크섬을 확인합니다.
이 예제에는 키체인을 구성하고 적용하기 위한 다음 문이 포함되어 있습니다.
key
- 키체인에는 여러 개의 키가 있을 수 있습니다. 키체인 내의 각 키는 고유한 정수 값으로 식별되어야 합니다. 유효한 식별자 값의 범위는 0에서 63 사이입니다.키는 최대 126자까지 가능합니다. 문자는 모든 ASCII 문자열을 포함할 수 있습니다. 공백이 포함된 경우 모든 문자를 따옴표(" ")로 묶습니다.
tolerance
- (선택 사항) 각 키체인에 대해 클럭 오차 허용 오차 값을 초 단위로 구성할 수 있습니다. 클럭 스큐 허용 오차는 BGP 업데이트를 위해 키를 수락하는 수신자에 적용됩니다. 구성 가능한 범위는 0초에서 999,999,999초입니다. 허용 기간 동안에는 현재 또는 이전 암호를 사용할 수 있습니다.key-chain
- 각 키체인에 대해 이름을 지정해야 합니다. 이 예제에서는 하나의 키체인을 정의합니다.bgp-auth
. 라우팅 장치에 여러 개의 키체인이 있을 수 있습니다. 예를 들어, BGP에 대한 키체인, OSPF에 대한 키체인 및 LDP에 대한 키체인을 가질 수 있습니다.secret
- 키체인의 각 키에 대해 비밀 암호를 설정해야 합니다. 이 암호는 문에secret
암호화된 텍스트 또는 일반 텍스트 형식으로 입력할 수 있습니다. 항상 암호화된 형식으로 표시됩니다.start-time
- 각 키는 시작 시간을 UTC 형식으로 지정해야 합니다. 제어권은 한 키에서 다음 키로 전달됩니다. 라우팅 디바이스의 클럭을 기준으로 구성된 시작 시간이 되면 해당 시작 시간의 키가 활성화됩니다. 시작 시간은 라우팅 장치의 현지 시간대로 지정되며 키체인 내에서 고유해야 합니다.authentication-key-chain
- 모든 피어, 그룹 또는 인접 라우터에 대해 글로벌 BGP 수준에서 키체인을 적용할 수 있습니다. 이 예는 라는ext
외부 BGP(EBGP) 그룹에 정의된 피어에 키 체인을 적용합니다.authentication-algorithm
- 각 키체인에 대해 해싱 알고리즘을 지정할 수 있습니다. 알고리즘은 AES-128, MD5 또는 SHA-1일 수 있습니다.키 체인 및 인증 알고리즘을 BGP 인접 세션과 연결합니다.
이 예제에서는 라는 bgp-auth
키 체인을 구성합니다. 키 0은 2011-6-23.20:19:33 -0700부터 전송 및 수락되며 키 체인의 다음 키(키 1)가 활성화되면 전송 및 수락이 중지됩니다. 키 1은 1년 후 2012-6-23.20:19:33 -0700에 활성화되며, 다른 키가 키 1의 시작 시간보다 늦은 시작 시간으로 구성되지 않는 한 전송 및 수락이 중지되지 않습니다. 30초의 클럭 스큐 허용 오차는 키를 수락하는 수신기에 적용됩니다. 허용 오차 기간 동안 현재 또는 이전 키를 사용할 수 있습니다. 키는 공유 암호 암호입니다. 즉, 인증된 라우팅 업데이트를 수신하는 인접 라우터는 동일한 키(비밀번호)를 포함하여 동일한 인증 키 체인 구성을 가져야 합니다. 따라서 라우터 R0과 라우터 R1이 피어로 구성된 경우 동일한 인증 키 체인 구성을 가져야 합니다. 이 예는 라우팅 디바이스 중 하나에서만 구성을 보여줍니다.
구성
CLI 빠른 구성
이 예를 빠르게 구성하려면, 아래 명령을 복사하여 텍스트 파일로 붙여 넣은 다음 모든 라인브레이크를 제거하고, 네트워크 구성을 일치하는 데 필요한 세부 사항을 바꾸고 [edit]
계층 수준에서 명령을 CLI로 복사해 붙여 넣습니다.
set protocols bgp group ext type external set protocols bgp group ext peer-as 65530 set protocols bgp group ext neighbor 172.16.2.1 set routing-options autonomous-system 65533 set protocols bgp group ext authentication-key-chain bgp-auth set protocols bgp group ext authentication-algorithm md5 set security authentication-key-chains key-chain bgp-auth tolerance 30 set security authentication-key-chains key-chain bgp-auth key 0 secret this-is-the-secret-password set security authentication-key-chains key-chain bgp-auth key 0 start-time 2011-6-23.20:19:33-0700 set security authentication-key-chains key-chain bgp-auth key 1 secret this-is-another-secret-password set security authentication-key-chains key-chain bgp-auth key 1 start-time 2012-6-23.20:19:33-0700
절차
단계별 절차
다음 예는 구성 계층에서 다양한 수준의 탐색이 필요합니다. CLI 탐색 관련 정보는 Junos OS CLI 사용자 가이드의 구성 모드에서의 CLI 편집기 사용을 참조하십시오.
라우터 R1이 디바이스 CE1에서 경로 필터를 수락하고 수신된 필터를 사용하여 아웃바운드 경로 필터링을 수행하도록 구성하려면:
로컬 AS(Autonomous System)를 구성합니다.
[edit routing-options] user@R1# set autonomous-system 65533
하나 이상의 BGP 그룹을 구성합니다.
[edit protocols bgp group ext] user@R1# set type external user@R1# set peer-as 65530 user@R1# set neighbor 172.16.2.1
여러 키로 인증을 구성합니다.
[edit security authentication-key-chains key-chain bgp-auth] user@R1# set key 0 secret this-is-the-secret-password user@R1# set key 0 start-time 2011-6-23.20:19:33-0700 user@R1# set key 1 secret this-is-another-secret-password user@R1# set key 1 start-time 2012-6-23.20:19:33-0700
각 키의 시작 시간은 키체인 내에서 고유해야 합니다.
인증 키 체인을 BGP에 적용하고 해시 알고리즘을 설정합니다.
[edit protocols bgp group ext] user@R1# set authentication-key-chain bgp-auth user@R1# set authentication-algorithm md5
(선택 사항) 클럭 오차 허용 오차 값(초)을 적용합니다.
[edit security authentication-key-chains key-chain bgp-auth] user@R1# set tolerance 30
결과
구성 모드에서 show protocols
, show routing-options
및 show security
명령을 입력하여 구성을 확인합니다. 출력 결과가 의도한 구성대로 표시되지 않으면 이 예의 지침을 반복하여 구성을 수정하십시오.
user@R1# show protocols bgp { group ext { type external; peer-as 65530; neighbor 172.16.2.1; authentication-key-chain bgp-auth; authentication-algorithm md5; } }
user@R1# show routing-options autonomous-system 65533;
user@R1# show security authentication-key-chains { key-chain bgp-auth { tolerance 30; key 0 { secret $ABC123$ABC123 start-time “2011-6-23.20:19:33 -0700”; } key 1 { secret $ABC123$ABC123 start-time “2012-6-23.20:19:33 -0700”; } } }
디바이스 구성을 마쳤으면 구성 모드에서 commit
을(를) 입력합니다.
각 BGP 지원 디바이스에 적절한 인터페이스 이름과 주소를 사용하여 네트워크의 모든 BGP 활성화 디바이스에 대해 이 절차를 반복합니다.
검증
구성이 올바르게 작동하고 있는지 확인합니다.
이웃에 대한 인증 확인
목적
명령의 show bgp neighbor
출력에 옵션이 나타나는지 확인합니다AutheKeyChain
.
작업
운영 모드에서 show bgp neighbor
명령을 입력합니다.
user@R1> show bgp neighbor Peer: 172.16.2.1+179 AS 65530 Local: 172.16.2.2+1222 AS 65533 Type: External State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ direct-lo0 ] Options: <Preference PeerAS Refresh> Options: <AutheKeyChain> Authentication key is configured Authentication key chain: jni Holdtime: 90 Preference: 170 Number of flaps: 0 Peer ID: 172.16.2.1 Local ID: 10.255.124.35 Active Holdtime: 90 Keepalive Interval: 30 Peer index: 0 Local Interface: fe-0/0/1.0 NLRI advertised by peer: inet-unicast NLRI for this session: inet-unicast Peer supports Refresh capability (2) Table inet.0 Bit: 10000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 2 Received prefixes: 2 Suppressed due to damping: 0 Advertised prefixes: 1 Last traffic (seconds): Received 2 Sent 2 Checked 2 Input messages: Total 21 Updates 2 Refreshes 0 Octets 477 Output messages: Total 22 Updates 1 Refreshes 0 Octets 471 Output Queue[0]: 0
권한 부여 메시지 전송 확인
목적
BGP에 향상된 권한 부여 옵션이 있는지 확인합니다.
작업
운영 모드에서 monitor traffic interface fe-0/0/1
명령을 입력합니다.
user@R1> monitor traffic interface fe-0/0/1 verbose output suppressed, use <detail> or <extensive> for full protocol decode Listening on fe-0/0/1, capture size 96 bytes 13:08:00.618402 In arp who-has 172.16.2.66 tell 172.16.2.69 13:08:02.408249 Out IP 172.16.2.2.1122 > 172.16.2.1.646: P 1889289217:1889289235(18) ack 2215740969 win 58486 <nop,nop,timestamp 167557 1465469,nop,Enhanced Auth keyid 0 diglen 12 digest: fe3366001f45767165f17037>: 13:08:02.418396 In IP 172.16.2.1.646 > 172.16.2.2.1122: P 1:19(18) ack 18 win 57100 <nop,nop,timestamp 1466460 167557,nop,Enhanced Auth keyid 0 diglen 12 digest: a18c31eda1b14b2900921675>: 13:08:02.518146 Out IP 172.16.2.2.1122 > 172.16.2.1.646: . ack 19 win 58468 <nop,nop,timestamp 167568 1466460,nop,Enhanced Auth keyid 0 diglen 12 digest: c3b6422eb6bd3fd9cf79742b> 13:08:28.199557 Out IP 172.16.2.2.nerv > 172.16.2.1.bgp: P 286842489:286842508(19) ack 931203976 win 57200 <nop,Enhanced Auth keyid 0 diglen 12 digest: fc0e42900a73736bcc07c1a4>: BGP, length: 19 13:08:28.209661 In IP 172.16.2.1.bgp > 172.16.2.2.nerv: P 1:20(19) ack 19 win 56835 <nop,Enhanced Auth keyid 0 diglen 12 digest: 0fc8578c489fabce63aeb2c3>: BGP, length: 19 13:08:28.309525 Out IP 172.16.2.2.nerv > 172.16.2.1.bgp: . ack 20 win 57181 <nop,Enhanced Auth keyid 0 diglen 12 digest: ef03f282fb2ece0039491df8> 13:08:32.439708 Out IP 172.16.2.2.1122 > 172.16.2.1.646: P 54:72(18) ack 55 win 58432 <nop,nop,timestamp 170560 1468472,nop,Enhanced Auth keyid 0 diglen 12 digest: 76e0cf926f348b726c631944>: 13:08:32.449795 In IP 172.16.2.1.646 > 172.16.2.2.1122: P 55:73(18) ack 72 win 57046 <nop,nop,timestamp 1469463 170560,nop,Enhanced Auth keyid 0 diglen 12 digest: dae3eec390d18a114431f4d8>: 13:08:32.549726 Out IP 172.16.2.2.1122 > 172.16.2.1.646: . ack 73 win 58414 <nop,nop,timestamp 170571 1469463,nop,Enhanced Auth keyid 0 diglen 12 digest: 851df771aee2ea7a43a0c46c> 13:08:33.719880 In arp who-has 172.16.2.66 tell 172.16.2.69 ^C 35 packets received by filter 0 packets dropped by kernel
인증 오류 확인
목적
인증 오류로 인해 TCP가 삭제한 패킷 수를 확인합니다.
작업
운영 모드에서 show system statistics tcp | match auth
명령을 입력합니다.
user@R1> show system statistics tcp | match auth 0 send packets dropped by TCP due to auth errors 58 rcv packets dropped by TCP due to auth errors
키체인 작동 확인하기
목적
인증 오류로 인해 TCP가 삭제한 패킷 수를 확인합니다.
작업
운영 모드에서 show security keychain detail
명령을 입력합니다.
user@R1> show security keychain detail keychain Active-ID Next-ID Transition Tolerance Send Receive Send Receive bgp-auth 3 3 1 1 1d 23:58 30 Id 3, Algorithm hmac-md5, State send-receive, Option basic Start-time Wed Aug 11 16:28:00 2010, Mode send-receive Id 1, Algorithm hmac-md5, State inactive, Option basic Start-time Fri Aug 20 11:30:57 2010, Mode send-receive
변경 내역 표
기능 지원은 사용 중인 플랫폼과 릴리스에 따라 결정됩니다. Feature Explorer 를 사용하여 플랫폼에서 기능이 지원되는지 확인하세요.