๐Ÿ“‚๋„คํŠธ์›Œํฌ&์„œ๋ฒ„/๐Ÿง๋ฆฌ๋ˆ…์Šค(Linux)

33์ผ์ฐจ(3.30) chroot(change root) chcon(change context)๊ณผ restorecon SetUID, SetGID, ๊ทธ๋ฆฌ๊ณ  Sticky bit

๐Ÿ‘ฉ‍๐ŸŽ“์ธํ…”๋ฆฌ๊ฐ์ž๐Ÿฅ” 2023. 4. 10. 18:39

  chroot(change root) 
  ๊ด€๋ฆฌ์ž๋Š” ์„œ๋ฒ„ ์‹œ์Šคํ…œ์— FTP๋‚˜ HTTP, NFS ๋“ฑ์˜ ์„œ๋ฒ„ ์„œ๋น„์Šค๋ฅผ ์„ค์ •ํ•ด๋‘๊ณ , ํด๋ผ์ด์–ธํŠธ๋“ค์ด FTP๋‚˜ Telnet, SSH, HTTP ๋“ฑ์œผ๋กœ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•ด์„œ ํŒŒ์ผ์„ ์—…/๋‹ค์šด๋กœ๋“œํ•˜๊ฒŒ ํ•˜๋Š”๋ฐ FTP ์„œ๋ฒ„์ธ ๊ฒฝ์šฐ FTP ์„œ๋ฒ„์˜ ์˜คํ”ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ /var/ftpd/pub ๋””๋ ‰ํ„ฐ๋ฆฌ, HTTP์ธ ๊ฒฝ์šฐ /var/www/html ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋“ค์–ด์™€์„œ cd ../๋‚˜ ls ../ ํ•ด์„œ ์˜คํ”ˆ๋œ pub๋‚˜ html ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์‚ดํŽด๋ณด๊ฒŒ ํ•˜๋ฉด ๋ณด์•ˆ์ƒ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. 
  ์ด๋Ÿด ๋•Œ chroot๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด ๋ช…๋ น์–ด๋Š” ์–ด๋Š ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€์ƒ์˜ ์ตœ์ƒ์œ„ / ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋งŒ๋“ค์–ด์„œ cd ../ ํ–ˆ์„ ๋•Œ ๋” ์ด์ƒ ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•ด์„œ ๋ณด์•ˆ์„ ์ฆ์ง„์‹œํ‚จ๋‹ค. 

 

์•ฝํ™”๋˜์—ˆ๋‹ค.

SFTP๋Š” ํŒŒ์ผ ์ „์†ก์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด์ง€๋งŒ, SSH ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฏ€๋กœ, SFTP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ผ ์ „์†ก๋ฟ๋งŒ ์•„๋‹ˆ๋ผ SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ์— ์ ‘์†ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ, SFTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ SFTP ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ์— ์ ‘์†ํ•˜๊ณ  ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SFTP ํด๋ผ์ด์–ธํŠธ๋Š” ํ˜ธ์ŠคํŠธ์— ์ ‘์†ํ•˜์—ฌ ํŒŒ์ผ ์ „์†ก์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด์ง€๋งŒ, SSH ํด๋ผ์ด์–ธํŠธ์˜ ์ผ๋ถ€๋กœ ์ œ๊ณต๋˜๋ฏ€๋กœ, SSH ํด๋ผ์ด์–ธํŠธ๋กœ ํ˜ธ์ŠคํŠธ์— ์ ‘์†ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, ํ˜ธ์ŠคํŠธ์— ์ ‘์†ํ•˜๋ ค๋ฉด SSH ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ด์–ด์•ผ ํ•˜๊ณ , ํ˜ธ์ŠคํŠธ์—์„œ SSH ์ ‘์†์„ ํ—ˆ์šฉํ•˜๋Š” ์„ค์ •์ด ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, SFTP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ๊ด€๋ฆฌ ๊ถŒํ•œ๊ณผ SSH ์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 chroot(change root)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋” ์ด์ƒ ํŒŒ์ผ์„ ๋ณด์ง€ ๋ชปํ•˜๋„๋ก ํ•ด๋ณด๊ฒ ๋‹ค...!!

 

 

ํ•ด๋‹น ๋ช…๋ น์–ด๋Š” "tester"๋ผ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ "/ftp"๋กœ ์ง€์ •ํ•˜๋ฉฐ, ๋กœ๊ทธ์ธ ์‰˜์„ "/sbin/nologin"์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ "-d" ์˜ต์…˜์€ ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. "-s" ์˜ต์…˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•  ๋•Œ ์‚ฌ์šฉํ•  ์‰˜์„ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. "/sbin/nologin"์€ ๋กœ๊ทธ์ธ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์‰˜๋กœ, ์ด๋ฅผ ์ง€์ •ํ•จ์œผ๋กœ์จ ํ•ด๋‹น ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ, ์œ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด "tester"๋ผ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , ํ•ด๋‹น ์‚ฌ์šฉ์ž๋Š” "/ftp" ๋””๋ ‰ํ† ๋ฆฌ์— ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ•ด๋‹น ์‚ฌ์šฉ์ž๋Š” ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์—†๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ  ๊ฐ€์ž…ํžˆ์ผœ์ฃผ๊ณ  ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ, tester์ž๊ธฐ์ž์‹ ๊ณผ sftp-group์— ์†ํ•ด์žˆ๋‹ค.

 

cp -arp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak (SSH ์„œ๋ฒ„์˜ ์„ค์ • ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์„œ ๋ฐฑ์—…)

gedit /etc/ssh/sshd_config

 

/usr/libexec/openssh/sftp-server -> internal-sftp

Subsystem sftp internal-sftp
Match Group     sftp-group
ChrootDirectory /secure/%u
ForceCommand    internal-sftp

 

ChrootDirectory /secure/%u ์‚ฌ์šฉ์ž 

 

์•„๊นŒ ๋ฐฐ์šด ๊ฐœ๋…

 ์ด๋Ÿด ๋•Œ chroot๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด ๋ช…๋ น์–ด๋Š” ์–ด๋Š ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€์ƒ์˜ ์ตœ์ƒ์œ„ / ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋งŒ๋“ค์–ด์„œ cd ../ ํ–ˆ์„ ๋•Œ ๋” ์ด์ƒ ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•ด์„œ ๋ณด์•ˆ์„ ์ฆ์ง„์‹œํ‚จ๋‹ค. 

์ฆ‰, secure๋ฅผ /๋กœ ์ธ์‹ํ•˜๊ฒŒ ํ•ด์„œ ๋” ์ด์ƒ ์ด๋™ ๋ชปํ•˜๊ฒŒ ํ•ด์„œ ๋ณด์•ˆ์„ ์ฆ์ง„์‹œํ‚จ๋‹ค.

 

[root@centos1 centos]# mkdir -p /secure/ftp
[root@centos1 centos]# ls -dl /secure/ftp
drwxr-xr-x. 2 root root 6 Apr  7 11:54 /secure/ftp

[root@centos1 centos]# chown tester:sftp-group /secure/ftp

"/secure/ftp" ๋””๋ ‰ํ† ๋ฆฌ์˜ ์†Œ์œ ์ž๋ฅผ "tester"๋กœ, ๊ทธ๋ฃน์„ "sftp-group"์œผ๋กœ ๋ณ€๊ฒฝ

[root@centos1 centos]# service sshd restart

 

์•— ์—ฐ๊ฒฐ์ด... ์•ˆ๋œ๋‹ค?

 

์—ฐ๊ฒฐ์ด ๋๋‹ค!

ftp์—์„œ cd ..๋กœ ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๊ฐ€์„œ pwd ํ•˜๋ฉด /๋กœ ๋งˆ์น˜ /๋กœ ๊ฐ„ ๊ฒƒ ๊ฐ™์ด ๋ณด์ด์ง€๋งŒ ls ํ•˜๋ฉด ftp ๋ฐ–์— ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ /์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์€ ์•„๊นŒ ๋ดค๋˜

์ด ํŒŒ์ผ๋“ค์ด๋‹ค. 

๊ฐ€์งœ ์ž‘๋Œ€๊ธฐ ๋ฃจํŠธ๋‹ค.

secure/tester/ftp ์ธ๋ฐ secure์„ ๊ฐ€์ง€๋„ ๋ชปํ•œ๋‹ค.

 


  chcon(change context)๊ณผ restorecon 
  ์ด chcon ๋ช…๋ น์–ด๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ์กด ํ˜น์€ ์‹ ๊ทœ ํŒŒ์ผ B์˜ ๋ณด์•ˆ์„ค์ •์„ ๊ธฐ์กด ํŒŒ์ผ A์˜ ๋ณด์•ˆ์„ค์ •์„ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์ฐธ์กฐํ•˜๊ฒŒ ํ•ด์„œ ํŒŒ์ผ B์˜ ๋ณด์•ˆ ์†์„ฑ์„ค์ •์ด ํŒŒ์ผ A์˜ ๋ณด์•ˆ ์†์„ฑ์„ค์ •๊ณผ ๋™์ผํ•˜๊ฒŒ ์„ค์ •๋˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ๋ณด์•ˆ ์†์„ฑ์„ค์ • ํ™•์ธ์€ 'ls –lZ|dZ ํŒŒ์ผ/๋””๋ ‰ํ„ฐ๋ฆฌ_๋ช…'์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ธฐ๋ฒ•์€ SELinux๋ฅผ enforcing์œผ๋กœ ํ•ด๋‘์–ด๋„ ์ฝ˜ํ…์ŠคํŠธ๊ฐ€ ๋งž์œผ๋ฉด ์™ธ๋ถ€์—์„œ ์„œ๋ฒ„๋กœ ์ ‘์†๋˜๊ฒŒ ํ•ด์ค€๋‹ค. 
  ๊ทธ๋ฆฌ๊ณ  restorecon์€ ์ด๋ฆ„๋Œ€๋กœ ๋ณ€๊ฒฝ๋œ ๋ณด์•ˆ context ์†์„ฑ์„ ์›๋ž˜๋Œ€๋กœ ๋ณต๊ตฌํ•ด์ค€๋‹ค.

  chcon(change context) 
  ์ด ๋ช…๋ น์–ด๋Š” SELinux๋กœ ๋ณด์•ˆ์„ ์„ค์ • ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ๋’ค์—์„œ SELinux๋ฅผ ์‹ค์Šตํ•  ๋•Œ ์ด chcon ๋ช…๋ น์–ด๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. ๋ถˆํŽธํ•˜๋‹ค๋Š” ์ด์œ ๋กœ SELinux ์„ค์ •์„ ๋””ํดํŠธ enforcing์—์„œ permissive๋‚˜ disabled๋กœ ํ•ด๋‘๊ณ  ์„œ๋ฒ„ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋Š”๋ฐ, ํ•„์š”ํ•ด์„œ ๊ฐœ๋ฐœ๋œ SELinux ๋ณด์•ˆ์„ค์ •์„ ๋ฌด์‹œํ•˜๊ณ  ์‹œ์Šคํ…œ์„ ์šด์˜ํ•˜๋Š” ๊ฒƒ๋„ ์‚ฌ์‹ค ์ž˜๋ชป๋œ ๊ฒƒ์ด๋‹ค
  ์˜ˆ๋ฅผ ๋“ค์–ด ์›น ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•œ๋‹ค๋ฉด ๊ฐ์ข… ํŒŒ์ผ์ด ์žˆ๋Š” ์›น ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด ์›น ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ณด์•ˆ์„ค์ •์„ SELinux๊ฐ€ enforcing์ธ ์ƒํƒœ์˜ ๋ณด์•ˆ ์„ค์ •์— ๋งž๊ฒŒ ๋ณ€๊ฒฝํ•ด ์ฃผ๋ฉด ์›น ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋œ ์ƒํƒœ์—์„œ๋„ ์ž˜ ์šด์˜๋  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ์ ‘์†ํ•˜๋Š” ์‚ฌ์šฉ์ž๋„ ์ด ๋ณด์•ˆ ์„ค์ •์— ๋งž์•„์•ผ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

getsebool -a |head ํ•ด์„œ ๋ณด์•˜์„ ๋•Œ on์œผ๋กœ ๋˜์–ด ์žˆ์œผ๋ฉด SELinux ์„ค์ •(Context)๊ณผ ์ผ์น˜๋˜์–ด์•ผ ํ•ด๋‹น ์„œ๋น„์Šค๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค. off๋ฉด SELinux ์„ค์ •๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ์„œ๋น„์Šค์‚ฌ ์‹คํ–‰๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. 
 

[root@centos1 centos]# getsebool -a |grep ftp_home_dir
tftp_home_dir --> off

ftp ์—ฐ๊ฒฐ ์‹œ ๋””ํดํŠธ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋“ค์–ด์˜ค์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

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

 

[root@centos1 centos]# getsebool -a |grep mount_anyfile
mount_anyfile --> on

์–ด๋Š ์žฅ์น˜๋“ ์ง€ ๋งˆ์šดํŠธ ํ•  ๋•Œ๋Š” SE๋ฆฌ๋ˆ…์Šค๊ฐ€ ๋ณด์•ˆ์„ค์ •(context)์™€ ์ผ์น˜๋˜์–ด์•ผ ํ•œ๋‹ค.

 

 

 ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์›น์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ํ™ˆ ํŽ˜์ด์ง€๋ฅผ ๋ณด๋Š” /var/www/html/index.html ์ด ์žˆ๋Š” ๊ณณ์— SELinux๋ฅผ Enforcing์œผ๋กœ ํ•ด๋‘๋ฉด ์ด ๊ถŒํ•œ Context(ls -dZ /var/www/html/์œผ๋กœ ํ™•์ธ)์— ๋งž๋Š” ์‚ฌ์šฉ์ž๋งŒ ๋“ค์–ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์ผ ์ด Context ๊ถŒํ•œ์„ ๋ฌด์‹œํ•˜๊ณ  ๋“ค์–ด์˜ค๋ ค๋ฉด SELinux๋ฅผ Permissive/Disabled๋กœ ํ•ด๋‘๋ฉด ๋œ๋‹ค.

 

์‹ค์Šต

๋ฐฉํ™”๋ฒฝ http, https๋ฅผ ์—ด๊ณ 

yum -y install httpd httpd-manual

cp -arp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak(๋ณต์‚ฌํ•ด์„œ ๋ฐฑ์—…)

gedit /etc/httpd/conf/httpd.conf


  ์›น ์„œ๋ฒ„ httpd์˜ ๋ฉ”์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” /etc/httpd/conf/์ด๋‹ค. ์—ฌ๊ธฐ์— ๋ฉ”์ธ ์„ค์ •ํŒŒ์ผ httpd.conf ํŒŒ์ผ์ด ๋“ค์–ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ /etc/httpd/conf.d/ ๋””๋ ‰ํ„ฐ๋ฆฌ๋„ ์žˆ์–ด์„œ ์ฃผ์˜ํ•ด์•ผ ํ•˜๋Š”๋ฐ
sed –n ‘353p’ /etc/httpd/conf/httpd.conf ํ•ด์„œ ํ™•์ธํ•˜๋ฉด 
353์ค„ IncludeOptional conf.d/*.conf ์ง€์‹œ์–ด๋กœ ์ธํ•ด์„œ ๋ฉ”์ธ์ด ์•„๋‹Œ /etc/httpd/conf.d/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— *.conf ํŒŒ์ผ์„ ๋„ฃ์–ด๋‘๋ฉด ๋ฉ”์ธ ์„ค์ •ํŒŒ์ผ /etc/httpd/conf/httpd.conf๊ฐ€ ์ด๋“ค์„ ๋ถˆ๋Ÿฌ ์˜ฌ๋ ค์„œ ํ•จ๊ป˜ ์‹คํ–‰ํ•œ๋‹ค. 
/etc/httpd/conf.d/ ์•„๋ž˜์— *.conf ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋‘๋ฉด ๋ชจ๋“  ์„ค์ •์ด ๋ฉ”์ธ ์„ค์ • ํŒŒ์ผ์— ์ง‘์ค‘๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์›น ์„œ๋ฒ„ ์‹คํ–‰์ด ๋ฌด๊ฒ์ง€ ์•Š๊ณ , ๋‹ค์–‘ํ•  ์„ค์ •์„ ๊ฐ๊ฐ ๋ชจ๋“ˆ๋ณ„๋กœ ์„ค์ •ํ•ด๋‘˜ ์ˆ˜๋„ ์žˆ์–ด์„œ ๋งค์šฐ ์œ ์—ฐํ•˜๊ฒŒ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ๋กœ ๋ณ„๋„๋กœ ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ๋‹ค.  

 

๋ฉ”์ธ์—๋‹ค ํ•œ๋‹ค๋ฉด

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋  ๊ฒƒ์ด๋‹ค!!

 

[root@centos1 centos]# apachectl configtest
Syntax OK

 

์˜ค๋ฅ˜๊ฐ€ ์—†๋‹ค.

 

echo "<h1>This is main web page</h1>" > /var/www/html/index.html ์›นํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

 

๋ฐฑํŠธ๋ž™์—์„œ ์ ‘์†

 

 

๋‹ค์‹œ ์‹ค์Šต

์›น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์›น ๋ฐ‘์— ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

enforcing์ด๋ผ์„œ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋‹ค.

๋“ค์–ด๊ฐ€์ง„๋‹ค.

 


ํ˜„์žฌ ๋””ํดํŠธ /var/www/html/index.html  ํ™ˆํ”ผ ํŒŒ์ผ์„ SELinux๋ฅผ enforcing์œผ๋กœ ํ•ด ๋‘” ์ƒํƒœ์—์„œ๋„ ์™ธ๋ถ€์—์„œ ์ž˜ ๋“ค์–ด ์™”๋‹ค.
์ด์–ด์„œ  ๋ณ„๋„์˜ /etc/httpd/conf.d/web ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํ™ˆํ”ผ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋“ค์–ด๊ฐ€ ๋ณธ๋‹ค.

  SELinux=enforcing์ธ๋ฐ๋„ ์™ธ๋ถ€์—์„œ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์—ˆ๋˜ 
ls -dZ /var/www/html/์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณด๋ฉด 
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/ ์ด๋‹ค.
system_u: <=์‚ฌ์šฉ์ž user is system
object_r: <=์—ญํ•  role is object
httpd_sys_content_t: <=ํƒ€์ž… type is httpd_sys_content <=๋ณด์•ˆ ์ปจํ…์ŠคํŠธ
s0 <=์†Œ์Šค source is security level 0  

  /var/www/html ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ปจํ…์ŠคํŠธ๋ฅผ /web ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ปจํ…์ŠคํŠธ๋กœ chcon์œผ๋กœ  ๋งž์ถ”๋Š” ๋ฐฉ๋ฒ•์€ 
1) chcon (type ๋ถ€๋ถ„์„ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ๊ธฐ) /web 
2) chcon --reference=/var/www/html /web
3) chcon -t ๋ถ™์—ฌ๋„ฃ๊ธฐ /web ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

restorecon -R /web
๋‹ค์‹œ ๋ณต๊ตฌํ•˜๊ธฐ



  SetUID, SetGID, ๊ทธ๋ฆฌ๊ณ  Sticky bit
  Linux๋ฅผ ์„ค์น˜ํ•˜๋ฉด root ์†Œ์œ ๋กœ user์— ๋Œ€ํ•ด์„œ SetUID, group์— ๋Œ€ํ•ด์„œ SetGID, ๊ทธ๋ฆฌ๊ณ  other์— ๋Œ€ํ•ด์„œ Sticky bit๊ฐ€ ์„ค์ •๋œ ํŒŒ์ผ๋“ค์ด ๋งŒ๋“ค์–ด์ง„๋‹ค. root ์†Œ์œ ์˜ ํŒŒ์ผ/๋””๋ ‰ํ„ฐ๋ฆฌ์— sticky bit๊ฐ€ ๋ถ™์œผ๋ฉด other์—๊ฒŒ๋„ root ๊ถŒํ•œ์ด ์žˆ๊ฒŒ ๋˜๋ฏ€๋กœ ๋งค์šฐ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋“ค์€ ์‹คํ–‰(x) ๊ถŒํ•œ์— ์žˆ์„ ๋•Œ๋งŒ ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์†์„ฑ์ด ๋ณด์•ˆ์ƒ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. root ์‚ฌ์šฉ์ž์™€ root ๊ทธ๋ฃน ์†Œ์œ ์˜ ํŒŒ์ผ/๋””๋ ‰ํ„ฐ๋ฆฌ๋ผ๋„ setUID๋‚˜ setGID ํ•ด์ฃผ๋ฉด ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋„ root ์†Œ์œ /๊ทธ๋ฃน์˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  chmod ๋ช…๋ น์–ด ๋’ค์— 4xxx(SetUID)2xxx(SetGID), ๊ทธ๋ฆฌ๊ณ  1xxx(Sticky bit)๋ฅผ ๋ถ™์ด๋ฉด SetUID(user์˜ x), SetGID(group์˜ x), ๊ทธ๋ฆฌ๊ณ  Sticky bit(other์˜ t)๊ฐ€ ์„ค์ •๋˜๊ณ , 0xxx๋ฅผ ๋ถ™์ด๋ฉด ์ด๋“ค ์„ค์ •์ด ํ•ด์ œ๋œ๋‹ค. SetUID, SetGID, ๊ทธ๋ฆฌ๊ณ  Sticky Bit๋Š” ์‹คํ–‰ x ๊ถŒํ•œ๊ณผ ๊ด€๊ณ„๊ฐ€ ์žˆ๊ณ  ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ r, w ๋“ฑ๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๋‹ค. 

[root@centos1 centos]# ls -dl /tmp
drwxrwxrwt. 46 root root 8192 Apr  7 16:22 /tmp


  ์ด SetUID, SetGID, ๊ทธ๋ฆฌ๊ณ  Sticky bit ๊ธฐ๋ฒ•์€ 
โ–ช ์–ด๋Š ์ค‘์š”ํ•œ ์„ค์ • ํŒŒ์ผ, ๊ฐœ๋ฐœ ํŒŒ์ผ, ๋ช…๋ น์–ด ๋“ฑ๊ณผ ๊ฐ™์€ ํŒŒ์ผ/๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ์„ ๋•Œ ์ด ํŒŒ์ผ/๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋‹ค ์—†์• ๊ณ  ํŠน์ • ์‚ฌ์šฉ์ž๋งŒ ์ด์šฉํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜
โ–ช ํŠน์ • ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“  ํŒŒ์ผ/๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค๋„ ์ž‘์—…ํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜
โ–ช ํŠน์ • ๋ช…๋ น์–ด ์‚ฌ์šฉ ์ œํ•œ ๋“ฑ์—์„œ ์š”๊ธดํ•˜๊ฒŒ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
=>ํ•˜์ง€๋งŒ ๋ณด์•ˆ์  ์œ„ํ—˜๋„ ๋งค์šฐ ํฌ๋‹ค!!!!