Ñо¿SELinuxµÄÈýÖÖÕ½ÂÔÀàÐÍ
SELinuxÊÇÒ»ÖÖÇå¾²ÔöÇ¿µÄLinux²Ù×÷ϵͳÇ徲ģ¿é£¬Æä½¹µãÊÇͨ¹ýÇ¿ÖÆ»á¼û¿ØÖÆÀ´Ìá¸ßϵͳµÄÇå¾²ÐÔ¡£ÔÚSELinuxÖУ¬Õ½ÂÔÀàÐÍÊǽç˵Çå¾²Õ½ÂÔµÄÖ÷Òª×é³É²¿·Ö£¬Æ¾Ö¤²î±ðµÄÐèÇóºÍ³¡¾°£¬SELinuxÌṩÁË3ÖÖ²î±ðµÄÕ½ÂÔÀàÐÍ£¬»®·ÖÊÇMLS£¨Multi-Level Security£©¡¢TE£¨Type Enforcement£©¡¢RBAC£¨Role-Based Access Control£©¡£±¾ÎĽ«Ì½ÌÖÕâ3ÖÖ²î±ðµÄÕ½ÂÔÀàÐÍ£¬²¢Í¨¹ýÏêϸ´úÂëʾÀýÀ´Õ¹Ê¾ËüÃǵÄÓ¦Óá£
MLS£¨Multi-Level Security£©
MLSÊÇSELinux×î»ù±¾ºÍ×îÇ¿Ê¢µÄÇå¾²Õ½ÂÔÀàÐÍÖ®Ò»£¬Ëü¿ÉÒÔʵÏÖ²î±ð¼¶±ðµÄÇå¾²±êÇ©À´¿ØÖÆϵͳÖвî±ð¼¶±ðµÄÊý¾ÝºÍÀú³ÌÖ®¼äµÄ»á¼ûȨÏÞ¡£ÔÚMLSÕ½ÂÔÖУ¬ÎªÎļþ¡¢Àú³ÌµÈ¹¤¾ß·ÖÅɲî±ðµÄÇå¾²±êÇ©£¬ÒÔÈ·±£Êý¾ÝµÄ±£ÃÜÐÔºÍϵͳµÄÇå¾²ÐÔ¡£
ÏÂÃæÊÇÒ»¸ö¼òÆÓµÄÀý×Ó£¬ÓÃÓÚÑÝʾÔÚSELinuxÖÐÔõÑù½¨ÉèÒ»¸öMLSÕ½ÂÔ²¢¸¶Óë²î±ð¼¶±ðµÄ»á¼ûȨÏÞ£º
# ÉèÖÃÎļþÇå¾²±êÇ© chcon system_u:object_r:top_secret_file:s0 secret_file.txt # ½¨ÉèÒ»¸öÀú³Ì²¢ÉèÖÃÆäÇå¾²±êÇ© runcon -t top_secret_process_t my_program
µÇ¼ºó¸´ÖÆ
ÔÚÉÏÃæµÄ´úÂëʾÀýÖУ¬ÎÒÃÇͨ¹ýchconºÍrunconÏÂÁî»®·ÖΪÎļþºÍÀú³Ì·ÖÅÉÁ˲î±ðµÄÇå¾²±êÇ©£¬ÕâÑù¾Í¿ÉÒÔƾ֤ÕâЩ±êÇ©À´ÏÞÖÆËüÃÇÖ®¼äµÄ½»»¥ºÍ»á¼ûȨÏÞ¡£
TE£¨Type Enforcement£©
TEÊÇSELinuxÖÐÁíÒ»ÖÖÖ÷ÒªµÄÕ½ÂÔÀàÐÍ£¬Ëüͨ¹ý½ç˵»á¼û¿ØÖƹæÔòÀ´ÏÞÖÆÀú³Ì¡¢ÎļþµÈ¹¤¾ßÖ®¼äµÄ²Ù×÷ºÍ»á¼ûȨÏÞ¡£TEÕ½ÂÔÀàÐÍÔÊÐíÖÎÀíÔ±½ç˵ÏêϸµÄ»á¼û¹æÔò£¬ÒÔ±£»¤ÏµÍ³ÖеÄÒªº¦×ÊÔ´ºÍÃô¸ÐÊý¾Ý¡£
ÏÂÃæÊÇÒ»¸ö¼òÆÓµÄÀý×Ó£¬Õ¹Ê¾ÁËÔõÑùÔÚSELinuxÖÐʹÓÃTEÕ½ÂÔÀ´ÏÞÖÆÒ»¸öÀú³Ì¶ÔÃô¸ÐÎļþµÄ»á¼û£º
# ½¨ÉèÒ»¸öTEÕ½ÂÔÄ£¿éÎļþ policy_module my_policy 1.0; # ½ç˵¹æÔò£ºÔÊÐíÀú³ÌÖ»¶Á»á¼ûsecret_dataÎļþ allow my_process_t secret_data_t:file {read}; # ±àÒë²¢¼ÓÔØTEÕ½ÂÔÄ£¿é checkmodule -M -m -o my_policy.mod my_policy.te semodule_package -o my_policy.pp -m my_policy.mod semodule -i my_policy.pp
µÇ¼ºó¸´ÖÆ
ÔÚÉÏÃæµÄ´úÂëʾÀýÖУ¬ÎÒÃÇͨ¹ý½ç˵TEÕ½ÂÔÄ£¿éºÍ»á¼û¹æÔò£¬ÏÞÖÆÁËmy_process_tÀú³ÌÖ»ÄܶÔsecret_data_tÎļþ¾ÙÐÐÖ»¶Á²Ù×÷£¬´Ó¶øÈ·±£ÁËϵͳÖÐÃô¸ÐÊý¾ÝµÄÇå¾²ÐÔ¡£
RBAC£¨Role-Based Access Control£©
RBACÊÇSELinuxÖеĵÚÈýÖÖÕ½ÂÔÀàÐÍ£¬Ëüͨ¹ý»ùÓÚ½ÇÉ«µÄ»á¼û¿ØÖÆÀ´ÖÎÀíϵͳÖвî±ðÓû§ºÍÀú³ÌµÄȨÏÞ¡£RBACÕ½ÂÔÔÊÐíÖÎÀíԱΪ²î±ð½ÇÉ«·ÖÅɲî±ðµÄȨÏÞ£¬´Ó¶øʵÏÖϸÁ£¶ÈµÄȨÏÞÖÎÀíºÍ¿ØÖÆ¡£
ÏÂÃæÊÇÒ»¸ö¼òÆÓµÄÀý×Ó£¬Õ¹Ê¾ÁËÔõÑùÔÚSELinuxÖÐʹÓÃRBACÕ½ÂÔÀ´Îª²î±ð½ÇÉ«·ÖÅɲî±ðµÄȨÏÞ£º
# ½¨ÉèÒ»¸öRBAC½ÇÉ« semanage login -a -s staff_r -r s0-s0:c0.c102 user1 # Ϊ½ÇÉ«·ÖÅÉȨÏÞ semanage user -m -R 'staff_r' staff_t # ½«Óû§·ÖÅÉÖÁ½ÇÉ« semanage login -a -s staff_r -r s0-s0:c0.c102 user2
µÇ¼ºó¸´ÖÆ
ÔÚÉÏÃæµÄ´úÂëʾÀýÖУ¬ÎÒÃÇͨ¹ýsemanageÏÂÁÉèÁËÒ»¸öRBAC½ÇÉ«staff_r£¬²¢Îª¸Ã½ÇÉ«·ÖÅÉÁËstaff_tȨÏÞ£¬È»ºó½«Óû§user1ºÍuser2·ÖÅɸøÁËstaff_r½ÇÉ«£¬´Ó¶øʵÏÖÁË»ùÓÚ½ÇÉ«µÄ»á¼û¿ØÖÆ¡£
×ܽáÀ´Ëµ£¬SELinuxÌṩÁËÈýÖÖ²î±ðµÄÕ½ÂÔÀàÐÍMLS¡¢TEºÍRBAC£¬»®·ÖÓÃÓÚʵÏֶ༶Çå¾²¡¢Ç¿ÖÆ»á¼û¿ØÖƺͻùÓÚ½ÇÉ«µÄ»á¼û¿ØÖÆ¡£Í¨¹ýÏêϸµÄ´úÂëʾÀý£¬ÎÒÃÇ¿ÉÒÔ¸üºÃµØÃ÷È·ÕâЩսÂÔÀàÐ͵ÄÓ¦ÓúÍʵÏÖ·½·¨£¬´Ó¶øÌá¸ßϵͳµÄÇå¾²ÐԺͿÉÖÎÀíÐÔ¡£
ÒÔÉϾÍÊÇÑо¿SELinuxµÄÈýÖÖÕ½ÂÔÀàÐ͵ÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡