SELinuxã·ãªã¼ãº
æ¬è¨äºã¯ãSELinuxã·ãªã¼ãºã®1è¨äºç®ã§ãã
- Linuxããã»ã¹ã¢ã¯ã»ã¹å¶å¾¡ã®æ¦è¦ âä»ã³ã³
- SELinuxã®æ¦è¦
- SELinux Type Enforcement
- SELinuxã®å®è·µ
- (åè) SELinuxã®RBACãUBACãMLSãMCS
- (åè) SELinux Module Policyã®ã½ã¼ã¹ã³ã¼ãèªè§£ããã«ã
- åèURL
1ã3è¨äºç®ã¯ã4è¨äºç®ãçè§£ããããã®åæç¥èãã«ãã¼ãã¦ãã¾ãã
4è¨äºç®ãæãéè¦ã§ãSELinuxã®å
·ä½çãªæä½æ¹æ³ãã³ãã³ãããã©ãã«ã·ã¥ã¼ãã£ã³ã°æé ãç´¹ä»ãã¦ãã¾ãã
5è¨äºç®ä»¥éã¯åèæ å ±ã§ãã
SELinuxã®é¢é£è¨äºã¯ãSELinuxã¿ã°ããæ¢ãã¾ãã
ä¸é£ã®è¨äºã¯Fedoraç°å¢ãåæã¨ãã¦æ¸ãã¦ãã¾ãã
FedoraãRHELã«é¡ãããã£ã¹ããªãã¥ã¼ã·ã§ã³ã§ããã°ã»ã¼åçã®æåã«ãªãã¨æãã¾ãããä»ã®ãã£ã¹ããªãã¥ã¼ã·ã§ã³ã§ã¯æåã«å·®ç°ãããå¯è½æ§ãããã®ã§ã注æãã ããã
ãä¼ãããããã¨
æ¬è¨äºã§ã¯ãSELinuxã®ä½ç½®ã¥ããæç¢ºã«ããããã«ãLinuxããã»ã¹ã®ã¢ã¯ã»ã¹å¶å¾¡æè¡ãåé¡ãã¾ãã
SELinuxèªä½ã®å ·ä½çãªç¹å¾´ã¯æ¬¡ã®è¨äºã«è²ãã¾ãããSELinuxã®ä¸ä½æ¦å¿µã§ããMAC (Mandatory Access Control) ã®ç¹å¾´ã¯SELinuxã«ãå½ã¦ã¯ã¾ãã®ã§ããããçè§£ãã¦ãããã¨ã¯SELinuxãçè§£ããä¸ã§éè¦ã§ãã
æ¬è¨äºã§ã¯ã以ä¸ã®ãããªãããã¯ãæ±ãã¾ãã
- Linuxããã»ã¹ã®ã¢ã¯ã»ã¹æ¦è¦
- Linuxããã»ã¹ã®ã¢ã¯ã»ã¹å¶å¾¡æè¡
- DACã¨MACã®é¢ä¿æ§
- SELinuxã·ãªã¼ãº
- ãä¼ãããããã¨
- Linuxããã»ã¹ã®ã¢ã¯ã»ã¹æ¦è¦
- Linuxããã»ã¹ã®ã¢ã¯ã»ã¹å¶å¾¡
- ã¾ã¨ã
- 次ã®è¨äº
Linuxããã»ã¹ã®ã¢ã¯ã»ã¹æ¦è¦
SELinuxã¯ããã»ã¹ã®ã¢ã¯ã»ã¹å¶å¾¡ãå®è£
ããã»ãã¥ãªãã£æè¡ã®ä¸ã¤ã§ãã
Linuxã®ãã£ã¹ããªãã¥ã¼ã·ã§ã³ã§ã¯ããã¾ãã (ãç´æ)ã
SELinuxã®å½¹å²ãå ·ä½çã«ã¤ã¡ã¼ã¸ããããã«ãæ¬ã»ã¯ã·ã§ã³ã§ã¯ããã»ã¹ãä½ã«å¯¾ãã¦ã©ãã¢ã¯ã»ã¹ãã¦ããããå³è§£ãã¾ãã

ããã»ã¹ã¯å®è¡ãã¡ã¤ã«ã®å®è¡ãªã©ã«ãã£ã¦çæããæ§ã ãªãªã½ã¼ã¹ã«å¯¾ãã¦ã¢ã¯ã»ã¹ãæä½ãã¾ãã
ä¾ãã°ã¦ã¼ã¶ã¼ã«ããCLIæä½ã¯ãã·ã§ã« (Process) ãä»ãã¦å®è¡ãã¡ã¤ã« (File) ãå®è¡ (execute) ããå¥ã®ããã»ã¹ (Process) ãèµ·åãããã¨ã§æ§ã ãªå¦çãå®è¡ãã¾ãã
å¥ã®ä¾ã¨ãã¦ãLinuxã®ãã¼ãæã«ã¯systemd (Process) ãèµ·åããsystemdãæ§ã
ãªããã»ã¹ (Process) ãèµ·åãã¾ãã
å種ãã¼ã¢ã³ããã»ã¹ (Process) ã¯è¨å®ãã¡ã¤ã« (File) ãèªã¿è¾¼ã¿ (read)ãã¢ã¼ããã¯ãã£ã«ãã£ã¦ã¯åããã»ã¹ãè¤æ°èµ·åã (fork)ãç¹å®ã®ãã¼ãçªå· (Network Socket) ã§éä¿¡ãå¾
ã¡åãã¾ã (listen)ã
ãã®ããã«ãããã»ã¹ã¯æ§ã
ãªãªã½ã¼ã¹ã«ã¢ã¯ã»ã¹ãã¦å¦çãå®è¡ãã¾ãã
ããã¦ãããã»ã¹ãããªã½ã¼ã¹ã¸ã®ã¢ã¯ã»ã¹ãç´°ããå¶å¾¡ããã®ãSELinuxã¨ããæ©è½ã§ãã
ä¾ãã°ãããããã»ã¹ã«ãFile Aãéã㦠(open) 追è¨ãã (append) ã¯ã§ããããä»ã®æ¸ã込㿠(write) ã¯è¨±å¯ããªããã¨ãã£ãå¶å¾¡ãå¯è½ã§ãã
å¶å¾¡å¯¾è±¡ã¨ãªãã¢ã¯ã»ã¹å
ã¯Fileã ãã§ãªããProcess (IPC: Inter-Process Communication), Network Socket (ãããã¯ã¼ã¯éä¿¡), Database, Filesystem, Device, Kernel, ...ãªã©å¤å²ã«æ¸¡ãã¾ãã
Linuxããã»ã¹ã®ã¢ã¯ã»ã¹å¶å¾¡
ã¢ã¯ã»ã¹å¶å¾¡ã®åé¡
Linuxã®ã¢ã¯ã»ã¹å¶å¾¡æè¡ã¯ãDACã¨MACã«å¤§å¥ããã¾ãã
MACã®ãã¨ãnon-discretionary access controlã¨å¼ã¶ãã¨ãç¨ã«ããã¾ã1ã
- DAC (Discretionary Access Control): File access permissionsã¨POSIX ACLã®ãã¨
- MAC (Mandatory Access Control): SELinuxã®ãã¨

DACã¨MACã¯ãããããSubjectãObjectã«å¯¾ãã¦ä½ã®Actionãå®è¡ã§ããããå¶å¾¡ãã¾ãã
Subjectã¨ã¯ãã¢ã¯ã·ã§ã³ãå®è¡ãããã®ã®ãã¨ã§ãã
Objectã¨ã¯ãSubjectã«ãã£ã¦ä½ãæä½ãããã対象ã®ãã¨ã§ãã
ããã¦Actionã¨ã¯ãSubjectãObjectã«å¯¾ãã¦å®è¡ããæä½ã®ãã¨ã§ãã
Subjectã¨ã¯ãå
·ä½çã«ã¯Linuxã®ããã»ã¹ãæãã¾ãã
Object, Actionãä½ãæããã¯ãã¢ã¯ã»ã¹å¶å¾¡ã®ç¨®é¡ã«ãã£ã¦ç°ãªãã¾ãã
詳細ã¯å¾ç¶ã®ã»ã¯ã·ã§ã³ã§ãDACã¨MACã®æå³ãç¹å¾´ãå«ãã¤ã¤èª¬æãã¾ãã
DACã¨MACã¯ä¸¡æ¹ä½¿ããã
DACã¨MACã¯ã©ã¡ããçæ¹ãåä½ããã¨ãããã®ã§ã¯ããã¾ããã
Linuxã«ããã¦ããã»ã¹ããã¡ã¤ã«ã¢ã¯ã»ã¹ãããéãDACâMACã®é ã«å¦çããã¾ã2ã
ã¢ã¯ã»ã¹å
ããã¡ã¤ã«ã§ã¯ãªãå ´åãDACã¯é¢ä¿ãªãã®ã§MACã®ã¿å¦çããã¾ãã
- ã¾ããDAC観ç¹ã§ã¢ã¯ã»ã¹å¯å¦ãå¤å®ãã
- 1ãOKã§ããã°ã次ã«MAC観ç¹ã§ã¢ã¯ã»ã¹å¯å¦ãå¤å®ãã
- 2ãOKã§ããã°ããã¡ã¤ã«ã¢ã¯ã»ã¹ã許å¯ãã
1ã¨2ã®ã©ã¡ããçæ¹ãNGã§ããã°ãå¤ãã®ããã°ã©ã ã§ã¯Permission Deniedã¨ã©ã¼ã«ãªãã¾ãã
詳ããã¯æ¬¡ã®ã»ã¯ã·ã§ã³ã§è§¦ãã¾ãããDACã¯File access permissionsãMACã¯SELinuxã¨èªã¿æ¿ãã¦ã»ã¼å·®ãæ¯ãããã¾ããã

æå¾ã«è£è¶³ã§ãããDACâMACã¨ããå¦çé åºãçè§£ãã¦ãããã¨ã¯å®åä¸ã§ãéè¦ã§ãã
SELinuxã§ã¨ã©ã¼ãçºçããã¨ãã¯ç£æ»ãã° (/var/log/audit/audit.log) ãçºçãã¾ãã
ããããä»®ã«SELinuxã§ã¢ã¯ã»ã¹è¨±å¯ããã¦ããªãã¦ããå
ã«File access permissionsã§æå¦ããã¦ããå ´åã«ã¯ç£æ»ãã°ãçºçãã¾ããã
ã¢ã¯ã»ã¹æå¦ã®åå ãæ£ç¢ºã«åãåããããã«ããDACã®å¾ã«MACã¨ããå¦çé åºãçè§£ãã¦ãããã¨ãéè¦ã§ãã
DAC (Discretionary Access Control)
DACã¯MACã¨åæ§ãLinuxããã»ã¹ã®ã¢ã¯ã»ã¹å¶å¾¡ã®ä¸ç¨®ã§ãã
åºç¾©ã®DACã¯ã以ä¸ã®å
¨ã¦ãã¾ãã¯ä¸é¨ãå¯è½ã§ããã¨ããç¹å¾´ãæã¤ã¢ã¯ã»ã¹å¶å¾¡ãæãã¾ã3ã
åºç¾©ã®å ´åãLinuxãWindowsã®ãã¡ã¤ã«ã¢ã¯ã»ã¹å¶å¾¡ã«éå®ãããªãèªç¾©ã¨ãªã£ã¦ãã¾ãã
- ä»ã®SubjectãObjectã«å¯¾ãããã¼ã¿ã®åãæ¸¡ã
- ä»ã®Subjectã«å¯¾ããæ¨©éã®ä»ä¸ (ä¾: chmod)
â»Discretionary = (érootã¦ã¼ã¶ã¼ã§ãã£ã¦ã) è£éãæã¤ - ã»ãã¥ãªãã£å±æ§ã®å¤æ´ (ä¾: setuid, setgid)
- æ°è¦ä½æãããObjectã®ã»ãã¥ãªãã£å±æ§ã®æå® (ä¾: umask)
- ã¢ã¯ã»ã¹å¶å¾¡ã®ã«ã¼ã«ã®å¤æ´
ãããå®éã«ã¯ãSELinuxã®æèã«ããã¦ã¯ç義ã®DACã§è§£èª¬ããããã¨ãã»ã¨ãã©ã§ãã
ãããã£ã¦ãæ¬ããã°ã«ããã¦ãç義ã®DACã«åºã¥ãã¦ãã®å¾ã®è§£èª¬ãç¶ãã¾ãã
ç義ã®DACã¯ãLinuxã«ãããããã»ã¹ãããã¡ã¤ã«ã¸ã®ã¢ã¯ã»ã¹å¶å¾¡æè¡ãæãã¾ã4ã
DACã¯ãUID (User ID), GID (Group ID) ã«åºã¥ãã¦Linuxããã»ã¹ã®ãã¡ã¤ã«ã¢ã¯ã»ã¹ãå¶å¾¡ãã¾ãã
ããå
·ä½çã«ã¯ãç義ã®DACã¯File access permissionsã¨POSIX ACLã¨ãã2ã¤ã®æ©è½ãæãã¾ãã
ãSubjectãObjectã«å¯¾ãã¦ä½ã®Actionãå®è¡ã§ããããã¨ãã観ç¹ã§æ´çããã¨ãSubjectãObjectãActionã¯ä»¥ä¸ã該å½ãã¾ãã
- Subject = ããã»ã¹
- Object = ãã¡ã¤ã«
- Action = read, write, execute, setuid, setgid, deletion (sticky bit)

File access permissionsã¯ãçãã馴æã¿ãããã¨æãã¾ãã
File access permissionsã¯POSIXã®è¨ãåãã§ãã5ãä»ã«ãLinux permissionsãUnix permissionsãFile permissionsãªã©ã¨å¼ã°ãããã¨ãããã¾ãã
ããã»ã¹ãå®è¡ããã¦ã¼ã¶ã¼/ã°ã«ã¼ãã®ID (EUID: Effective UID, EGID: Effective GID) ã¨ãã¡ã¤ã«ã®ãªã¼ãã¼ (UID/GID) ãçªãåããã¦User/Group/Othersãå¤å®ããfile mode bits (â») ã«åºã¥ãã¦ã¢ã¯ã»ã¹å¶å¾¡ããæ©è½ã§ãã
(â») 644ãrwxrw-rw-ãªã©ã権éã表ç¾ãããããå
é¢é£ããã³ãã³ãã¨ãã¦ã¯ã以ä¸ãæãããã¾ãã
| ã³ãã³ã | æå³ |
|---|---|
| ls -l | ãã¡ã¤ã«ã®UID/GID, File mode bits ã®ç¢ºèª |
| ps -ef | ããã»ã¹ã®EUIDãPIDãã³ãã³ããªã©ã表示 (â») |
| chmod | File mode bitsã®å¤æ´ã rootãã¾ãã¯ãªã¼ãã¼ã¦ã¼ã¶ã¼ãå®è¡å¯ |
| chown | ãã¡ã¤ã«ã®UID/GIDã®å¤æ´ã rootãå®è¡å¯ |
(â») psã«ã¤ãã¦ã¯ãps -eo user,group,pid,ppid,commandã®ããã«åãæå®ãããã¨ã§ãGroupãå«ãã¦ç¢ºèªã§ãã¾ãã詳細ã¯man psãåç
§ãã¦ãã ãã
EUID/EGIDã¨ããç¨èªã¯èãæ
£ããªãããããã¾ããããè¦ããã«ããã»ã¹ãå®è¡ããã¦ã¼ã¶ã¼ã®UID/GIDã§ãã
ä¾å¤ã¨ãã¦ãsetuid/setgid屿§ãä»ä¸ããããã¡ã¤ã«ãå®è¡ããããrootã¦ã¼ã¶ã¼ã®ç¹æ¨©ãè¡ä½¿ãããã¨ã§EUID/EGIDãå¤ãããã¨ãããã¾ãã
ã¡ãªã¿ã«ãããã»ã¹ã¯ä»ã«ã2種é¡ã®IDãæã¡ã¾ã (SUID/SGID, RUID/RGID)ã
ãã®ãããã®ä»çµã¿ã«èå³ã®ããæ¹ã¯ã以ä¸ã®åèURLãã覧ãã ããã
- Processãæã¤3種é¡ã®UID/GIDã®è©± â Wikipedia - User identifier
- setuid, setgidã®è©± â Red Hat - Enable Sysadmin - Linux permissions: SUID, SGID, and sticky bit
File Permissionsã¯ãããã°ã¤ã³ã¦ã¼ã¶ã¼ã¨ãã¡ã¤ã«ã®UID/GIDãæ¯è¼ãããã¨èª¬æããããã¨ãããã¾ãããããã¯å®ã¯æ£ç¢ºã§ã¯ããã¾ããã
ãã°ã¤ã³ã¦ã¼ã¶ã¼ãå®è¡ããããã»ã¹ã¯ããçµæçã«ãä¸è¨ã®èª¬æã§ãçç¾ã¯ããã¾ããã
ããããå®éã«ã¯Linuxèµ·åæã«rootã¦ã¼ã¶ã¼å義 (EUID=0) ã§å®è¡ããããã¼ã¢ã³ããã»ã¹ãªã©ãããããããã®ããã»ã¹ããã¡ã¤ã«ã«ã¢ã¯ã»ã¹ããéãFile Permissionsã«ãã£ã¦è©ä¾¡ããã¾ãã
EUIDã¨ããè¨èãç¥ã£ã¦ããã¨ããã¼ã¢ã³ããã»ã¹ã«ããã¢ã¯ã»ã¹ãæ¬è³ªçã«ã¯ã¦ã¼ã¶ã¼ããã»ã¹ã¨å¤ãããå¶å¾¡ããããã¨ãçè§£ã§ãã¾ãã
ã¾ããããã§EUID/EGIDã¨ããå°é£ããç¨èªã«è§¦ããã®ã«ã¯ããä¸ã¤çç±ãããã¾ãã
ããã¯ãDACããããã»ã¹ã®ãã¢ã¯ã»ã¹å¶å¾¡ã§ãããã¨ã強調ããããã§ãã
DACãMACããããã»ã¹ããå種ãªã½ã¼ã¹ã¸ã®ã¢ã¯ã»ã¹å¶å¾¡ãã¨ããç¹ã§ã¯åãã«ãã´ãªã«å±ããæè¡ã§ãã
ãã®è¦³ç¹ã§DACã¨MACã対æ¯ãã¦èããã¨SELinuxã®å¿
è¦æ§ã«ã¤ãã¦çè§£ãæ·±ã¾ãã®ã§ãããã§æ¹ãã¦æèããã ãã¾ãã¨å¹¸ãã§ãã
å°ã話ãé£èºãã¾ããããDACã ãã§ã¯ã»ãã¥ãªãã£ã«ç©´ãããã®ã§ãMACã«ãã£ã¦è£å®ããããã¨ããã®ãSELinuxãå«ãMACã®åºæ¬çãªèãæ¹ã§ãã

POSIX ACLã¯ãFile access permissionã®é«æ©è½çã§ãã
Linuxã®æèã§ã¯åã«ACL (Access Control List) ã¨å¼ã°ãããã¨ãå¤ãã§ãã
User/Group/Othersã«é¢ããããç¹å®ã®ã¦ã¼ã¶ã¼ãã°ã«ã¼ã1ã¤ã«å¯¾ãã¦æ¨©éãå²ãå½ã¦ããã¨ãã§ãã¾ãã
setfaclã§è¨å®ã夿´ããgetfaclã§è¨å®ã確èªãã¾ãã
ããã»ã¹ã¨ãã¡ã¤ã«ã®UID/GIDã対æ¯ããfile mode bitsã«ãã£ã¦ã¢ã¯ã»ã¹å¶å¾¡ããã¨ããåºæ¬åä½ã¯ãFile access permissionsã¨åæ§ã§ãã

æå¾ã«ãåé ã®åºç¾©ã®DACã®å®ç¾©ãåèã«ãã¤ã¤ãFile access permissionsã¨POSIX ACLã«å
±éããDACã®ç¹å¾´ãã¾ã¨ãã¾ãã
次ã®ã»ã¯ã·ã§ã³ã§DACã¨MACã®ç¹å¾´ã対æ¯ãããã¨ã§ãMAC (ã¤ã¾ãSELinux) ã®å¿
è¦æ§ãçè§£ããããã®å¸ç³ã§ãã
- ãã¡ã¤ã«ã®ãªã¼ãã¼ã¦ã¼ã¶ã¼ã¯ãä¸è¬ã¦ã¼ã¶ã¼ã§ãã£ã¦ãä»ã¦ã¼ã¶ã¼ã«å¯¾ãã¦
chmodãsetfaclã§ä»»æã®æ¨©éãä¸ãããã¨ãã§ãã (Discretionãã¤ã¾ãè£éãæã£ã¦ãã) - ã¢ã¯ã»ã¹å¶å¾¡ã®ç²åº¦ã¯èªã¿æ¸ãå®è¡ + Sticky bitã«ããåé¤ã®å¶å¾¡
- ãã¡ã¤ã«ã«å¯¾ããã¢ã¯ã»ã¹å¶å¾¡ã®ã¿
- UID/GIDãå©ç¨ãã
- rootã®EUID (EUID=0) ãæã£ã¦ããã°ã¢ã¯ã»ã¹å¶å¾¡ã®å¯¾è±¡ã«ãªãããä½ã§ãã§ãã
MAC (Mandatory Access Control)
SELinuxã¯MAC (Mandatory Access Control) ãå®è£
ããæè¡ã®ä¸ã¤ã§ãã
ãããã£ã¦ãæ¬ã»ã¯ã·ã§ã³ã§è§¦ããå
容ã¯å
¨ã¦SELinuxã«ã¤ãã¦ãå½ã¦ã¯ã¾ãã¾ãã
MACã¯DACã¨åæ§ã«Linuxããã»ã¹ããå種ãªã½ã¼ã¹ã¸ã®ã¢ã¯ã»ã¹ãå¶å¾¡ãã¾ãã
MACã¯ãDACã§ã¯è¨±å¯ããã¦ãã以ä¸ã®æåãå¶éãããã¨ãç¹å¾´ã§ãã
ããã«ãããMACã¯DACã¨æ¯è¼ãã¦ããé«ãã»ãã¥ãªãã£ãæä¾ãã¾ãã6,7
- ä»ã®SubjectãObjectã«å¯¾ãããã¡ã¤ã«ãã¼ã¿ã®åãæ¸¡ã
- ä»ã®Subjectã«å¯¾ããæ¨©éã®ä»ä¸
- ã»ãã¥ãªãã£å±æ§ã®å¤æ´
- æ°è¦ä½æãããObjectã®ã»ãã¥ãªãã£å±æ§ã®æå®
- ã¢ã¯ã»ã¹å¶å¾¡ã®ã«ã¼ã«ã®å¤æ´
MACã«ããã¦ã¯ç¹æ¨©ãæããªããªã½ã¼ã¹ãªã¼ãã¼ã®è£é (Discretion) ã«ãã£ã¦ãchmodã®ãããªä»çµã¿ã§æ¨©éãè²æ¸¡ãããã¨ã¯ã§ãã¾ããã
Kernel Spaceã«ã¢ã¯ã»ã¹å¶å¾¡ã«ã¼ã«ã®å®ç¾©æ
å ±ãæã¡ãEUID=0ãæã¤ããã»ã¹ã§ãã£ã¦ãä¾å¤ãªãå¼·å¶çã« (Mandatorily) ã¢ã¯ã»ã¹å¶å¾¡ã«ã¼ã«ãé©ç¨ããã¾ãã
å ·ä½ä¾ã¨ãã¦ãEUID=0ãæã¤ãã¼ã¢ã³ããã»ã¹ãã¼ããã¤æ»æã«ãã£ã¦èå¼±æ§ãä»ãããæä½æ¨©éã奪ãããã¨ãã¾ãã
DACã®å ´åãEUID=0ãæã¤éãã¯æ¨©éãçµãæç«ã¦ã¯ããã¾ããã
ææªã®å ´åã¯root権éã®shellãèµ·åãããä»»æã®æä½ãå®è¡ããã¾ãã
ä¾ãã°ããã¼ã¿åå¾ãããã¯ãã¢ã®è¨ç½®ãä»ã®ã·ã¹ãã ã«ä¾µå
¥ããããã®è¸ã¿å°ã¨ãã¦å©ç¨ãããªã©ãèãããã¾ãã
䏿¹ã§MACãå®è£
ããã¦ããã°ãEUIDã«é¢ããããMACãä»ä¸ããããã»ã¹ãèå¥ããã¡ã¿ãã¼ã¿ã«åºã¥ãã¦ã¢ã¯ã»ã¹å¶å¾¡ããã¾ã(â»)ã
(â») SELinuxã®å ´åã¯ãSecurity Contextã¨å¼ã°ããèå¥åãããã»ã¹ããã¡ã¤ã«ããã¼ãçªå·ãªã©ã«ä»ä¸ãã¾ããããã¦èå¥åã«åºã¥ãã¦ã¢ã¯ã»ã¹å¶å¾¡ãã¾ããããã»ã¹ãæã¤EUIDã¯ãSELinuxã«ããã¦ã¯æå³ãæã¡ã¾ãã
ä¾ãã°ãä¾µå
¥ãããããã»ã¹ãrsyslogdã ã¨ããã¨ã宿½ã§ããæä½ãrsyslogãµã¼ãã¼ã¨ãã¦å¿
è¦ãªã¢ã¯ã»ã¹ã®ç¯å²ã«éå®ããã¾ãã
MACã¯ä¾µå
¥ãæ¤ç¥ãããé²ãã ããããã¨ã¯ã§ãã¾ããããä¾µå
¥å¾ã®è¢«å®³ãéå®ãããã¨ãã§ãã¾ãã

MACãå®è£
ãã¦ããã»ãã¥ãªãã£æè¡ã¯ãSELinux以å¤ã«ãåå¨ãã¾ãã
以ä¸ã®MACå®è£
æè¡ã®ãã¡ãè¤æ°ãåãLinuxä¸ã§åæèµ·åãããã¨ã¯ã§ãã¾ããã
ãããã£ã¦ãSELinuxã®ã¿ã使ãå ´åã¯ä»ã®MACãæèããå¿
è¦ã¯ããã¾ããã
(åè) LSM (Linux Security Module)
æ¬ã»ã¯ã·ã§ã³ã¯èå³ã®ããæ¹åãã®è£è¶³æ
å ±ã§ãã
SELinuxãçè§£ããä¸ã§ã¯ãèªã¿é£ã°ãã¦ãåé¡ããã¾ããã
MACã¯LSM (Linux Security Module) ã¨ããå½¢ã§Linux Kernelã«çµã¿è¾¼ã¾ãã¾ãã8,9,10
MACãå®è£
ãã¦ããã½ããã¦ã§ã¢ã¯SELinuxãAppArmorãªã©è¤æ°åå¨ãã¾ãããLSM Hookã¨ããã¤ã³ã¿ã¼ãã§ã¼ã¹ãä»ãã¦å
±éããæ¹æ³ã§Linux Kernelã¨ããåããã¾ãã

åä¸ã®Linuxãã·ã³ã«MACæ©è½ãæä¾ããã½ããã¦ã§ã¢ãè¤æ°ã¤ã³ã¹ãã¼ã«ããOSèµ·åæã«åãæ¿ãã¦ä½¿ç¨ãããã¨ã¯å¯è½ã§ãã
ããããåæã«åä½ã§ããMACã¯1ã¤ã®ã¿ã§ã (â»)ã
ãããã£ã¦ãSELinuxãåä½ãããã·ã³ã«ããã¦AppArmorãªã©ã®ä»ã®MACãåæã«åä½ãããã¨ã¯ããã¾ããã
(â») å³å¯ã«ã¯ãLSMã«ã¯non-exclusive modules (minor modules) ã¨ãããã®ããããSELinux以å¤ã«ãyamaãcapabilitiesãªã©ããã¤ãåæã«èµ·åãã¦ãã¾ããSELinuxãAppArmorã¯exclusive modules (major modules) ã¨å¼ã°ããexclusive modulesã2ã¤åæã«åããã¨ã¯ããã¾ãã11,12
LSMã®åãæ¿ãã«ã¤ãã¦ã¯Linux Security Module Usageã«è©³ç´°ãæ¸ããã¦ãã¾ãã
ããã¤ããFedora35ä¸ã§å®è¡ããé¢é£ãã°ãæ·»ãã¦ããã¾ãã
âActiveãªLSMã表示ãã¦ãã¾ãã
SELinuxã ãã§ãªããä»ã«ãããã¤ãã®LSMãèµ·åãã¦ãããã¨ããããã¾ãã
cat /sys/kernel/security/lsm
# lockdown,capability,yama,selinux,bpf,landlock
âKernelã®ãã«ããªãã·ã§ã³ã«ãããããã©ã«ãã§èµ·åããmajor LSM ãæå®ã§ãã¾ãã
èªåã§Linux Kernelããã«ããã¦ããã®ã§ãªããã°ãLinux Distributionã«ãã£ã¦ããã©ã«ãã§ä½¿ç¨ããmajor LSMãæ±ºã¾ãã¨èãã¦è¯ãã¨æãã¾ãã
以ä¸ã®åºåã§ã¯ãSELinuxãããã©ã«ãã«ã»ããããã¦ãããã¨ããããã¾ãã
grep CONFIG_DEFAULT_SECURITY /boot/config-`uname -r` # CONFIG_DEFAULT_SECURITY_SELINUX=y
âç¾å¨ã®kernel command line argumentã確èªãã¦ãã¾ãã
kernel command line argumantã«security=selinuxã®ããã«MACãæå®ãããã¨ã§ãä¸è¨ã®ããã©ã«ãæåã䏿¸ããããã¨ãã§ãã¾ãã
以ä¸ã®åºåã«ã¯security=...ã¨ããæå®ããªããããKernelã®ãã«ããªãã·ã§ã³ã®è¨å®ã«å¾ã£ã¦SELinuxã§èµ·åãããã¨ããããã¾ãã
cat /proc/cmdline
# BOOT_IMAGE=(hd0,gpt2)/vmlinuz-5.14.18-300.fc35.x86_64 root=/dev/mapper/fedora_pc-root ro rd.lvm.lv=fedora_pc/root rhgb quiet
ã¾ã¨ã
Linuxã®ã¢ã¯ã»ã¹å¶å¾¡æè¡ãåé¡ããSELinuxã®ä½ç½®ã¥ãã示ãã¾ããã
Linuxããã»ã¹ã®ã¢ã¯ã»ã¹å¶å¾¡æè¡ã¯DACã¨MACã«åé¡ãããSELinuxã¯MACã®ä¸ç¨®ã§ãã
MACã¯DACãããé«ãã»ãã¥ãªãã£ãå®ç¾ã§ããæè¡ã§ãããDACã¨æ¯è¼ãã¦è¨è¨ãè¨å®å¤æ´ã«å´åããããã¾ãã
DACã¨MACããã¾ãä½µç¨ããéç¨æ§ã¨ã»ãã¥ãªãã£ã®è¯ããã©ã³ã¹ãæ¤è¨ãããã¨ãéè¦ã§ãã
å
·ä½çã«ã¯ãMACã¯Linuxã¤ã³ã¹ãã¼ã«æã®åæå¤ã¨ãã¦å¿
è¦ãªã¢ã¯ã»ã¹ããç´°ããç²åº¦ã§è¨±å¯ãã¾ãã
åæå¤ã¨ãã¦ã«ã¼ã«è¨å®ããã¦ããã®ã§ãããæå³ä¸äººåãã«ãåºãã¢ã¯ã»ã¹è¨±å¯ããã¦ãã¾ãã
ããããæ»æã§ãªããã°çµ¶å¯¾çºçãå¾ãªããããªã¢ã¯ã»ã¹ãã¿ã¼ã³ã¯ç¢ºå®ã«é®æãã¾ãã
ããã»ã¹ã®åºæ¬åä½ã«å¤æ´ããã£ãå ´åã«ã宿
ã«ä½µãã¦ãroot権éãä»¥ã¦æ
éã«ãç¨ã«ãã¢ã¯ã»ã¹è¨±å¯è¨å®ã夿´ãã¾ãã
䏿¹ãDACã¯érootã¦ã¼ã¶ã¼ã§ãæè»½ã«å¤æ´ã§ããç¹ãæ´»ãããéç¨è ã®è£éã«ãã£ã¦éè¦ãªãã¡ã¤ã«ã«å¯¾ãã¦ç´°ããæ¨©éãè¨è¨ãã宿 ã«ãããã¦ãã¾ãã«ã¡ã³ããã³ã¹ããä½¿ãæ¹ããã¾ãã
次ã®è¨äº
æ¬è¨äºã§ã«ãã¼ããDACã¨MACã®ä¸è¬è«ããæ´ã«è¸ã¿è¾¼ã¿ãSELinuxã®ç¹å¾´ãæ¦è¦ã¬ãã«ã§ç´¹ä»ãã¾ãã
- ãã£ã¨èªã
ã³ã¡ã³ããæ¸ã