IPSEC Over GRE GRE(Generic Routing Encapsulation / 터널링 기술) ------- 일반적(cisco 전용) ------- 특정 트래픽 ------------- 캡슐화 -> 기존 패킷을 재포장 ---- 기존 헤더 정보를 유지한 채 새로운 헤더를 생성한다 특정 네트워크망에서 새로운 IP헤더를 인캡슐레이션하여 패킷을 전송하는 터널 기능(VPN) 데이터를 암호화하지 않기 때문에 보안에 취약하다 --> 대신 암호화 기법을 사용하는 VPN에 비하여 데이터 전송처리가 빠르다 최종 목표 : 특정 트래픽을 터널링에 적용하여 대상을 정의하고 IPSEC을 이용하여 암호화를 적용하겠다 Net======new src ------------------------------new dst======Net 암호화 - origin header -> 기밀성 IPSEC - payload -> 무결성 현재 네트워크에 GRE를 적용하자 GRE 적용을 위한 가상 인터페이스가 필요하다 (int tunnel) tunnel --> 사용할 IP가 필요하다 (unnumbered 가능) SRC DST 특정 목적인 경우 동작 mode를 설정할 수 있다. IPSEC Over GRE IPSEC = IP + Sec => 목적 : 기밀성 + 무결성 획득 기밀성 : 데이터를 암호화하여 제3자가 내용을 훔쳐보지 못하게 만드는 기능 무결성 : 송신자가 보낸 데이터가 목적지에 도착할 때까지 중간에 위조되거나 변조되지 않았음을 보장하는 기능 IP --> IPv4 : IPSEC을 지원하지 않는다. IPv6 : 확장 헤더를 통하여 IPSEC을 지원할 수 있다. 대부분 사용중인 IPv4는 IPSEC을 지원하지 않는다. http (보안 X) + SSL ==> https IPv4를 사용중인 네트워크에 추가적인 모듈을 설치하여 보안성을 높여야 한다. (IKE/IPSEC) IKE : 보안인증서를 교환 IPSEC : 전달되는 payload를 암호화 IPv4 --> 프로토콜은 패킷을 보호하기 위한 보안 필드가 없다 스니핑을 실시하면 IP헤더, TCP/UDP 헤더, Payload(DATA) 내용을 손쉽게 확인할 수 있다. --> 이 특징을 이용하여 SIGNATURE를 획득함으로써 악성 코드 여부 판단했었음. ======+> 보안 취약성 : 기밀성 / 무결성 패킷의 구조 : 헤더 + 페이로드 -- SRC / DST --> 누가? 누구? 에게 전달되는지 파악(Auth) 인증 ------ 전달되는 데이터 --> 변조 가능성 여부 IPSEC : 전달되는 내용(페이로드)을 암호화하여 전송 공유되는 키값에 의해 암호화 / 복호화 키 관리 : 일정시간 / 일정 용량마다 키를 변경 ISKAMP -> IKE(키 교환 알고리즘) IPSEC 프로토콜 유형 - AH(Authentication Header) 프로토콜 : 무결성만 제공하고, 기밀성은 제공하지 않는다 (데이터가 평문으로 노출된다) 1) Tunnel Mode 2) Transport Mode - ESP(Encasulation Security Payload) 프로토콜 : 기밀성과 무결성을 제공한다 : 대부분의 VPN이 ESP 모드로 동작한다 1) Tunnel Mode 2) Transport Mode 1. AH 프로토콜의 특징 - 두 시스템이 송수신하는 IP패킷에 대한 무결성 및 인증을 제공하고, 암호화는 제공하지 않는 프로토콜이다 - IPSEC VPN에 적용될 때에는 "MD5-HMAC", "SHA-HMAC" 인증 알고리즘을 사용한다 - 인증 범위 : 원본 IP 헤더 일부 필드를 제외한 전체 범위 - 인증 대상 : 헤더 - IP 프로토콜 51번 사용(port) - AH 터널 원본 IP 헤더 앞에 새로운 New IP Header와 함께 인캡슐레이션된다 인증 보호 범위 : 원본 IP 헤더의 일부 필드를 제외한 전체 범위 - AH 트랜스포트 AH 헤더는 '원본 IP 헤더'와 'TCP 헤더' 사이에 인캡슐레이션된다 인증 보호 범위 : 원본 IP 헤더의 일부 필드를 제외한 전체 범위 일반적으로 클라이언트가 IPSEC통신을 시작하는 경우 사용, 선택된 IP 헤더 필드와 상위 계층 프로토콜을 보호한다 2. ESP 프로토콜의 특징 - 패킷에 대한 기밀성(암호화)를 제공하는 프로토콜 = 페이로드 - 기밀성 - 암호화 - 근원지 인증 및 선택적인 무결성 서비스를 제공한다 = 헤더 - 무결성 - 인증 - IPSEC VPN에 적용될 때에는 'DES', '3DES', 'AES' 암호화 알고리즘을 사용한다 - IPSEC VPN에 적용될 때에는 "MD5-HMAC", "SHA-HMAC" 인증 알고리즘을 사용한다 - IP 프로토콜 50번 사용(port) - ESP 터널모드 ESP 헤더는 '원본 IP 헤더'앞에 새로운 'New IP 헤더'와 함께 인캡슐레이션되며 'DATA'의 뒷부분에 'ESP Trailer', 'ESP Auth'가 추가로 인캡슐레이션된다. 원본 IP헤더 부분을 포함하여 상위부분 전체가 암호화된다. 'New IP 헤더'를 제외한 나머지 정보들에 대해 암호화 및 인증을 수행한다. 'New IP 헤더'의 출발지/목적지IP 주소를 이용하여 패킷을 전송하기 때문에 기밀성과 무결성이 보장되므로 패킷 정보 유출 및 변조가 불가능하다. - ESP Transport 모드 ESP 헤더는 '원본 IP 헤더'와 'TCP 헤더' 사이에 인캡슐레이션된다. 'DATA'(payload/페이로드) 뒷부분에 'EST Trailer', 'ESPAuth'가 추가로 인캡슐레이션된다. ESP는 선택적인 인증 서비스를 제공하며, 이 때 인증은 원래의 데이터가 아니라 암호화된 패킷에 대해서 인증을 실시한다. IP 상위 프로토콜을 보호하는 모드 이므로 원본 IP헤더가 암호화되지 않는 상태로 남아 있다. 👑 용어 정리 DES : DES는 IBM에서 고안되어 NIST가 미국 표준 암호 알고리즘으로 채택된 대칭 암호화 알고리즘이다. 1998년도에 해독된 암호화 기술이기 때문에, 현재의 일반 컴퓨팅 파워로도 쉽게 뚫린다. 3DES : 트리플 DES 트리플 DES는 각 데이터 블록에 데이터 암호화 알고리즘을 세번 적용한 트리플 데이터 암호화 알고리즘 블록 암호에 대한 일반적인 이름이다. AES 고급 암호화 표준(Advanced Encryption Standard, AES)은 2001년 미국 표준 기술 연구소(NIST)에 의해 제정된 암호화 방식이다.[3] AES는 두 명의 벨기에 암호학자인 존 대먼과 빈센트 라이먼에 의해 개발된 Rijndael(레인달, [rɛindaːl][4][5]) 에 기반하며 AES 공모전에서 선정되었다. AES는 미국 정부가 채택한 이후 전 세계적으로 널리 사용되고 있다. 1977년 공표된 DES를 대체한 AES는, 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭 키 알고리즘이다. 미국 표준 기술 연구소(NIST)는 2001년 11월 26일 AES를 미국 연방 정보 처리 표준(FIPS-197)으로 공포하였다. NIST는 5년의 표준화 과정을 거쳤으며 이 과정에서 15개의 알고리즘이 경쟁, Rijndael 암호가 가장 적합한 알고리즘으로 선정되었다. 이 표준은 2002년 5월 26일부터 효력을 발휘하기 시작했다. AES는 ISO/IEC 18033-3 표준에 포함되어 있으며 여러 암호화 패키지에서 사용되고 있다. AES는 또한 미 국가안보국에 의해 1급비밀(Top Secret)에 사용할 수 있도록 승인된 알고리즘 중 최초로 공개되어 있는 알고리즘이다. Rijndael은 알고리즘의 개발자인 빈슨트 레이믄(Vincent Rijmen)과 요안 대믄(Joan Daemen)의 이름을 따서 지은 것으로 AES 표준은 여러 Rijndael 알고리즘 중 블록 크기가 128비트인 알고리즘을 말한다. 해시 함수 ---> 원본 ----> 암호화 데이터(해시 코드) <--- 불가능 MD5 MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수이다. RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. 1991년에 로널드 라이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안했다. 1996년에 MD5의 설계상 결함이 발견되었다. 이것은 매우 치명적인 결함은 아니었지만, 암호학자들은 해시 용도로 SHA-1과 같이 다른 안전한 알고리즘을 사용할 것을 권장하기 시작했다. 2004년에는 더욱 심한 암호화 결함[1]이 발견되었고. 2006년에는 노트북 컴퓨터 한 대의 계산 능력으로 1분 내에 해시 충돌을 찾을 정도로 빠른 알고리즘이 발표[2]되기도 하였다. 현재는 MD5 알고리즘을 보안 관련 용도로 쓰는 것은 권장하지 않으며, 심각한 보안 문제를 야기할 수도 있다. 2008년 12월에는 MD5의 결함을 이용해 SSL 인증서를 변조하는 것이 가능하다는 것이 발표되었다[1]. SHA SHA(Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 서로 관련된 암호학적 해시 함수들의 모음이다. 이들 함수는 미국 국가안보국(NSA)이 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정되었다. SHA 함수군에 속하는 최초의 함수는 공식적으로 SHA라고 불리지만, 나중에 설계된 함수들과 구별하기 위하여 SHA-0이라고도 불린다. 2년 후 SHA-0의 변형인 SHA-1이 발표되었으며, 그 후에 4종류의 변형, 즉 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었다. 이들을 통칭해서 SHA-2라고 하기도 한다. SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있다. SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 한다. 혹자는 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장한다. SHA-0과 SHA-1에 대한 공격은 이미 발견되었다. SHA-2에 대한 공격은 아직 발견되지 않았으나, 전문가들은 SHA-2 함수들이 SHA-1과 비슷한 방법을 사용하기 때문에 공격이 발견될 가능성이 있다고 지적한다. 미국 표준 기술 연구소(NIST)는 SHA-3로 불리는 새로운 암호화 해시 알고리즘에 대한 후보를 공모하였다. HMAC 암호학에서 HMAC(keyed-hash message authentication code, hash-based message authentication code)는 암호화 해시 함수와 기밀 암호화 키를 수반하는 특정한 유형의 메시지 인증 코드(MAC)이다. RSA RSA 암호는 공개키 암호시스템의 하나로, 암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘으로 알려져 있다. RSA가 갖는 전자서명 기능은 인증을 요구하는 전자 상거래 등에 RSA의 광범위한 활용을 가능하게 하였다. 1978년 로널드 라이베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman)의 연구에 의해 체계화되었으며, RSA라는 이름은 이들 3명의 이름 앞글자를 딴 것이다. 이 세 발명자는 이 공로로 2002년 튜링상을 수상했다. 그러나 RSA 방식을 제일 먼저 개발한 사람은 영국 GCHQ에 근무하던 수학자였으며, 이보다 빠른 1973년도에 개발하게 된다. 이 내용은 GCHQ에서 비밀로 취급되었으며, 이후 1997년 세상으로 발표되게 된다.[1] RSA 암호체계의 안정성은 큰 숫자를 소인수 분해하는 것이 어렵다는 것에 기반을 두고 있다. 그러므로 큰 수의 소인수 분해를 획기적으로 빠르게 할 수 있는 알고리즘이 발견된다면 이 암호 체계는 가치가 떨어질 것이다. 1993년 피터 쇼어는 쇼어 알고리즘을 발표하여, 양자 컴퓨터를 이용하여 임의의 정수를 다항 시간 안에 소인수 분해하는 방법을 발표하였다. 따라서 양자 컴퓨터가 본격적으로 실용화되면 RSA 알고리즘은 무용지물이 될 것이다. 그러나 양자 컴퓨터가 이 정도 수준으로 실용화되려면 아직 여러 해가 더 필요할 것으로 보인다. RSA 암호화 알고리즘은 1983년에 발명자들이 소속되어 있던 매사추세츠 공과대학교(MIT)에 의해 미국에 특허로 등록되었고, 2000년 9월 21일에 그 특허가 만료되었다. SA (Security Associations) : 보안 요소들 - AH / ESP 프로토콜을 통해서 IPSEC을 구현한다 --> 암호화 / 인증에 필요한 요소 - 암호화 / 복호화에 필요한 key의 수명관리 (KMS : Key Management System) ----- Life Circle 용량 : 4,608,000KByte 시간 : 3600초 SA는 단방향 연결로 생성되고, AH, ESP는 각각 개별로 생성된다. - SA 수동 생성 : 생성되자마자 연결 - SA 자동 생성 : IKEv2 : IKE 자동생성 : 용량 / 시간 --> 자동 삭제 : 주기적인 SA갱신과 키 업데이트를 이용하여 새로운 SA 정보와 키를 공격자로부터 유출을 방지한다. IKE(Internet Key Exchange) 인터넷 표준 암호 키 교환 프로토콜 IKE : IPSEC VPN에서 상대방을 인증하고 IKE와 SA를 협상하는데 필요한 프로토콜이다. 세션키를 생성하여 상대방과의 인증을 수핸한다. <-- 별도의 ID/PW를 지정하지 않아도 된다. (키 생성과 인증) + 교환 + 폐기까지 담당하게 된다. 생성된 키 --> 배포 (상대방과 동기화) : 암호화 채널 구축 diffie hellman : 인증 채널(암호화 채널)을 구축해주는 프로토콜 --> 비대칭 키 알고리즘을 이용하여 대칭키를 교환하는 프로토콜 / 상호간에 안정하지 않은 채널상에서 공개키, 비밀키, 세션키를 생성하여 상대방과 인증을 수행한다. SA 정보를 생성하는 방법 2가지 1. 수동(관리자가 직접하는 방식) --> 생성과 동시에 연결 2. 자동(IKE 프로토콜을 이용한 협상방식(자동키 교환방식)) --> AH / ESP SA 생성 / 관리 --> ISAKMP (Internet Security Association & Key Management Protocol) 인증 알고리즘 , 암호화 알고리즘 , 암호 키 교환 규약에 대하여 통합적으로 관리 구현 시에는 순서가 중요하다. 해제 시에도 구현의 역순으로 진행한다. IPSEC으로 암호화 / 복호화하기 전에 설정되어야 하는 단계 IKE 1단계(Phase 1) IKE 2단계(Phase 2) 적용 == 계층적 구조를 갖기 때문에 반드시 순서(절차)대로 정의해야 한다. IKE 1단계 - 두 IPSEC 개체간체 인증 및 2단계 SA를 성립하는 메시지를 보호하기 위한 세션키를 협상 - 2단계 SA를 설정하기 위한 메시지를 보호할 때만 사용(IPSEC 패킷을 보호하는데 사용되지 않는다) - 1단계 SA는 방향성을 갖지 않는다(단, 수동으로 키를 설정하면 1단계 필요 없음) IKE 2단계 - IPSEC을 이용하여 패킷 전송에 사용할 SA를 의미한다. - Inbound / Outbound 에서 사용하는 SA가 다르기 때문에 2단계 SA는 방향성을 갖는다. (2개의 SA 생성) - 내용은 인증 메커니즘, 암호화 알고리즘, 해시 알고리즘, 암호화와 인증키 값, SA 갱신 기간 IKE(Internet Key Exchange) : ISAKMP ---> SA 생성 / 관리 ---> 접속 객체 협상 ISAKMP + Oakley 프로토콜의 결합 IPSEC에서 사용되는 키 관리 프로토콜 - 상호 객체간에 인증된 보안 통신 채널을 생성하고 SA정보를 협상 (ISAKMP 1/2) - IKE 메시지 교환 : 출발지 / 도착지 포트 번호 : UDP 500번 사용 - IKE 1단계, 2단계 --> SA 가 생성 ---> 두 개체간에 전송되는 패킷들은 IPSEC에 의해서 암호화(기밀성) / 인증(무결성)을 보장받는다. IKE 1단계 : Main 모드 6개의 메시지를 교환하여 1단계 성립 2단계 : Quick 모드 SA생성하기 위한 메시지 교환 설정을 하기 위한 기본 지식 IKE를 이용한 개체 인증 방식 *1. Pre-Shared Key : 대칭키를 각 장비에 미리 설정하여, 상호간에 공개키를 포함하는 데이터의 해시 값을 교환하여 상호간에 약속되어 있는 SA를 비교 2. RSA Encryption : 공객키와 비밀키를 생성한 후에 상대방의 공개키를 이용하여 데이터를 암호화하여 전송한다. 상대방은 자신의 비밀키를 이용하여 데이터를 복호화한다 ---> 비대칭 3. RSA Signature : CA인증 서버를 이용하여 전자 서명을 실시한 이후에 상호간에 데이터를 전송한다. IKE 1단계 정책 내용 - 보안성이 없는 네트워크를 통하여 암호화된 데이터를 송수신하기 위한 준비 단계 ---> ISAKMP SA를 생성하기 위한 정책을 설정한다. 1. VPN 장비간에 사용할 인증 방식 (Pre-Shared Key) : authentication pre-share 2. 암호 방식 (3DES) : encryption 3des 3. 키 교환 알고리즘 (DH 2) : group 2 4. 무결성 확인(인증) (MD5 / SHA) : hash md5 5. 보안 정책 사용 시간 (Lifetime : 60 - 86400) 3600 : lifetime 3600 명령어 정리 R1 IKE 1단계 conf t crypto isakmp policy 10 authentication pre-share encryption 3des group 2 hash md5 lifetime 3600 상대방 지정 R1(config)#crypto isakmp key 6 cisco address 1.1.4.2 IKE 2단계 - 실제 암호화된 데이터를 송수신하는 단계 - IPSEC SA를 생성하기 위해서 정책 설정을 해야한다. 보호 대상 트래픽 ---> ACL === transform-set === IPSEC 프로토콜 ---> AH, ESP 암호화 방식 ---> DES, AES, 3DES 무결성 확인 ---> MD5-HMAC, SHA-HMAC 보안 정책 사용 기간 ---> Lifetime (60 - 86,400) kilobyte (2,560 - 536,870,912) 2단계 명령어 보호 대상 트래픽 ---> ACL R1(config)#access-list 110 permit gre 1.1.2.0 0.0.0.255 1.1.4.0 0.0.0.255 === transform-set === : 이름을 KONG으로 하겠다. R1(config)#crypto ipsec transform-set KONG esp-3des esp-sha-hmac 1단계 / 2단계 --> 적용 ----> crypto map : IPSEC 10 R1(config)#crypto map IPSEC 10 ipsec-isakmp % NOTE: This new crypto map will remain disabled until a peer and a valid access list have been configured. R1(config-crypto-map)#set peer 1.1.4.2 R1(config-crypto-map)#set transform-set KONG R1(config-crypto-map)#match address 110 마지막!!! IPSEC을 지원해야하는 인터페이스에서 IPSEC을 활성화 시켜야 한다. R1#conf t Enter configuration commands, one per line. End with CNTL/Z. *Sep 14 15:27:50.118: %SYS-5-CONFIG_I: Configured from console by console R1(config)#int s1/0 R1(config-if)#crypto map IPSEC *Sep 14 15:28:06.162: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON R1(config-if)#