λ™μž‘ λͺ¨λ“œ

SELinux λŠ”Β enforce, permissive, disable μ„Έ 가지 λ™μž‘ λͺ¨λ“œκ°€ 있으며 μ„€μΉ˜ν•˜λ©΄ 기본적으둜 enforce λͺ¨λ“œλ‘œ λ™μž‘ν•©λ‹ˆλ‹€.


enforce λͺ¨λ“œμΌ 경우 SELinux 의 μ •μ±…κ³Ό 룰에 μ–΄κΈ‹λ‚˜λŠ” λ™μž‘μ€ λͺ¨λ‘ μ°¨λ‹¨λ˜λ©° permissive λͺ¨λ“œμ˜ 경우 정책에 μ–΄κΈ‹λ‚˜λŠ” λ™μž‘μ€ 감사 둜그λ₯Ό 남기고 ν—ˆμš©ν•©λ‹ˆλ‹€.

운영 ν™˜κ²½μ—μ„œλŠ” enforce λͺ¨λ“œλ‘œ μš΄μ˜ν•˜λŠ” 것을 ꢌμž₯ν•˜λ©° 개발과 ν…ŒμŠ€νŠΈλ„ ν‰μ†Œμ—λŠ” enforce λͺ¨λ“œλ‘œ μ‚¬μš©ν•˜λ‹€κ°€ 데λͺ¬ μ„œλΉ„μŠ€κ°€ μ˜€μž‘λ™ν•  경우 permissive λͺ¨λ“œλ‘œ μ „ν™˜ν•˜μ—¬ 일단 μ„œλΉ„μŠ€κ°€ 되게 ν•˜κ³  감사 둜그λ₯Ό ν™•μΈν•΄μ„œ 원인을 μ°Ύκ³  문제λ₯Ό ν•΄κ²°ν•œ ν›„μ—λŠ” λ‹€μ‹œ enforce mode 둜 μ „ν™˜ν•˜λŠ” 방식이 쒋은 μŠ΅κ΄€μž…λ‹ˆλ‹€.



SELinux 의 λ™μž‘Β λͺ¨λ“œλ₯Ό λ³€κ²½ν•˜λŠ” λͺ…λ Ήμ–΄λŠ”Β setenforceΒ λͺ…령어이며 0 λ˜λŠ” 1을 μ˜΅μ…˜μœΌλ‘œ 쀄 수 있으며 1일 경우 enforce λͺ¨λ“œ, 0 일 경우 permissive λͺ¨λ“œλ‘œ μ„€μ •λ©λ‹ˆλ‹€.

$ sudo setenforce 1
enforce λͺ¨λ“œ μ „ν™˜


ν˜„μž¬ SELinux 의 λ™μž‘ λͺ¨λ“œλ₯Ό ν™•μΈν•˜λ €λ©΄Β getenforceΒ λͺ…λ Ήμ–΄λ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

$ getenforce 

Enforcing
SELinux λ™μž‘ 확인


λ™μž‘ λͺ¨λ“œ 확인

SElinux λ™μž‘ λͺ¨λ“œμ— λŒ€ν•΄ 더 μžμ„Έν•œ 정보λ₯Ό μ–»μœΌλ €λ©΄Β sestatusΒ λͺ…령을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμ€Β setenforce 0λͺ…λ Ήμ–΄λ₯Ό μˆ˜ν–‰ν•œ 후에 sestatus μ‹€ν–‰ 결과둜 ν˜„μž¬ λ™μž‘ λͺ¨λ“œλŠ” permissive λͺ¨λ“œμ΄λ©° μ„€μ • νŒŒμΌμ—λŠ” enforcing 으

둜 μ„€μ •λœ 것을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

$ sestatus


SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

TODO :Current mode μ§„ν•˜κ²Œ

μžμ„Έν•œ λ™μž‘ λͺ¨λ“œ 확인

κ²°κ³Όλ₯Ό 보면 ν˜„μž¬ enforcing λͺ¨λ“œλ‘œ κ΅¬λ™λ˜λŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. λ§Œμ•½ permissive λͺ¨λ“œμΌ 경우 μ•„λž˜μ™€ 같이 Current mode κ°€ λ³€κ²½λ˜μ–΄ ν‘œμ‹œλ©λ‹ˆλ‹€.

$ sudo setenforce 0
$ sestatus


sestatus 
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28
permissive λͺ¨λ“œ


λͺ¨λ“œ 영ꡬ μ„€μ •

permissive 둜 μ „ν™˜ν•œ 후에 sestatus 의 κ²°κ³Όλ₯Ό 보면 Current modeλŠ” permissive μ΄μ§€λ§ŒΒ Mode from config file ν•­λͺ©μ€ enforcing 으둜 두 κ°œκ°€ λ‹€λ₯΄λ‹€λŠ” 것을 μ•Œμˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

setenforce λͺ…λ Ήμ–΄λ‘œ μ„€μ •ν•œ λͺ¨λ“œλŠ” μ˜κ΅¬μ μ΄μ§€ μ•ŠμœΌλ©° μž¬λΆ€νŒ…ν•˜λ©΄ 섀정이 μ΄ˆκΈ°ν™” λ©λ‹ˆλ‹€.

λΆ€νŒ…μ‹œ 기본으둜 μ„€μ •ν•  λͺ¨λ“œλŠ” μ„€μ • νŒŒμΌμ„ μ—΄μ–΄μ„œΒ SELINUX=enforcingΒ ν•­λͺ©μ„Β μˆ˜μ •ν•˜λ©΄ 되며 μž¬λΆ€νŒ… ν•΄μ•Ό λ°˜μ˜λ©λ‹ˆλ‹€.

RHEL/CentOS 8
vi /etc/selinux/config
RHEL/CentOS 7 μ΄ν•˜
vi /etc/sysconfig/selinux


λ§Œμ•½ λΆ€νŒ…μ‹œΒ permissive 둜 μ„€μ •λ˜κΈ°λ₯Ό μ›ν•œλ‹€λ©΄ μ•„λž˜μ™€ 같이 μˆ˜μ •ν•˜λ©΄ λ©λ‹ˆλ‹€.

SELINUX=permissive
/etc/selinux/config


인터넷에 SELinux λ₯Ό 치면 "끄기" κ°€ μžλ™ μ™„μ„±λ˜λŠ”λ° λΆ€νŒ…μ‹œμ—λ„ SELinux λ₯Ό ν•΄μ œν•˜λ €λ©΄ μ•„λž˜μ™€ 같이 μ„€μ •ν•˜λ©΄ λ˜μ§€λ§Œ λ³΄μ•ˆμ„ μœ„ν•΄μ„œλŠ” κ²°μ½” ꢌμž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

SELINUX=disabled 


/etc/selinux/config


ν•΄μ œν›„ SELinux λ₯Ό λ‹€μ‹œ μ‚¬μš©ν•˜λ €λ©΄ μž¬λΆ€νŒ…μ΄ ν•„μš”ν•œλ° μ΄λ•Œ λ§Žμ€ μ‹œκ°„μ΄ 걸릴 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄μœ λŠ” SELinux 의 핡심인 λ³΄μ•ˆ μ»¨ν…μŠ€νŠΈλŠ” 파일 μ‹œμŠ€ν…œμ— κΈ°λ‘ν•˜λŠ”λ° ν•΄μ œν•˜λ©΄ λ³΄μ•ˆ μ»¨ν…μŠ€νŠΈλ₯Ό κΈ°λ‘ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μž¬μ‚¬μš©μœΌλ‘œ μ„€μ • λ³€κ²½ν›„ 첫 λΆ€νŒ…λ•Œ λͺ¨λ“  파일과 디렉터리에 λŒ€ν•΄ λ³΄μ•ˆ μ»¨ν…μŠ€νŠΈλ₯Ό λ‹€μ‹œ λΆ„λ₯˜ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.


이런 μ΄μœ λ•Œλ¬Έμ— λ§Œμ•½ SELinux μ •μ±… μœ„λ°˜μœΌλ‘œ 인해 데λͺ¬ μ„œλΉ„μŠ€κ°€ μ œλŒ€λ‘œ κ΅¬λ™λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄ ν•΄μ œλ³΄λ‹€λŠ” permissive 둜 μ „ν™˜ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.