CentOS 8์—์„œ AIDE(๊ณ ๊ธ‰ ์นจ์ž… ํƒ์ง€ ํ™˜๊ฒฝ)๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

์ฝ”์Šค ์‹œ์ž‘ ์ „ "๋ฆฌ๋ˆ…์Šค ๊ด€๋ฆฌ์ž" ํฅ๋ฏธ๋กœ์šด ์ž๋ฃŒ์˜ ๋ฒˆ์—ญ์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.

CentOS 8์—์„œ AIDE(๊ณ ๊ธ‰ ์นจ์ž… ํƒ์ง€ ํ™˜๊ฒฝ)๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

AIDE๋Š” "Advanced Intrusion Protection Environment"์˜ ์•ฝ์ž๋กœ Linux ๊ธฐ๋ฐ˜ ์šด์˜ ์ฒด์ œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์‹œ์Šคํ…œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. AIDE๋Š” ๋งฌ์›จ์–ด, ๋ฐ”์ด๋Ÿฌ์Šค๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๊ณ  ๋ฌด๋‹จ ํ™œ๋™์„ ํƒ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•˜๊ณ  ์นจ์ž…์„ ํƒ์ง€ํ•˜๊ธฐ ์œ„ํ•ด AIDE๋Š” ํŒŒ์ผ ์ •๋ณด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹œ์Šคํ…œ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. AIDE๋Š” ์ˆ˜์ •๋œ ํŒŒ์ผ์— ์ง‘์ค‘ํ•˜์—ฌ ์‚ฌ๊ฑด ์กฐ์‚ฌ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

๋ณด์ขŒ๊ด€ ๊ธฐ๋Šฅ:

  • ํŒŒ์ผ ์œ ํ˜•, inode, uid, gid, ๊ถŒํ•œ, ๋งํฌ ์ˆ˜, mtime, ctime ๋ฐ atime์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ํŒŒ์ผ ์†์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • Gzip ์••์ถ•, SELinux, XAttrs, Posix ACL ๋ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ์†์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • md5, sha1, sha256, sha512, rmd160, crc32 ๋“ฑ ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฉ”์ผ๋กœ ์•Œ๋ฆผ ๋ณด๋‚ด๊ธฐ.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” CentOS 8์—์„œ ์นจ์ž…ํƒ์ง€์šฉ AIDE๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ „์ œ ์กฐ๊ฑด

  • ์ตœ์†Œ 8GB RAM์„ ๊ฐ–์ถ˜ CentOS 2์„ ์‹คํ–‰ํ•˜๋Š” ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
  • ๋ฃจํŠธ ์•ก์„ธ์Šค

ะะฐั‡ะธะฝะฐะตะผ

๋จผ์ € ์‹œ์Šคํ…œ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์„ธ์š”.

dnf update -y

์—…๋ฐ์ดํŠธ ํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๋ ค๋ฉด ์‹œ์Šคํ…œ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์„ธ์š”.

๋ณด์ขŒ๊ด€ ์„ค์น˜

AIDE๋Š” ๊ธฐ๋ณธ CentOS 8 ์ €์žฅ์†Œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

dnf install aide -y

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ AIDE ๋ฒ„์ „์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

aide --version

๋‹ค์Œ์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Aide 0.16

Compiled with the following options:

WITH_MMAP
WITH_PCRE
WITH_POSIX_ACL
WITH_SELINUX
WITH_XATTR
WITH_E2FSATTRS
WITH_LSTAT64
WITH_READDIR64
WITH_ZLIB
WITH_CURL
WITH_GCRYPT
WITH_AUDIT
CONFIG_FILE = "/etc/aide.conf"

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜ aide ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

aide --help

CentOS 8์—์„œ AIDE(๊ณ ๊ธ‰ ์นจ์ž… ํƒ์ง€ ํ™˜๊ฒฝ)๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ ๋ฐ ์ดˆ๊ธฐํ™”

AIDE๋ฅผ ์„ค์น˜ํ•œ ํ›„ ๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผ ํ•  ์ผ์€ ์ดˆ๊ธฐํ™”์ž…๋‹ˆ๋‹ค. ์ดˆ๊ธฐํ™”๋Š” ์„œ๋ฒ„์˜ ๋ชจ๋“  ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(์Šค๋ƒ…์ƒท) ์ƒ์„ฑ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

aide --init

๋‹ค์Œ์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Start timestamp: 2020-01-16 03:03:19 -0500 (AIDE 0.16)
AIDE initialized database at /var/lib/aide/aide.db.new.gz

Number of entries:	49472

---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------

/var/lib/aide/aide.db.new.gz
  MD5      : 4N79P7hPE2uxJJ1o7na9sA==
  SHA1     : Ic2XBj50MKiPd1UGrtcUk4LGs0M=
  RMD160   : rHMMy5WwHVb9TGUc+TBHFHsPCrk=
  TIGER    : vkb2bvB1r7DbT3n6d1qYVfDzrNCzTkI0
  SHA256   : tW3KmjcDef2gNXYqnOPT1l0gDFd0tBh9
             xWXT2iaEHgQ=
  SHA512   : VPMRQnz72+JRgNQhL16dxQC9c+GiYB8g
             uZp6uZNqTvTdxw+w/IYDSanTtt/fEkiI
             nDw6lgDNI/ls2esijukliQ==


End timestamp: 2020-01-16 03:03:44 -0500 (run time: 0m 25s)

์œ„์˜ ๋ช…๋ น์€ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค aide.db.new.gz ์นดํƒˆ๋กœ๊ทธ์— /var/lib/aide. ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ls -l /var/lib/aide

๊ฒฐ๊ณผ :

total 2800
-rw------- 1 root root 2863809 Jan 16 03:03 aide.db.new.gz

AIDE๋Š” ์ด๋ฆ„์ด ๋ฐ”๋€” ๋•Œ๊นŒ์ง€ ์ด ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. aide.db.gz. ์ด ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ œ๋Œ€๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง๋˜๋„๋ก ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DBDIR ํŒŒ์ผ์— /etc/aide.conf.

ํ™•์ธ ์‹คํ–‰

์ด์ œ AIDE๊ฐ€ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ฒซ ๋ฒˆ์งธ AIDE ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

aide --check

์ด ๋ช…๋ น์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํฌ๊ธฐ์™€ ์„œ๋ฒ„์˜ RAM ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๋‹ค์†Œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์Šค์บ”์ด ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Start timestamp: 2020-01-16 03:05:07 -0500 (AIDE 0.16)
AIDE found NO differences between database and filesystem. Looks okay!!

์œ„ ์ถœ๋ ฅ์€ ๋ชจ๋“  ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ AIDE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ผ์น˜ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ๋ณด์ขŒ๊ด€

๊ธฐ๋ณธ์ ์œผ๋กœ AIDE๋Š” ๊ธฐ๋ณธ Apache ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ถ”์ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. /var/www/html. ์ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก AIDE๋ฅผ ๊ตฌ์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. /etc/aide.conf.

nano /etc/aide.conf

์œ„ ์ค„ ์ถ”๊ฐ€ "/root/CONTENT_EX" ๋‹ค์Œ :

/var/www/html/ CONTENT_EX

๋‹ค์Œ์œผ๋กœ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. aide.txt ์นดํƒˆ๋กœ๊ทธ์— /var/www/html/๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

echo "Test AIDE" > /var/www/html/aide.txt

์ด์ œ AIDE ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ƒ์„ฑ๋œ ํŒŒ์ผ์ด ๊ฐ์ง€๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

aide --check

๋‹ค์Œ์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Start timestamp: 2020-01-16 03:09:40 -0500 (AIDE 0.16)
AIDE found differences between database and filesystem!!

Summary:
  Total number of entries:	49475
  Added entries:		1
  Removed entries:		0
  Changed entries:		0

---------------------------------------------------
Added entries:
---------------------------------------------------

f++++++++++++++++: /var/www/html/aide.txt

์ƒ์„ฑ๋œ ํŒŒ์ผ์ด ๊ฐ์ง€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. aide.txt.
๊ฐ์ง€๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ถ„์„ํ•œ ํ›„ AIDE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

aide --update

์—…๋ฐ์ดํŠธ ํ›„์—๋Š” ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Start timestamp: 2020-01-16 03:10:41 -0500 (AIDE 0.16)
AIDE found differences between database and filesystem!!
New AIDE database written to /var/lib/aide/aide.db.new.gz

Summary:
  Total number of entries:	49475
  Added entries:		1
  Removed entries:		0
  Changed entries:		0

---------------------------------------------------
Added entries:
---------------------------------------------------

f++++++++++++++++: /var/www/html/aide.txt

์œ„์˜ ๋ช…๋ น์€ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค aide.db.new.gz ์นดํƒˆ๋กœ๊ทธ์—

/var/lib/aide/

๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ls -l /var/lib/aide/

๊ฒฐ๊ณผ :

total 5600
-rw------- 1 root root 2864012 Jan 16 03:09 aide.db.gz
-rw------- 1 root root 2864100 Jan 16 03:11 aide.db.new.gz

์ด์ œ AIDE๊ฐ€ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„์„ ๋‹ค์‹œ ๋ฐ”๊พธ์‹ญ์‹œ์˜ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

๊ฒ€์‚ฌ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ AIDE๊ฐ€ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

aide --check

๋‹ค์Œ์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Start timestamp: 2020-01-16 03:12:29 -0500 (AIDE 0.16)
AIDE found NO differences between database and filesystem. Looks okay!!

์šฐ๋ฆฌ๋Š” ๊ฒ€์‚ฌ๋ฅผ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค

๋งค์ผ AIDE ์ ๊ฒ€์„ ์‹ค์‹œํ•˜๊ณ  ๋ณด๊ณ ์„œ๋ฅผ ์šฐํŽธ์œผ๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” cron์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

nano /etc/crontab

๋งค์ผ 10์‹œ 15๋ถ„์— AIDE ํ™•์ธ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํŒŒ์ผ ๋์— ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

15 10 * * * root /usr/sbin/aide --check

์ด์ œ AIDE์—์„œ ์šฐํŽธ์œผ๋กœ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

tail -f /var/mail/root

AIDE ๋กœ๊ทธ๋Š” ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

tail -f /var/log/aide/aide.log

๊ฒฐ๋ก 

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” AIDE๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์ง€ํ•˜๊ณ  ๋ฌด๋‹จ ์„œ๋ฒ„ ์•ก์„ธ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์„ค์ •์„ ์œ„ํ•ด /etc/aide.conf ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฝ๊ธฐ ์ „์šฉ ๋ฏธ๋””์–ด์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„ค๋ช…์„œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด์ขŒ๊ด€ ๋ฌธ์„œ.

๊ณผ์ •์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

์ถœ์ฒ˜ : habr.com

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