ÔõÑùÔÚLinuxÉÏÉèÖÃÇ¿Ê¢µÄÈÝÆ÷Çå¾²¹¤¾ß
ÔõÑùÔÚlinuxÉÏÉèÖÃÇ¿Ê¢µÄÈÝÆ÷Çå¾²¹¤¾ß
Ëæ×ÅÈÝÆ÷ÊÖÒÕµÄÆÕ±éÓ¦Óã¬ÈÝÆ÷Çå¾²±äµÃÓÈΪÖ÷Òª¡£ºÏÀíÉèÖÃÈÝÆ÷Çå¾²¹¤¾ß¿ÉÒÔÓÐÓñ£»¤ÈÝÆ÷ÖеÄÓ¦ÓóÌÐòºÍÊý¾Ý£¬±ÜÃâDZÔڵĹ¥»÷ºÍÊý¾Ýй¶¡£±¾ÎĽ«ÏÈÈÝÔõÑùÔÚLinuxÉÏÉèÖü¸¿îÇ¿Ê¢µÄÈÝÆ÷Çå¾²¹¤¾ß£¬²¢Ìṩ´úÂëʾÀý¹©²Î¿¼¡£
SELinux£¨Security-Enhanced Linux£©
SELinuxÊÇÒ»ÖÖLinuxÄÚºËÇå¾²ÔöÇ¿Ä£¿é£¬¿ÉÒÔʵÏÖ»á¼û¿ØÖÆ¡¢Ç¿ÖÆÕ½ÂԺ͸ôÀëµÈ¹¦Ð§¡£ÔÚÉèÖÃÈÝÆ÷Ç徲ʱ£¬¿ÉÒÔʹÓÃSELinuxÏÞÖÆÈÝÆ÷Àú³ÌµÄȨÏÞ£¬±ÜÃâÈÝÆ÷ԽȨ»á¼ûËÞÖ÷»ú×ÊÔ´¡£
Ê×ÏÈ£¬È·±£SELinuxÒÑ×°Öò¢ÆôÓ᣿ÉÒÔͨ¹ýÒÔÏÂÏÂÁîÀ´¼ì²é£º
sestatus
µÇ¼ºó¸´ÖÆ
ÈôÊÇSELinuxδװÖûòδÆôÓ㬿ÉÒÔͨ¹ý×°ÖÃÖ÷»úµÄÈí¼þ°ü¹ÜÀíÆ÷£¬Èçyum»òapt£¬À´×°Öò¢ÆôÓÃSELinux¡£
½ÓÏÂÀ´£¬Í¨¹ýÐÞ¸ÄÈÝÆ÷ÉèÖÃÎļþÀ´ÆôÓÃSELinuxµÄÇå¾²Õ½ÂÔ¡£ÀýÈ磬¹ØÓÚDockerÈÝÆ÷£¬¿ÉÒÔʹÓÃÒÔÏÂÏÂÁSELinuxÕ½ÂÔÉèÖÃΪenforcing£º
docker run --security-opt label=type:container_t [image_name]
µÇ¼ºó¸´ÖÆ
Õ⽫ȷ±£ÈÝÆ÷ÄÚµÄÀú³ÌÊܵ½SELinuxÕ½ÂÔµÄÔ¼Êø¡£
AppArmor
AppArmorÊÇÒ»ÖÖÓ¦ÓóÌÐò¼¶±ðµÄ»á¼û¿ØÖÆ£¨MAC£©ÏµÍ³£¬¿ÉÒÔÏÞÖÆÓ¦ÓóÌÐò»á¼ûÌض¨Îļþ¡¢Ä¿Â¼ºÍ×ÊÔ´¡£ÔÚÈÝÆ÷Çå¾²ÉèÖÃÖУ¬¿ÉÒÔʹÓÃAppArmorÀ´ÏÞÖÆÈÝÆ÷ÖеÄÓ¦ÓóÌÐò½öÄÜ»á¼ûÆäËùÐèµÄ×ÊÔ´£¬±ÜÃâÓ¦ÓóÌÐòÀÄÓûòй¶Êý¾Ý¡£
Ê×ÏÈ£¬È·ÈÏÖ÷»úÉÏÒÑ×°ÖÃAppArmor£¬²¢È·±£Ëü´¦ÓÚÆôÓÃ״̬¡£¿ÉÒÔʹÓÃÒÔÏÂÏÂÁî¼ì²éAppArmor״̬£º
apparmor_status
µÇ¼ºó¸´ÖÆ
ÈôÊÇAppArmorδװÖûòδÆôÓã¬Ôò¿ÉÒÔͨ¹ýÈí¼þ°ü¹ÜÀíÆ÷×°Öò¢ÆôÓÃAppArmor¡£
½ÓÏÂÀ´£¬½¨ÉèÒ»¸öAppArmorÉèÖÃÎļþ£¬ÓÃÓÚÏÞÖÆÈÝÆ÷ÖеÄÓ¦ÓóÌÐò»á¼û¡£ÀýÈ磬¹ØÓÚDockerÈÝÆ÷£¬¿ÉÒÔÔÚÈÝÆ÷ÉèÖÃÖÐÖ¸¶¨AppArmorÉèÖÃÎļþµÄλÖãº
docker run --security-opt apparmor=[apparmor_profile] [image_name]
µÇ¼ºó¸´ÖÆ
ÔÚÉèÖÃÎļþÖУ¬¿ÉÒÔÖ¸¶¨ÈÝÆ÷ÖеÄÓ¦ÓóÌÐòÔÊÐí»á¼ûµÄĿ¼¡¢ÎļþºÍ×ÊÔ´£¬ÒÔ¼°Õ¥È¡»á¼ûµÄĿ¼¡¢ÎļþºÍ×ÊÔ´¡£
Linux Capabilities
Linux CapabilitiesÊÇÒ»ÖÖÓë¹Å°åµÄUnixȨÏÞÄ£×Ó£¨ÈçSUIDºÍSGID£©Ïà±È¸üϸÁ£¶ÈµÄȨÏÞ¿ØÖÆ»úÖÆ¡£Í¨¹ýÉèÖÃLinux Capabilities£¬¿ÉÒÔÏÞÖÆÈÝÆ÷Àú³Ì½ö¾ßÓÐÐëÒªµÄȨÏÞ£¬ÓÐÓõؽµµÍDZÔڵĹ¥»÷Σº¦ºÍȨÏÞÀÄÓá£
Ê×ÏÈ£¬Í¨¹ýÒÔÏÂÏÂÁîÉó²éÈÝÆ÷ÖеÄÀú³ÌȨÏÞ£º
docker exec [container_id] ps -eo comm,cap
µÇ¼ºó¸´ÖÆ
È»ºó£¬Æ¾Ö¤Ó¦ÓóÌÐòµÄÐèÇóºÍ×îСȨÏÞÔÔò£¬ÎªÈÝÆ÷Àú³Ì·ÖÅɺÏÊʵÄLinux Capabilities¡£ÀýÈ磬¿ÉÒÔʹÓÃÒÔÏÂÏÂÁÈÝÆ÷Àú³ÌµÄcapabilitiesÏÞÖÆΪ±ØÐèµÄȨÏÞ£º
docker run --cap-drop=[capabilities_to_drop] [image_name]
µÇ¼ºó¸´ÖÆ
Õ⽫ȷ±£ÈÝÆ÷Àú³Ì½ö¾ßÓÐÖ¸¶¨µÄLinux Capabilities£¬ÆäËûȨÏÞ½«±»°þ¶á¡£
Seccomp
Seccomp£¨Secure Computing Mode£©ÊÇÒ»ÖÖLinuxÄÚºËÇå¾²ÔöÇ¿ÊÖÒÕ£¬¿ÉÒÔ¹ýÂËÀú³Ì¶ÔϵͳŲÓõĻá¼û¡£Í¨¹ýʹÓÃSeccomp£¬¿ÉÒÔÏÞÖÆÈÝÆ÷ÖеÄÓ¦ÓóÌÐò½öÄÜÖ´ÐÐÌض¨µÄϵͳŲÓ㬱ÜÃâ¹¥»÷ÕßʹÓÃÎó²îÖ´ÐжñÒâ²Ù×÷¡£
Ê×ÏÈ£¬Í¨¹ýÒÔÏÂÏÂÁîÉó²éÈÝÆ÷ÖеÄÀú³ÌϵͳŲÓãº
docker exec [container_id] strace -e trace=process_name
µÇ¼ºó¸´ÖÆ
È»ºó£¬Æ¾Ö¤Ó¦ÓóÌÐòµÄÐèÇóºÍÇå¾²ÐÔÒªÇó£¬ÉèÖÃÈÝÆ÷Àú³ÌµÄSeccompÕ½ÂÔ¡£ÀýÈ磬¿ÉÒÔʹÓÃÒÔÏÂÏÂÁîÉèÖÃDockerÈÝÆ÷µÄSeccompÕ½ÂÔ£º
docker run --security-opt seccomp=[seccomp_profile] [image_name]
µÇ¼ºó¸´ÖÆ
ÔÚSeccompÕ½ÂÔÎļþÖУ¬¿ÉÒÔÖ¸¶¨ÈÝÆ÷Àú³ÌÔÊÐíÖ´ÐеÄϵͳŲÓã¬ÒÔ¼°Õ¥È¡Ö´ÐеÄϵͳŲÓá£
×ÛÉÏËùÊö£¬ÉèÖÃÇ¿Ê¢µÄÈÝÆ÷Çå¾²¹¤¾ßÊDZ£»¤ÈÝÆ÷ÄÚÓ¦ÓóÌÐòºÍÊý¾ÝµÄÖ÷Òª²½·¥¡£Í¨¹ýºÏÀíÉèÖÃSELinux¡¢AppArmor¡¢Linux CapabilitiesºÍSeccomp£¬¿ÉÒÔÌá¸ßÈÝÆ÷µÄÇå¾²ÐÔ£¬ÓÐÓÃÌá·ÀÖÖÖÖ¹¥»÷¡£ÔÚʵÑéÀú³ÌÖУ¬ÎÒÃǽ¨Òéƾ֤ÏêϸӦÓóÌÐòµÄÐèÇóºÍÇå¾²ÐÔÒªÇó¾ÙÐкÏÀíÑ¡ÔñºÍÉèÖá£
£¨×ÖÊý£º941×Ö£©
ÒÔÉϾÍÊÇÔõÑùÔÚLinuxÉÏÉèÖÃÇ¿Ê¢µÄÈÝÆ÷Çå¾²¹¤¾ßµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡