openconnect ๋ฐ vpn-slice๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Linux์—์„œ ๊ธฐ์—… VPN์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

์ง์žฅ์—์„œ Linux๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€๋งŒ ํšŒ์‚ฌ VPN์ด ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๊ธฐ์‚ฌ๊ฐ€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ํ™•์‹คํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ ๋ฌธ์ œ๋ฅผ ์ž˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ด์„œ ๋ชจ๋“  ์ผ์„ ์ž˜๋ชปํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๋Š” ์ ์„ ๋ฏธ๋ฆฌ ๋ง์”€๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ•œํŽธ, ์ผ๋ฐ˜ ์‚ฌ๋žŒ๋“ค๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ€์ด๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ๊ผญ ์‹œ๋„ํ•ด ๋ณด์‹œ๊ธธ ๊ถŒํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์‚ฌ์—๋Š” ๋ถˆํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ๋งŽ์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ, ์ด ์ง€์‹์ด ์—†์—ˆ๋‹ค๋ฉด VPN ์„ค์ • ์‹œ ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ ๋‚ด๊ฐ€ ๊ฒช์ง€ ์•Š์€ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ, ์ด ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด ๊ฐ€์ด๋“œ์— ์‚ฌ์šฉ๋œ ๋Œ€๋ถ€๋ถ„์˜ ๋ช…๋ น์€ ๊ฐ„๊ฒฐ์„ฑ์„ ์œ„ํ•ด ์ œ๊ฑฐ๋œ sudo๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹ฌํ•˜์„ธ์š”.

๋Œ€๋ถ€๋ถ„์˜ IP ์ฃผ์†Œ๋Š” ์‹ฌ๊ฐํ•˜๊ฒŒ ๋‚œ๋…ํ™”๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ 435.435.435.435์™€ ๊ฐ™์€ ์ฃผ์†Œ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ํ•ด๋‹น ์‚ฌ๋ก€์— ๋งž๋Š” ์ผ๋ฐ˜ IP๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Ubuntu 18.04๊ฐ€ ์žˆ์ง€๋งŒ ์•ฝ๊ฐ„๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ์ด ๊ฐ€์ด๋“œ๋ฅผ ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์—๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ํ…์ŠคํŠธ์—์„œ๋Š” Linux == Ubuntu์ž…๋‹ˆ๋‹ค.

์‹œ์Šค์ฝ” ์ปค๋„ฅํŠธ

Windows ๋˜๋Š” MacOS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” Cisco Connect๋ฅผ ํ†ตํ•ด ํšŒ์‚ฌ VPN์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฒŒ์ดํŠธ์›จ์ด ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๊ณ  ์—ฐ๊ฒฐํ•  ๋•Œ๋งˆ๋‹ค ๊ณ ์ •๋œ ๋ถ€๋ถ„๊ณผ Google Authenticator์—์„œ ์ƒ์„ฑ๋œ ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Linux์˜ ๊ฒฝ์šฐ Cisco Connect๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์—ˆ์ง€๋งŒ Cisco Connect๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ๋งŒ๋“ค์–ด์ง„ openconnect๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๋Š” ๊ถŒ์žฅ ์‚ฌํ•ญ์„ Google์— ๊ฒ€์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜คํ”ˆ์ปค๋„ฅํŠธ

์ด๋ก ์ ์œผ๋กœ Ubuntu์—๋Š” openconnect๋ฅผ ์œ„ํ•œ ํŠน๋ณ„ํ•œ ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์ง€๋งŒ ๋‚˜์—๊ฒŒ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์€ ๋” ๋‚˜์€ ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Ubuntu์—์„œ๋Š” openconnect๊ฐ€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

apt install openconnect

์„ค์น˜ ํ›„ ์ฆ‰์‹œ VPN์— ์—ฐ๊ฒฐํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

openconnect --user poxvuibr vpn.evilcorp.com

vpn.evilcorp.com์€ ๊ฐ€์ƒ VPN์˜ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
poxvuibr - ๊ฐ€์ƒ์˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„

openconnect๋Š” ๊ณ ์ •๋œ ๋ถ€๋ถ„๊ณผ Google Authenticator์˜ ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•œ ๋‹ค์Œ VPN์— ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ž‘๋™ํ•œ๋‹ค๋ฉด ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๊ณ ํ†ต์ด ๋”ฐ๋ฅด๋Š” ์ค‘๊ฐ„์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” openconnect์— ๋Œ€ํ•œ ์š”์ ์œผ๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ง์žฅ์˜ ๊ฒŒ์ŠคํŠธ Wi-Fi์—์„œ ์—ฐ๊ฒฐํ•  ๋•Œ ์ž‘๋™ํ–ˆ๋‹ค๋ฉด ๊ธฐ๋ปํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ด๋ฅด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ง‘์—์„œ ์ ˆ์ฐจ๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ž๊ฒฉ์ฆ

์•„๋ฌด๊ฒƒ๋„ ์‹œ์ž‘๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฉฐ openconnect ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

POST https://vpn.evilcorp.com/
Connected to 777.777.777.777:443
SSL negotiation with vpn.evilcorp.com
Server certificate verify failed: signer not found

Certificate from VPN server "vpn.evilcorp.com" failed verification.
Reason: signer not found
To trust this server in future, perhaps add this to your command line:
    --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress

ํ•œํŽธ์œผ๋กœ๋Š” VPN์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๋ถˆ์พŒํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์›์น™์ ์œผ๋กœ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์„œ๋ฒ„๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ์ธ์ฆ์„œ๋ฅผ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์•…ํ•œ ์‚ฌ๊ธฐ๊พผ์ด ์•„๋‹Œ ๊ธฐ๋ณธ ํšŒ์‚ฌ์˜ ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ์ธ์ฆ์„œ๋Š” ์‹œ์Šคํ…œ์— ์•Œ๋ ค์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„๊ฐ€ ์‹ค์ œ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์ผ์˜ ๊ฒฝ์šฐ์— ๋Œ€๋น„ํ•˜์—ฌ ์ž‘๋™์ด ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

openconnect๊ฐ€ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด โ€”servercert ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VPN ์„œ๋ฒ„์—์„œ ์–ด๋–ค ์ธ์ฆ์„œ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š”์ง€ ๋ช…์‹œ์ ์œผ๋กœ ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  openconnect๊ฐ€ ์ธ์‡„ํ•œ ๊ฒƒ์—์„œ ์„œ๋ฒ„๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ์ง์ ‘ ๋ณด๋‚ธ ์ธ์ฆ์„œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘ํ’ˆ์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

To trust this server in future, perhaps add this to your command line:
    --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress

์ด ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์‹œ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com

์•„๋งˆ๋„ ์ด์ œ ์ž‘๋™ ์ค‘์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋๊นŒ์ง€ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐœ์ธ์ ์œผ๋กœ ์šฐ๋ถ„ํƒ€๊ฐ€ ์ด๋Ÿฐ ํ˜•ํƒœ์˜ ๋ฌดํ™”๊ณผ๋ฅผ ๋ณด์—ฌ์คฌ์–ด์š”

POST https://vpn.evilcorp.com/
Connected to 777.777.777.777:443
SSL negotiation with vpn.evilcorp.com
Server certificate verify failed: signer not found
Connected to HTTPS on vpn.evilcorp.com
XML POST enabled
Please enter your username and password.
POST https://vpn.evilcorp.com/
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 300, Keepalive 30
Set up DTLS failed; using SSL instead
Connected as 192.168.333.222, using SSL
NOSSSSSHHHHHHHDDDDD
3
NOSSSSSHHHHHHHDDDDD
3
RTNETLINK answers: File exists
/etc/resolvconf/update.d/libc: Warning: /etc/resolv.conf is not a symbolic link to /run/resolvconf/resolv.conf

/ ๊ธฐํƒ€ / resolv.conf์—

# Generated by NetworkManager
search gst.evilcorpguest.com
nameserver 127.0.0.53

/run/resolvconf/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 192.168.430.534
nameserver 127.0.0.53
search evilcorp.com gst.publicevilcorp.com

habr.com์€ ํ•ด๊ฒฐ๋˜์ง€๋งŒ ๊ฑฐ๊ธฐ๋กœ ๊ฐˆ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. jira.evilcorp.com๊ณผ ๊ฐ™์€ ์ฃผ์†Œ๋Š” ์ „ํ˜€ ํ™•์ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ผ์–ด๋‚œ ์ผ์€ ๋‚˜์—๊ฒŒ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹คํ—˜์— ๋”ฐ๋ฅด๋ฉด /etc/resolv.conf์— ํ•ด๋‹น ํ–‰์„ ์ถ”๊ฐ€ํ•˜๋ฉด

nameserver 192.168.430.534

๊ทธ๋Ÿฌ๋ฉด VPN ๋‚ด๋ถ€์˜ ์ฃผ์†Œ๊ฐ€ ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ํ™•์ธ๋˜๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ์ด๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ฃผ์†Œ ํ™•์ธ์„ ์œ„ํ•ด DNS๊ฐ€ ์ฐพ๊ณ  ์žˆ๋Š” ์ฃผ์†Œ๋Š” ๋‹ค๋ฅธ ๊ณณ์ด ์•„๋‹Œ /etc/resolv.conf์—์„œ ๊ตฌ์ฒด์ ์œผ๋กœ ์ฐพ์Šต๋‹ˆ๋‹ค.

VPN์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์ด ์žˆ๊ณ  /etc/resolv.conf๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด VPN์˜ ๋ฆฌ์†Œ์Šค ๊ธฐํ˜ธ ์ด๋ฆ„์ด ์•„๋‹Œ ํ•ด๋‹น IP ์ฃผ์†Œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • VPN์— ์—ฐ๊ฒฐํ•  ๋•Œ ํ•ด๋‹น DNS๊ฐ€ ์„ ํƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
  • ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์€ VPN์„ ํ†ต๊ณผํ•˜๋ฏ€๋กœ ์ธํ„ฐ๋„ท ์•ก์„ธ์Šค๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ์•ฝ๊ฐ„์˜ ์ž๋™ํ™”๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ณ ์ •๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ถ€๋ถ„ ์ž๋™ ์ž…๋ ฅ

์ง€๊ธˆ์ฏค์ด๋ฉด ์ด๋ฏธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹ค์„ฏ ๋ฒˆ ์ด์ƒ ์ž…๋ ฅํ–ˆ์„ ๊ฒƒ์ด๋ฉฐ ์ด ์ ˆ์ฐจ๋กœ ์ธํ•ด ์ด๋ฏธ ์ง€์ณค์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒซ์งธ, ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ธธ๊ธฐ ๋•Œ๋ฌธ์ด๊ณ , ๋‘˜์งธ, ์ž…๋ ฅํ•  ๋•Œ ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ๋‚ด์— ๋“ค์–ด๊ฐ€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์ข… ํ•ด๊ฒฐ์ฑ…์€ ๊ธฐ์‚ฌ์— ํฌํ•จ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๊ณ ์ •๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ถ€๋ถ„์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ๊ณ ์ •๋œ ๋ถ€๋ถ„์ดfixedPassword์ด๊ณ  Google Authenticator์˜ ๋ถ€๋ถ„์ด 567์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด --passwd-on-stdin ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์ค€ ์ž…๋ ฅ์„ ํ†ตํ•ด ์ „์ฒด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ openconnect์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr vpn.evilcorp.com --passwd-on-stdin

์ด์ œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ž…๋ ฅํ•œ ๋ช…๋ น์œผ๋กœ ๊ณ„์† ๋Œ์•„๊ฐ€์„œ Google Authenticator์˜ ์ผ๋ถ€๋งŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์—… VPN์€ ์ธํ„ฐ๋„ท ์„œํ•‘์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ Habr์— ๊ฐ€๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํฌ๊ฒŒ ๋ถˆํŽธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. stackoverfow์—์„œ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜ ์—†์œผ๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์ž‘์—…์ด ๋งˆ๋น„๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ญ”๊ฐ€ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•  ๋•Œ Linux๊ฐ€ VPN์œผ๋กœ ์ด๋™ํ•˜๊ณ  Habr๋กœ ์ด๋™ํ•ด์•ผ ํ•  ๋•Œ ์ธํ„ฐ๋„ท์œผ๋กœ ์ด๋™ํ•˜๋„๋ก ์–ด๋–ป๊ฒŒ๋“  ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

openconnect๋Š” VPN์„ ์‹œ์ž‘ํ•˜๊ณ  ์—ฐ๊ฒฐํ•œ ํ›„ /usr/share/vpnc-scripts/vpnc-script์— ์žˆ๋Š” ํŠน์ˆ˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ณ€์ˆ˜๋Š” ์ž…๋ ฅ์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ์— ์ „๋‹ฌ๋˜๋ฉฐ VPN์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ๊ธฐ๋ณธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์—… VPN๊ณผ ๋‚˜๋จธ์ง€ ์ธํ„ฐ๋„ท ๊ฐ„์˜ ํŠธ๋ž˜ํ”ฝ ํ๋ฆ„์„ ๋ถ„ํ• ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ VPN-Slice ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์ €์™€ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ํƒฌ๋ฒ„๋ฆฐ์„ ์—ฐ์ฃผํ•˜์ง€ ์•Š๊ณ ๋„ ๋‘ ์ฑ„๋„์„ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ถค์„ ์ถฐ์•ผ ํ•˜์ง€๋งŒ ๋ฌด๋‹น์ด ๋  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

VPN-Slice๋ฅผ ์‚ฌ์šฉํ•œ ํŠธ๋ž˜ํ”ฝ ๋ถ„๋ฆฌ

๋จผ์ €, VPN-Slice๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ์Šค์Šค๋กœ ์•Œ์•„๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ“๊ธ€์— ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ์ด์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ Python ํ”„๋กœ๊ทธ๋žจ์ด๋ฏ€๋กœ ์•„๋ฌด๋Ÿฐ ์–ด๋ ค์›€์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” virtualenv๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ํ‘œ์ค€ ์Šคํฌ๋ฆฝํŠธ ๋Œ€์‹  vpn-slice๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ์„ openconnect์— ๋‚˜ํƒ€๋‚ด๋Š” -script ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin 
--script "./bin/vpn-slice 192.168.430.0/24  " vpn.evilcorp.com 

--script์—๋Š” ์Šคํฌ๋ฆฝํŠธ ๋Œ€์‹  ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ๋ช…๋ น์ด ํฌํ•จ๋œ ๋ฌธ์ž์—ด์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ./bin/vpn-slice - vpn-slice ์‹คํ–‰ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ 192.168.430.0/24 - VPN์—์„œ ์ด๋™ํ•  ์ฃผ์†Œ ๋งˆ์Šคํฌ. ์—ฌ๊ธฐ์„œ๋Š” ์ฃผ์†Œ๊ฐ€ 192.168.430์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„ ๋ฆฌ์†Œ์Šค๋ฅผ VPN ๋‚ด์—์„œ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ƒํ™ฉ์€ ๊ฑฐ์˜ ์ •์ƒ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ์˜. ์ด์ œ Habr๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๊ณ , ๊ธฐ์—… ๋‚ด๋ถ€ ๋ฆฌ์†Œ์Šค๋Š” IP๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ฌ๋ณผ๋ฆญ ์ด๋ฆ„์œผ๋กœ๋Š” ๊ธฐ์—… ๋‚ด๋ถ€ ๋ฆฌ์†Œ์Šค๋กœ ๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ์˜ ๊ธฐํ˜ธ ์ด๋ฆ„๊ณผ ์ฃผ์†Œ๊ฐ€ ์ผ์น˜ํ•˜๋„๋ก ์ง€์ •ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  IP๊ฐ€ ๋ฐ”๋€” ๋•Œ๊นŒ์ง€ ์ž‘์—…ํ•˜์„ธ์š”. ์ด์ œ Linux๋Š” IP์— ๋”ฐ๋ผ ์ธํ„ฐ๋„ท์ด๋‚˜ ์ธํŠธ๋ผ๋„ท์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ๋Š” ์—ฌ์ „ํžˆ ๋น„๊ธฐ์—… DNS๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง์žฅ์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด์ง€๋งŒ ์ง‘์—์„œ๋Š” IP๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋‚ด๋ถ€ ํšŒ์‚ฌ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—… Wi-Fi์— ์—ฐ๊ฒฐํ•˜๋ฉด VPN์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ•ด๋‹น ์ฃผ์†Œ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ธฐ์—… DNS๋„ ์‚ฌ์šฉ๋˜๋ฉฐ VPN์˜ ๊ธฐํ˜ธ ์ฃผ์†Œ๊ฐ€ VPN์—์„œ ํ™•์ธ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ ํŒŒ์ผ์˜ ์ž๋™ ์ˆ˜์ •

vpn-slice๊ฐ€ ์ •์ค‘ํ•˜๊ฒŒ ์š”์ฒญ๋˜๋ฉด VPN์„ ์˜ฌ๋ฆฐ ํ›„ DNS๋กœ ์ด๋™ํ•˜์—ฌ ๊ธฐํ˜ธ ์ด๋ฆ„์œผ๋กœ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค์˜ IP ์ฃผ์†Œ๋ฅผ ์ฐพ์•„ ํ˜ธ์ŠคํŠธ์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. VPN์„ ๋„๋ฉด ํ•ด๋‹น ์ฃผ์†Œ๊ฐ€ ํ˜ธ์ŠคํŠธ์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด vpn-slice์— ๊ธฐํ˜ธ ์ด๋ฆ„์„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์ด.

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com 

์ด์ œ ์‚ฌ๋ฌด์‹ค๊ณผ ํ•ด๋ณ€ ๋ชจ๋‘์—์„œ ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

VPN์ด ์ œ๊ณตํ•œ DNS์˜ ๋ชจ๋“  ํ•˜์œ„ ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์„ธ์š”.

๋„คํŠธ์›Œํฌ ๋‚ด์— ์ฃผ์†Œ๊ฐ€ ๊ฑฐ์˜ ์—†๋Š” ๊ฒฝ์šฐ ํ˜ธ์ŠคํŠธ ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋งค์šฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋„คํŠธ์›Œํฌ์— ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์œผ๋ฉด zoidberg.test.evilcorp.com๊ณผ ๊ฐ™์€ ์ค„์„ ์Šคํฌ๋ฆฝํŠธ์— ์ง€์†์ ์œผ๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. zoidberg๋Š” ํ…Œ์ŠคํŠธ ๋ฒค์น˜ ์ค‘ ํ•˜๋‚˜์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ํ•„์š”์„ฑ์ด ์ œ๊ฑฐ๋  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋ฅผ ์กฐ๊ธˆ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค.

VPN์„ ์˜ฌ๋ฆฐ ํ›„ /etc/hosts๋ฅผ ๋ณด๋ฉด ๋‹ค์Œ ์ค„์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

192.168.430.534 dns0.tun0 # vpn-slice-tun0 ์ž๋™ ์ƒ์„ฑ๋จ

๊ทธ๋ฆฌ๊ณ  resolv.conf์— ์ƒˆ๋กœ์šด ์ค„์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, vpn-slice๋Š” VPN์šฉ DNS ์„œ๋ฒ„์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹์–ด๋–ป๊ฒŒ๋“  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ evilcorp.com์œผ๋กœ ๋๋‚˜๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์˜ IP ์ฃผ์†Œ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด Linux๊ฐ€ ๊ธฐ์—… DNS๋กœ ์ด๋™ํ•˜๊ณ , ๋‹ค๋ฅธ ๊ฒƒ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ DNS๋กœ ์ด๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฝค ์˜ค๋žซ๋™์•ˆ ๊ตฌ๊ธ€๋ง์„ ํ–ˆ๊ณ  ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์šฐ๋ถ„ํˆฌ์—์„œ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋กœ์ปฌ DNS ์„œ๋ฒ„ dnsmasq๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฆ„์„ ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, Linux๊ฐ€ IP ์ฃผ์†Œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ํ•ญ์ƒ ๋กœ์ปฌ DNS ์„œ๋ฒ„๋กœ ์ด๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ๋Ÿฌ๋ฉด ๋„๋ฉ”์ธ ์ด๋ฆ„์— ๋”ฐ๋ผ ํ•ด๋‹น ์™ธ๋ถ€ DNS ์„œ๋ฒ„์—์„œ IP๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ๋ฐ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Ubuntu๋Š” NetworkManager๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด Wi-Fi ์—ฐ๊ฒฐ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹จ์ง€ ํ”„๋ŸฐํŠธ ์—”๋“œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ ๊ตฌ์„ฑ์„ ์˜ฌ๋ผ๊ฐ€์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. /etc/NetworkManager/dnsmasq.d/evilcorp์— ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์†Œ=/.evilcorp.com/192.168.430.534

evilcorp ์•ž์˜ ์ง€์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”. evilcorp.com์˜ ๋ชจ๋“  ํ•˜์œ„ ๋„๋ฉ”์ธ์„ ๊ธฐ์—… DNS์—์„œ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•จ์„ dnsmasq์— ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

  1. NetworkManager์—๊ฒŒ ์ด๋ฆ„ ํ™•์ธ์„ ์œ„ํ•ด dnsmasq๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œ

๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž ๊ตฌ์„ฑ์€ /etc/NetworkManager/NetworkManager.conf์— ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[๋ฉ”์ธ] dns=dnsmasq

  1. NetworkManager ๋‹ค์‹œ ์‹œ์ž‘

service network-manager restart

์ด์ œ openconnect ๋ฐ vpn-slice๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VPN์— ์—ฐ๊ฒฐํ•˜๋ฉด vpnslice์— ๋Œ€ํ•œ ์ธ์ˆ˜์— ๊ธฐํ˜ธ ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ IP๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

VPN์„ ํ†ตํ•ด ๊ฐœ๋ณ„ ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•

VPN์— ์—ฐ๊ฒฐํ•œ ํ›„ ์ดํ‹€ ๋™์•ˆ ๋งค์šฐ ๊ธฐ๋ปค์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‚ฌ๋ฌด์‹ค ๋„คํŠธ์›Œํฌ ์™ธ๋ถ€์—์„œ VPN์— ์—ฐ๊ฒฐํ•˜๋ฉด ๋ฉ”์ผ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ฆ์ƒ์€ ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ ๋ฉ”์ผ์€ mail.publicevilcorp.com์— ์œ„์น˜ํ•˜๋Š”๋ฐ, ์ด๋Š” dnsmasq์˜ ๊ทœ์น™์— ์†ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ณต๊ฐœ DNS๋ฅผ ํ†ตํ•ด ๋ฉ”์ผ ์„œ๋ฒ„ ์ฃผ์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

์Œ, ์‚ฌ๋ฌด์‹ค์—์„œ๋Š” ์—ฌ์ „ํžˆ ์ด ์ฃผ์†Œ๊ฐ€ ํฌํ•จ๋œ DNS๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ dnsmasq์— ํ•ด๋‹น ๋ผ์ธ์„ ์ถ”๊ฐ€ํ•œ ํ›„

์ฃผ์†Œ=/mail.publicevilcorp.com/192.168.430.534

์ƒํ™ฉ์€ ์ „ํ˜€ ๋ณ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ip๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ผํ•˜๋Ÿฌ ๊ฐ€์•ผํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜์ค‘์—์•ผ ์ƒํ™ฉ์„ ๋” ๊นŠ์ด ํŒŒ๊ณ ๋“ค์–ด ๋ฌธ์ œ๋ฅผ ์กฐ๊ธˆ ์ดํ•ดํ–ˆ์„ ๋•Œ ํ•œ ๋˜‘๋˜‘ํ•œ ์‚ฌ๋žŒ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์ผ ์„œ๋ฒ„์— ๊ทธ๋ ‡๊ฒŒ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ VPN์„ ํ†ตํ•ด ์—ฐ๊ฒฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” vpn-slice๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VPN์„ ํ†ตํ•ด 192.168.430์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ฃผ์†Œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฉ”์ผ ์„œ๋ฒ„์—๋Š” evilcorp์˜ ํ•˜์œ„ ๋„๋ฉ”์ธ์ด ์•„๋‹Œ ์‹ฌ๋ณผ๋ฆญ ์ฃผ์†Œ๊ฐ€ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, 192.168.430์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” IP ์ฃผ์†Œ๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ทธ๋Š” ์ผ๋ฐ˜ ๋„คํŠธ์›Œํฌ์˜ ์–ด๋Š ๋ˆ„๊ตฌ๋„ ์ž์‹ ์—๊ฒŒ ์˜ค๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Linux๊ฐ€ VPN์„ ํ†ต๊ณผํ•˜์—ฌ ๋ฉ”์ผ ์„œ๋ฒ„๋กœ ์ด๋™ํ•˜๋ ค๋ฉด VPN-Slice์—๋„ ์ด๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐํŽธ๋ฌผ์˜ ์ฃผ์†Œ๊ฐ€ 555.555.555.555๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

echo "fixedPassword567987" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin
--script "./bin/vpn-slice 555.555.555.555 192.168.430.0/24" vpn.evilcorp.com 

ํ•˜๋‚˜์˜ ์ธ์ˆ˜๋กœ VPN์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ

๋ฌผ๋ก  ์ด ๋ชจ๋“  ๊ฒƒ์ด ๊ทธ๋‹ค์ง€ ํŽธ๋ฆฌํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ, ํ…์ŠคํŠธ๋ฅผ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ณ  ์ง์ ‘ ์ž…๋ ฅํ•˜๋Š” ๋Œ€์‹  ์ฝ˜์†”์— ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ณ„๋กœ ์ฆ๊ฒ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด PATH์— ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ์— ๋ช…๋ น์„ ๋ž˜ํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Google OTP์—์„œ ๋ฐ›์€ ์ฝ”๋“œ๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 --user poxvuibr --passwd-on-stdin 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com 

connect~evilcorp~์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ์œผ๋ฉด ์ฝ˜์†”์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

connect_evil_corp 567987

ํ•˜์ง€๋งŒ ์ด์ œ ์–ด๋–ค ์ด์œ ๋กœ๋“  openconnect๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ์ฝ˜์†”์„ ์—ด์–ด ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ openconnect ์‹คํ–‰

๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ openconnect์˜ ์ž‘์„ฑ์ž๊ฐ€ ์šฐ๋ฆฌ๋ฅผ ๋Œ๋ณด๊ณ  ํ”„๋กœ๊ทธ๋žจ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ํŠน์ˆ˜ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ํ›„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์‹คํ–‰ํ•˜๋ฉด ์‹คํ–‰ ํ›„ ์ฝ˜์†”์„ ๋‹ซ์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  

์ด์ œ ๋กœ๊ทธ๊ฐ€ ์–ด๋””๋กœ ๊ฐ€๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ๊ทธ๋Š” ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์•Œ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. openconnect๋Š” ์ด๋ฅผ syslog๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์— โ€“syslog ์Šค์œ„์น˜๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background 
--syslog 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  

๋”ฐ๋ผ์„œ openconnect๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์–ด๋”˜๊ฐ€์—์„œ ์ž‘๋™ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ๋ฐฉํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์ง€๋งŒ ์ด๋ฅผ ์ค‘์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฌผ๋ก  grep์„ ์‚ฌ์šฉํ•˜์—ฌ ps ์ถœ๋ ฅ์„ ํ•„ํ„ฐ๋งํ•˜๊ณ  ์ด๋ฆ„์— openconnect๊ฐ€ ํฌํ•จ๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ๋‹ค์†Œ ์ง€๋ฃจํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ƒ๊ฐ์„ ํ•ด์ฃผ์‹  ์ž‘๊ฐ€๋‹˜๋“ค๊ป˜๋„ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Openconnect์—๋Š” -pid-file ํ‚ค๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ openconnect์— ํ”„๋กœ์„ธ์Šค ์‹๋ณ„์ž๋ฅผ ํŒŒ์ผ์— ์“ฐ๋„๋ก ์ง€์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background  
--syslog 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  
--pid-file ~/vpn-pid

์ด์ œ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ธ์ œ๋“ ์ง€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kill $(cat ~/vpn-pid)

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†์œผ๋ฉด kill์€ ์ €์ฃผ๋ฅผ ํผ๋ถ“์ง€๋งŒ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์ด ์—†์œผ๋ฉด ๋‚˜์œ ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์Šคํฌ๋ฆฝํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kill $(cat ~/vpn-pid)
#!/bin/sh  
echo "fixedPassword$1" | openconnect --servercert sha256:4444444444444444444444444444444444444444444444444444444444444444 
--user poxvuibr 
--passwd-on-stdin 
--background 
--syslog 
--script "./bin/vpn-slice 192.168.430.0/24  jira.vpn.evilcorp.com git.vpn.evilcorp.com " vpn.evilcorp.com  
--pid-file ~/vpn-pid

์ด์ œ ์ปดํ“จํ„ฐ๋ฅผ ์ผœ๊ณ  ์ฝ˜์†”์„ ์—ด๊ณ  ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ Google Authenticator์˜ ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ฝ˜์†”์„ ๋ชป ๋ฐ•์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VPN ์Šฌ๋ผ์ด์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋’ท๋ง ๋Œ€์‹ 

VPN-์Šฌ๋ผ์ด์Šค ์—†์ด ์‚ด์•„๊ฐ€๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ฑ…์„ ๋งŽ์ด ์ฝ๊ณ  ๊ตฌ๊ธ€๋ง์„ ํ•ด์•ผ ํ–ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•œ ํ›„์—๋Š” ๊ธฐ์ˆ  ๋งค๋‰ด์–ผ๊ณผ ์‹ฌ์ง€์–ด man openconnect๋„ ํฅ๋ฏธ์ง„์ง„ํ•œ ์†Œ์„ค์ฒ˜๋Ÿผ ์ฝํ˜”์Šต๋‹ˆ๋‹ค.

๊ทธ ๊ฒฐ๊ณผ, vpn-slice๋„ ๋„ค์ดํ‹ฐ๋ธŒ ์Šคํฌ๋ฆฝํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์„ ๋ณ„๋„์˜ ๋„คํŠธ์›Œํฌ๋กœ ์ˆ˜์ •ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์ด๊ฒƒ์€ Linux๊ฐ€ ํ†ต๊ณผํ•˜๋ ค๋Š” ์ฃผ์†Œ๊ฐ€ ๋ฌด์—‡์œผ๋กœ ์‹œ์ž‘๋˜์–ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ํฌํ•จํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์—ด์˜ ํ…Œ์ด๋ธ”์ด๊ณ , ์ด ์ฃผ์†Œ์—์„œ ํ†ต๊ณผํ•  ๋„คํŠธ์›Œํฌ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ๋‘ ๋ฒˆ์งธ ์—ด์— ์žˆ๋Š” ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋” ๋งŽ์€ ์Šคํ”ผ์ปค๊ฐ€ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ๋ณธ์งˆ์„ ๋ฐ”๊พธ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์„ ๋ณด๋ ค๋ฉด ip Route ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

default via 192.168.1.1 dev wlp3s0 proto dhcp metric 600 
192.168.430.0/24 dev tun0 scope link 
192.168.1.0/24 dev wlp3s0 proto kernel scope link src 192.168.1.534 metric 600 
192.168.430.534 dev tun0 scope link 

์—ฌ๊ธฐ์„œ ๊ฐ ์ค„์€ ํŠน์ • ์ฃผ์†Œ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์–ด๋””๋กœ ๊ฐ€์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ์ฃผ์†Œ๊ฐ€ ์‹œ์ž‘๋˜์–ด์•ผ ํ•˜๋Š” ์œ„์น˜์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. 192.168.0.0/16์ด ์ฃผ์†Œ๊ฐ€ 192.168๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด IP ์ฃผ์†Œ ๋งˆ์Šคํฌ๊ฐ€ ๋ฌด์—‡์ธ์ง€ Google์— ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. dev ๋’ค์—๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ์–ด๋Œ‘ํ„ฐ์˜ ์ด๋ฆ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

VPN์˜ ๊ฒฝ์šฐ Linux๋Š” ๊ฐ€์ƒ ์–ด๋Œ‘ํ„ฐ์ธ tun0์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ผ์ธ์€ 192.168๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ์ฃผ์†Œ์— ๋Œ€ํ•œ ํŠธ๋ž˜ํ”ฝ์ด ์ด๋ฅผ ํ†ต๊ณผํ•˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

192.168.0.0/16 dev tun0 scope link 

๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธ์„  -n (IP ์ฃผ์†Œ๋Š” ๊ต๋ฌ˜ํ•˜๊ฒŒ ์ต๋ช…ํ™”๋ฉ๋‹ˆ๋‹ค.) ์ด ๋ช…๋ น์€ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ด๋‹น ์ถœ๋ ฅ์€ ์ข…์ข… ์ธํ„ฐ๋„ท ๋งค๋‰ด์–ผ์—์„œ ๋ฐœ๊ฒฌ๋˜๋ฏ€๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๋กœ์˜ IP ์ฃผ์†Œ๊ฐ€ ์‹œ์ž‘๋˜์–ด์•ผ ํ•˜๋Š” ์œ„์น˜๋Š” ๋Œ€์ƒ ๋ฐ Genmask ์—ด์˜ ์กฐํ•ฉ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Genmask์˜ ์ˆซ์ž 255์— ํ•ด๋‹นํ•˜๋Š” IP ์ฃผ์†Œ ๋ถ€๋ถ„์€ ๊ณ ๋ ค๋˜์ง€๋งŒ 0์ธ ๋ถ€๋ถ„์€ ๊ณ ๋ ค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋Œ€์ƒ 192.168.0.0๊ณผ Genmask 255.255.255.0์˜ ์กฐํ•ฉ์€ ์ฃผ์†Œ๊ฐ€ 192.168.0์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์ด์— ๋Œ€ํ•œ ์š”์ฒญ์ด ์ด ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ์ง„ํ–‰๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋Œ€์ƒ์ด 192.168.0.0์ด์ง€๋งŒ Genmask๊ฐ€ 255.255.0.0์ธ ๊ฒฝ์šฐ 192.168๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ฃผ์†Œ์— ๋Œ€ํ•œ ์š”์ฒญ์€ ์ด ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

VPN-slice๊ฐ€ ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด, ์ „ํ›„์˜ ํ…Œ์ด๋ธ” ์ƒํƒœ๋ฅผ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

VPN์„ ์ผœ๊ธฐ ์ „์˜ ์ƒํ™ฉ์€ ์ด๋žฌ์Šต๋‹ˆ๋‹ค.

route -n 

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0

VPN-Slice ์—†์ด openconnect๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0
192.168.430.0   0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.430.534 0.0.0.0         255.255.255.255 UH    0      0        0 tun0

๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ VPN-Slice์™€ ๊ฒฐํ•ฉํ•˜์—ฌ openconnect๋ฅผ ํ˜ธ์ถœํ•œ ํ›„

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0
222.222.222.0   0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
333.333.333.333 222.222.222.1   255.255.255.255 UGH   0      0        0 wlp3s0
192.168.430.0   0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.430.534 0.0.0.0         255.255.255.255 UH    0      0        0 tun0

vpn-slice๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด openconnect๋Š” ํŠน๋ณ„ํžˆ ํ‘œ์‹œ๋œ ์ฃผ์†Œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ฃผ์†Œ๊ฐ€ VPN์„ ํ†ตํ•ด ์•ก์„ธ์Šค๋˜์–ด์•ผ ํ•จ์„ ๋ช…์‹œ์ ์œผ๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์žˆ๋‹ค :

0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0

๊ทธ ์˜†์—๋Š” Linux๊ฐ€ ํ†ต๊ณผํ•˜๋ ค๋Š” ์ฃผ์†Œ๊ฐ€ ํ…Œ์ด๋ธ”์˜ ๋งˆ์Šคํฌ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋‹ค๋ฅธ ๊ฒฝ๋กœ๊ฐ€ ์ฆ‰์‹œ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

0.0.0.0         222.222.222.1   0.0.0.0         UG    600    0        0 wlp3s0

์ด ๊ฒฝ์šฐ ํ‘œ์ค€ Wi-Fi ์–ด๋Œ‘ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‚ด์šฉ์ด ์—ฌ๊ธฐ์— ์ด๋ฏธ ๊ธฐ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

VPN ๊ฒฝ๋กœ๋Š” ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์˜ ์ฒซ ๋ฒˆ์งธ ๊ฒฝ๋กœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋ก ์ ์œผ๋กœ ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์—์„œ ์ด ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด dnsmasq openconnect์™€ ํ•จ๊ป˜ ์ •์ƒ์ ์ธ ์ž‘๋™์„ ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹œ๋„ํ–ˆ๋‹ค

route del default

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

VPN-Slice ์—†์ด ๋ฉ”์ผ ์„œ๋ฒ„๋กœ ์š”์ฒญ ๋ผ์šฐํŒ…

ํ•˜์ง€๋งŒ ์ฃผ์†Œ๊ฐ€ 555.555.555.555์ธ ๋ฉ”์ผ ์„œ๋ฒ„๋„ ์žˆ๋Š”๋ฐ, ์ด ์„œ๋ฒ„์—๋„ VPN์„ ํ†ตํ•ด ์•ก์„ธ์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฒฝ๋กœ๋„ ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ip route add 555.555.555.555 via dev tun0

์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ VPN-Slice ์—†์ด๋„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ธฐ๋ณธ openconnect ์Šคํฌ๋ฆฝํŠธ์˜ ๋งˆ์ง€๋ง‰ ์ค„์— ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  VPN์— ์—ฐ๊ฒฐํ•œ ํ›„ ๋ฉ”์ผ๋Ÿฌ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ž์ „๊ฑฐ์—์„œ ์›€์ง์ด๋Š” ๋ถ€ํ’ˆ์„ ์ค„์ด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ VPN ์„ค์ • ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๋Š” ๋ฐ๋Š” ์ด ํ›„๊ธฐ๊ฐ€ ์ถฉ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌด์—‡์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ๋™์•ˆ ์ €์ž์—๊ฒŒ๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ์ง€๋งŒ ์–ด๋–ค ์ด์œ ๋กœ ๋‚˜์—๊ฒŒ๋Š” ํšจ๊ณผ๊ฐ€ ์—†๋Š” ๊ฐ€์ด๋“œ๋ฅผ ๋งŽ์ด ์ฝ์—ˆ๊ณ , ๋‚ด๊ฐ€ ์ฐพ์€ ๋ชจ๋“  ๋ถ€๋ถ„์„ ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋Ÿฐ ์ผ์— ๋งค์šฐ ๊ธฐ๋ปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€