Squid 5 ํ”„๋ก์‹œ ์„œ๋ฒ„์˜ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค

5.1๋…„๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— Squid 5.0 ํ”„๋ก์‹œ ์„œ๋ฒ„์˜ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ถœ์‹œ๋˜์–ด ํ”„๋กœ๋•์…˜ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋ฆด๋ฆฌ์Šค 5.x๋Š” ๋ฒ ํƒ€ ๋ฒ„์ „ ์ƒํƒœ์˜€์Šต๋‹ˆ๋‹ค). 6.0.x ๋ธŒ๋žœ์น˜์— ์•ˆ์ •์ ์ธ ์ƒํƒœ๊ฐ€ ๋ถ€์—ฌ๋œ ํ›„์—๋Š” ์ด์ œ๋ถ€ํ„ฐ ์ทจ์•ฝ์ ๊ณผ ์•ˆ์ •์„ฑ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ •๋งŒ ์ด๋ฃจ์–ด์ง€๋ฉฐ ์‚ฌ์†Œํ•œ ์ตœ์ ํ™”๋„ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์€ ์ƒˆ๋กœ์šด ์‹คํ—˜ ๋ถ„๊ธฐ 4์—์„œ ์ˆ˜ํ–‰๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ด์ „์˜ ์•ˆ์ •์ ์ธ 5.x ๋ถ„๊ธฐ ์‚ฌ์šฉ์ž๋Š” XNUMX.x ๋ถ„๊ธฐ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๊ณ„ํš์„ ์„ธ์šฐ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Squid 5์˜ ์ฃผ์š” ํ˜์‹  ์‚ฌํ•ญ:

  • ์™ธ๋ถ€ ์ฝ˜ํ…์ธ  ๊ฒ€์ฆ ์‹œ์Šคํ…œ๊ณผ์˜ ํ†ตํ•ฉ์— ์‚ฌ์šฉ๋˜๋Š” ICAP(์ธํ„ฐ๋„ท ์ฝ˜ํ…์ธ  ์ ์‘ ํ”„๋กœํ† ์ฝœ)์˜ ๊ตฌํ˜„์—๋Š” ๋ฐ์ดํ„ฐ ์ฒจ๋ถ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜(์˜ˆ๊ณ ํŽธ)์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€ ๋’ค์— ๋ฐฐ์น˜๋œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ถ”๊ฐ€ ํ—ค๋”๋ฅผ ์‘๋‹ต์— ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ™•์ธ๋œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ฒดํฌ์„ฌ๊ณผ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์š”์ฒญ์„ ๋ฆฌ๋””๋ ‰์…˜ํ•  ๋•Œ ์ž ์žฌ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  IPv4 ๋ฐ IPv6 ๋Œ€์ƒ ์ฃผ์†Œ๊ฐ€ ํ™•์ธ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ˆ˜์‹ ๋œ IP ์ฃผ์†Œ๋ฅผ ์ฆ‰์‹œ ์‚ฌ์šฉํ•˜๋Š” "Happy Eyeballs" ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. IPv4 ๋˜๋Š” IPv4 ์ฃผ์†Œ ๊ณ„์—ด์ด ์‚ฌ์šฉ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด "dns_v6_first" ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์ด์ œ DNS ์‘๋‹ต ์ˆœ์„œ๊ฐ€ ๊ณ ๋ ค๋ฉ๋‹ˆ๋‹ค. IP ์ฃผ์†Œ๊ฐ€ ํ™•์ธ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ๋•Œ DNS AAAA ์‘๋‹ต์ด ๋จผ์ € ๋„์ฐฉํ•˜๋ฉด ๊ฒฐ๊ณผ IPv6 ์ฃผ์†Œ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ ํ˜ธํ•˜๋Š” ์ฃผ์†Œ๊ตฐ ์„ค์ •์€ ์ด์ œ "--disable-ipv6" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฉํ™”๋ฒฝ, DNS ๋˜๋Š” ์‹œ์ž‘ ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ์„ ํ†ตํ•ด TCP ์—ฐ๊ฒฐ ์„ค์ • ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๊ณ  DNS ํ™•์ธ ์ค‘ ์ง€์—ฐ์ด ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • "external_acl" ์ง€์‹œ๋ฌธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Kerberos๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Active Directory์—์„œ ๊ทธ๋ฃน ํ™•์ธ์„ ํ†ตํ•œ ์ธ์ฆ์„ ์œ„ํ•ด "ext_kerberos_sid_group_acl" ์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฃน ์ด๋ฆ„์„ ์ฟผ๋ฆฌํ•˜๋ ค๋ฉด OpenLDAP ํŒจํ‚ค์ง€์—์„œ ์ œ๊ณตํ•˜๋Š” ldapsearch ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • Berkeley DB ํ˜•์‹์— ๋Œ€ํ•œ ์ง€์›์€ ๋ผ์ด์„ผ์Šค ๋ฌธ์ œ๋กœ ์ธํ•ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Berkeley DB 5.x ๋ธŒ๋žœ์น˜๋Š” ์ˆ˜๋…„ ๋™์•ˆ ์œ ์ง€ ๊ด€๋ฆฌ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ํŒจ์น˜๋˜์ง€ ์•Š์€ ์ทจ์•ฝ์ ์ด ๋‚จ์•„ ์žˆ์œผ๋ฉฐ, AGPLv3์— ๋Œ€ํ•œ ๋ผ์ด์„ ์Šค ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ์ตœ์‹  ๋ฆด๋ฆฌ์Šค๋กœ์˜ ์ „ํ™˜์ด ๋ฐฉ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด ์š”๊ตฌ ์‚ฌํ•ญ์€ BerkeleyDB๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - Squid๋Š” GPLv2 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ์ œ๊ณต๋˜๋ฉฐ AGPL์€ GPLv2์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Berkeley DB ๋Œ€์‹  TrivialDB DBMS๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด์ „๋˜์—ˆ์Šต๋‹ˆ๋‹ค. TrivialDB DBMS๋Š” Berkeley DB์™€ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋™์‹œ ๋ณ‘๋ ฌ ์•ก์„ธ์Šค์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Berkeley DB ์ง€์›์€ ํ˜„์žฌ ์œ ์ง€๋˜์ง€๋งŒ "ext_session_acl" ๋ฐ "ext_time_quota_acl" ํ•ธ๋“ค๋Ÿฌ๋Š” ์ด์ œ "libdb" ๋Œ€์‹  "libtdb" ์ €์žฅ์†Œ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • RFC 8586์— ์ •์˜๋œ CDN-Loop HTTP ํ—ค๋”์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ˜ํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฃจํ”„๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํ—ค๋”๋Š” CDN ๊ฐ„์— ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ์š”์ฒญ์ด ์–ด๋–ค ์ด์œ ๋กœ๋“  ๋‹ค์‹œ ๋ฐ˜ํ™˜๋˜๋Š” ์ƒํ™ฉ์— ๋Œ€ํ•œ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค). ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ํ˜•์„ฑํ•˜๋Š” ์›๋ณธ CDN).
  • ์•”ํ˜ธํ™”๋œ HTTPS ์„ธ์…˜์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ๋Š” SSL-Bump ๋ฉ”์ปค๋‹ˆ์ฆ˜์—๋Š” HTTP CONNECT ๋ฉ”์„œ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ผ๋ฐ˜ ํ„ฐ๋„์„ ์‚ฌ์šฉํ•˜์—ฌ ์บ์‹œ_ํ”ผ์–ด์— ์ง€์ •๋œ ๋‹ค๋ฅธ ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์Šคํ‘ธํ•‘(์žฌ์•”ํ˜ธํ™”)๋œ HTTPS ์š”์ฒญ์„ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค( Squid๋Š” ์•„์ง TLS ๋‚ด์—์„œ TLS๋ฅผ ์ „์†กํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— HTTPS๋ฅผ ํ†ตํ•œ ์ „์†ก์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. SSL-Bump๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฒ˜์Œ์œผ๋กœ ๊ฐ€๋กœ์ฑ„๋Š” HTTPS ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๋ฉด ๋Œ€์ƒ ์„œ๋ฒ„์™€ TLS ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  ํ•ด๋‹น ์ธ์ฆ์„œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ Squid๋Š” ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ์‹ค์ œ ์ธ์ฆ์„œ์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ณ  ๋”๋ฏธ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ๋•Œ ์š”์ฒญํ•œ ์„œ๋ฒ„๋ฅผ ๋ชจ๋ฐฉํ•˜๋Š” ๋™์‹œ์— ๋Œ€์ƒ ์„œ๋ฒ„์™€ ์„ค์ •๋œ TLS ์—ฐ๊ฒฐ์„ ๊ณ„์† ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ฒด๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ธŒ๋ผ์šฐ์ €์— ์ถœ๋ ฅ ๊ฒฝ๊ณ ๋กœ ์ด์–ด์ง€์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด ๊ฐ€์ƒ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ ์ธ์ฆ์„œ๋ฅผ ๋ฃจํŠธ ์ธ์ฆ์„œ ์ €์žฅ์†Œ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Netfilter ํ‘œ์‹œ(CONNMARK)๋ฅผ ํด๋ผ์ด์–ธํŠธ TCP ์—ฐ๊ฒฐ ๋˜๋Š” ๊ฐœ๋ณ„ ํŒจํ‚ท์— ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ ์œ„ํ•ด mark_client_connection ๋ฐ mark_client_pack ์ง€์‹œ๋ฌธ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์— ๋’ค์ด์–ด Squid 5.2์™€ Squid 4.17์ด ์ถœ์‹œ๋˜์–ด ์ทจ์•ฝ์ ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • CVE-2021-28116 - ํŠน์ˆ˜ ์ œ์ž‘๋œ WCCPv2 ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ •๋ณด๊ฐ€ ์œ ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ๊ณต๊ฒฉ์ž๋Š” ์•Œ๋ ค์ง„ WCCP ๋ผ์šฐํ„ฐ ๋ชฉ๋ก์„ ์†์ƒ์‹œํ‚ค๊ณ  ํ”„๋ก์‹œ ์„œ๋ฒ„ ํด๋ผ์ด์–ธํŠธ์—์„œ ํ•ด๋‹น ํ˜ธ์ŠคํŠธ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ฆฌ๋””๋ ‰์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” WCCPv2 ์ง€์›์ด ํ™œ์„ฑํ™”๋œ ๊ตฌ์„ฑ๊ณผ ๋ผ์šฐํ„ฐ์˜ IP ์ฃผ์†Œ ์Šคํ‘ธํ•‘์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
  • CVE-2021-41611 - TLS ์ธ์ฆ์„œ ํ™•์ธ ๋ฌธ์ œ๋กœ ์ธํ•ด ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•œ ์•ก์„ธ์Šค๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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