이 페이지의 내용
BGP 경로 인증
BGP에 대한 라우터 인증 이해
라우터 및 경로 인증과 경로 무결성을 사용하면 잘못된 라우터와 잘못된 라우팅 정보를 공유하도록 구성된 시스템 또는 라우터의 공격을 받을 위험이 크게 완화됩니다. 이러한 종류의 공격에서 공격을 받은 라우터는 속아서 라우팅 루프를 만들거나, 공격받은 라우터의 라우팅 테이블을 크게 늘려 성능에 영향을 미치거나, 라우팅 정보를 공격자가 분석할 수 있도록 네트워크의 한 장소로 리디렉션될 수 있습니다. 가짜 경로 보급은 세그먼트에 전송될 수 있습니다. 경로의 소스를 확인하기 위한 인증 메커니즘이 마련되어 있지 않는 한 이러한 업데이트는 이웃 라우터의 라우팅 테이블에 수락될 수 있습니다.
라우터 및 경로 인증은 라우터가 암호(키)를 기반으로 신뢰할 수 있는 소스와 통신하고 있음을 확인할 수 있는 경우에만 정보를 공유할 수 있도록 합니다. 이 메서드에서는 다른 라우터로 전송되는 경로와 함께 해시된 키가 전송됩니다. 수신 라우터는 전송된 키를 자체 구성된 키와 비교합니다. 동일하면 경로를 수락합니다. 해시 알고리즘을 사용하면 키가 일반 텍스트로 와이어를 통해 전송되지 않습니다. 대신 구성된 키를 사용하여 해시가 계산됩니다. 라우팅 업데이트는 키와 함께 해시 함수에 대한 입력 텍스트로 사용됩니다. 이 해시는 경로 업데이트와 함께 수신 라우터로 전송됩니다. 수신 라우터는 수신된 해시와 구성된 사전 공유 키를 사용하여 경로 업데이트에서 생성하는 해시를 비교합니다. 두 해시가 동일한 경우, 경로는 신뢰할 수 있는 소스에서 온 것으로 간주됩니다. 키는 송신 라우터와 수신 라우터에만 알려져 있습니다.
보안을 더욱 강화하기 위해 일련의 인증 키( 키 체인)를 구성할 수 있습니다. 각 키에는 키체인 내에서 고유한 시작 시간이 있습니다. 키체인 인증으로 피어링 세션을 중단하지 않고 비밀번호 정보를 주기적으로 변경할 수 있습니다. 이 키체인 인증 방법은 피어링 세션을 재설정하거나 라우팅 프로토콜을 중단하지 않고 키가 다음으로 롤오버되기 때문에 무중단 이라고 합니다.
전송 피어는 다음 규칙을 사용하여 활성 인증 키를 식별합니다.
시작 시간은 현재 시간보다 작거나 같습니다(즉, 미래가 아님).
시작 시간은 시작 시간이 현재 시간보다 짧은 체인의 다른 모든 키보다 큽니다(즉, 현재 시간에 가장 가깝습니다).
수신 피어는 수신 키 식별자를 기반으로 인증할 키를 결정합니다.
송신 피어는 구성된 시작 시간을 기반으로 현재 인증 키를 식별한 다음 현재 키를 사용하여 해시 값을 생성합니다. 그런 다음 전송 피어는 TCP 강화 인증 옵션 개체를 BGP 업데이트 메시지에 삽입합니다. 개체에는 개체 ID(IANA에서 할당), 개체 길이, 현재 키 및 해시 값이 포함됩니다.
수신 피어는 수신 TCP 강화 인증 옵션을 검사하고, 수신된 인증 키를 조회하며, 시작 시간, 시스템 시간 및 허용 오차 매개 변수를 기반으로 키가 허용 가능한지 여부를 결정합니다. 키가 수락되면 수신 피어는 해시를 계산하고 업데이트 메시지를 인증합니다.
TCP 세션에 키 체인을 처음 적용하면 세션이 재설정됩니다. 그러나 키체인이 적용되면 키체인에서 암호를 추가하거나 제거해도 TCP 세션이 재설정되지 않습니다. 또한 키 체인이 한 인증 알고리즘에서 다른 알고리즘으로 변경되어도 TCP 세션은 재설정되지 않습니다.
Junos OS는 BGP 경로 인증에 정적 인증 키와 키 체인의 두 가지 방법을 지원합니다. 두 접근 방식 모두 BGP 피어가 라우팅 정보를 안전하게 교환하도록 지원합니다.
-
정적 인증 키 방법에는 BGP 구성 내에서 직접 고정 키를 지정하는 작업이 포함됩니다. 이 방법은 키 관리가 간단한 환경에서 더 간단합니다.
-
키체인 방식은 더 큰 유연성을 제공하고 보안 강화를 위해 키 회전을 지원합니다.
자세한 구성 및 예제는 다음을 참조하십시오.
-
정적 인증 주요 예: 라우팅 프로토콜에 대한 인증 방법.
-
키 체인 구성 예: 예: BGP에 대한 라우터 인증 구성 (이 페이지의 뒷부분)을 참조하십시오.
또한보십시오
BGP 인증 방법
모든 BGP 인증 정보는 TCP 패킷 헤더에 저장됩니다. BGP 인증 방법에는 두 가지 유형이 있습니다. TCP MD5 인증 및 TCP 인증 옵션(TCP-AO). 동일한 세션에 대해 둘 다 구성할 수는 없지만 둘 중 하나를 동시에 구성할 수 있습니다.
TCP MD5 인증(RFC 2385) 은 TCP 세그먼트에 적용된 MD5 알고리즘을 사용하여 키 해시를 사용하는 널리 사용되는 방법입니다. 두 피어 모두 공유 비밀 키가 필요합니다. 간단하지만 보안과 관련하여 한계가 있습니다.
주니퍼 디바이스의 라우팅 프로토콜에 MD5 인증을 구성하는 경우 키 체인 인증 방법을 별도로 구성할 필요가 없습니다. 대신 MD5 키를 직접 구성하거나 MD5 키가 포함된 인증 키 체인을 사용합니다. MD5 인증에는 양쪽 끝에서 동일한 MD5 키 구성이 필요합니다. 인증 방법은 MD5이며 키 체인을 사용하여 키를 관리합니다. MD5와 별도로 별도의 "키체인 인증 방법"을 구성하지 않습니다.
TCP 인증 옵션(TCP-AO)(RFC 5925) 은 MD5보다 더 강력한 옵션으로, 마스터 키를 활용하여 세션 키를 생성하고 주기적으로 변경하며, 일반적으로 AES를 사용합니다. 더 강력한 보호 기능을 제공하고 무중단 키 롤오버를 지원합니다.
TCP-AO는 TCP MD5의 향상 또는 확장입니다. 사전 정의된 일정에 따라 순환되는 여러 암호 구문을 허용하여 인증이 향상됩니다. 또한 MD5보다 더 많은 인증 방법을 허용하여 TCP MD5를 향상시킵니다.
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 수준에서 키 체인을 적용할 수 있습니다. 이 예에서는 라는 외부 BGP(EBGP) 그룹ext에 정의된 피어에 키체인을 적용합니다.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 routing-options및 show security 명령을 show protocols입력하여 구성을 확인합니다. 출력에 의도한 구성이 표시되지 않으면 이 예의 지침을 반복하여 구성을 수정합니다.
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
변경 내역 표
기능 지원은 사용 중인 플랫폼과 릴리스에 따라 결정됩니다. 기능 탐색기를 사용하여 플랫폼에서 기능이 지원되는지 확인합니다.
