Google ๋ธ๋ก๊ทธ ํธ์ง๊ธฐ์์: Google Cloud Technical Solutions(TSE) ์์ง๋์ด๊ฐ ์ง์ ์์ฒญ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง ๊ถ๊ธํ ์ ์ด ์๋์? TSE ๊ธฐ์ ์ง์ ์์ง๋์ด๋ ์ฌ์ฉ์๊ฐ ๋ณด๊ณ ํ ๋ฌธ์ ์์ธ์ ์๋ณํ๊ณ ์์ ํ๋ ์ผ์ ๋ด๋นํฉ๋๋ค. ์ด๋ฌํ ๋ฌธ์ ์ค ์ผ๋ถ๋ ๋งค์ฐ ๊ฐ๋จํ์ง๋ง ๋๋ก๋ ์ฌ๋ฌ ์์ง๋์ด์ ์ฃผ์๊ฐ ๋์์ ํ์ํ ํฐ์ผ์ ์ง๋ฉดํ ๋๋ ์์ต๋๋ค. ์ด ๊ธฐ์ฌ์์๋ TSE ์ง์ ์ค ํ ๋ช
์ด ์ต๊ทผ ์
๋ฌด์์ ๋ฐ์ํ ๋งค์ฐ ๊น๋ค๋ก์ด ๋ฌธ์ ์ค ํ๋์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
๋ฌธ์ ํด๊ฒฐ์ ๊ณผํ์ด์ ์์ ์
๋๋ค. ๋ชจ๋ ๊ฒ์ ์์คํ
์ ๋นํ์ค ๋์ ์ด์ ์ ๋ํ ๊ฐ์ค์ ์ธ์ฐ๋ ๊ฒ๋ถํฐ ์์๋๋ฉฐ, ๊ทธ ํ์ ์์คํ
์ ๊ฐ๋๋ฅผ ํ
์คํธํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ค์ ์ธ์ฐ๊ธฐ ์ ์ ๋จผ์ ๋ฌธ์ ๋ฅผ ๋ช
ํํ๊ฒ ์ ์ํ๊ณ ์ ํํ๊ฒ ๊ณต์ํํด์ผ ํฉ๋๋ค. ์ง๋ฌธ์ด ๋๋ฌด ๋ชจํธํ๊ฒ ๋ค๋ฆฌ๋ฉด ๋ชจ๋ ๊ฒ์ ์ฃผ์ ๊น๊ฒ ๋ถ์ํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ด ๋ฌธ์ ํด๊ฒฐ์ "๊ธฐ์ "์
๋๋ค.
Google Cloud์์๋ Google Cloud๊ฐ ์ฌ์ฉ์์ ๊ฐ์ธ์ ๋ณด ๋ณดํธ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ์ต์ ์ ๋คํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ํ๋ก์ธ์ค๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋ ๋ณต์กํด์ง๋๋ค. ์ด๋ก ์ธํด TSE ์์ง๋์ด๋ ์์คํ
์ ํธ์งํ ์ ์์ผ๋ฉฐ ์ฌ์ฉ์๋งํผ ๊ด๋ฒ์ํ๊ฒ ๊ตฌ์ฑ์ ๋ณผ ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ์ ๊ฐ์ค์ ํ
์คํธํ๊ธฐ ์ํด ์ฐ๋ฆฌ(์์ง๋์ด)๋ ์์คํ
์ ์ ์ํ๊ฒ ์์ ํ ์ ์์ต๋๋ค.
์ผ๋ถ ์ฌ์ฉ์๋ ์ฐ๋ฆฌ๊ฐ ์๋์ฐจ ์๋น์ค์ ๊ธฐ๊ณ๊ณต๊ณผ ๊ฐ์ ๋ชจ๋ ๊ฒ์ ๊ณ ์น๊ณ ๋จ์ํ ๊ฐ์ ๋จธ์ ์ ID๋ฅผ ๋ณด๋ด์ค ๊ฒ์ด๋ผ๊ณ ๋ฏฟ๋ ๋ฐ๋ฉด, ์ค์ ๋ก ํ๋ก์ธ์ค๋ ์ ๋ณด ์์ง, ๊ฐ์ค ํ์ฑ ๋ฐ ํ์ธ(๋๋ ๋ฐ๋ฐ), ๋ํ ํ์์ผ๋ก ์งํ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ตญ ๊ฒฐ์ ์ ๋ฌธ์ ๋ ๋ด๋ด์์์ ์์ฌ์ํต์ ๊ธฐ์ดํ๋ค.
๋ฌธ์ ์ ๋ฌธ์
์ค๋์ ์ข์ ๊ฒฐ๋ง์ ๊ฐ์ง ์ด์ผ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ ์๋ ์ฌ๋ก๊ฐ ์ฑ๊ณต์ ์ผ๋ก ํด๊ฒฐ๋ ์ด์ ์ค ํ๋๋ ๋ฌธ์ ์ ๋ํ ๋งค์ฐ ์์ธํ๊ณ ์ ํํ ์ค๋ช
์
๋๋ค. ์๋์์ ์ฒซ ๋ฒ์งธ ํฐ์ผ์ ์ฌ๋ณธ์ ๋ณผ ์ ์์ต๋๋ค(๊ธฐ๋ฐ ์ ๋ณด๋ฅผ ์จ๊ธฐ๋๋ก ํธ์ง๋จ).
์ด ๋ฉ์์ง์๋ ์ฐ๋ฆฌ์๊ฒ ์ ์ฉํ ์ ๋ณด๊ฐ ๋ง์ด ํฌํจ๋์ด ์์ต๋๋ค.
- ํน์ VM์ด ์ง์ ๋จ
- ๋ฌธ์ ์์ฒด๊ฐ ํ์๋ฉ๋๋ค - DNS๊ฐ ์๋ํ์ง ์์ต๋๋ค
- ๋ฌธ์ ๊ฐ ๋ํ๋๋ ์์น(VM ๋ฐ ์ปจํ ์ด๋)๊ฐ ํ์๋ฉ๋๋ค.
- ๋ฌธ์ ๋ฅผ ์๋ณํ๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ ์ํํ ๋จ๊ณ๊ฐ ํ์๋ฉ๋๋ค.
์์ฒญ์ "P1: Critical Impact - ์๋น์ค๋ฅผ ํ๋ก๋์
์์ ์ฌ์ฉํ ์ ์์"์ผ๋ก ๋ฑ๋ก๋์์ต๋๋ค. ์ด๋ "Follow the Sun" ๊ณํ์ ๋ฐ๋ผ ์ํฉ์ ์ฐ์ค๋ฌดํด 24์๊ฐ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํจ์ ์๋ฏธํฉ๋๋ค.
ํฐ์ผ์ด ์ทจ๋ฆฌํ์ ๋์ฐฉํ์ ๋ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ๋ค์ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์์ต๋๋ค.
- ํจ์ ๋
/etc/hosts
- ํจ์ ๋
/etc/resolv.conf
- ์ถ๋ ฅ
iptables-save
- ํ์์ ์กฐ๋ฆฝ
ngrep
PCAP ํ์ผ
์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ "์กฐ์ฌ" ๋ฐ ๋ฌธ์ ํด๊ฒฐ ๋จ๊ณ๋ฅผ ์์ํ ์ค๋น๊ฐ ๋์์ต๋๋ค.
์ฐ๋ฆฌ์ ์ฒซ ๊ฑธ์
์ฐ์ , ๋ฉํ๋ฐ์ดํฐ ์๋ฒ์ ๋ก๊ทธ์ ์ํ๋ฅผ ํ์ธํ์ฌ ์ ๋๋ก ์๋ํ๋์ง ํ์ธํ์ต๋๋ค. ๋ฉํ๋ฐ์ดํฐ ์๋ฒ๋ IP ์ฃผ์ 169.254.169.254์ ์๋ตํ๋ฉฐ ๋ฌด์๋ณด๋ค๋ ๋๋ฉ์ธ ์ด๋ฆ ์ ์ด๋ฅผ ๋ด๋นํฉ๋๋ค. ๋ํ ๋ฐฉํ๋ฒฝ์ด VM์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๊ณ ํจํท์ ์ฐจ๋จํ์ง ์๋์ง ๋ค์ ํ์ธํ์ต๋๋ค.
๊ทธ๊ฒ์ ์ผ์ข ์ ์ด์ํ ๋ฌธ์ ์์ต๋๋ค. nmap ๊ฒ์ฌ๋ UDP ํจํท ์์ค์ ๋ํ ์ฐ๋ฆฌ์ ์ฃผ์ ๊ฐ์ค์ ๋ฐ๋ฐํ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ด๋ฅผ ํ์ธํ๋ ๋ช ๊ฐ์ง ์ถ๊ฐ ์ต์ ๊ณผ ๋ฐฉ๋ฒ์ ์ ์ ์ ์ผ๋ก ์๊ฐํด ๋์ต๋๋ค.
- ํจํท์ด ์ ํ์ ์ผ๋ก ์ญ์ ๋ฉ๋๊น? => iptables ๊ท์น์ ํ์ธํ์ธ์
- ๋๋ฌด ์์ง ์๋์?
MTU ? => ์ถ๋ ฅ ํ์ธip a show
- ๋ฌธ์ ๊ฐ UDP ํจํท์๋ง ์ํฅ์ ๋ฏธ์น๋์, ์๋๋ฉด TCP์๋ ์ํฅ์ ๋ฏธ์น๋์? => ์ฐจ๋ฅผ ๋ชฐ๊ณ ๊ฐ๋ค
dig +tcp
- ๋ฐ๊ตด ์์ฑ ํจํท์ด ๋ฐํ๋ฉ๋๊น? => ์ฐจ๋ฅผ ๋ชฐ๊ณ ๊ฐ๋ค
tcpdump
- libdns๊ฐ ์ ๋๋ก ์๋ํ๊ณ ์๋์? => ์ฐจ๋ฅผ ๋ชฐ๊ณ ๊ฐ๋ค
strace
์๋ฐฉํฅ์ผ๋ก ํจํท ์ ์ก์ ํ์ธํ๋ ค๋ฉด
์ฌ๊ธฐ์์๋ ์ค์๊ฐ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉ์์๊ฒ ์ ํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
ํตํ ์ค์ ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ฌํญ์ ํ์ธํ ์ ์์ต๋๋ค.
- ์ฌ๋ฌ ๋ฒ ํ์ธํ ํ ์ด์ ๋ชฉ๋ก์์ iptables ๊ท์น์ ์ ์ธํฉ๋๋ค.
- ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๋ผ์ฐํ ํ ์ด๋ธ์ ํ์ธํ๊ณ MTU๊ฐ ์ฌ๋ฐ๋ฅธ์ง ๋ค์ ํ์ธํฉ๋๋ค.
- ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ฐ๊ฒฌํฉ๋๋ค
dig +tcp google.com
(TCP)๋ ์ ์์ ์ผ๋ก ์๋ํ์ง๋งdig google.com
(UDP)๊ฐ ์๋ํ์ง ์์ต๋๋ค - ์ฐจ๋ฅผ ๋ชฐ๊ณ ๊ฐ๋ฒ๋ฆฐ
tcpdump
์ผํ๋ ๋์dig
, UDP ํจํท์ด ๋ฐํ๋๊ณ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค. - ์ฐ๋ฆฌ๋ ์ฐจ๋ฅผ ๋ชฐ๊ณ ๊ฐ๋๋ค
strace dig google.com
๊ทธ๋ฆฌ๊ณ dig๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.sendmsg()
ะธrecvms()
๊ทธ๋ฌ๋ ๋ ๋ฒ์งธ๋ ์๊ฐ ์ด๊ณผ๋ก ์ธํด ์ค๋จ๋ฉ๋๋ค.
๋ถํํ๊ฒ๋ ๊ทผ๋ฌด ์๊ฐ์ด ์ข ๋ฃ๋์ด ๋ฌธ์ ๋ฅผ ๋ค์ ์๊ฐ๋๋ก ํ๋ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ์์ฒญ์ ์ฐ๋ฆฌ ํ์ ๊ด์ฌ์ ๋ถ๋ฌ์ผ์ผ์ผฐ๊ณ ๋๋ฃ๋ scrapy Python ๋ชจ๋์ ์ฌ์ฉํ์ฌ ์ด๊ธฐ DNS ํจํค์ง๋ฅผ ๋ง๋ค ๊ฒ์ ์ ์ํ์ต๋๋ค.
from scapy.all import *
answer = sr1(IP(dst="169.254.169.254")/UDP(dport=53)/DNS(rd=1,qd=DNSQR(qname="google.com")),verbose=0)
print ("169.254.169.254", answer[DNS].summary())
์ด ์กฐ๊ฐ์ DNS ํจํท์ ์์ฑํ๊ณ ๋ฉํ๋ฐ์ดํฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ ๋๋ค.
์ฌ์ฉ์๊ฐ ์ฝ๋๋ฅผ ์คํํ๋ฉด DNS ์๋ต์ด ๋ฐํ๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฅผ ์์ ํ์ฌ ๋คํธ์ํฌ ์์ค์์ ๋ฌธ์ ๊ฐ ์์์ ํ์ธํฉ๋๋ค.
๋ ๋ค๋ฅธ '์ธ๊ณ ์ผ์ฃผ' ํ์ ์์ฒญ์ด ์ฐ๋ฆฌ ํ์ผ๋ก ๋์์ค๊ณ , ์์ฒญ์ด ์ด๋ฆฌ ์ ๋ฆฌ ๋์ง ์์ผ๋ฉด ์ฌ์ฉ์์๊ฒ ๋ ํธ๋ฆฌํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ฌ ์์ ํ ๋ ์์ ์๊ฒ ์ ๋ฌํฉ๋๋ค.
๊ทธ๋์ ์ฌ์ฉ์๋ ์์คํ ์ด๋ฏธ์ง์ ์ค๋ ์ท์ ์ ๊ณตํ๋ ๋ฐ ๋์ํฉ๋๋ค. ์ด๋ ๋งค์ฐ ์ข์ ์์์ ๋๋ค. ์์คํ ์ ์ง์ ํ ์คํธํ ์ ์์ด ๋ฌธ์ ํด๊ฒฐ ์๋๊ฐ ํจ์ฌ ๋นจ๋ผ์ก์ต๋๋ค. ๋ ์ด์ ์ฌ์ฉ์์๊ฒ ๋ช ๋ น์ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ด๊ณ ๋ถ์ํ๋๋ก ์์ฒญํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฒ์ ์ค์ค๋ก ํ ์ ์์ต๋๋ค!
๋๋ฃ๋ค์ด ๋๋ฅผ ์กฐ๊ธ์ฉ ๋ถ๋ฌ์ํ๊ธฐ ์์ํ๋ค. ์ ์ฌ์ ๋จน์ผ๋ฉด์ ์ฐ๋ฆฌ๋ ๊ฐ์ข ์ ๋ํด ๋ ผ์ํ์ง๋ง, ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์๋ ์ฌ๋์ ์๋ฌด๋ ์์ต๋๋ค. ๋คํ์ค๋ฝ๊ฒ๋ ์ฌ์ฉ์ ์์ ์ด ์ด๋ฏธ ๊ฒฐ๊ณผ๋ฅผ ์ํํ๊ธฐ ์ํ ์กฐ์น๋ฅผ ์ทจํ๊ณ ์๋๋ฅด์ง ์์ผ๋ฏ๋ก ๋ฌธ์ ๋ฅผ ๋ถ์ํ ์๊ฐ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ์ง๊ฐ ์์ผ๋ฏ๋ก ๊ด์ฌ ์๋ ๋ชจ๋ ํ ์คํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์์ฒญ๋!
ํ๋ฐ ๋ค๋ก ๋ฌผ๋ฌ์๋ค
์์คํ
์์ง๋์ด ์ง์์ ๋ํ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ฉด์ ์ง๋ฌธ ์ค ํ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋๋ ์ด HR ์ง๋ฌธ์ ํ์ฌ ๋ฌธ์ ์ ์ ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋๋ต์ ์ผ๋ก ๋งํ์๋ฉด, DNS ์ด๋ฆ์ ํ์ธํ๋ ค๊ณ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ผ์ด ๋ฐ์ํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ libdns์ ๊ฐ์ ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํฉ๋๋ค.
- libdns๋ ์ ์ํด์ผ ํ๋ DNS ์๋ฒ์ ์์คํ ๊ตฌ์ฑ์ ํ์ธํฉ๋๋ค(๋ค์ด์ด๊ทธ๋จ์์๋ 169.254.169.254, ๋ฉํ๋ฐ์ดํฐ ์๋ฒ์).
- libdns๋ ์์คํ ํธ์ถ์ ์ฌ์ฉํ์ฌ UDP ์์ผ(SOKET_DGRAM)์ ์์ฑํ๊ณ DNS ์ฟผ๋ฆฌ์ ํจ๊ป UDP ํจํท์ ์๋ฐฉํฅ์ผ๋ก ๋ณด๋ ๋๋ค.
- sysctl ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ปค๋ ์์ค์์ UDP ์คํ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- ์ปค๋์ ํ๋์จ์ด์ ์ํธ ์์ฉํ์ฌ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋คํธ์ํฌ๋ฅผ ํตํด ํจํท์ ์ ์กํฉ๋๋ค.
- ํ์ดํผ๋ฐ์ด์ ๋ ํจํท์ ํฌ์ฐฉํ์ฌ ๋ฉํ๋ฐ์ดํฐ ์๋ฒ์ ์ ์ด ์ ํจํท์ ์ ์กํฉ๋๋ค.
- ๋ฉํ๋ฐ์ดํฐ ์๋ฒ๋ ๋ง์ ์ฒ๋ผ DNS ์ด๋ฆ์ ํ์ธํ๊ณ ๋์ผํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์๋ต์ ๋ฐํํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ๊ณ ๋ คํ ๊ฐ์ค์ด ๋ฌด์์ธ์ง ์๊ธฐ์์ผ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ฐ์ค: ์์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ํ ์คํธ 1: ์์คํ ์์ strace๋ฅผ ์คํํ๊ณ dig๊ฐ ์ฌ๋ฐ๋ฅธ ์์คํ ํธ์ถ์ ํธ์ถํ๋์ง ํ์ธํฉ๋๋ค.
- ๊ฒฐ๊ณผ: ์ฌ๋ฐ๋ฅธ ์์คํ ํธ์ถ์ด ํธ์ถ๋ฉ๋๋ค.
- ํ ์คํธ 2: srapy๋ฅผ ์ฌ์ฉํ์ฌ ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐํํ๋ ์ด๋ฆ์ ํ์ธํ ์ ์๋์ง ํ์ธ
- ๊ฒฐ๊ณผ: ์ฐ๋ฆฌ๋ ํ ์ ์๋ค
- ํ ์คํธ 3: libdns ํจํค์ง ๋ฐ md5sum ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์์ rpm โV ์คํ
- ๊ฒฐ๊ณผ: ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ ์๋ ์ค์ธ ์ด์ ์ฒด์ ์ ์ฝ๋์ ์์ ํ ๋์ผํฉ๋๋ค.
- ํ ์คํธ 4: ์ด ๋์ ์์ด VM์ ์ฌ์ฉ์์ ๋ฃจํธ ์์คํ ์ด๋ฏธ์ง๋ฅผ ๋ง์ดํธํ๊ณ , chroot๋ฅผ ์คํํ๊ณ , DNS๊ฐ ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
- ๊ฒฐ๊ณผ: DNS๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํฉ๋๋ค.
ํ ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒฐ๋ก : ๋ฌธ์ ๋ ๋์๊ด์ ์์ง ์์
๊ฐ์ค: DNS ์ค์ ์ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
- ํ ์คํธ 1: tcpdump๋ฅผ ํ์ธํ๊ณ dig ์คํ ํ DNS ํจํท์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ก ๋ฐ ๋ฐํ๋๋์ง ํ์ธํฉ๋๋ค.
- ๊ฒฐ๊ณผ: ํจํท์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ก๋์์ต๋๋ค.
- ํ
์คํธ 2: ์๋ฒ์์ ๋ค์ ํ์ธ
/etc/nsswitch.conf
ะธ/etc/resolv.conf
- ๊ฒฐ๊ณผ: ๋ชจ๋ ๊ฒ์ด ์ ํํจ
ํ ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒฐ๋ก : ๋ฌธ์ ๋ DNS ๊ตฌ์ฑ์ ์๋ ๊ฒ์ด ์๋๋๋ค
๊ฐ์ค: ์ฝ์ด ์์
- ํ ์คํธ: ์ ์ปค๋ ์ค์น, ์๋ช ํ์ธ, ๋ค์ ์์
- ๊ฒฐ๊ณผ: ๋น์ทํ ํ๋
ํ ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒฐ๋ก : ์ปค๋์ด ์์๋์ง ์์์ต๋๋ค
๊ฐ์ค: ์ฌ์ฉ์ ๋คํธ์ํฌ(๋๋ ํ์ดํผ๋ฐ์ด์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค)์ ์๋ชป๋ ๋์
- ํ ์คํธ 1: ๋ฐฉํ๋ฒฝ ์ค์ ํ์ธ
- ๊ฒฐ๊ณผ: ๋ฐฉํ๋ฒฝ์ ํธ์คํธ์ GCP ๋ชจ๋์์ DNS ํจํท์ ์ ๋ฌํฉ๋๋ค.
- ํ ์คํธ 2: ํธ๋ํฝ์ ๊ฐ๋ก์ฑ๊ณ DNS ์์ฒญ ์ ์ก ๋ฐ ๋ฐํ์ ์ ํ์ฑ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
- ๊ฒฐ๊ณผ: tcpdump๋ ํธ์คํธ๊ฐ ๋ฐํ ํจํท์ ์์ ํ์์ ํ์ธํฉ๋๋ค.
ํ ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒฐ๋ก : ๋ฌธ์ ๋ ๋คํธ์ํฌ์ ์์ง ์์ต๋๋ค
๊ฐ์ค: ๋ฉํ๋ฐ์ดํฐ ์๋ฒ๊ฐ ์๋ํ์ง ์์ต๋๋ค.
- ํ ์คํธ 1: ๋ฉํ๋ฐ์ดํฐ ์๋ฒ ๋ก๊ทธ์์ ์ด์ ์งํ ํ์ธ
- ๊ฒฐ๊ณผ: ๋ก๊ทธ์ ์ด์์ด ์์ต๋๋ค.
- ํ
์คํธ 2: ๋ค์์ ํตํด ๋ฉํ๋ฐ์ดํฐ ์๋ฒ ์ฐํ
dig @8.8.8.8
- ๊ฒฐ๊ณผ: ๋ฉํ๋ฐ์ดํฐ ์๋ฒ๋ฅผ ์ฌ์ฉํ์ง ์์๋ ํด์๋๊ฐ ๊นจ์ง๋๋ค.
ํ ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒฐ๋ก : ๋ฌธ์ ๋ ๋ฉํ๋ฐ์ดํฐ ์๋ฒ์ ์๋ ๊ฒ์ด ์๋๋๋ค
ํ๋จ ๋ผ์ธ : ์ฐ๋ฆฌ๋ ๋ค์์ ์ ์ธํ ๋ชจ๋ ํ์ ์์คํ ์ ํ ์คํธํ์ต๋๋ค. ๋ฐํ์ ์ค์ !
์ปค๋ ๋ฐํ์ ์ค์ ์ดํด๋ณด๊ธฐ
์ปค๋ ์คํ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ค๋ฉด ๋ช
๋ น์ค ์ต์
(grub) ๋๋ sysctl ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋๋ ๋ค์ฌ๋ค ๋ณด์๋ค /etc/sysctl.conf
์๊ฐํด ๋ณด๋ฉด ๋ช ๊ฐ์ง ์ฌ์ฉ์ ์ ์ ์ค์ ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋ญ๊ฐ ๋ถ์กํ ๋ฏํ ๋๋์ด ๋ค์ด์ ๋น๋คํธ์ํฌ๋ ๋นtcp ์ค์ ์ ๋ชจ๋ ๋ฒ๋ฆฌ๊ณ ์ฐ ์ค์ ๋ง ๋จ์์ต๋๋ค. net.core
. ๊ทธ๋ฐ ๋ค์ VM์ ํธ์คํธ ๊ถํ์ด ์๋ ๊ณณ์ผ๋ก ๊ฐ์ ๋ฒ์ธ์ ์ฐพ์ ๋๊น์ง ์์๋ VM์ ์ค์ ์ ํ๋์ฉ ์ ์ฉํ๊ธฐ ์์ํ์ต๋๋ค.
net.core.rmem_default = 2147483647
์ฌ๊ธฐ DNS๋ฅผ ๊นจ๋ ๊ตฌ์ฑ์ด ์์ต๋๋ค! ์ด์ธ๋ฌด๊ธฐ๋ฅผ ์ฐพ์์ด์ ๊ทธ๋ฐ๋ฐ ์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋๋ ๊ฑธ๊น์? ์์ง ๋๊ธฐ๊ฐ ํ์ํ์ด์.
๊ธฐ๋ณธ DNS ํจํท ๋ฒํผ ํฌ๊ธฐ๋ ๋ค์์ ํตํด ๊ตฌ์ฑ๋ฉ๋๋ค. net.core.rmem_default
. ์ผ๋ฐ์ ์ธ ๊ฐ์ ์ฝ 200KiB ์ ๋์ด์ง๋ง ์๋ฒ๊ฐ ๋ง์ DNS ํจํท์ ์์ ํ๋ ๊ฒฝ์ฐ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ํ๋ฆฌ์ผ์ด์
์ด ํจํท์ ์ถฉ๋ถํ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ง ์์์ ์ ํจํท์ด ๋์ฐฉํ์ ๋ ๋ฒํผ๊ฐ ๊ฐ๋ ์ฐจ๋ฉด ํจํท์ด ์์ค๋๊ธฐ ์์ํฉ๋๋ค. ์ฐ๋ฆฌ ๊ณ ๊ฐ์ DNS ํจํท์ ํตํด ๋ฉํธ๋ฆญ์ ์์งํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์์ค์ด ๋๋ ค์ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋๋ ธ์ต๋๋ค. ๊ทธ๊ฐ ์ค์ ํ ๊ฐ์ ๊ฐ๋ฅํ ์ต๋๊ฐ์ธ 231-1์ด์์ต๋๋ค(231๋ก ์ค์ ํ๋ฉด ์ปค๋์ "INVALID ARGUMENT"๋ฅผ ๋ฐํํฉ๋๋ค).
๊ฐ์๊ธฐ ๋๋ ์ nmap๊ณผ scapy๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ๊นจ๋ฌ์์ต๋๋ค. ๊ทธ๋ค์ ์์ ์์ผ์ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค! ์์ ์์ผ์ ์ผ๋ฐ ์์ผ๊ณผ ๋ค๋ฆ ๋๋ค. iptable์ ์ฐํํ๊ณ ๋ฒํผ๋ง๋์ง ์์ต๋๋ค!
๊ทธ๋ฐ๋ฐ "๋ฒํผ๊ฐ ๋๋ฌด ํผ"์ด ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ถ๋ช ํ ์๋ํ ๋๋ก ์๋ํ์ง ์์ต๋๋ค.
์ด ์์ ์์ ๋๋ ์ฌ๋ฌ ์ปค๋๊ณผ ์ฌ๋ฌ ๋ฐฐํฌํ์์ ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์์ต๋๋ค. ๋ฌธ์ ๋ ์ด๋ฏธ 3.x ์ปค๋์์ ๋ํ๋ฌ์ผ๋ฉฐ ์ด์ 5.x ์ปค๋์์๋ ๋ํ๋ฉ๋๋ค.
์ค์ ๋ก ์์ํ์๋ง์
sysctl -w net.core.rmem_default=$((2**31-1))
DNS ์๋์ด ์ค์ง๋์์ต๋๋ค.
๊ฐ๋จํ ์ด์ง ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์๋ ๊ฐ์ ์ฐพ๊ธฐ ์์ํ๊ณ ์์คํ ์ด 2147481343์ผ๋ก ์๋ํ๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ง๋ง ์ด ์ซ์๋ ๋์๊ฒ ์๋ฏธ ์๋ ์ซ์ ์งํฉ์ด์์ต๋๋ค. ๊ณ ๊ฐ์๊ฒ ์ด ๋ฒํธ๋ฅผ ์ฌ์ฉํด ๋ณด๋ผ๊ณ ์ ์ํ๊ณ ์์คํ ์ google.com์์๋ ์๋ํ์ง๋ง ๋ค๋ฅธ ๋๋ฉ์ธ์์๋ ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๊ณ ๋ตํ์ฌ ์กฐ์ฌ๋ฅผ ๊ณ์ํ์ต๋๋ค.
๋๋ ์ค์นํ๋ค udp_queue_rcv_skb
. ์ปค๋ ์์ค๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ๋ช ๊ฐ์ง๋ฅผ ์ถ๊ฐํ์ต๋๋ค. printk
if
, ๊ทธ๋ฆฌ๊ณ ์ ์ ๋์ ๊ทธ๊ฒ์ ์ณ๋ค๋ง ๋ณด์์ต๋๋ค. ์๋ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๋ง์นจ๋ด ์ ์ฒด ๊ทธ๋ฆผ์ผ๋ก ํฉ์ณ์ก๊ธฐ ๋๋ฌธ์
๋๋ค. 231-1, ์๋ฏธ ์๋ ์ซ์, ์๋ํ์ง ์๋ ๋๋ฉ์ธ... ๊ทธ๊ฒ์ ์ฝ๋ ์กฐ๊ฐ์ด์์ต๋๋ค. __udp_enqueue_schedule_skb
:
if (rmem > (size + sk->sk_rcvbuf))
goto uncharge_drop;
์ฐธ๊ณ :
rmem
int ์ ํ์ ๋๋ค.size
u16(๋ถํธ ์๋ XNUMX๋นํธ int) ์ ํ์ด๋ฉฐ ํจํท ํฌ๊ธฐ๋ฅผ ์ ์ฅํฉ๋๋ค.sk->sk_rcybuf
int ์ ํ์ด๋ฉฐ ์ ์์ ๋ฐ๋ผ ๋ค์ ๊ฐ๊ณผ ๋์ผํ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ์ ์ฅํฉ๋๋ค.net.core.rmem_default
์ธ์ sk_rcvbuf
์ ๊ทผ ๋ฐฉ์ 231์์ ํจํท ํฌ๊ธฐ๋ฅผ ํฉ์ฐํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์์ต๋๋ค.
์ค๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ์์ ํ ์ ์์ต๋๋ค. unsigned int
. ์์ ์ฌํญ์ ์ ์ฉํ๊ณ ์์คํ
์ ๋ค์ ์์ํ๋๋ฐ DNS๊ฐ ๋ค์ ์๋ํ์ต๋๋ค.
์น๋ฆฌ์ ๋ง
๋ด๊ฐ ์กฐ์ฌํ ๋ด์ฉ์ ๊ณ ๊ฐ์๊ฒ ์ ๋ฌํ๊ณ ๋ณด๋์ต๋๋ค.
์ด ์ฌ๋ก๊ฐ ๋๋ฌธ ๊ฒ์ผ๋ก ํ๋ช ๋์๋ค๋ ์ ์ ์ธ์ํ ๊ฐ์น๊ฐ ์์ผ๋ฉฐ, ๋คํ์ค๋ฝ๊ฒ๋ ์ฌ์ฉ์๋ก๋ถํฐ ์ด๋ฌํ ๋ณต์กํ ์์ฒญ์ ๋ฐ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ต๋๋ค.
์ถ์ฒ : habr.com