본문 바로가기
1.A. High Level Computing/Network

VPN의 작동기제, 사용 목적, 안전한 구성 (feat. OpenVPN)

by Never Settle Down 2024. 4. 6.
반응형

 

I still don't have a reason

and you don't have the time

And it really makes me wonder

if I ever gave a fa'en about you

 

 

요즘 너무 바쁘다.

 

집 밖에서 생활을 하다 보니;

- 집 서버가 뻗어버리거나

- NAS 아카이브가 갑자기 필요하거나

- 인터넷 환경을 믿을 수 없거나

- IP를 숨겨야 하는

시점들을 자주 맞닥트리고 있다.

 

 

미래의 Employeer들에게

"내가 이만큼 알고 있소" 하고 자랑을 좀 할 겸,

친구놈들에게 "VPN은 이런 거니 알고 쓰쇼"라고 지적질을 할 겸

이 글을 써본다.

 

 

물론 나도 잘 몰랐고

처음에 L2TP를 쓰다가 OpenVPN으로 갈아타기위해

구축하면서 이것저것 찾아본 결과물 정도도 되겠다.

2023.03.11 - [1.A. High Level Computing/On Premise Computing] - VPN서버 (재)구축기 - OpenVPN (feat. Dedicated HW)

 

VPN서버 (재)구축기 - OpenVPN (feat. Dedicated HW)

At first I was afraid, I was petrified Kept thinking I could never live without you by my side But then I spent so many nights thinking how you did me wrong And I grew strong And I learned how to get along And I am a big fan of Evan Fong (lol the rhyme)

thewanderer.tistory.com

 

 

 

이 글의 5W1H:

- What   : 5W1H of VPN

- Who    : Anyone (전공자 & 비전공자)

- Why    : to Explain

- When : right now

- Where: @thewanderer.tistory.com

- How   : 블로그 Article의 발행

 

 

목차

0. VPN이란

1. VPN의 기능

2. VPN의 프로토콜

3. VPN 서비스 종류

4. VPN의 동작 원리

5. 안전한 VPN 구축 / 운용 방법

 

 

 

 

0. VPN이란

VPN은 가상사설망이다.

 

그게 뭔데?

 

음...

출처: 고려사이버대학교 정보보호시스템 강의 6주차 강의자료 (지적재산권 소유자: 고려사이버대학교)

 

이렇게 틱 던지고나면

비전공자들은 이렇게 생각할 것이다:

 

"... 그래서 뭐 어쩌라고? 저게 뭔데?

미국 넷플릭스 볼 때 쓰는게 VPN 아님??

왜 회사가 갑자기 나오는거여??"

 

 

 

흠흠.

(해리포터의 엄브릿지에 빙의한 목소리이다)

 

 

대부분의 가정집 인터넷망은 아래와 같이 구성되어있다.

 

 

물론,

핸드폰 3G/LTE/5G처럼 인터넷에 바로 붙는 접속지점도 있고

(엄밀히는 통신사 무선통신망에 접속하여 이동통신망 내 사설IP를 받는 것일텐데, 이 부분은 확실하지가 않다)

아파트 벽 단자함에 있는 랜선을 PC에 그대로 꽂아버리는 (보안적으로는 반쯤 미쳤다고 봐도 무방한) 사람도 있을 것이다.

 

 

기본적으로 시중에 있는 "공유기"는

- 라우팅 기능

   PC1: 192.168.0.5에게 SMB 연결할거야 - 공유기: 응 너 나가지 말고 어디로 가

   PC2: youtube.com에 https 연결할거야 - 공유기: 응 너 나간 다음에 KT DNS 한테 문의해 (내가 전달해줄게)

- 무선랜 기능

   랜선 말고 와이파이 (무선으로 유선랜처럼) 연결

- DHCP 서버 기능

   IP 배당받는 기능 (주식인줄)

- 스위치 기능

   공유기에 랜선 꼽는 구녕이 2개밖에 없다면 (WAN, LAN) 스위치는 없다. 대표적 제품은 Apple Airport Express.

- 방화벽 기능

   포트포워딩 기능이 들어있다면, 기초적인 방화벽 기능은 탑재되어있는 것이다.

등이 하나의 제품으로 들어있는 것이다.

 

 

망분리, NAT, 공인/사설 IP주소, 인터넷 / 외부망과 인트라넷 / 내부망에 대한

자세한 내용은 아래 포스팅으로 갈음하고;

2023.06.15 - [1.A. High Level Computing/Network] - 개인 서버 망분리 고민 log (Feat. NAT & Sniffing) - 작업중

 

개인 서버 망분리 고민 log (Feat. NAT & Sniffing) - 작업중

나는 사생활 보호에 극도로 민감한 편이다. 게다가 I 성향이 매우 강해서.. 다른 사람들이랑 어울리는걸 별로 안 좋아한다. 한국의 그지같은 Collectivism, 집단주의적인 문화때문에 여행지 가서 '한

thewanderer.tistory.com

 

미국 군사용 네트워크인 ARPANET에서 발전한

"현대의 인터넷" 체계, 동작원리, 구조 등에 대한 내용은 다음글로 갈음한다:

(아래 글에 국제관문국과 BGP 등에 대해 다루지 않을 경우 다른 아티클로 대체할 예정이다)

2024.03.16 - [1.A. High Level Computing/Network] - DDoS 및 대피소(Shelter)의 종류 및 작동기제 log (feat. 논문주제 뭐로하지)

 

DDoS 및 대피소(Shelter)의 종류 및 작동기제 log (feat. 논문주제 뭐로하지)

지금 논문을 쓰고 있다. 아니, 엄밀히 말하자면 연구계획서 틀만 그려놓고 (인터넷에 맘에 드는 양식이 없다) 제목을 쓰기 위해 고민하고 또 고민하다가 Legal pad를 잔뜩 꺼내 미친듯이 브레인스

thewanderer.tistory.com

 

공유기에 SPI (Statefull Packet Inspection)과 같이

능동적으로 방어를 하는 기능이 탑재된 친구들도 있고

단순히 포트만 default reject/drop 기능만 있는 아그들도 있다.

 

" 내 공유기는 ipTime의 1004NS라서 방화벽 그딴 기능 없는데 뭔 개소리야! " 라고 외치는 분들에겐

" 포트포워딩 기능이 있다면 아주 기초적인 방화벽 기능이 있다 " 고 답변한다.

 

자세한건 아래 포스팅으로 갈음한다:

2023.07.01 - [1.A. High Level Computing/Network] - [토막글] 링크시스 E7350 공유기 (WPA3) Log (Feat. 통신단자함)

 

[토막글] 링크시스 E7350 공유기 (WPA3) Log (Feat. 통신단자함)

노르웨이어를 배우려고 책을 드디어 샀다. 2023.04.05 - [In Progress/Brainstormed but that's it.] - 노르웨이지언을 배워볼까. (탐색중) 노르웨이지언을 배워볼까. (탐색중) 한 10년? 12년? 전에 유툽에서 (당시

thewanderer.tistory.com

 

 

 

...

 

 

대부분의 가정용 "공유기"는

기본셋팅 값으로 내부 IP 대역 (CIDR)을

192.168.0.0/24 ~ 192.168.0.1/24

로 잡아둔다.

 

맨 앞자리 192, C클래스 (벤츠 말하는거 아니다) 대역을 쓰고

대부분 Subnet mask는 255.255.255.0으로,

할당 가능한 IP는 254개이다. (0 ~ 255의 256개 주소 중 0(me/default router)과 255(everyone)는 사용하지 않는다)

 

Technically 내 IP를 요청할 때 (DHCP 서버에게) 보내는 주소는

0.0.0.0이므로 위의 괄호에서 0은 제외... 해야하나... 엄밀하게 따지자면.

몰라 일단 이 글의 scope를 벗어나기 때문에 그렇다고 친다.

 

 

이 주소체계는 변경할 수 있다.

실제 나의 경우;

- 집 일반망: 123.123.120.0/22 (123.123.120.000 ~ 123.123.123.255, 총 1024개의 "내부망"주소)

- 집 서버망: 10.0.0.0/27 (10.0.0.000 ~ 10.0.0.031, 총 32개의 "내부망" 주소)

- 집 VPN망: 12.34.56.0/24 (12.34.56.000 ~ 12.34.56.255, 총 256개의 "내부망" 주소)

- 에그: 192.168.123.0/24 (192.168.123.000 ~ 192.168.123.255, 총 256개의 "내부망"주소)

로 구성해두었으며,

이는 공유기마다 설정 가능한 범위 등에 따라 차이가 난다.

 

(KT 에그의 경우 Belkin의 자회사, Linksys의 제품인데

링크시스 제품의 경우 192.168.x.x 형태의 주소만 설정이 가능하다)

 

 

아 놔 이거 인터넷 주소체계를 여기다 써부렀네.

 

여튼.

 

 

For convinient sake, 편의상

Bob의 주소체계를 1.2.3.0/24 체계로 바꿔서 설명해보자.

(Bob은 필자, Never Settle Down, 의 약자 NSD로 개명도 했다고 치자.)

 

필자는 Starcraft를 좋아한다.

배틀넷은 못 믿겠고, LAN게임으로 Alice와

유즈맵 (유저 크리에이티드 맵) 성큰 길막기 게임을 하고싶다.

 

스타크래프트 랜게임을 모른다면;

 

더보기

 

같은 도메인,

정확히는 동일한 브로드캐스트 도메인 내에 위치한 호스트끼리

멀티플레이를 즐기는 환경이다.

(굉장히 교과서적으로, 기술적으로 적었다)

 

쉽게 말하자면,

같은 와이파이 붙인 놈만 접속이 된다는 것이다.

 

물론 공유기에서 포트포워딩을 걸고

DDNS로 공인아이피를 URL로 매핑하면

외부에서도 되겠다만...

 

이런 특수한 경우는 제하고 설명하겠다.

 

이를 위해서 가능한 방법은;

1. Alice가 노트북을 들고 NSD의 집에 놀러온다.

2. NSD가 VPN 서버를 구축하고, Alice가 VPN으로 접속한다.

 

 

2번, 컴퓨터 새비 (savvy)인 NSD가 VPN 서버를 구축해 줄 경우,

 

- 성남, 대한민국에 거주하는 NSD와

- 벨겐, 노르웨이에 거주하는 Alice는

 

물리적으로 떨어져있음에도

같은 네트워크에 있는 것과 같은 효과를 얻는다.

 

분명히 앨리스의 iMac은 192.168.0.73이라는

앨리스네집 공유기 내부망 IP주소를 받았다.

 

그러나 네트워크 지식이 풍부한 NSD가

모든 트래픽을 서버로 보내는, All traffic 옵션을

VPN서버에 켜두었기 때문에,

(반대되는 옵션은 Split tunneling이다)

 

앨리스의 모든 인터넷 트래픽은 NSD의 공인IP주소

(123.234.5.67)를 달고 나가게 된다.

 

또한 스타크래프트의 LAN게임도

별 탈 없이 접속을 할 수 있다.

 

 

 

이게 VPN이다.

정확히는 VPN 터널링이다.

 

 

 

엄밀히 말하자면,

Alice의 iMac 에서 보내는

모든 인터넷 통신은,

- Alice 공유기 - Telenor Norge - 인터넷 백본망 - KT 국제관문국 - SKB - NSD 공유기 - VPN서버 -

를 찍고,

- VPN서버 - NSD 공유기 - SKB - 인터넷 망 - 미국 통신사 - Google

과 같은 형태로 트래픽이 이동한다.

 

Telenor Norge는 노르웨이의 통신사 중 하나이다.

NSD는 SKT 통신사 인터넷을 쓴다고 가정하자.

 

 

와 진짜 스토리 쓰고 그림그린다고 손목을 갈아넣고 있다.

2023.01.14 - [0. Life Log/Personal Life] - 손목 시큰거림 (과도한 컴퓨터 사용) + 마우스 고민기

 

손목 시큰거림 (과도한 컴퓨터 사용) + 마우스 고민기

회사를 때려친지 반년이 다되가는 지금 나의 하루 중 컴퓨터가 빠진 시간은 아래와 같다: - 코스트코 장보러 가기 - 드라이빙 & 끼니나 피로를 해소하기 위해 드라이브쓰루 라인 대기 - 동네 스타

thewanderer.tistory.com

 

 

1. VPN의 기능

자,

앞서 주저리 주저리 떠든 것처럼

 

"가상으로 사설망 (내부망)을 구축" 해서

Alice가 NSD의 집 인터넷에 들어왔다.

 

일종의 Proxy라고 할 수 있겠다.

 

물론 직통이 아니라 거점을 찍고 가는 것이므로

프록시의 초창기 목적과

완전히 반대되는 것이지만..

 

그럼 VPN을 왜 쓰는거임?

이란 질문의 답변이 하나 나왔다:

- 가상으로, 다른 망에 있는 것처럼 연결해줌.

 

 

여기서 "가상"이란;

 

더보기

베르겐, 노르웨이 ~ 성남, 한국으로

랜선을 길~~~게 깔지 않고

"소프트웨어"로 망을 구성했다는 뜻이다.

 

 

VPN이 아니라 PPN, Physical Private Network라는

말도 안되는 서비스가 있다고 가정해보자.

 

스타벅스에서 친구랑 커피먹고 떠드는 와중에

회사 직속상사 차장님이 급하게 전화를 걸어서

" NSD씨 이번 수의계약건 관련해서 고객사가 급하게 ... 그래서 회사 컴퓨터에서 OO 자료좀 수정해줘야겠어!!! 빨리!!! "

라고 소리를 지른다면,

 

PPN서비스로 회사 컴에 접속하기 위해

스타벅스 성남 ~ 판교 OO회사까지

랜선을 까는 것이다.

(지나가는 차가 랜선을 밟아서 끊어져버렸다. 그럼 다시 깔고... 또 깔고...)

 

말도 안되지 않는가.

 

그걸 가상화했다는, 소프트웨어로 "가상의 랜선을 깔았다"는 의미인 것이다.

 

 

" 그럼 VPN의 안전성에 대해 떠드는 친구들은 뭔데? "

" Nord VPN을 쓰면 트래픽이 안전하고 어쩌고 저쩌고 떠드는건 뭔데?? "

 

라고 묻는 사람이 있을 것이다.

(안 궁금하면 궁금해져보자)

 

 

 

그건 VPN의 부가적인 기능인

암호화에 대한 이야기인 것이다.

 

 

시나리오를 하나 더 보자.

 

- NSD는 은평구에 거주한다. (성남산다메.. 그새 이사갔음..?)

- NSD는 성남시의 에이직, ASIK 라는 곳에 취직을 했다. (KISA 역순 ㅋㅋ)

- NSD는 은평구 자택에 NAS와 VPN 서버를 운용하고 있다.

- NSD는 DDNS와 VPN을 통해 외부에서 집 내부망으로 연결할 수 있다.

 

 

어느날 회사에 출근한 NSD는

운전면허증 사본을 제출하라는 인사팀의 전화를 받았다.

 

하! 이미 내가 스캔떠서 파일로 저장해뒀지.

하고 NSD는 VPN으로 집 네트워크에 접속한다.

 

SMB 프로토콜로 NAS에 접속해서

면허증 스캔 파일을 가져온 NSD는 그날로 계정정보가 털리게 된다.

 

 

왜?

(실제 발생할 수 있는 사례이다)

 

국과수에서 조사한 결과;

- SMB 프로토콜에 암호화 기능을 넣지 않았고,

- VPN 연결 역시 PPTP에 암호화 기능이 없었고,

- SMB 계정정보를 회사 ERP, 네이버, 구글 등 여러 곳에서 동일하게 사용하고 있었고,

- ASIK 직원 중 Wireshark로 오가는 트래픽을 감청하던 나쁜놈이 있었던 것이다.

 

2023.07.26 - [1.A. High Level Computing/On Premise Computing] - 파일서버 재구축기 - TrueNAS (Feat. 뻘짓) - Procrastinated

 

파일서버 재구축기 - TrueNAS (Feat. 뻘짓) - Procrastinated

티스토리가 점점 미쳐가고 있다. 이번 아티클을 쓰는데 계속 접은글이 미친듯이 늘어나질 않는가 하면 이제는 짤이 맨 위에 갖다 박혀 버린다. 이번 구축 후 세팅 작업 중에 마주한 그지같은 뻘

thewanderer.tistory.com

 

SMB 프로토콜은 상기 글로 갈음하고,

요약하자면;

- SMB 프로토콜은 기본적으로 암호화를 적용하지 않는다. (옵션)

- SMB 처음 로그인시 계정 정보가 노출된다. (ID, PW) - (암호화를 하더라도 ID는 평문으로 노출됨)

 

이 SMB 계정을 감청할 수 있었던 것은

VPN의 "터널링" 기능은 정상 작동하지만

VPN의 "암호화" 기능은 작동하지 않았기 때문이다.

 

NSD 노트북 - NSD VPN 서버로

오가는 트래픽 (패킷이라고 부른다)을 복제한 공격자는

SMB: NSD, 1234QWER!  이라는 ID와 password를

바로 엿들을 수 있었다.

 

 

이런...

만약 VPN 트래픽을 암호화했다면

공격자가 내용을 까보더라도

"qkjsfniwdb32fksfdsdkgb5jwfkfbwdkbgd77jhbw8fjk11bdqfn" 와 같이

도저히 알 수 없는 내용이지 않았을까?

 

그래서 현대적인 VPN은,

그게 가정용이든 기업용이든,

저렇게 중요한 내용이 노출되지 않도록 암호화를 하고 있다.

 

ISMS-P 인증기준 보안대책 요구사항을 보더라도;

- 2.7.1 암호정책적용

 개인정보 및 주요정보 보호를 위하여 법적 요구사항을 반영한 암호화 대상, 암호 강도, 암호 사용 정책을 수립하고 개인정보 및 주요정보의 저장/전송/전달 시 암호화를 적용하여야 한다.

- 2.10.5 정보전송 보안

타 조직에 개인정보 및 중요 정보를 전송할 경우 안전한 전송 정책을 수립하고, 조직 간 합의를 통해 관리책임, 전송방법, 개인정보 및 중요정보 보호를 위한 기술적 보호조치 등을 협약하고 이행하여야 한다.

 

이렇게 포괄적으로 "암호화해라 짜식들아" 라고 명시하고 있다.

 

 

 

이렇게 암호화 기능을 넣다보니,

오? 카페나 공항 인터넷을 쓸 때도

인터넷으로 오가는 내용이 암호화되서 안전하잖아?

 

라고 사람들이 생각하게 되었다.

 

 

그게 오늘날 VPN의 메인기능처럼 부각되고 있는게 현실이다.

 

 

 

필자만 하더라도 VPN의 부가적인 기능,

- 암호화

- 공인 IP 변경

기능을 메인으로 쓰고 있다.

- 가상 사설망

기능은 덤으로 따라오는듯한 상황.

 

 

실제로, 샤워가 아직 발명되지 않은 나라, 중국으로 출장을 가게 되면

황금방패때문에 구글 같은 서비스에 접속을 할 수 없다고 한다.

(나는 중국에 갔을 때 로밍조차 하지 않았다. 그래서 잘 모른다..)

 

자세한건 아래 나무위키로 갈음한다:

https://namu.wiki/w/%ED%99%A9%EA%B8%88%EB%B0%A9%ED%8C%A8

 

황금방패

금순 ( 金 盾 중국어로는 진둔 /jīndùn/이라고 발음한다. , 황금방패)은 중국 이 자국민을 대상으로 실시하

namu.wiki

 

이에 한국에 VPN 서버를 구축해두고

중국에서 VPN을 연결하면

접속이 가능해진다.

 

 

왜?

- VPN 터널링을 통해 [ 중국 - 한국 - 구글 ] 형태로 연결이 접속됨

- VPN 트래픽은 암호화되어 중국정부에서 내용을 알 수 없음.

 

 

 

정리하자면

- VPN은 다른 망에 접속한 것처럼 "터널링을 해준다"

- 터널링 과정중 내용을 "암호화"하기 때문에 일부 구간은 안전하다.

- 다른 망에 접속하기 때문에 다른 도시 / 국가에 있는 "것처럼" 된다.

 

 

 

 

2. VPN 프로토콜

요 부분부터 좀 전문적인 내용으로 들어간다.

 

일단, 근본적 구분과 서비스 구분으로 나눌 수 있어

두 부분을 모두 다루려 한다.

 

마치,

" 자동차의 종류는 어떻게 됩니까? "

라고 물으면

" 현기, 디젤, 레이싱 카, 머슬카, 폭스바겐 투아렉, LPG 택시, 군용 등유 트럭 등이 있습니다 "

라고 대답하는사람 뒤통수를 탁! 때리는 것과 같다.

 

i.e. 구분의 기준을 먼저 잡자는 것이다.

- 제조사 (폭스바겐, 현기, 포드..)

- 목적 (레이싱, 일반 출퇴근, 특수목적(구난구급), 화물, 군용, ...)

- 연료 (디젤, 휘발유, 등유, 가스, 전기, 바이퓨얼, ...)

...

 

 

일단, 근본적인 작동원리로 (i.e. 주요 프로토콜) 나누기 위해서는

OSI 7계층을 알아야한다.

 

이는 다른 블로그에서 주저리 주저리 써둔 것이 많기 때문에

그런 조잡한 글들은 참조를 걸지 않고

공신력있는 사이트 참조를 건다.

https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/

 

영어 못하는 사람들은 아래 링크 참조.

https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/

 

 

OSI 계층으로 나누자면;

- L2: L2F, PPTP, L2TP

- L3: GRE, IPSec

- L4: TLS (SSL)

정도가 되겠다.

 

 

레이어 2부터 순차적으로 써보려 한다.

 

2.0 Layer 2

2.0.0 L2F - Layer 2 Forwarding

https://nordvpn.com/ko/cybersecurity/glossary/layer-2-forwarding-protocol/

 

Layer 2 Forwarding protocol definition - Glossary

Layer 2 Forwarding protocol is an active network protocol used to facilitate secure virtual private network (VPN) connections. Discover L2F use cases.

nordvpn.com

Layer 2, MAC 주소 기반 통신 (홉-홉)을

포트처럼 "포워딩"해주는 프로토콜이다.

 

IP주소가 들어가는 L3 이상의 내용은

원격지 (서버사이드 네트워크)에서 "알아서" 동작한다.

 

자세한 내용이 궁금하면 상기 링크 및 덕덕고 검색을 해보면 될 것이고,

별로 중요한 프로토콜은 아니다. (안쓰임)

 

PPTP와 L2TP는 아래 글로 갈음한다.

 

왜?

귀찮아서... 아니지 그 뭐냐 음 그게

- 성능이 좀 떨어지고 (컴퓨팅 파워는 적게 먹으나 전반적 성능은 경험상 심각하게 불편함)

- 오래된 프로토콜이다보니 안전하지 않다. (취약점이 많고 암호화가 빈약함)

 

2.0.1 PPTP - Point to Point Tunneling Protocol

https://nordvpn.com/ko/blog/what-is-pptp-protocol/

 

What is the PPTP (Point-to-Point Tunneling Protocol)? | NordVPN

Point-to-Point Tunneling (PPTP) is the first networking protocol used for VPN creation. Find out how the PPTP works, its pros and cons, and if it’s worth using.

nordvpn.com

MPPE (Microsoft Point to Point Encryption) 128비트 암호화.

속도는 빠름 (암호화가 허접해서 빠름)

오래된 프로토콜이기 때문에 호환성은 좋음 (요즘기기 말고, 낡은 기기)

 

2.0.2 L2TP - Layer 2 Tunneling Protocol

https://nordvpn.com/ko/blog/l2tp-protocol/

 

What is Layer 2 Tunneling Protocol (L2TP)?

The online world has traffic, and there are tunnels to protect it. What is Layer 2 Tunneling Protocol (L2TP) and how does it works with a VPN?

nordvpn.com

L2F와 PPTP를 개선/접목한 프로토콜.

기본적으로 암호화가 없기 때문에 IPSec의 암호화를 추가로 붙여 사용함.

(L2: L2TP, L3: IPSec)

 

생각보다 상당히 느리고 (네트워크 대역폭과 컴퓨팅 파워가 빵빵해도 쓰루풋이 심각하게 안 나옴)

쓰기가 불편함 (잘 끊어지고, 재접속이 오래걸림)

 

 

그냥 저런게 있다 정도만.

(+ 있어도 쓰지 말자 정도)

 

L3로 넘어와서.

 

2.1 Layer 3

2.1.0 GRE - Generic Routing Encapsulation

https://www.cloudflare.com/learning/network-layer/what-is-gre-tunneling/

 

미국 대학원 갈때 치는 시험 GRE가 아니다.

 

안 중요하다.

 

레이어 3에서 터널링을 목적으로 하는 프로토콜이다.

그렇기 때문에 암호화는 별도로 구성해주어야 한다.

 

멀티캐스트 / 브로드캐스트를 전달할 수 있다. 정도.

 

GRE는 DDoS 공격에 악용할 수 있다? 그건 몰랐네.

 

 

 

2.1.1 IPSec - IP Security, Internet Protocol ~

IPSec은 IP 네트워크에서 데이터를 안전하게 전송하기 위한 알고리즘의 모음집(Suite of Protocols)이다.

 

https://nordvpn.com/ko/blog/what-is-ipsec/

 

What is the IPsec protocol and how does it work

IPsec is a protocol suite that encrypts network communications. In this article we explain how IPsec works and explore the benefits of IPsec VPNs.

nordvpn.com

 

세부구성은 다음 3가지로 되어있다:

- ESP

- AH

- IKE

- 암호화 알고리즘 - AES, DES

 

*여기서 Protocol과 Algorithm을 혼용하였는데,

Algorithm: 어떻게 하는지에 대한 이론적 절차와 방법론

Protocol: Algorithm을 기반하여 실제로 어떤 변수를 넣어야 하고, 어떤 협상을 해야하는지에 대한 세부적 규칙

정도로 볼 수 있겠다.

 

법령과 비교하자면

Algorithm: 법

Protocol: 시행령, 시행규칙

정도로 되지 않을까.

 

 

2.1.1.0 AH: Authentication Header 인증 + 무결성 검증

https://datatracker.ietf.org/doc/html/rfc4302

 

RFC 4302: IP Authentication Header

This document describes an updated version of the IP Authentication Header (AH), which is designed to provide authentication services in IPv4 and IPv6. This document obsoletes RFC 2402 (November 1998). [STANDARDS-TRACK]

datatracker.ietf.org

보내는 데이터의 출발지가 맞는지 검증하고 (인증), 데이터가 변조/훼손되지 않았는지 확인한다.

 

 

2.1.1.1 ESP: Encapsulating Security Payload, 기밀성 + 무결성 + 인증 검증

https://datatracker.ietf.org/doc/html/rfc4303

 

RFC 4303: IP Encapsulating Security Payload (ESP)

This document describes an updated version of the Encapsulating Security Payload (ESP) protocol, which is designed to provide a mix of security services in IPv4 and IPv6. ESP is used to provide confidentiality, data origin authentication, connectionless in

datatracker.ietf.org

ESP를 통하여 암호화를 수행한다.

 

 

2.1.1.2 IKE: Internet Key Exchange, 인증 + 키 및 옵션 협상

https://datatracker.ietf.org/doc/html/rfc2409

 

RFC 2409: The Internet Key Exchange (IKE)

This memo describes a hybrid protocol. The purpose is to negotiate, and provide authenticated keying material for, security associations in a protected manner. [STANDARDS-TRACK]

datatracker.ietf.org

공개키 암호화든, 대칭키 암호화든, 키를 서로 교환하여야 통신을 할 수 있을 것이다.

 

"주로"

X.509 PKI (Public Key Infrastructure) 인증서로 인증을 하고,

DH (Diffie Hellman) 키교환 알고리즘으로 키 교환 + 옵션 협상 (암호화 알고리즘, 암호화 강도 등)을 수행한다.

 

IKEv2 (버전 2)는 공식문서가 아래와 같다:

https://datatracker.ietf.org/doc/html/rfc7296

 

RFC 7296: Internet Key Exchange Protocol Version 2 (IKEv2)

This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and include

datatracker.ietf.org

 

단순한 VPN 유저이면

공돌이들이 저런 일들을 하는구나 하고 넘어가면 되고,

 

보안 전문가라면 RFC 문서를 숙독해보는 것이 좋을 것이다.

 

 

2.1.1.3 암호화 알고리즘

AES는 꽤 오래전에 만들었지만 안전한 (i.e. 복호화하는 것이 현실적으로 어려운) 알고리즘이고,

DES를 3번 (암-복-암), 기존의 DES 키 3개를 가지고 하는 Tripple DES (3DES)는 사실상 폐기된 (depricated) 알고리즘이다.

 

이 외에도 LEA나 SEED, ARIA 같은 듣보... 한국산 알고리즘도 있다.

 

 

2.2 Layer 4

2.2.0 SSL, TLS

여기부터 중요하다. 역사부터 떠들자면,

 

SSL, Security Socket Layer, 은 원래 Netscape의 독자적인 규격이었다.

https://datatracker.ietf.org/doc/html/rfc6101

 

RFC 6101: The Secure Sockets Layer (SSL) Protocol Version 3.0

This document is published as a historical record of the SSL 3.0 protocol. The original Abstract follows. This document specifies version 3.0 of the Secure Sockets Layer (SSL 3.0) protocol, a security protocol that provides communications privacy over the

datatracker.ietf.org

https://www.cloudflare.com/learning/ssl/what-is-ssl/

출처: Cloudflare, 상기 링크

HTTP (80포트) 웹페이지의 내용이 암호화되지 않는점,

ID와 Password를 입력하고 로그인 버튼을 누르면

계정 정보가 고대로 노출되는 등의 문제를 해결하기 위해 나온 프로토콜이다.

 

SSL을 쓰게 되면

- SSL 암호화로 내용을 암호화함

- SSL 인증으로 "너가 진짜 tistory.com 웹서버 맞냐?" 확인함

- SSL 서명으로 "데이터가 중간에 변조되었나?" 확인함

세 가지 보안기능이 생긴다.

 

SSL 1.0 - 2.0 - 3.0이 나오고나서

오? SSL 좋은데? 하고 SSL 3.1을

TLS 1.0으로 국제규격화 하였다.

https://datatracker.ietf.org/doc/html/rfc5246

 

RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2

This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eave

datatracker.ietf.org

 

지금은 TLS 1.3까지 나왔다.

 

SSL과 TLS는 하는 일이 똑같다.

 

그럼 TLS는 갑자기 왜 나오는거임?

HTTP는 Layer 7 아닌가?

할 수도 있다.

 

 

솔직히 나도 '이건 L6 아닌가?' 싶다.

L4는 TCP/UDP/ICMP 같은건데...

암호화, 압축 이런거는 L6에서 하는거 아닌감.

 

여튼.

 

TLS 프로토콜을 쓰게 되면

출처: https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake/

이렇게

TCP Handshake -- TLS handshake 과정을 통해

접속 - 안녕 - 키교환 을 수행하게 된다.

 

그 과정을 VPN에서 쓰는 것이다.

 

 

요즘 핫하다는 VPN에서 자주 쓰는 것이고

원래 HTTPs에서 나온점 등을 고려하였을 때

주목할만한 (notable) 프로토콜이다.

 

3. VPN 서비스 종류

일단 오래된, (잘) 안쓰는 프로토콜을 보자면

- PPTP

- L2TP

요 두개는 위 프로토콜에서 떠들었으니 제외한다.

 

요즘 핫하다는, 요즘 잘 쓰는 프로토콜:

- IPSec (L3)

   - SSTP

   - Juniper VPN / Pulse Secure

   - Cisco IPSec

   - IKEv2

- SSL / TLS (L4)

   - OpenVPN

   - WireGuard

 

솔직히 이 부분부터가 혼돈의 카오스이다.

ㅋㅋ ㅠ

 

아까 IPSec에 대해 떠들때

IKE는 IPSec의 일부분, 그 것도 인증 + 키교환 파트 (암호화 없음)라고 했다.

 

근데 macOS에 VPN 옵션 보면

IKEv2가 따로 있다.

 

ㅅㅂ 뭐 어쩌자는거임.

아 채용관님께서 보실 글인데 욕하면 안되지.. 흠흠.

 

 

이 부분부터는 내 뇌피셜이 들어가는 것인데;

- 현재 시장에 있는 VPN 제품은 크게 2 가지, L3와 L4로 나눌 수 있다.

- IPSec을 쓰든, TLS를 쓰든, 핵심 기술은 동일하더라도 제품별로 구현방법 & 옵션 등이 상이하여

  상호 호환이 되지 않는다. (e.g. Pulse Secure와 Cisco는 호환이 되지 않음)

고 생각한다.

 

 

* IPSec 으로 암호화하는 제품은 (L3) 써본 것이;

- L2TP over IPSec (L2TP인데 PPP 대신 IPSec)

- Pulse Secure (회사)

두개 뿐이다.

 

내용도 잘 모른다.

단점 하나, "이제품간 호환이 안 된다" 뿐. (not inter-operable)

 

* TLS 으로 암호화는 제품은 (L4) 비교해 보자면

 

출처: https://www.top10vpn.com/guides/wireguard-vs-openvpn/

 

그렇다고 한다.

 

Wireguard 홈페이지 가보면 "가볍고 안전하고 손쉬운" VPN이라고 소개하면서

대놓고 뚱땡이 VPN이라며 (Behemoth) OpenVPN의 무거움을 까고 있다.

 

 

Wireguard는 안 써봤다.

 

OpenVPN을 써본 사람으로서 장단점을 적자면:

- Pros

   - A. 접속이 매우 빠르다.

   - A'. 덕분에 네트워크 변경 / 끊김시 재접속이 빠르다. (클라이언트에서 자동 재접속도 지원함)

   - B. VPN 패스스루가 매우 잘 된다. (현재 KT 에그때문에 UDP 443 HTTPS 포트로 쓰고 있음)

   - C. 쓰루풋이 상당히 좋다. (하프기가 인터넷 사용중 56MB/s 대용량 전송 가능했음. 지금은 돈이 없어서 100메가 인터넷.. ㅜ)

   - D. 저품질 네트워크에서도 안 끊어지고 잘 붙어있다. (e.g. 혼잡한 카페 wifi)

   - E. 이기종간 지원이 간편하다. GUI Client 소프트웨어만 받으면 된다. (macOS, Windows, Linux, iOS, iPadOS 모두 지원)

 

- Cons

   - A. 무겁다. 트래픽이 많아지면 Client (노트북) CPU 점유율이 상당히 올라간다. (10년 넘은 똥컴 맥북이라 그럼)

   - B. 서버쪽에서 싱글 Thread로 동작한다. 셀러론 + 싱글채널로 속도저하 없이 받아주지만, 수십대가 붙으면 또 상황이 달라질지도...

   - C. PSK (pre shared key)나 userID - password가 아닌, 인증서 기반이다보니 User를 추가하기가 번거롭다.

      (현재 구축 당시 썼던 CA서버를 밀어버려서... 유저를 추가할 수가 없다 ㅠㅠ)

   - D. 인증서에 기반한 ovpn 파일만 있으면 바로 접속할 수 있기 때문에 인증서 유출시 VPN이 털린다.

   - E. ovpn 파일이 있어야 접속이 가능하다. 이에 신규 기기 접속시 복잡하다.

      (기존 노트북 VPN 접속 - 파일서버 접속 - ovpn 파일 다운로드 - 암호 해제 - 새 기기에 ovpn 전송 - 새 기기에서 ovpn 열기)

 

나중에 Wireguard 서버를 구축해서

둘이 비교를 때려볼까 한다.

 

일단은 바쁘니까 OpenVPN만 쓰기로.. ㅋㅋ ㅠ

 

3. VPN의 동작 원리

IPSec은 대충 알지만 자세히는 잘 모른다.

며칠 뒤에 검색해서 다시 추가하는 것으로..

 

 

일단은 TLS 기반 VPN의 동작 방식만 써제끼려 한다.

이는 SSH 접속과 동일하므로 참고하기 바란다.

 

일단 SSH든, TLS든, TCP 기반이기 때문에

TCP를 기준으로 한다.

 

나는 지금 OpenVPN을 TCP 443 포트로 쓰고있는줄 알았는데

설정을 보니 UDP 443을 쓰고 있었다.

 

왜...? 왜 UDP로 잡은거지..?

UDP인데 품질이 이정도였다고?? 안 끊긴게 신기하구만.

 

 

 

맨 처음, 노트북에서 VPN 접속을 요청하게 된다.

 

그럼 일단 TCP 핸드셰이크 과정이 일어난다.

출처: https://medium.com/@kusal95/tcp-3-way-handshake-process-1fd9a056a2f4

SYN - SYN ACK - ACK

 

그럼 연결 자체는 성립이 되었다.

 

그럼 바로 TLS 핸드셰이크가 일어난다.

 

자세한건 아래 공식문서 참조

https://www.ietf.org/rfc/rfc793.txt

 

핸드셰이크 검색하면

블라블라... 떠들고 있다.

 

노르웨이어로는 børk børk (...?)

 

 

출처: https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake/

 

저기 파란색이 TCP 핸드셰이크이고

노란색이 TLS 핸드셰이크이다.

 

이 때 DH, 디피 헬만 알고리즘으로

서로의 공개키를 교환한다. (비대칭키의 공개키)

 

그 뒤 "이번 세션"에서 쓸 대칭키에 대한 옵션을 교환하고

(너 AES GCM 256으로 암호 가능하냐?

아니 나는 AES CCM 128밖에 안되는데?

아 그럼 AES CCM 128비트로 하실?

ㅇㅇ)

세션키 (이번 세션에서 쓸 대칭키)를 교환한다.

 

그 뒤 내 노트북으로 집에 있는 서버에 접근하든,

유투브에 들어가든 그 내용은 세션키로 암호화하는 것이다.

 

블라블라...

그러면 VPN 접속이 완료된 것이다.

 

븨피엔은 아니지만,

똑같이 TLS 암호화를 사용하는

HTTPS의 경우를 보자.

 

패킷 덤핑을 위해 와이어샤크를 이용하였고

필터 옵션은 다음과 같이 주었다:

(ip.src==192.168.0.2 or ip.dst==192.168.0.2) and (tls) and (ip.addr==121.53.105.193)

 

저기서 121 어쩌고 하는 IP는

카카오의 다음 닷 넷 아이피 주소이다.

 

IP 직접접속 부분은 DNS 토막글 하단에 찔끔 다루었다. (예정이다)

2024.04.17 - [분류 전체보기] - DNS의 아토셋 (에이 투 젣)

(아직 미공개 처리)

 

미래의 나놈이

이번 캡쳐 저장한 파일 다시 열어서

TLS 핸드셰이킹 과정에 대해

자세히, 순차적으로 기재해 줄 것을 기대한다.

(지금 바쁘다 ㅜㅜ)

...

 

 

그럼 나처럼 TLS over UDP를 쓰는 사람의 경우

어떻게 되는건가?

 

 

글쎄..

일단 TLS 자체만 놓고 뇌피설 스토리를 그려보자면

UDP로 TLS 핸드셰이크를 수행하기 위해선

UDP 패킷에 TCP 핸드셰이크와 비슷한 내용을 담아 보낼 것이다.

 

그럼 수신측에서는 훼손, 중첩, 누락된 패킷에 대해 점검하고

훼손/누락된건 재요청을 UDP 형태로 보내는 것일 테고.

 

 

 

 

 

아 거의 다 썼는데 나가야되네.

 

일단 공개처리.

 

 

 

 

 

4. 안전한 VPN 구축 / 운용 방법

 

막상 쓰려니까 별로...

 

PSK나 ID+PW으로 로그인하는 방식은

반드시 패킷을 스니핑해서 크레덴셜이 노출되는지 확인 후 사용하여야 할 것이다.

 

인증서의 경우 인증서 관리를 철저하게 하여야 한다.

그냥 나스에 띡하니 파일 올려두지 말고

최소한 암호화 압축파일 (e.g. 비밀번호 걸린 zip) 정도로 보호를 해서 올려둬야 한다.

 

 

정도?

 

 

허허...ㅋㅋㅋㅋㅋㅋ

 

 

처음엔 배스쳔 호스트를 어떻게 둬야하고

(VPN 서버 관리시)

망 구성시 어느 위치에 놓아야하고

 

주저리 주저리 떠드려? 떠들으려? 하였다.

 

그러나 너무 케이스 바이 케이스인 부분이라

굳이 지껄일 필요는 없다고 본다.

 

 

 

나의 경우는;

- VPN에서 UDP443 제외 모든 인바운트 포트를 UFW로 막았다. (reject)

   -> VPN 서버를 관리하기 위해선 물리적으로 모니터, 키보드를 연결하여야 한다.

        (당연히 SSH 서버 데몬 등은 다 죽여놨다)

- 나의 경우 일반망 - 서버망으로 2중 구조를 가지는 네트워크를 구축하였는데,

   VPN은 일반망에 위치하였다. 서버망에 보내면 망분리를 한 의미가 없어진다.

 

저 그림 그릴때 CIDR 은

지금 구성이랑 좀 다르다.

 

나름? 제로트러스트 구성한다고,

윈도우나 맥이 악성코드에 감염되어도

서버망은 또 뚫고 들어가야 하게끔 구성을 하였다.

 

근데 VPN을 저 서버망 안에 위치시켜버리면..

ㅋㅋ 바보짓 아닌가. 그럴거면 뭐하러 베일리 랜과 와드 랜을 나눴음.

 

 

 

 

 

...

아 이거 뭔가 열심히 써제끼긴 했는데

중요한 뭔가를 두어개 빼먹은듯한

시원섭섭한 기분이 든다.

 

왤까.

 

생각나면 나중에 추가하는 것으로.

 

 

 

 

끝. End of Document.

 

 

 

 

* 출처를 밝히지 않은 이미지,

quotation mark를 달지 않은 글의

지적재산권 소유자는 저, NSD(가명)입니다.

 

이 글은 저작권법에 의해 보호받는 저작물로서, 저작권자의 허락 없이 저작재산권 일체,

(복제권, 배포권, 대여권, 공연권, 공중전송권, 전시권, 2차적 저작물 작성권)를 침해할 경우

저작권법에 의거 처벌받을 수 있습니다.

 

 

단, 하단에 기재한 것과 같이

비영리목적, 출처 표시, 비가공 의 경우

제한적으로 사용을 허가하고 있으며,

개방된 인터넷 상 블로그에 기재함에 따라

사회통념상 허용되는 범위로 제한합니다.

 

(i.e. 불펌하지 맙시다 제발 좀)

 

 

반응형

댓글