18c2ecf20Sopenharmony_ciWhat: security/ima/policy 28c2ecf20Sopenharmony_ciDate: May 2008 38c2ecf20Sopenharmony_ciContact: Mimi Zohar <zohar@us.ibm.com> 48c2ecf20Sopenharmony_ciDescription: 58c2ecf20Sopenharmony_ci The Trusted Computing Group(TCG) runtime Integrity 68c2ecf20Sopenharmony_ci Measurement Architecture(IMA) maintains a list of hash 78c2ecf20Sopenharmony_ci values of executables and other sensitive system files 88c2ecf20Sopenharmony_ci loaded into the run-time of this system. At runtime, 98c2ecf20Sopenharmony_ci the policy can be constrained based on LSM specific data. 108c2ecf20Sopenharmony_ci Policies are loaded into the securityfs file ima/policy 118c2ecf20Sopenharmony_ci by opening the file, writing the rules one at a time and 128c2ecf20Sopenharmony_ci then closing the file. The new policy takes effect after 138c2ecf20Sopenharmony_ci the file ima/policy is closed. 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci IMA appraisal, if configured, uses these file measurements 168c2ecf20Sopenharmony_ci for local measurement appraisal. 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci :: 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci rule format: action [condition ...] 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci action: measure | dont_measure | appraise | dont_appraise | 238c2ecf20Sopenharmony_ci audit | hash | dont_hash 248c2ecf20Sopenharmony_ci condition:= base | lsm [option] 258c2ecf20Sopenharmony_ci base: [[func=] [mask=] [fsmagic=] [fsuuid=] [uid=] 268c2ecf20Sopenharmony_ci [euid=] [fowner=] [fsname=]] 278c2ecf20Sopenharmony_ci lsm: [[subj_user=] [subj_role=] [subj_type=] 288c2ecf20Sopenharmony_ci [obj_user=] [obj_role=] [obj_type=]] 298c2ecf20Sopenharmony_ci option: [[appraise_type=]] [template=] [permit_directio] 308c2ecf20Sopenharmony_ci [appraise_flag=] [keyrings=] 318c2ecf20Sopenharmony_ci base: 328c2ecf20Sopenharmony_ci func:= [BPRM_CHECK][MMAP_CHECK][CREDS_CHECK][FILE_CHECK]MODULE_CHECK] 338c2ecf20Sopenharmony_ci [FIRMWARE_CHECK] 348c2ecf20Sopenharmony_ci [KEXEC_KERNEL_CHECK] [KEXEC_INITRAMFS_CHECK] 358c2ecf20Sopenharmony_ci [KEXEC_CMDLINE] [KEY_CHECK] 368c2ecf20Sopenharmony_ci mask:= [[^]MAY_READ] [[^]MAY_WRITE] [[^]MAY_APPEND] 378c2ecf20Sopenharmony_ci [[^]MAY_EXEC] 388c2ecf20Sopenharmony_ci fsmagic:= hex value 398c2ecf20Sopenharmony_ci fsuuid:= file system UUID (e.g 8bcbe394-4f13-4144-be8e-5aa9ea2ce2f6) 408c2ecf20Sopenharmony_ci uid:= decimal value 418c2ecf20Sopenharmony_ci euid:= decimal value 428c2ecf20Sopenharmony_ci fowner:= decimal value 438c2ecf20Sopenharmony_ci lsm: are LSM specific 448c2ecf20Sopenharmony_ci option: 458c2ecf20Sopenharmony_ci appraise_type:= [imasig] [imasig|modsig] 468c2ecf20Sopenharmony_ci appraise_flag:= [check_blacklist] 478c2ecf20Sopenharmony_ci Currently, blacklist check is only for files signed with appended 488c2ecf20Sopenharmony_ci signature. 498c2ecf20Sopenharmony_ci keyrings:= list of keyrings 508c2ecf20Sopenharmony_ci (eg, .builtin_trusted_keys|.ima). Only valid 518c2ecf20Sopenharmony_ci when action is "measure" and func is KEY_CHECK. 528c2ecf20Sopenharmony_ci template:= name of a defined IMA template type 538c2ecf20Sopenharmony_ci (eg, ima-ng). Only valid when action is "measure". 548c2ecf20Sopenharmony_ci pcr:= decimal value 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci default policy: 578c2ecf20Sopenharmony_ci # PROC_SUPER_MAGIC 588c2ecf20Sopenharmony_ci dont_measure fsmagic=0x9fa0 598c2ecf20Sopenharmony_ci dont_appraise fsmagic=0x9fa0 608c2ecf20Sopenharmony_ci # SYSFS_MAGIC 618c2ecf20Sopenharmony_ci dont_measure fsmagic=0x62656572 628c2ecf20Sopenharmony_ci dont_appraise fsmagic=0x62656572 638c2ecf20Sopenharmony_ci # DEBUGFS_MAGIC 648c2ecf20Sopenharmony_ci dont_measure fsmagic=0x64626720 658c2ecf20Sopenharmony_ci dont_appraise fsmagic=0x64626720 668c2ecf20Sopenharmony_ci # TMPFS_MAGIC 678c2ecf20Sopenharmony_ci dont_measure fsmagic=0x01021994 688c2ecf20Sopenharmony_ci dont_appraise fsmagic=0x01021994 698c2ecf20Sopenharmony_ci # RAMFS_MAGIC 708c2ecf20Sopenharmony_ci dont_appraise fsmagic=0x858458f6 718c2ecf20Sopenharmony_ci # DEVPTS_SUPER_MAGIC 728c2ecf20Sopenharmony_ci dont_measure fsmagic=0x1cd1 738c2ecf20Sopenharmony_ci dont_appraise fsmagic=0x1cd1 748c2ecf20Sopenharmony_ci # BINFMTFS_MAGIC 758c2ecf20Sopenharmony_ci dont_measure fsmagic=0x42494e4d 768c2ecf20Sopenharmony_ci dont_appraise fsmagic=0x42494e4d 778c2ecf20Sopenharmony_ci # SECURITYFS_MAGIC 788c2ecf20Sopenharmony_ci dont_measure fsmagic=0x73636673 798c2ecf20Sopenharmony_ci dont_appraise fsmagic=0x73636673 808c2ecf20Sopenharmony_ci # SELINUX_MAGIC 818c2ecf20Sopenharmony_ci dont_measure fsmagic=0xf97cff8c 828c2ecf20Sopenharmony_ci dont_appraise fsmagic=0xf97cff8c 838c2ecf20Sopenharmony_ci # CGROUP_SUPER_MAGIC 848c2ecf20Sopenharmony_ci dont_measure fsmagic=0x27e0eb 858c2ecf20Sopenharmony_ci dont_appraise fsmagic=0x27e0eb 868c2ecf20Sopenharmony_ci # NSFS_MAGIC 878c2ecf20Sopenharmony_ci dont_measure fsmagic=0x6e736673 888c2ecf20Sopenharmony_ci dont_appraise fsmagic=0x6e736673 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_ci measure func=BPRM_CHECK 918c2ecf20Sopenharmony_ci measure func=FILE_MMAP mask=MAY_EXEC 928c2ecf20Sopenharmony_ci measure func=FILE_CHECK mask=MAY_READ uid=0 938c2ecf20Sopenharmony_ci measure func=MODULE_CHECK 948c2ecf20Sopenharmony_ci measure func=FIRMWARE_CHECK 958c2ecf20Sopenharmony_ci appraise fowner=0 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ci The default policy measures all executables in bprm_check, 988c2ecf20Sopenharmony_ci all files mmapped executable in file_mmap, and all files 998c2ecf20Sopenharmony_ci open for read by root in do_filp_open. The default appraisal 1008c2ecf20Sopenharmony_ci policy appraises all files owned by root. 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci Examples of LSM specific definitions: 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ci SELinux:: 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ci dont_measure obj_type=var_log_t 1078c2ecf20Sopenharmony_ci dont_appraise obj_type=var_log_t 1088c2ecf20Sopenharmony_ci dont_measure obj_type=auditd_log_t 1098c2ecf20Sopenharmony_ci dont_appraise obj_type=auditd_log_t 1108c2ecf20Sopenharmony_ci measure subj_user=system_u func=FILE_CHECK mask=MAY_READ 1118c2ecf20Sopenharmony_ci measure subj_role=system_r func=FILE_CHECK mask=MAY_READ 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ci Smack:: 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ci measure subj_user=_ func=FILE_CHECK mask=MAY_READ 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ci Example of measure rules using alternate PCRs:: 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci measure func=KEXEC_KERNEL_CHECK pcr=4 1208c2ecf20Sopenharmony_ci measure func=KEXEC_INITRAMFS_CHECK pcr=5 1218c2ecf20Sopenharmony_ci 1228c2ecf20Sopenharmony_ci Example of appraise rule allowing modsig appended signatures: 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_ci appraise func=KEXEC_KERNEL_CHECK appraise_type=imasig|modsig 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ci Example of measure rule using KEY_CHECK to measure all keys: 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci measure func=KEY_CHECK 1298c2ecf20Sopenharmony_ci 1308c2ecf20Sopenharmony_ci Example of measure rule using KEY_CHECK to only measure 1318c2ecf20Sopenharmony_ci keys added to .builtin_trusted_keys or .ima keyring: 1328c2ecf20Sopenharmony_ci 1338c2ecf20Sopenharmony_ci measure func=KEY_CHECK keyrings=.builtin_trusted_keys|.ima 134