麒麟系统安全管理工具kysec机制详解

DAC访问控制

Linux下有多种权限控制的机制,常见的有:DAC(Discretionary Access Control)自主式权限控制和MAC(Mandatory Access Control)强制访问控制。

Linux上传统的访问控制标准是自主访问控制Discretionary Access Control(DAC)。在这种形式下,一个软件或守护进程以User ID(UID)或Set owner User ID(SUID)的身份运行,并且拥有该用户的目标(文件、套接字、以及其它进程)权限。这使得恶意代码很容易运行在特定权限之下,从而取得访问关键的子系统的权限。

另一方面,强制访问控制Mandatory Access Control(MAC)基于保密性和完整性强制信息的隔离以限制破坏。该限制单元独立于传统的Linux安全机制运作,并且没有超级用户的概念。

麒麟系统安全管理工具kysec机制详解_第1张图片

MAC强制访问控制机制

Apparmor

AppArmor(Application Armor)是Linux内核的一个安全模块,AppArmor允许系统管理员将每个程序与一个安全配置文件关联,从而限制程序的功能。简单的说,AppArmor是与SELinux类似的一个访问控制系统,通过它你可以指定程序可以读、写或运行哪些文件,是否可以打开网络端口等。作为对传统Unix的自主访问控制模块的补充,AppArmor提供了强制访问控制机制,它已经被整合到2.6版本的Linux内核中。

Apparmor是Ubuntu自带的强制访问机制。

Apparmor有两种工作模式:enforcement、complain/learning

Enforcement – 在这种模式下,配置文件里列出的限制条件都会得到执行,并且对于违反这些限制条件的程序会进行日志记录。

Complain – 在这种模式下,配置文件里的限制条件不会得到执行,Apparmor只是对程序的行为进行记录。例如程序可以写一个在配置文件里注明只读的文件,但Apparmor不会对程序的行为进行限制,只是进行记录。

那既然complain不能限制程序,为什么还需要这种模式呢,因为——如果某个程序的行为不符合其配置文件的限制,可以将其行为记录到系统日志,并且可以根据程序的行为,将日志转换成配置文件。

当然我们可以随时对配置文件进行修改,选择自己需要的模式。

服务状态

    • service  apparmor  status        查看apparmor服务状态

配置文件模式管理

    • aa-status                         查看系统所有apparmor文件的模式
    • aa-enforce filename                 设置apparmor文件为强制模式
    • aa-complain filename              设置apparmor文件为软模式

SELinux

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。

当一个主体Subject(如一个程序)尝试访问一个目标Object(如一个文件),SELinux安全服务器SELinux Security Server(在内核中)从策略数据库Policy Database中运行一个检查。基于当前的模式mode,如果 SELinux 安全服务器授予权限,该主体就能够访问该目标。如果SELinux安全服务器拒绝了权限,就会在/var/log/messages中记录一条拒绝信息。

SELinux 安全策略:

  • Targeted安全策略 — 只有目标网络进程(dhcpd,httpd,named,nscd,ntpd,portmap,snmpd,squid,以及 syslogd)受保护;
  • ukmcs安全策略 — 比targeted严格,进行TE管理员分权控制;
  • ukmls安全策略 — 多级安全保护,该策略准则为“禁止上读下写”(即低级不能读高级,高级不能读低级,只能同级写同级);

执行sestatus,可查看当前使用的安全策略。

SELinux 有三个模式(可以由用户设置)。这些模式将规定 SELinux 在主体请求时如何应对。这些模式是:

  • Enforcing 强制— SELinux 策略强制执行,基于 SELinux 策略规则授予或拒绝主体对目标的访问
  • Permissive 宽容— SELinux 策略不强制执行,不实际拒绝访问,但会有拒绝信息写入日志
  • Disabled 禁用— 完全禁用SELinux

执行getenforce,可查看当前SELinux的模式。

SELinux 安全模式设置:

  • sudo setenforce 0           设置软模式(如果启用三权分立,则secadm执行)
  • sudo setenforce 1           设置强制模式
  • getenforce                      查看安全模式

SELinux安全标记:

  • id -Z                                查看用户标记
  • ps auxZ                          查看进程标记
  • ls -Z filename                 查看文件标记
  • touch /.autorelabel         创建selinux安全标记文件,重启后系统将重新初        始化selinux安全标记

SELinux 安全策略(如果启用三权分立,则secadm执行):

  • semodule -l                           查看系统已加载的安全模块
  • semodule -i  *.pp                  加载 * 安全模块;
  • semodule -r *                        卸载 * 安全策略模块;

SELinux安全开关:

  • getsebool -a                          查看系统所有开关状态
  • setsebool user_ping 0/1        设置开关为关/开

SELinux 安全策略规则:

  • sesearch  -A  -s  sysadm_t  -t  user_tmp_t  -c file
  • // 查看sysadm_t标记的进程对user_tmp_t 标记的file客体有哪些allow允许规则

KYSEC

KYSEC是基于kysec安全标记对执行程序、脚本文件、共享库、内核模块进行保护的一种安全机制。

除了系统默认集成的执行程序、脚本文件、共享库、内核模块,任何外来的该4种文件,如拷贝、移动、下载、重新编译生成等,都必须添加到麒麟安全管理工具的相应白名单列表中,才能执行调用。

会对白名单列表中的文件进行保护,保护文件不被修改、移动、删除。

getstatus            查看当前Kysec的相关安全状态

麒麟系统安全管理工具kysec机制详解_第2张图片

  • 第一行Kysec status表示当前Kysec状态为normal;
  • 第二行exec control表示当前执行控制功能状态为警告;
  • 第三行net control表示当前网络控制功能状态为警告;
  • 第四行file protect表示当前文件保护功能为开;
  • 第五行kmod protect表示当前内核模块保护状态为开;
  • 第六行three protect表示当前三权分立状态为关;
  • 第七行process protect表示当前进程保护功能为开。
  • 只有当相应功能的状态为开(on)时,其所控制的功能配置才能生效

 

  • sudo setstatus softmode/normal         设置kysec安全状态为软/强制模式;
  • sudo setstatus -f exectl off                   关闭执行控制功能状态;
  • sudo setstatus -f exectl on                    开启执行控制功能状态;
  • sudo setstatus -f kmod off                    关闭内核模块保护功能状态;
  • sudo setstatus -f fpro off                       关闭文件保护功能状态;

KYSEC安全标记:

麒麟系统安全管理工具kysec机制详解_第3张图片

麒麟系统安全管理工具kysec机制详解_第4张图片

配置KYSEC安全标记:

  • kysec_set [-r] -n exectl/protect/userid -v 标记符号 file
  • 设置文件或目录的kysec安全标记;exectl对应执行控制标记,protect对应文件保护标记,userid对应文件身份标记;(strict安全模式时,只有secadm可以执行)
  • sudo kysec_set -n exectl -v original /tmp/ls   (已存在/tmp/ls文件)

关于kysec介绍

一、麒麟V10服务器

1、麒麟安全管理工具 #图形化安全配置工具

麒麟系统安全管理工具kysec机制详解_第5张图片

服务器默认没有开启,打开后提示如下图 #只能通过命令开启kysec模块

麒麟系统安全管理工具kysec机制详解_第6张图片

 

2、开启kysec模块 #服务器默认没有开启,切换kysec级别重启生效

开启命令:security-switch --set default #kysec默认级别default

安全级别:default、strict、custom,详细参数如下图

麒麟系统安全管理工具kysec机制详解_第7张图片

开启kysec模块后,就可以打开图形化安全管理工具

麒麟系统安全管理工具kysec机制详解_第8张图片

麒麟系统安全管理工具kysec机制详解_第9张图片

 

3、设置安全控制项 #先开启kysec模块

设置命令:setstatus Softmode | Normal | Warning

说明:强制模式(Normal):出现违规操作时,不止会审计记录该操作,还会阻止该操作的运行;

警告模式(Warning):出现违规操作时,会弹出麒麟安全授权认证框进行授权;

软模式(Softmode):出现违规操作时,只会审计记录该操作,而不会阻止该操作的运行。

5c513b3305da40fa96738f8d5cabda64.png

查看命令:getstatus #查看是否开启kysec及控制模块

未开启kysec

23644d44f8da4ddca336225a6c6be538.png

开启kysec默认级别,默认模块

61d5f0e2b7b44a498e2ba48e417a44c7.png

遗留:开启kysec模块,如何关闭?

 

二、麒麟V10桌面

1、麒麟安全管理工具 #图形化安全配置工具

位置:计算机右键属性——更新——安全中心

麒麟系统安全管理工具kysec机制详解_第10张图片

 

2、开启kysec模块 #服务器默认没有开启,切换kysec级别重启生效

通过命令或者图形化工具选择kysec级别和关闭kysec模块

开启命令:security-switch --set default #kysec默认级别default

安全级别:default、strict、custom,详细参数如下图

麒麟系统安全管理工具kysec机制详解_第11张图片

关闭kysec模块

关闭命令:setstatus disable

图形化工具操作如下图

麒麟系统安全管理工具kysec机制详解_第12张图片

 

3、设置安全控制项 #先开启kysec模块

设置命令:setstatus disable | enable | softmode

a6fb12c0e49f4389bc140e2e7e6b46c8.png

查看命令:getstatus #查看是否开启kysec及控制模块

未开启kysec

4394b1f1e01b4f609398d55e5a3c731f.png

开启kysec默认级别,默认模块

麒麟系统安全管理工具kysec机制详解_第13张图片

 

kysec机制

1.1 kysec白名单访问控制状态控制

所有用户可以执行getstatus,查看当前白名单访问控制(kysec)的状态:

麒麟系统安全管理工具kysec机制详解_第14张图片

sudo组用户、root用户(三权分立下为secadm用户)可以执行setstatus设置kysec状态:

73a730a37f9343109e4e86041f2e95d3.png

执行setstatus enable/softmode/disable,修改本次系统kysec的运行模式。其中enable安全模式会阻止非法程序的执行,Softmode模式只会在日志中记录非法程序的执行,而不会阻止该程序的执行。disable模式本次系统将临时关闭kysec,任何程序都可以正常执行,下次启动时可恢复到系统设定的kysec安全模式;

执行 setstatus disable/softmode/enable -p将在修改本次kysec运行模式的永久修改下次启动时ksyec的运行模式;

执行 setstatus -f < exect | netctl > 用于设置白名单执行控制/应用联网控制模块的安全状态,其安全状态可设置为off(关闭)、enforcing(强制模式)、warning(警告模式,将弹出授权窗口在未允许的程序运行/联网时弹出授权窗口需要用户授权确认),添加-p参数,将在修改本次安全状态的同时永久修改下次系统启用kysec时的安全状态;

执行setstatus -f < fpro | ppro> 用于设置文件保护/进程防护的的状态为关闭/打开。

 

1.2 kysec白名单访问控制初始化

在系统安装完成后,首次开机时,对整个文件系统进行扫描,会给整个文件系统的可执行程序、共享库文件、可执行脚本以及内核模块打上初始化标记original,并对系统设定的部分应用程序打上其他合法白名单标记,完成系统白名单的初始化过程。

加入到白名单列表的可执行程序、共享库文件、可执行脚本系统允许其被执行和调用,加入到白名单列表的内核模块系统允许其被加载。

1.3 kysec主动标记功能

系统能够对非法外来的可执行程序、共享库文件、可执行脚本、内核模块进行主动识别和标记。

可使用kysec_get -n exectl 命令查看对应文件的白名单标记,非法外来的可执行程序、共享库文件、可执行脚本,其白名单标记为unkown。

当白名单列表中受信任的可执行程序、共享库文件、可执行脚本、内核模块被篡改时,进行主动识别和标记。

麒麟系统安全管理工具kysec机制详解_第15张图片

kysec执行控制管控

对于外来非法的可执行程序、共享库文件、可执行脚本,系统将不允许其被执行和调用。只有通过管理员添加到白名单列表,或者关闭麒麟安全机制,才可以执行和被调用。

管理员可以通过执行kysec_set -n exectl -v original/verified/trusted/kysoft ,将对应的可执行程序、共享库文件、可执行脚本加入到执行控制白名单列表。也可以执行kysec_set -n exectl -v unknown Filepath,将已加入到执行控制白名单列表中的可执行程序、共享库文件、可执行脚本设置为未认证,此时系统将禁止其运行和被调用。

0f87a85270c94f9daf346f24ae9c6996.png

a41a53a919d04012b698f964aaf1593a.png

各标记类型区别如下:

unknown:未知文件标记,该标记不可执行

original:系统原始文件标记,该标记可执行

verified:第三方可执行标记,该标记可执行

kysoft:可信安全标记,该标记可执行

trusted:可信安全标记,拥有该标记的程序对文件进行修改时,文件的标记不变,该标记可执行。

1.4 kysec文件保护管控

系统管理员可以将需要完整性保护的文件加入到文件保护白名单列表中,可以防止对应文件被删除、修改以及移动等操作。

系统管理员可以通过执行kysec_set -n protect -v readonly 将需要保护的文件加入到文件保护列表。可以通过执行kysec_set -n protect -v none ,将该文件从文件保护列表移除。

84232c4fe63f41d6b0f03a1f4222a0c5.png

1.5 kysec内核模块管控

对于外来非法、被篡改的内核模块,系统将不允许其被加载。只有通过管理员添加到白名单列表,或者关闭麒麟安全机制,其才可以该加载。

管理员可以通过执行kysec_set -n exectl -v original/verified/trusted/kysoft ,将对应的内核模块加入到内核模块保护白名单列表。也可以执行kysec_set -n exectl -v unknown Filepath,将已加入到内核模块保护白名单列表中的内核模块设置为未认证,此时系统将禁止其被加载。

管理员可以执行kysec_kmod -a ,对已加入到内核保护列表的内核模块开启防卸载保护,此时该模块不可以被卸载。管理员可以执行kysec_kmod -d ,对已开启防卸载保护的内核模块关闭防卸载保护。

各标记类型区别如下:

unknown:未知文件标记,该标记不可的模块不可被加载执行

original:系统原始文件标记,该标记可以被加载

verified:第三方可执行标记,该标记可以被加载

kysoft:可信安全标记,该标记可以被加载

trusted:可信安全标记,拥有可以被加载。

 

1.6 kysec应用联网控制

应用联网控制功能:控制应用程序的联网,该功能被启用后。

对于已添加到应用联网控制列表的应用程序,将会根据该应用程序在列表中配置的联网策略决定是否允许该应用程序联网;

对于不在应用联网控制列表的应用程序,当联网控制设置为禁止时,不在应用联网控制列表的应用程序将被禁止连接网络;设置为警告时,不在应用联网控制列表的应用程序在联网时将弹出联网授权窗口,在授权窗口可以选择本次允许/允许/禁止,来对该应用程序联网进行控制,并根据用户的选择将该应用程序加入到应用联网控制列表中并配置所选择的联网策略:当选择“允许”时,该应用程序将永久性允许联网,当选择“本次允许”时系统仅允许该应用程序本次连接网络,下次该应用程序启动连接网络时将会继续弹出联网授权窗口,当选择“禁止”时该应用程序将被永久禁止连接网络;

当应用联网控制功能设置为“关闭时”,所有应用程序均可以连接网络。

sudo组用户(三权分立下为secadm用户)执行setstatus -f netctl enforcing/warning/off,分别设置应用联网状态开关为禁止/警告/关闭。

sudo组用户(三权分立下为secadm用户)可以通过安全中心--网络保护--应用程序联网,设置应用联网控制状态,具体操作详见安全中心章节介绍。

 

1.7 kysec进程防护

  1. 进程防护安全机制

进程防护功能包括进程防杀死类型和关键进程状态监控类型,可以根据实际需求,对不同的应用程序设置不同的防护类型。

两种类型进程防护区别如下:

 进程防杀死:当把应用程序加入到进程防杀死列表,系统将禁止该程序进程被杀死(当进程号为1的进程发出kill信号时不受控制)。                                                                                                   

 关键进程状态监控:当把应用程序加入到关键进程状态监控列表,系统将对该程序的进程状态进行监控,并对其进行防杀死控制,当发现列表中某个进程退出状态变成DEAD或ZOMBIE或者该进程主动退出时,将会调用核外程序进行关机或锁屏等(具体操作根据配置文件来决定)。

当系统启动时,系统自动同步进程防杀死、关键进程状态监控列表到内核中,内核程序启动对进程防护列表中应用进程的防护。

  1. 进程防护相关操作

进程防护属于kysec的子模块,通过getstatus 可以查看kysec以及进程防护process protect子模块的状态,当kysec的状态为enabled,且process protect状态为on时,进程防护才生效:

麒麟系统安全管理工具kysec机制详解_第16张图片

root用户、sudo组用户执行可以执行以下命令进行相关安全操作:

setstatus enable可以开启kysec

setstatus -f ppro on用于开启进程防护

setstatus -f ppro off用户关闭进程防护

kysec_ppro -a subs/key 将应用程序加入到进程防护列表,其中subs代表进程防杀死类型,Filepath为应用程序的路径,key代表关键进程状态监控类型。

kysec_ppro -u subs/key 更新进程防护程序的防护类型;

kysec_ppro -d 将进程防护程序从进程防护列表移除;

  1. 进程防护相关配置

/sys/kernel/security/kysec/ppro,可以查看当前进程防护状态,1代表打开,0代表关闭。

/sys/kernel/security/kysec/ppro_info,可以查看当前进程防护列表各类型防护程序的数量:

cb4ed62150ec4cf1b1809a36fe70ba18.png

通过kysec_ppro -a/u/d等更新进程防护列表后,可以通过/etc/kysec/ppro/ppro.xml查看进程防护列表。

root/sudo组用户可以通过/etc/kysec/ppro/ppro.conf配置关键进程状态监控对应的防护动作。其中配置为lock时会锁定屏幕,配置为logout会注销用户,配置为poweroff时会触发关机,配置为reboot时会重启系统。该配置修改后无需重启系统立即生效。

58b10157541242e5b808f7aff0548b14.png

 

 

你可能感兴趣的:(linux系统管理工具,运维)