강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

OpenVPN으로 VPN 구성 및 활용 4편_OpenVPN 활용

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

OpenVPN으로 VPN 구성 및 활용 4_OpenVPN 활용

 

OpenVPN 활용

 

각각 서버와 클라이언트에서의 설정이 끝난 후 정상적으로 설정되었는지 확인하기 위해

리눅스 서버에서 ifconfig를 실행해 보면 아래와 같이 없었던 인터페이스(tap0)가 추가된 것을 확인 할 수 있다.

 

또한 route를 실행하면 라우팅 테이블이 추가된 것도 확인할 수 있다.

 

 

d9b788a441468cf23f7e98216dbb1a41_1660272358_1628.png
 

[그림] 추가된 tap0 인터페이스

그리고 Windows의 경우 실행 창에서 OpenVPN을 가동하기 전에 ipconfig /all을 실행해 보면 아래와 같이 disconnected 되었다고 보이게 된다.

 

 

d9b788a441468cf23f7e98216dbb1a41_1660272370_8484.png
 

[그림] OpenVPN이 활성화되기 전

 

그러나 정상적으로 가동을 한 후에 실행해 보면 아래와 같이 정상적으로 설정되어 있는 것을 알 수 있다.

 

아울러 route print를 실행하면 라우팅 테이블이 추가된 것을 알 수 있다.

 

 

 

d9b788a441468cf23f7e98216dbb1a41_1660272385_0156.png
 

[그림] OpenVPN이 활성화된 후

이제 서버 측과 클라이언트 양쪽 모두 확인이 끝났다. 정상적으로 통신이 되는지 각자 ping 으로 확인해 보자. 먼저 10.1.0.1인 서버에서 10.1.0.2Windows PCping을 해 보고, 그 반대로도 ping 테스트를 해 보기 바란다.

 

특별한 문제가 없다면 상호 통신이 되는 것을 확인할 수 있을 것이다.

 

 

이제 OpenVPN이 성공적으로 구축되었으니 실제로 암호화 통신이 되는지 확인해 보도록 하자.

 

먼저 Windows(10.1.0.2)에서 서버(10.1.0.1)ping을 실행해 보니 아래와 같이 eth0 인터페이스를 통해 5000/udp로 패킷이 전송되는 것을 알 수 있다.

 

이 패킷은 암호화된 패킷으로 해석이 불가능하다.

 

 

# tcpdump -X port 5000

21:45:26.384241 vpn.server.com.5000 > 211.47.64.185.5000: udp 116 (DF)

0x0000 4500 0090 0000 4000 4011 a383 d32f 4415 E.....@.@..../D.

0x0010 d3db abb9 1388 1388 007c 196d dd03 e1a0 .........|.m....

0x0020 b342 af4c 1148 3dec 1e2b 8549 2454 6a12 .B.L.H=..+.I$Tj.

0x0030 a22e f8c4 eb48 7646 21c5 66cc 4107 880d .....HvF!.f.A...

0x0040 317e 9f52 85d1 391c 7dc5 1a48 4ea7 777b 1~.R..9.}..HN.w{

0x0050 9a57 .W

tcpdump 실행 시 별도의 인터페이스를 지정하지 않으면 기본적으로 eth0이 사용된다.

 

 

그리고 vpn을 통하면 ping을 하든 telnet tcp 접속을 하든 관계없이 모두 5000/udp로 터널링 되어 접속이 되는 것을 알 수 있으며 이는 아래와 같이 eth0에서 패킷을 dump해 보면 확인할 수 있다.

 

 

동시에 tap0 인터페이스에서 패킷을 캡처하면 아래와 같이 평문이 캡처되는 것을 알 수 있다.

 

 

 

# tcpdump -i tap0

21:47:40.848198 10.1.0.2 > 10.1.0.1: icmp: echo request

0x0000 4500 003c ee3f 0000 8001 387d 0a01 0002 E..<.?....8}....

0x0010 0a01 0001 0800 155c 0400 3400 6162 6364 .......\..4.abcd

0x0020 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst

0x0030 7576 7761 6263 6465 6667 6869 uvwabcdefghi

21:47:40.848227 10.1.0.1 > 10.1.0.2: icmp: echo reply

0x0000 4500 003c 4394 0000 4001 2329 0a01 0001 E..<C...@.#)....

0x0010 0a01 0002 0000 1d5c 0400 3400 6162 6364 .......\..4.abcd

0x0020 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst

0x0030 7576 7761 6263 6465 6667 6869 uvwabcdefghi

 

못 믿겠는가? 그럼 이번에는 telnet을 접속 시 snort로 각각의 패킷을 캡처해 보자.

 

# snort -vd port 5000

10/14-22:00:44.356869 211.47.64.185:5000 -> vpn.server.com:5000

UDP TTL:115 TOS:0x0 ID:820 IpLen:20 DgmLen:128 Len: 100

48 B0 B9 F2 69 5F 1D D9 7B 54 02 8E E3 88 8D F8 H...i_..{T......

11 FD 60 DA 30 41 39 DB A6 0A 67 E9 A9 36 46 1F ..`.0A9...g..6F.

B7 78 50 AF C6 45 CB 2D 3D 71 7E 82 CF 01 C3 EC .xP..E.-=q~.....

23 FF A0 B6 45 20 02 B2 FE EB 56 5A D1 BE D7 D0 #...E ....VZ....

95 77 60 69 C2 1C B2 B2 C3 44 51 C5 F2 23 71 E2 .w`i.....DQ..#q.

B5 AD 95 B0 21 60 8A 32 75 E5 75 A9 56 12 97 47 ....!`.2u.u.V..G

A2 B3 F9 AF ....

 

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

10/14-22:00:44.392742 vpn.server.com:5000 -> 211.47.64.185:5000

UDP TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:120 DF Len: 92

8D 3D 28 00 5E 59 3B 66 AB 5D 17 B2 2C A0 5E C1 .=(.^Y;f.]..,.^.

D0 86 13 E0 0D EF BC 3B BB 52 D9 E7 C9 FD 3B 06 .......;.R....;.

CA 7A BF AD A5 CF 3F 3A A9 DE F1 5F D9 5D 42 0B .z....?:..._.]B.

8C AB 17 C9 BE 8A F6 93 79 49 59 7C 1A 1A 3B 1E ........yIY|..;.

46 57 A2 88 87 24 1E 24 DB C7 D1 68 B3 2A 57 30 FW...$.$...h.*W0

2C 20 A1 13 58 AC DA E0 BC C7 1B 77 , ..X......w

 

udp를 통해 전송되는 터널링 패킷은 암호화되었지만 아래와 같이 tap0을 통해 전송되는 패킷은 평문으로 전송되는 것을 알 수 있다.

 

 

 

# snort -vd -i tap0

10/14-22:01:44.356869 10.1.0.1:23 -> 10.1.0.2:3019

TCP TTL:64 TOS:0x10 ID:53875 IpLen:20 DgmLen:52 DF

***AP*** Seq: 0xBD99BE8A Ack: 0x9A602FA Win: 0x16D0 TcpLen: 20

6C 73 20 2D 6C 61 20 2F 74 6D 70 2F ls -la /tmp/

 

 

10/14-22:01:44.392742 10.1.0.1:23 -> 10.1.0.2:3019

TCP TTL:64 TOS:0x10 ID:53877 IpLen:20 DgmLen:301 DF

***AP*** Seq: 0xBD99BE98 Ack: 0x9A602FB Win: 0x16D0 TcpLen: 20

1B 5B 30 30 6D 74 6F 74 61 6C 20 38 0D 0A 64 72 .[00mtotal 8..dr

77 78 72 77 78 72 77 74 20 20 20 20 32 20 72 6F wxrwxrwt 2 ro

6F 74 20 20 20 20 20 72 6F 6F 74 20 20 20 20 20 ot root

20 20 20 20 34 30 39 36 20 4F 63 74 20 31 39 20 4096 Oct 19

30 34 3A 30 32 20 1B 5B 30 31 3B 33 34 6D 2E 1B 04:02 .[01;34m..

5B 30 30 6D 0D 0A 64 72 77 78 72 2D 78 72 2D 78 [00m..drwxr-xr-x

20 20 20 31 39 20 72 6F 6F 74 20 20 20 20 20 72 19 root r

6F 6F 74 20 20 20 20 20 20 20 20 20 34 30 39 36 oot 4096

20 4F 63 74 20 31 34 20 31 34 3A 34 38 20 1B 5B Oct 14 14:48 .[

30 31 3B 33 34 6D 2E 2E 1B 5B 30 30 6D 0D 0A 73 01;34m...[00m..s

72 77 78 72 77 78 72 77 78 20 20 20 20 31 20 6D rwxrwxrwx 1 m

79 73 71 6C 20 20 20 20 6D 79 73 71 6C 20 20 20 ysql mysql

20 20 20 20 20 20 20 20 30 20 4F 63 74 20 31 34 0 Oct 14

20 31 34 3A 34 39 20 1B 5B 30 31 3B 33 35 6D 6D 14:49 .[01;35mm

79 73 71 6C 2E 73 6F 63 6B 1B 5B 30 30 6D 0D 0A ysql.sock.[00m..

1B 5B 6D 5B 61 6E 74 69 40 63 6F 66 77 20 61 6E .[m[id@server an

74 69 5D 24 20 ti]$

 

그런데 여기에서 비록 eth0을 통한 udp는 암호화되지만 tap0는 평문으로 전송되고 있지 않는가? 라고 반문할 수 있다.

 

하지만 외부에서 스니핑 할 수 있는 것은 외부 인터페이스인 eth0을 통하는 트래픽이며 tap0lo와 같이 일종의 가상인터페이스라는 점을 명심하기 바란다.

 

따라서 tap0을 통하는 패킷은 외부에서 스니핑 할 수 없는 것이다.

 

이는 패킷의 전송과정을 알면 쉽게 이해가 되는데, 만약 클라이언트에서 VPN을 통해 서버에 패킷을 전송하고자 한다면 먼저 tun0이나 tap0과 같은 터널링 인터페이스로 패킷을 보내고, 커널은 이 패킷을 openvpn으로 전달한다.

 

이후 openvpnlzo openssl 라이브러리가 제공하는 기능을 이용하여 패킷을 압축하고 암호화한 후 eth0을 통해 전송하게 된다.

 

 

패킷을 받는 서버쪽 역시 반대의 순서로 작동하게 되는데, eth0을 통해 패킷을 받은 후 openvpnopenssl 라이브러리가 제공하는 기능을 이용하여 암호화된 패킷을 복호화하여 해제하고 복호화된 원래의 패킷을 커널에 전달하면 커널은 이 패킷을 tun0이나 tap0 인터페이스에 전달하게 되는 것이다.

 

그리고 당연한 이야기이겠지만 상호 VPN이 연동되었다 하더라도 Windows PC에서 VPN을 통해 할당받은 사설IP가 아닌 공인 IP 또는 vpn.server.com으로 직접 접속하면 터널링을 하지 않고, eth0을 통해 일반 인터넷 접속이 되는 것이므로 당연히 평문으로 전송이 된다.

 

 

만약 VPN 터널 접속을 하려면 공인 IPvpn.server.com이 아니라 tap0 인터페이스에 할당된 사설 IP10.1.0.1로 접속하여야 하므로 주의하기 바란다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,158 명
  • 현재 강좌수 :  36,517 개
  • 현재 접속자 :  343 명