TCP/IP๋ฅผ ํตํด ์๋ง์ ํฌ๊ณ ์์ ์ฅ์น๊ฐ ์ํธ ์์ฉํ๋ ๊ฒฝ์ฐ, ์๊ฐ์ด ์ค์ ๋ก๋ ์ ํํ์ง ์๋ค๋ ๊ฒ์ ์ด๋ป๊ฒ ๋ณด์ฅํ ์ ์์๊น์? ๊ฐ ์ฅ์น์๋ ์๊ณ๊ฐ ์์ผ๋ฉฐ, ๋ชจ๋ ์ฅ์น์ ์๊ฐ์ ์ ํํด์ผ ํฉ๋๋ค. ntp ์์ด๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ฐ์ IT ์ธํ๋ผ์ ํ ๋ถ๋ถ์์ ์๊ฐ๋ณ ์๋น์ค ๋๊ธฐํ์ ์ด๋ ค์์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ํฐํ๋ผ์ด์ฆ ์ํํธ์จ์ด์ ํด๋ฌ์คํฐ ์คํ์ด ์ฆ์ ์ฅ์ ๋ฅผ ์ผ์ผํค๊ณ , ๋๋ฉ์ธ์ด ์์๋๊ณ , ๋ง์คํฐ ๋ ธ๋์ ์คํ ๋ฐ์ด ๋ ธ๋๊ฐ ํ์ ์ ์ง๋ฅผ ๋ณต๊ตฌํ๋ ค๊ณ ์๋ํ์ง๋ง ์คํจํฉ๋๋ค.
๊ณต๊ฒฉ์๊ฐ ์๋์ ์ผ๋ก MiTM ๋๋ DDOS ๊ณต๊ฒฉ์ ํตํด ์๊ฐ์ ์ง์ฐ์ํค๋ ค ํ ๊ฐ๋ฅ์ฑ๋ ์์ต๋๋ค. ์ด๋ฌํ ์ํฉ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ผ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ๊ณ์ ๋น๋ฐ๋ฒํธ๊ฐ ๋ง๋ฃ๋ฉ๋๋ค.
- X.509 ์ธ์ฆ์๊ฐ ๋ง๋ฃ๋ฉ๋๋ค.
- TOTP 2๋จ๊ณ ์ธ์ฆ์ด ๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค.
- ๋ฐฑ์ ์ "์ค๋๋" ๊ฒ์ด ๋๊ณ ์์คํ ์์ ์ญ์ ๋ฉ๋๋ค.
- DNSSec์ด ์๋ํ์ง ์์ต๋๋ค.
๋ชจ๋ 1์ฐจ IT ๋ถ์๊ฐ ์๊ฐ ๋๊ธฐํ ์๋น์ค์ ์์ ์ ์ธ ์ด์์ ๊ด์ฌ์ ๊ฐ๊ณ ์๋ ๊ฒ์ ๋ถ๋ช ํ๋ฉฐ, ์ฐ์ ์ด์์์ ์๊ฐ ๋๊ธฐํ ์๋น์ค๊ฐ ์์ ์ ์ด๊ณ ์์ ํ๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
25๋ถ ์์ NTP๋ฅผ ๊นจ์ธ์
๋คํธ์ํฌ ํ๋กํ ์ฝ - ๋ฐ๋ ๋์ผ ์ธ๋๋ ํ ๊ฐ์ง ๊ณตํต์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ค์ ์ค๋ซ๋์ ๊ทธ๋ฆฌ๊ณ ๋ ์ด์ ์๋ฌด ์ธ๋ชจ๊ฐ ์์ง๋ง, ์๋นํ ์ด๊ด์์ ์๊ธ์ด ๋ชจ์๋ค ํ๋๋ผ๋ ์ด๋ฅผ ๋์ฒดํ๋ ๊ฒ์ ์ฝ์ง ์์ต๋๋ค.
๊ธฐ์กด NTP์ ์ฃผ์ ๋ฌธ์ ์ ์ ์ ์์ ์ธ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ์ ๋ขฐํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ด ๋ถ์กฑํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ค์ํ ์๋๊ฐ ์์์ต๋๋ค. ์ด๋ฅผ ์ํด ๋์นญ ํค ๊ตํ์ ์ํ ์ฌ์ ์ค์ ํค(PSK) ๋ฉ์ปค๋์ฆ์ด ์ฒ์ ๋์ ๋์์ต๋๋ค.
์ํ๊น๊ฒ๋ ์ด ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ์ด์ ๋๋ฌธ์ ํจ๊ณผ๊ฐ ์์์ต๋๋ค. ํ์ฅ์ฑ์ด ์ข์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๋ฒ์ ๋ฐ๋ผ ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค. ์ฆ, ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. NTP ์๋ฒ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ๋ฉด ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ฅผ ๋ค์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ค๊ฐ AutoKey๋ผ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฐํ์ง๋ง, ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ์์ฒด์์ ์ฌ๋ฌ ์ฌ๊ฐํ ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋์ด ๊ฒฐ๊ตญ ํ๊ธฐ๋์์ต๋๋ค. ๋ฌธ์ ๋ ์ด๊ธฐ ์ซ์(์๋)๊ฐ 32๋นํธ๋ฐ์ ๋์ง ์์ ๋ฌด์ฐจ๋ณ ๋์ ๊ณต๊ฒฉ(brute-force attack)์ ํ์ํ ๊ณ์ฐ ๋ณต์ก๋๊ฐ ์ถฉ๋ถํ์ง ์๋ค๋ ๊ฒ์ ๋๋ค.
- ํค ID๋ ๋์นญ 32๋นํธ ํค์ ๋๋ค.
- MAC(๋ฉ์์ง ์ธ์ฆ ์ฝ๋) - NTP ํจํท์ ์ฒดํฌ์ฌ
Autokey๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐ๋ฉ๋๋ค.
Autokey=H(Sender-IP||Receiver-IP||KeyID||Cookie)์ฌ๊ธฐ์ H()๋ ์ํธํ ํด์ ํจ์์ ๋๋ค.
ํจํท์ ์ฒดํฌ์ฌ์ ๊ณ์ฐํ๋ ๋ฐ์๋ ๋์ผํ ํจ์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
MAC=H(Autokey||NTP packet)ํจํท ๊ฒ์ฌ์ ๋ฌด๊ฒฐ์ฑ์ ์ฟ ํค์ ์ง์ ์ฌ๋ถ์ ๋ฌ๋ ค ์์ต๋๋ค. ์ฟ ํค๋ฅผ ์บก์ฒํ๋ฉด ์๋ ํค๋ฅผ ๋ณต์ํ๊ณ MAC์ ์์กฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ NTP ์๋ฒ๋ ์ฟ ํค๋ฅผ ์์ฑํ ๋ ์ด๊ธฐ ๋ฒํธ(์๋)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ก ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
Cookie=MSB_32(H(Client IP||Server IP||0||Server Seed))MSB_32 ํจ์๋ md5 ํด์ ๊ณ์ฐ ๊ฒฐ๊ณผ์์ ์์ 32๋นํธ๋ฅผ ์๋ผ๋ ๋๋ค. ์๋ฒ ๋งค๊ฐ๋ณ์๊ฐ ๋ณ๊ฒฝ๋์ง ์๋ ํ ํด๋ผ์ด์ธํธ ์ฟ ํค๋ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ณต๊ฒฉ์๋ ์ด๊ธฐ ๊ฐ๋ง ๋ณต์ํ๊ณ ์ฟ ํค๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.
๋จผ์ , ํด๋ผ์ด์ธํธ๋ก NTP ์๋ฒ์ ์ ์ํ์ฌ ์ฟ ํค๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ๊ทธ ํ, ๊ณต๊ฒฉ์๋ ๊ฐ๋จํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ด๊ธฐ ์ซ์๋ฅผ ๋ณต๊ตฌํฉ๋๋ค.
๋ฌด์ฐจ๋ณ ๋์ ๊ณต๊ฒฉ์ ์ด์ฉํด ์ด๊ธฐ ์ซ์๋ฅผ ๊ณต๊ฒฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
for i=0:2^32 โ 1 do
Ci=H(Server-IP||Client-IP||0||i)
if Ci=Cookie then
return i
end if
end forIP ์ฃผ์๋ ์๋ ค์ ธ ์์ผ๋ฏ๋ก, ์์ฑ๋ ์ฟ ํค๊ฐ NTP ์๋ฒ์์ ์์ ํ ์ฟ ํค์ ์ผ์นํ ๋๊น์ง 2^32๋ฒ์ ํด์๋ฅผ ์์ฑํ๋ ๊ฒ๋ง ๋จ์์ต๋๋ค. Intel Core i5 ํ๋ก์ธ์๊ฐ ์ฅ์ฐฉ๋ ์ผ๋ฐ์ ์ธ ๊ฐ์ ์ฉ ๊ธฐ๊ธฐ์์๋ ์ด ์์ ์ 25๋ถ์ด ๊ฑธ๋ฆฝ๋๋ค.
NTS โ ์๋ก์ด Autokey
Autokey์์๋ ์ด๋ฌํ ๋ณด์ ์ทจ์ฝ์ ์ ์ฐธ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ์ผ๋ฉฐ 2012๋ ์๋ ํ๋กํ ์ฝ์ ๋๋ค. ์ด๋ฆ์ ์์์ํค๊ธฐ ์ํด ๋ธ๋๋๋ฅผ ๋ณ๊ฒฝํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ , Autokey v.2๋ ๋คํธ์ํฌ ์๊ฐ ๋ณด์(Network Time Security)์ผ๋ก ๋ช ๋ช ๋์์ต๋๋ค.
NTS ํ๋กํ ์ฝ์ NTP์ ๋ณด์ ํ์ฅ ํ๋กํ ์ฝ๋ก, ํ์ฌ ์ ๋์บ์คํธ ๋ชจ๋๋ง ์ง์ํฉ๋๋ค. ํจํท ์กฐ์์ผ๋ก๋ถํฐ ๊ฐ๋ ฅํ ์ํธํ ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ , ์ค๋ํ์ ๋ฐฉ์งํ๋ฉฐ, ํ์ฅ์ฑ์ด ๋ฐ์ด๋๊ณ , ๋คํธ์ํฌ ํจํท ์์ค์ ๋ํ ๋ณต์๋ ฅ์ด ๋ฐ์ด๋๋ฉฐ, ์ฐ๊ฒฐ ๋ณด์ ๊ณผ์ ์์ ์ ํ๋ ์์ค์ด ๊ฐ์ฅ ์ ์ต๋๋ค.
NTS ์ฐ๊ฒฐ์ ๋ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ฐ ๋จ๊ณ์์๋ ํ์ ์์ค ํ๋กํ ์ฝ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ ์ด ๋จ๊ณ์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๋ค์ํ ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์์ ๋์ํ๊ณ ๋ชจ๋ ๊ด๋ จ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ํค๊ฐ ํฌํจ๋ ์ฟ ํค๋ฅผ ๊ตํํฉ๋๋ค. ๋ ๋ฒ์งธ ์ด ๋จ๊ณ์์ ์ค์ ๋ณด์ NTS ์ธ์ ์ ํด๋ผ์ด์ธํธ์ NTP ์๋ฒ ์ฌ์ด์์ ์ด๋ฃจ์ด์ง๋๋ค.

NTS๋ ๋ ๊ฐ์ง ํ์ ๊ณ์ธต ํ๋กํ ์ฝ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. TLS๋ฅผ ํตํด ๋ณด์ ์ฐ๊ฒฐ์ ์ด๊ธฐํํ๋ ๋คํธ์ํฌ ์๊ฐ ๋ณด์ ํค ๊ตํ(NTS-KE)๊ณผ NTP ํ๋กํ ์ฝ์ ์ต์ ๋ฒ์ ์ธ NTPv4์
๋๋ค. ์์ธํ ๋ด์ฉ์ ์๋์์ ์ค๋ช
ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ๋จ๊ณ - NTS KE
์ด ๋จ๊ณ์์ NTP ํด๋ผ์ด์ธํธ๋ ๋ณ๋์ TCP ์ฐ๊ฒฐ์ ํตํด NTS KE ์๋ฒ์ TLS 1.2/1.3 ์ธ์ ์ ์์ํฉ๋๋ค. ์ด ์ธ์ ๋์ ๋ค์ ์์ ์ด ์ํ๋ฉ๋๋ค.
- ๋น์ฌ์๋ค์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋ ๋ฒ์งธ ๋จ๊ณ์ ์๊ณ ๋ฆฌ์ฆ.
- ๊ฐ ๋น์ฌ์๋ ๋ ๋ฒ์งธ ํ์ ์์ค ํ๋กํ ์ฝ์ ์ ์ํ๊ณ ์์ง๋ง ํ์ฌ๋ NTPv4๋ง ์ง์๋ฉ๋๋ค.
- ๋น์ฌ์๋ค์ NTP ์๋ฒ์ IP ์ฃผ์์ ํฌํธ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- NTS KE ์๋ฒ๋ NTPv4์์ ์ฟ ํค๋ฅผ ๋ฐํํฉ๋๋ค.
- ๋น์ฌ์๋ค์ ์ฟ ํค ์๋ฃ์์ ๋์นญ ํค ์(C2S ๋ฐ S2C)์ ์ถ์ถํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ๋น๋ฐ ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์ ์ ๋ณด ์ ์ก์ ๋ชจ๋ ๋ถ๋ด์ ๊ฒ์ฆ๋๊ณ ์์ ์ ์ธ TLS ํ๋กํ ์ฝ์ ์ ๊ฐํ๋ค๋ ์ ์์ ํฐ ์ฅ์ ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์์ ํ NTP ํธ๋์ ฐ์ดํฌ๋ฅผ ์ํด ์๋ก์ด ๊ธฐ์ ์ ๋์ ํ ํ์๊ฐ ์์ต๋๋ค.
2๋จ๊ณ - NTS ๋ณดํธ ํ์ NTP
๋ ๋ฒ์งธ ๋จ๊ณ์์ ํด๋ผ์ด์ธํธ๋ NTP ์๋ฒ์ ์๊ฐ์ ์์ ํ๊ฒ ๋๊ธฐํํฉ๋๋ค. ์ด๋ฅผ ์ํด NTPv4 ํจํท ๊ตฌ์กฐ์ ๋ค ๊ฐ์ ํน์ ํ์ฅ ํ๋๋ฅผ ์ ์กํฉ๋๋ค.
- ๊ณ ์ ์๋ณ์ ํ์ฅ์๋ ์ฌ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ฌด์์ nonce๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
- NTS ์ฟ ํค ํ์ฅ์๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด์ ํ NTP ์ฟ ํค ์ค ํ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ง ๋์นญ AAED ํค C2S์ S2C๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก NTP ์๋ฒ๋ ์ฟ ํค ์๋ฃ์์ ์ด ํค๋ค์ ์ถ์ถํด์ผ ํฉ๋๋ค.
- NTS ์ฟ ํค ํ๋ ์ด์คํ๋ ํ์ฅ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ถ๊ฐ ์ฟ ํค๋ฅผ ์์ฒญํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ํ์ฅ์ NTP ์๋ฒ์ ์๋ต์ด ์์ฒญ๋ณด๋ค ํจ์ฌ ๊ธธ์ง ์๋๋ก ํ๋ ๋ฐ ํ์์ ์ด๋ฉฐ, ์ฆํญ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- NTS ์ธ์ฆ์ ๋ฐ ์ํธํ๋ ํ์ฅ ํ๋ ํ์ฅ์๋ C2S ํค, NTP ํค๋, ํ์์คํฌํ, ๊ทธ๋ฆฌ๊ณ ์์์ ์ธ๊ธํ EF๋ฅผ ์ง์ํ๋ ๋ฐ์ดํฐ๋ก ์ฌ์ฉํ๋ AAED ์๊ณ ๋ฆฌ์ฆ ์ํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ด ํ์ฅ ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ํ์์คํฌํ๋ฅผ ์์กฐํ ์ ์์ต๋๋ค.

ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ์์ ํ ํ, ์๋ฒ๋ NTP ํจํท์ ์ง์ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. ์ด๋ฅผ ์ํด ์ฟ ํค๋ฅผ ๋ณตํธํํ๊ณ AAED ์๊ณ ๋ฆฌ์ฆ๊ณผ ํค๋ฅผ ์ถ์ถํด์ผ ํฉ๋๋ค. NTP ํจํท์ ์ ํจ์ฑ์ ์ฑ๊ณต์ ์ผ๋ก ํ์ธํ ํ, ์๋ฒ๋ ๋ค์ ํ์์ผ๋ก ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํฉ๋๋ค.
- ๊ณ ์ ์๋ณ์ ํ์ฅ์ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ฏธ๋ฌ ๋ณต์ฌ๋ณธ์ผ๋ก, ์ฌ์ ๊ณต๊ฒฉ์ ๋ํ ๋์ฑ ์ ๋๋ค.
- NTS ์ฟ ํค ํ์ฅ ์ธ์ ์ ๊ณ์ํ๋ ค๋ฉด ๋ ๋ง์ ์ฟ ํค๊ฐ ํ์ํฉ๋๋ค.
- NTS ์ธ์ฆ์ ๋ฐ ์ํธํ๋ ํ์ฅ ํ๋ ํ์ฅ์๋ S2C ํค๊ฐ ํฌํจ๋ AEAD ์ํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๋ ๋ฒ์งธ ํธ๋์ ฐ์ดํฌ๋ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํ ์ ์์ต๋๋ค. ๊ฐ ์์ฒญ๊ณผ ์๋ต์ ํด๋ผ์ด์ธํธ์๊ฒ ์ถ๊ฐ ์ฟ ํค๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ PKI ๋ฐ์ดํฐ๋ฅผ ๊ณ์ฐํ๊ณ ์ ์กํ๋ ๋ฐ ํ์ํ ๋ฆฌ์์ค๊ฐ ์๋์ ์ผ๋ก ๋ง์ TLS ์์ ์ ๋ฐ๋ณต ์์ฒญ ํ์๋งํผ ๋๋์ด ์ฒ๋ฆฌํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ์ด๋ ๋ชจ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ๋์นญ ์ํธํ ๋ถ์ผ์ ์ฌ๋ฌ ํจ์๋ก ํตํฉํ์ฌ ์ ์ฒด TLS ์คํ์ ๋ค๋ฅธ ์ฅ์น๋ก ์ ์กํ ์ ์๋ ํน์ FPGA ํด๋ก์ ํนํ ์ ์ฉํฉ๋๋ค.
NTPSec
NTP์ ํน๋ณํ ์ ์ ๋ฌด์์ผ๊น์? ์ด ํ๋ก์ ํธ์ ์ ์์ธ ๋ฐ์ด๋ธ ๋ฐ์ค๊ฐ ์ฝ๋๋ฅผ ์ต๋ํ ์์ธํ ๋ฌธ์ํํ๋ ค๊ณ ๋ ธ๋ ฅํ์์๋ ๋ถ๊ตฌํ๊ณ , 35๋ ์ ์๊ฐ ๋๊ธฐํ ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์กํ ๋ด์ฉ์ ์ดํดํ ์ ์๋ ํ๋ก๊ทธ๋๋จธ๋ ๋๋ญ ๋๋ค. ์ผ๋ถ ์ฝ๋๋ POSIX ์๋ ์ด์ ์ ์์ฑ๋์์ผ๋ฉฐ, ์ ๋์ค API๋ ์ค๋๋ ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ๋งค์ฐ ๋ฌ๋์ต๋๋ค. ๋ํ, ์ก์์ด ๋ง์ ํ์ ์์ ๋ฐ์ํ๋ ๊ฐ์ญ ์ ํธ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด์๋ ํต๊ณ ์ง์์ด ํ์ํฉ๋๋ค.
NTS๊ฐ NTP๋ฅผ ์์ ํ๋ ค๋ ์ฒซ ๋ฒ์งธ ์๋๋ ์๋์์ต๋๋ค. ๊ณต๊ฒฉ์๋ค์ด NTP ์ทจ์ฝ์ ์ ์ ์ฉํ์ฌ DDoS ๊ณต๊ฒฉ์ ์ฆํญ์ํค๋ ๋ฐฉ๋ฒ์ ์๊ฒ ๋์, ๊ทผ๋ณธ์ ์ธ ๋ณํ๊ฐ ํ์ํ๋ค๋ ๊ฒ์ด ๋ถ๋ช ํด์ก์ต๋๋ค. NTS ์ด์์ด ์ค๋น๋๊ณ ๋ง๋ฌด๋ฆฌ๋๋ ๋์, ๋ฏธ๊ตญ ๊ตญ๋ฆฝ๊ณผํ์ฌ๋จ(NSF)์ 2014๋ ๋ง NTP ํ๋ํ๋ฅผ ์ํ ๋ณด์กฐ๊ธ์ ๊ธด๊ธํ ์ง์ํ์ต๋๋ค.
์์ ๊ทธ๋ฃน์ ์ฑ ์์๋ ๋ฐ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค. โ ์คํ ์์ค ์ปค๋ฎค๋ํฐ์ ์ฐฝ๋ฆฝ์์ด์ ๊ธฐ๋ฅ ์ค ํ ๋ช ์ด์ ์ด ์ฑ ์ ์ ์ ์๋ฆญ๊ณผ ๊ทธ์ ๋๋ฃ๋ค์ด ๊ฐ์ฅ ๋จผ์ ์๋ํ ๊ฒ์ NTP ์ฝ๋๋ฅผ BitKeeper ํ๋ซํผ์์ git์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด์์ง๋ง, ๊ทธ๋ ๊ฒ ๋์ง๋ ์์์ต๋๋ค. ํ๋ก์ ํธ ๋ฆฌ๋์ธ ํ ๋ ์คํ ์ ์ด ๊ฒฐ์ ์ ๋ฐ๋ํ๊ณ , ํ์์ ๊ต์ฐฉ ์ํ์ ๋น ์ก์ต๋๋ค. ๊ฒฐ๊ตญ ํ๋ก์ ํธ ์ฝ๋๋ฅผ ํฌํฌํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ , ๊ทธ๋ ๊ฒ NTPSec์ด ํ์ํ์ต๋๋ค.
GPSD, ์ํ์ ๋ฐฐ๊ฒฝ, ๊ทธ๋ฆฌ๊ณ ๊ณ ๋ ์ฝ๋๋ฅผ ์ฝ๋ ๋ง๋ฒ ๊ฐ์ ๋ฅ๋ ฅ์ ํฌํจํ ํํํ ๋ฐฐ๊ฒฝ ์ง์์ ๊ฐ์ถ ์๋ฆญ ๋ ์ด๋จผ๋๋ ์ด๋ฌํ ํ๋ก์ ํธ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ํํ ์ ์๋ ํด์ปค์์ต๋๋ค. ํ์ ์ฝ๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ฌธ๊ฐ๋ฅผ ์ฐพ์๊ณ , ๋จ 10์ฃผ ๋ง์ NTP๋ฅผ ๊ตฌ์ถํ์ต๋๋ค. GitLab์์ ์์ ์ด ํ๊ธฐ๋ฅผ ๋ ๊ธฐ ์์ํ์ต๋๋ค.
์๋ฆญ ๋ ์ด๋จผ๋์ ํ์ ๋ง์น ์ค๊ท์คํธ ๋ก๋์ด ๋ฐ์๋ฅผ ๋ค๋ฃจ๋ฏ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. 175 KLOC์ ๋ฌํ๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ์ ๊ฑฐํจ์ผ๋ก์จ ๊ณต๊ฒฉ ํ๋ฉด์ ํฌ๊ฒ ์ค์ด๊ณ ๋ง์ ๋ณด์ ํ์ ์ ์์จ ์ ์์์ต๋๋ค.
์ํฅ์ ๋ฐ์ ์ฌ๋๋ค์ ์ผ๋ถ ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฌธ์ํ๋์ง ์์๊ฑฐ๋, ์ธ๋ชจ์๊ฑฐ๋, ์ค๋๋์๊ฑฐ๋, ๊ณ ์ฅ๋ ์ฐธ์กฐ ํด๋ญ.
- ์ฌ์ฉํ์ง ์๋ ICS ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
- libopts/autogen.
- Windows์ฉ ์ค๋๋ ์ฝ๋์ ๋๋ค.
- ntpdc.
- ์คํ ํค.
- ntpq๋ฅผ Python์ผ๋ก ๋ค์ ์์ฑํ C ์ฝ๋.
- C ์ฝ๋ sntp/ntpdig๋ฅผ Python์ผ๋ก ๋ค์ ์์ฑํ์ต๋๋ค.
์ฝ๋ ์ ๋ฆฌ ์ธ์๋ ํ๋ก์ ํธ์๋ ๋ค๋ฅธ ์์ ๋ค์ด ์์์ต๋๋ค. ๋ค์์ ์ฑ๊ณผ ๋ชฉ๋ก ์ค ์ผ๋ถ์ ๋๋ค.
- ๋ฒํผ ์ค๋ฒํ๋ก์ฐ์ ๋ํ ์ฝ๋ ๋ณดํธ ๊ธฐ๋ฅ์ด ํฌ๊ฒ ๊ฐํ๋์์ต๋๋ค. ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ชจ๋ ์์ ํ์ง ์์ ๋ฌธ์์ด ํจ์(strcpy / strcat / strtok / sprintf / vsprintf / gets)๊ฐ ๋ฒํผ ํฌ๊ธฐ ์ ํ์ ๊ตฌํํ๋ ์์ ํ ๋ฒ์ ์ผ๋ก ๋์ฒด๋์์ต๋๋ค.
- NTS ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๋ฌผ๋ฆฌ์ ํ๋์จ์ด ๋ฐ์ธ๋ฉ์ ํตํด ์๊ฐ ๋จ์ ์ ํ๋๊ฐ 10๋ฐฐ ํฅ์๋์์ต๋๋ค. ์ด๋ ์ต์ ์ปดํจํฐ ์๊ณ๊ฐ NTP๊ฐ ์ฒ์ ๋์ ๋์์ ๋น์์ ์๊ณ๋ณด๋ค ํจ์ฌ ์ ํํด์ก๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ ๊ฐ์ฅ ํฐ ์ํ์๋ GPSDO์ ์ ์ฉ ๋ฌด์ ์๊ฐ๊ตญ์ ๋๋ค.
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์๊ฐ ๋ ๊ฐ์ง๋ก ์ค์์ต๋๋ค. Perl, awk, ์ฌ์ง์ด S ์คํฌ๋ฆฝํธ๊น์ง ๋ชจ๋ Python์ผ๋ก ๋์ฒด๋์์ต๋๋ค. ๋๋ถ์ ์ฝ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ์ฑ์ด ๋ ๋์์ก์ต๋๋ค.
- AutoTools ์คํฌ๋ฆฝํธ์ ๊ตญ์ ๋์ ํ๋ก์ ํธ๋ ์ํํธ์จ์ด ๋น๋ ์์คํ ์ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค. .
- ํ๋ก์ ํธ ๋ฌธ์๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ์ฌ๊ตฌ์ฑํ์ต๋๋ค. ์ผ๊ด์ฑ์ด ์๊ณ ๋๋ก๋ ๊ตฌ์์ธ ๋ฌธ์ ๋ชจ์์ ๋ฐํ์ผ๋ก, ๊ฝค ๊ด์ฐฎ์ ๋ฌธ์๋ฅผ ๋ง๋ค์์ต๋๋ค. ๋ชจ๋ ๋ช ๋ น์ค ์ค์์น์ ๋ชจ๋ ๊ตฌ์ฑ ์ํฐํฐ๋ ์ด์ ๋จ์ผ ๋ฒ์ ์ ์ง์ค์ ๊ฐ์ต๋๋ค. ๋ํ, ๋งค๋ด์ผ ํ์ด์ง์ ์น ๋ฌธ์๋ ์ด์ ๋์ผํ ํต์ฌ ํ์ผ์์ ์์ฑ๋ฉ๋๋ค.
NTPSec์ ์ฌ๋ฌ Linux ๋ฐฐํฌํ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ฌ ์ต์ ์์ ๋ฒ์ ์ 1.1.8์ด๋ฉฐ, Gentoo Linux์ ๊ฒฝ์ฐ ๋ ๋ฒ์งธ๋ก ์ต์ ๋ฒ์ ์ ๋๋ค.
(1:696)$ sudo emerge -av ntpsec
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] net-misc/ntpsec-1.1.7-r1::gentoo USE="samba seccomp -debug -doc -early -gdb -heat -libbsd -nist -ntpviz -rclock_arbiter -rclock_generic -rclock_gpsd -rclock_hpgps -rclock_jjy -rclock_local -rclock_modem -rclock_neoclock -rclock_nmea -rclock_oncore -rclock_pps -rclock_shm -rclock_spectracom -rclock_trimble -rclock_truetime -rclock_zyfer -smear -tests" PYTHON_TARGETS="python3_6" 0 KiB
Total: 1 package (1 reinstall), Size of downloads: 0 KiB
Would you like to merge these packages? [Yes/No]
ํฌ๋ก๋
๊ธฐ์กด NTP๋ฅผ ๋ ์์ ํ ์๋ ๋ก๊ทธ ๋ฐฉ์์ผ๋ก ๋์ฒดํ๋ ค๋ ๋ ๋ค๋ฅธ ์๋๊ฐ ์์์ต๋๋ค. NTPSec๊ณผ ๋ฌ๋ฆฌ Chrony๋ ์ฒ์๋ถํฐ ๊ฐ๋ฐ๋์์ผ๋ฉฐ ๋ถ์์ ํ ๋คํธ์ํฌ ์ฐ๊ฒฐ, ๋ถ๋ถ์ ์ธ ๊ฐ์ฉ์ฑ ๋๋ ๋คํธ์ํฌ ๊ณผ๋ถํ, ์จ๋ ๋ณํ ๋ฑ ๋ค์ํ ํ๊ฒฝ์์ ์์ ์ ์ผ๋ก ์๋ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๋ํ Chrony๋ ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- chrony๋ ์์คํ ์๊ณ๋ฅผ ๋ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ๋๊ธฐํํ ์ ์์ต๋๋ค.
- chrony๋ ํฌ๊ธฐ๊ฐ ๋ ์๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ์ผ๋ฉฐ ํ์ํ ๋๋ง ํ๋ก์ธ์์ ์ ๊ทผํฉ๋๋ค. ์ด๋ ๋ฆฌ์์ค์ ์๋์ง๋ฅผ ์ ์ฝํ๋ ๋ฐ ํฐ ์ฅ์ ์ ๋๋ค.
- chrony๋ Linux์์ ํ๋์จ์ด ํ์์คํฌํ๋ฅผ ์ง์ํ๋ฏ๋ก ๋ก์ปฌ ๋คํธ์ํฌ์์ ๋งค์ฐ ์ ํํ ๋๊ธฐํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
ํ์ง๋ง Chrony๋ ๋ธ๋ก๋์บ์คํธ ๋ฐ ๋ฉํฐ์บ์คํธ ํด๋ผ์ด์ธํธ/์๋ฒ์ ๊ฐ์ ๊ธฐ์กด NTP์ ์ผ๋ถ ๊ธฐ๋ฅ์ด ๋ถ์กฑํฉ๋๋ค. ๋ํ, ๊ธฐ์กด NTP๋ ๋ ๋ง์ OS์ ํ๋ซํผ์ ์ง์ํฉ๋๋ค.
์๋ฒ ๊ธฐ๋ฅ๊ณผ chronyd ํ๋ก์ธ์ค์ ๋ํ NTP ์์ฒญ์ ๋นํ์ฑํํ๋ ค๋ฉด chrony.conf ํ์ผ์ ํฌํธ 0์ ์ง์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ด๋ NTP ํด๋ผ์ด์ธํธ๋ ํผ์ด์ ์๊ฐ์ ์ ์งํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค. 2.0 ๋ฒ์ ๋ถํฐ NTP ์๋ฒ ํฌํธ๋ allow ์ง์์ด ๋๋ ํด๋น ๋ช ๋ น์ ์ํด ์ก์ธ์ค๊ฐ ํ์ฉ๋๊ฑฐ๋, NTP ํผ์ด๊ฐ ๊ตฌ์ฑ๋๊ฑฐ๋, broadcast ์ง์์ด๊ฐ ์ฌ์ฉ๋ ๋๋ง ์ด๋ฆฝ๋๋ค.
์ด ํ๋ก๊ทธ๋จ์ ๋ ๊ฐ์ ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
- chronyd๋ ์์คํ ์๊ณ์ ์ธ๋ถ ์๊ฐ ์๋ฒ ๊ฐ์ ์๊ฐ ์ฐจ์ด ์ ๋ณด๋ฅผ ์์ ํ์ฌ ๋ก์ปฌ ์๊ฐ์ ์กฐ์ ํ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์๋น์ค์ ๋๋ค. ๋ํ NTP ํ๋กํ ์ฝ์ ๊ตฌํํ๋ฉฐ ํด๋ผ์ด์ธํธ ๋๋ ์๋ฒ ์ญํ ์ ํ ์ ์์ต๋๋ค.
- chronyc๋ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ ์ดํ๋ โโ๋ช ๋ น์ค ์ ํธ๋ฆฌํฐ์ ๋๋ค. ๋ค์ํ ์๋น์ค ๋งค๊ฐ๋ณ์๋ฅผ ๋ฏธ์ธ ์กฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, chronyd๊ฐ ์คํ๋๋ ๋์ NTP ์๋ฒ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
RedHat Linux ๋ฒ์ 7๋ถํฐ chrony๋ ์๊ฐ ๋๊ธฐํ ์๋น์ค์ ๋๋ค. ์ด ํจํค์ง๋ ๋ค๋ฅธ Linux ๋ฐฐํฌํ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ต์ ์์ ๋ฒ์ ์ 3.5์ด๋ฉฐ, 4.0 ๋ฒ์ ์ ํ์ฌ ์ค๋น ์ค์ ๋๋ค.
(1:712)$ sudo emerge -av chrony
These are the packages that would be merged, in order:
Calculating dependencies... done!
[binary N ] net-misc/chrony-3.5-r2::gentoo USE="adns caps cmdmon ipv6 ntp phc readline refclock rtc seccomp (-html) -libedit -pps (-selinux)" 246 KiB
Total: 1 package (1 new, 1 binary), Size of downloads: 246 KiB
Would you like to merge these packages? [Yes/No]
์ฌ๋ฌด์ค ๋คํธ์ํฌ์ ์๊ฐ์ ๋๊ธฐํํ๊ธฐ ์ํด ์ธํฐ๋ท์ ์๊ฒฉ ํฌ๋ก๋ ์๋ฒ๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์๋๋ VPS์ ์ค์ ํ๋ ์์์ ๋๋ค.
VPS์์ RHEL/CentOS์ Chrony๋ฅผ ์ค์ ํ๋ ์
์ด์ VPS์์ NTP ์๋ฒ๋ฅผ ์ง์ ๊ตฌ์ถํด ๋ณด๊ฒ ์ต๋๋ค. ์์ฃผ ๊ฐ๋จํฉ๋๋ค. RuVDS ์น์ฌ์ดํธ์์ ์ ํฉํ ์๊ธ์ ๋ฅผ ์ ํํ๊ณ , ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์๋ฒ๋ฅผ ๊ตฌ๋งคํ ํ ๊ฐ๋จํ ๋ช ๋ น์ด ๋ช ๊ฐ๋ง ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค. ์ ํฌ ๋ชฉ์ ์๋ ์ด ์ต์ ์ด ๋งค์ฐ ์ ํฉํฉ๋๋ค.

์ด์ ์๋น์ค ์ค์ ์ผ๋ก ๋์ด๊ฐ์ ๋จผ์ chrony ํจํค์ง๋ฅผ ์ค์นํด ๋ณด๊ฒ ์ต๋๋ค.
[root@server ~]$ yum install chronyRHEL 8 / CentOS 8์ ๋ค๋ฅธ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
[root@server ~]$ dnf install chronyChrony๋ฅผ ์ค์นํ ํ ์๋น์ค๋ฅผ ์์ํ๊ณ ํ์ฑํํด์ผ ํฉ๋๋ค.
[root@server ~]$ systemctl enable chrony --now์ํ๋ ๊ฒฝ์ฐ /etc/chrony.conf๋ฅผ ํธ์งํ์ฌ NPT ์๋ฒ๋ฅผ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ก์ปฌ ์๋ฒ๋ก ๋์ฒดํ๋ฉด ์๋ต ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค.
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst
server 2.ru.pool.ntp.org iburst
server 3.ru.pool.ntp.org iburst
๋ค์์ผ๋ก, ์ง์ ๋ ํ์ ๋ ธ๋์ NTP ์๋ฒ์ ๋๊ธฐํ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
[root@server ~]$ timedatectl set-ntp true
[root@server ~]$ systemctl restart chronyd.service
๋ํ ์ธ๋ถ๋ก NTP ํฌํธ๋ฅผ ์ด์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฐฉํ๋ฒฝ์ด ํด๋ผ์ด์ธํธ ๋ ธ๋์์ ๋ค์ด์ค๋ ์ฐ๊ฒฐ์ ์ฐจ๋จํฉ๋๋ค.
[root@server ~]$ firewall-cmd --add-service=ntp --permanent
[root@server ~]$ firewall-cmd --reload
ํด๋ผ์ด์ธํธ ์ธก์์๋ ์๊ฐ๋๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋ฉด ๋ฉ๋๋ค.
[root@client ~]$ timedatectl set-timezone Europe/Moscow/etc/chrony.conf ํ์ผ์์ NTP ์๋ฒ chrony๊ฐ ์คํ ์ค์ธ VPS ์๋ฒ์ IP ๋๋ ํธ์คํธ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
server my.vps.server๋ง์ง๋ง์ผ๋ก ํด๋ผ์ด์ธํธ์์ ์๊ฐ ๋๊ธฐํ๋ฅผ ์์ํฉ๋๋ค.
[root@client ~]$ systemctl enable --now chronyd
[root@client ~]$ timedatectl set-ntp true
๋ค์ ์๊ฐ์๋ ์ธํฐ๋ท ์์ด๋ ์๊ฐ์ ๋๊ธฐํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ถ์ฒ : habr.com
