SELinux ์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ

SELinux ์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ

์ˆ˜๊ฐ•์ƒ์„ ์œ„ํ•ด ์ค€๋น„ํ•œ ๊ธฐ์‚ฌ ๋ฒˆ์—ญ "๋ฆฌ๋ˆ…์Šค ๋ณด์•ˆ"

SELinux ๋˜๋Š” Security Enhanced Linux๋Š” ์•…์˜์ ์ธ ์นจ์ž…์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๊ตญ NSA(๊ตญ๊ฐ€ ์•ˆ๋ณด๊ตญ)์—์„œ ๊ฐœ๋ฐœํ•œ ํ–ฅ์ƒ๋œ ์•ก์„ธ์Šค ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ์ž„์˜(๋˜๋Š” ์„ ํƒ) ๋ชจ๋ธ(English Discretionary Access Control, DAC) ์œ„์— ๊ฐ•์ œ(๋˜๋Š” ํ•„์ˆ˜) ์•ก์„ธ์Šค ์ œ์–ด ๋ชจ๋ธ(English Mandatory Access Control, MAC), ์ฆ‰ ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‹คํ–‰ ๊ถŒํ•œ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

SELinux์—๋Š” ์„ธ ๊ฐ€์ง€ ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์‹œํ–‰ โ€” ์ •์ฑ… ๊ทœ์น™์— ๋”ฐ๋ผ ์•ก์„ธ์Šค๊ฐ€ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.
  2. ๊ด€๋Œ€ํ•œ โ€” ์‹œํ–‰ ๋ชจ๋“œ์—์„œ๋Š” ๊ธˆ์ง€๋˜๋Š” ์ •์ฑ…์„ ์œ„๋ฐ˜ํ•˜๋Š” ํ–‰์œ„์— ๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  3. ์žฅ์• ์ธ โ€” SELinux๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. /etc/selinux/config

SELinux ๋ชจ๋“œ ๋ณ€๊ฒฝ

ํ˜„์žฌ ๋ชจ๋“œ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์„ธ์š”.

$ getenforce

๋ชจ๋“œ๋ฅผ ํ—ˆ์šฉ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

$ setenforce 0

๋˜๋Š” ๋ชจ๋“œ๋ฅผ ๋‹ค์Œ์—์„œ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๊ด€๋Œ€ ํ•œ ์— ์‹œํ–‰, ์‹คํ–‰ํ•˜๋‹ค

$ setenforce 1

SELinux๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํ†ตํ•ด์„œ๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ vi /etc/selinux/config

๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด SELINUX ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.

SELINUX=disabled

SELinux ์„ค์ •

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

$ vi /etc/selinux/config
SELINUX=permissive

๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•œ ํ›„ ๊ด€๋Œ€ ํ•œ, ๋ฃจํŠธ์— ๋‹ค์Œ ์ด๋ฆ„์˜ ๋นˆ ์ˆจ๊ฒจ์ง„ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. autorelabel

$ touch /.autorelabel

๊ทธ๋ฆฌ๊ณ  ์ปดํ“จํ„ฐ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์„ธ์š”

$ init 6

์ฐธ๊ณ : ์šฐ๋ฆฌ๋Š” ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค ๊ด€๋Œ€ ํ•œ ๋งˆํ‚น์šฉ, ๋ชจ๋“œ ์‚ฌ์šฉ ์ดํ›„ ์‹œํ–‰ ์žฌ๋ถ€ํŒ…ํ•˜๋Š” ๋™์•ˆ ์‹œ์Šคํ…œ์ด ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ํŒŒ์ผ์—์„œ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ๊ฒฝ์šฐ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ํ‘œ์‹œ๊ฐ€ ์™„๋ฃŒ๋˜๊ณ  ์‹œ์Šคํ…œ์ด ๋ถ€ํŒ…๋˜๋ฉด ๊ตฌ์„ฑ ํŒŒ์ผ๋กœ ์ด๋™ํ•˜์—ฌ ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์‹œํ–‰๋˜ํ•œ ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ setenforce 1

์ด์ œ ์ปดํ“จํ„ฐ์—์„œ SELinux๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง

ํ‘œ์‹œํ•˜๋Š” ๋™์•ˆ์ด๋‚˜ ์‹œ์Šคํ…œ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ผ๋ถ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SELinux๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ํฌํŠธ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋กœ๊ทธ๋ฅผ ์‚ดํŽด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SELinux ๋กœ๊ทธ๋Š” ๋‹ค์Œ ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค. /var/log/audit/audit.log, ๊ทธ๋Ÿฌ๋‚˜ ์˜ค๋ฅ˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์ „์ฒด ๋‚ด์šฉ์„ ์ฝ์„ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. audit2why ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

$ audit2why < /var/log/audit/audit.log

๊ฒฐ๊ณผ์ ์œผ๋กœ ์˜ค๋ฅ˜ ๋ชฉ๋ก์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์— ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉด ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

SELinux ์ •์ฑ… ๊ตฌ์„ฑ

SELinux ์ •์ฑ…์€ SELinux ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ทœ์น™ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ์ •์ฑ…์€ ํŠน์ • ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๊ทœ์น™ ์ง‘ํ•ฉ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ธˆ์ง€๋œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๋Š” ์ •์ฑ…์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ๋…ผ๋ฆฌ๊ฐ’(์Šค์œ„์น˜)

์Šค์œ„์น˜(๋ถ€์šธ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒˆ ์ •์ฑ…์„ ์ƒ์„ฑํ•  ํ•„์š” ์—†์ด ๋Ÿฐํƒ€์ž„ ์‹œ ์ •์ฑ…์˜ ์ผ๋ถ€๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SELinux ์ •์ฑ…์„ ์žฌ๋ถ€ํŒ…ํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š๊ณ ๋„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ
FTP ์ฝ๊ธฐ/์“ฐ๊ธฐ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋ ค๊ณ  ํ•˜๊ณ  ์ด๋ฏธ ๊ณต์œ ํ–ˆ์ง€๋งŒ ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์•„๋ฌด๊ฒƒ๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋Š” SELinux ์ •์ฑ…์ด FTP ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. FTP ์„œ๋ฒ„๊ฐ€ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •์ฑ…์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ด๋ฅผ ์œ„ํ•œ ์Šค์œ„์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

$ semanage boolean -l

์ด ๋ช…๋ น์€ ํ˜„์žฌ ์ƒํƒœ(์ผœ์ง ๋˜๋Š” ๊บผ์ง) ๋ฐ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šค์œ„์น˜๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. FTP ์ „์šฉ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด grep์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฒ€์ƒ‰์„ ๊ตฌ์ฒดํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ semanage boolean -l | grep ftp

๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ ๋‹ค์Œ์„ ์ฐพ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

์ด ์Šค์œ„์น˜๋Š” ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ์„ฑํ™”ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. setsebool $ setsebool ftp_home_dir on

์ด์ œ ์šฐ๋ฆฌ์˜ ftp ๋ฐ๋ชฌ์€ ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ฐธ๊ณ : ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์„ค๋ช… ์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šค์œ„์น˜ ๋ชฉ๋ก์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. getsebool -a

2. ๋ผ๋ฒจ๊ณผ ๋งฅ๋ฝ

์ด๋Š” SELinux ์ •์ฑ…์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒŒ์ผ, ํด๋”, ํ”„๋กœ์„ธ์Šค ๋ฐ ํฌํŠธ๋Š” SELinux ์ปจํ…์ŠคํŠธ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  • ํŒŒ์ผ ๋ฐ ํด๋”์˜ ๊ฒฝ์šฐ ๋ ˆ์ด๋ธ”์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ํ™•์žฅ ์†์„ฑ์œผ๋กœ ์ €์žฅ๋˜๋ฉฐ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    $ ls -Z /etc/httpd
  • ํ”„๋กœ์„ธ์Šค ๋ฐ ํฌํŠธ์˜ ๊ฒฝ์šฐ ๋ ˆ์ด๋ธ” ์ง€์ •์€ ์ปค๋„์—์„œ ๊ด€๋ฆฌ๋˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋Ÿฌํ•œ ๋ ˆ์ด๋ธ”์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ•

$ ps โ€“auxZ | grep httpd

ํ•ญ๊ตฌ

$ netstat -anpZ | grep httpd

์˜ˆ
์ด์ œ ๋ ˆ์ด๋ธ”๊ณผ ์ปจํ…์ŠคํŠธ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ ๋Œ€์‹  ์›น ์„œ๋ฒ„๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. /var/www/html/ ะธัะฟะพะปัŒะทัƒะตั‚ /home/dan/html/. SELinux๋Š” ์ด๋ฅผ ์ •์ฑ… ์œ„๋ฐ˜์œผ๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ์›นํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” HTML ํŒŒ์ผ๊ณผ ๊ด€๋ จ๋œ ๋ณด์•ˆ ์ปจํ…์ŠคํŠธ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ณด์•ˆ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

$ ls โ€“lz /var/www/html
 -rw-rโ€”rโ€”. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

์—ฌ๊ธฐ ์žˆ์–ด์š” httpd_sys_content_t HTML ํŒŒ์ผ์˜ ์ปจํ…์ŠคํŠธ๋กœ. ํ˜„์žฌ ๋‹ค์Œ ์ปจํ…์ŠคํŠธ๊ฐ€ ์žˆ๋Š” ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•ด ์ด ๋ณด์•ˆ ์ปจํ…์ŠคํŠธ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

-rw-rโ€”rโ€”. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

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

$ semanage fcontext -l | grep '/var/www'

๋˜ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๋ณด์•ˆ ์ปจํ…์ŠคํŠธ๋ฅผ ์ฐพ์œผ๋ฉด semanage๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. /home/dan/html์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

$ semanage fcontext -a -t httpd_sys_content_t โ€˜/home/dan/html(/.*)?โ€™
$ semanage fcontext -l | grep โ€˜/home/dan/htmlโ€™
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html

semanage๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋ณ€๊ฒฝ๋œ ํ›„, Restorecon ๋ช…๋ น์€ ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ปจํ…์ŠคํŠธ๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์›น ์„œ๋ฒ„๊ฐ€ ํด๋”์—์„œ ํŒŒ์ผ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. /home/dan/html์ด ํด๋”์˜ ๋ณด์•ˆ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋‹ค์Œ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. httpd_sys_content_t.

3. ๋กœ์ปฌ ์ •์ฑ… ๋งŒ๋“ค๊ธฐ

์œ„ ๋ฐฉ๋ฒ•์ด ์†Œ์šฉ์ด ์—†๊ณ  audit.log์— ์˜ค๋ฅ˜(avc/denial)๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋กœ์ปฌ ์ •์ฑ…์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ audit2why๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋กœ์ปฌ ์ •์ฑ…์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด httpd(apache) ๋˜๋Š” smbd(samba)์™€ ๊ด€๋ จ๋œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ค๋ฅ˜๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์ •์ฑ…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy

์—ฌ๊ธฐ์— http_policy ะธ smb_policy ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ๋กœ์ปฌ ์ •์ฑ…์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด์ œ ์ƒ์„ฑ๋œ ๋กœ์ปฌ ์ •์ฑ…์„ ํ˜„์žฌ SELinux ์ •์ฑ…์— ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ semodule โ€“I http_policy.pp
$ semodule โ€“I smb_policy.pp

๋กœ์ปฌ ์ •์ฑ…์ด ๋‹ค์šด๋กœ๋“œ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋” ์ด์ƒ audit.log์—์„œ avc ๋˜๋Š” denail์„ ์ˆ˜์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ SELinux๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๊ธฐ ์œ„ํ•œ ๋‚˜์˜ ์‹œ๋„์˜€์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๋ฅผ ์ฝ์€ ํ›„์—๋Š” SELinux์— ๋Œ€ํ•ด ์ข€ ๋” ์ต์ˆ™ํ•ด์ง€๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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