SELinux零知识学习十一、SELinux策略语言之客体类别和许可(5)

接前一篇文章:SELinux零知识学习十、SELinux策略语言之客体类别和许可(4)

一、SELinux策略语言之客体类别和许可

3. 有效的客体类别

(2)与网络有关的客体类别

与网络有关的客体类别代表网络资源如网络接口、不同种类的套接字和主机。目前的客体类别足以允许对单个系统上的网络进行广泛的控制,另外还有增强,如标记网络数据包。下表总结了与网络和套接字有关的客体类别:

客体类别 描述
association IPsec安全联盟
key_socket PF_KEY协议家族的套接字,用于管理IPsec中的密钥
netif 网络接口(如eth0)
netlink_audit_socket 用于控制审核的Netlink套接字
netlink_dnrt_socket 用于控制DECnet路由的Netlink套接字
netlink_firewall_socket 用于创建用户空间防火墙过滤器的Netlink套接字
netlink_ip6fw_socket 用于创建用户空间防火墙过滤器的Netlink套接字
netlink_kobject_uevent_socket 用于在用户空间接收内核事件通知的Netlink套接字
netlink_nflog_socket 用于接收Netfilter日志消息的Netlink套接字
netlink_route_socket 用于控制和管理网络资源如路由表和IP地址的Netlink套接字
netlonk_selinux_socket 用于接收策略载入通知,强制模式切换和清空AVC缓存的Netlink套接字
netlink_tcpdiag_socket 用于监视TCP连接的Netlink套接字
netlink_socket 所有其它的Netlink套接字
netlink_xfrm_socket 用于获取、管理和设置IPsec参数的Nerlink套接字
node 代表一个IP地址或一段IP地址的主机
packet_socket 协议在用户空间执行的原始套接字
rawip_socket 既不是TCP也不是UDP的IP套接字
tcp_socket TCP套接字
udp_socket UDP套接字
unix_dgram_socket 本地机器上(unix域)的IPC数据报套接字
unix_stream_socket 本地机器上(unix域)的IPC流套接字

客体类别node、netif、packet_socket、rawip_socket、tcp_socket、udp_socket和socket控制典型的网络访问。 

1)netif、node

  • netif

客体类别netif代表网络接口,每个有名字的网络接口(如eth0、eth1)都是通过netif客体类别的实例进行表现的。

  • node

由IP地址或地址段进行标识的网络上的远程主机是通过node客体类别表现的,使用客体类别node,可以限制主机(通过IP地址)上的哪个进程可以使用网络

前面列出的不同种类的套接字客体类别代表协议套接字类型,成功发送或接收网络数据需要所有有关的netif、node、socket客体类别实例的许可。

2)标准网络套接字

标准网络套接字是由协议分配的(在调用socket(2)系统调用时确定的),不同的socket客体类别允许我们限制应用程序发送或接收数据包的类型,这对限制应用程序发送原始数据包的能力特别有用。

  • tcp_socket和udp_socket

客体类别tcp_socket和udp_socket分别代表TCP和UDP套接字

  • rawip_socket

客体类别rawip_socket代表发送原始IP数据包的套接字

  • packet_socket

客体类别packet_socket代表发送其它类型的原始数据包的套接字

  • socket

所有其它的套接字都由客体类别socket表示

  • association和key_socket

使用IP安全(IPsec)的通讯拥有额外的资源,由客体类别association和key_socket表示,IPsec安全联盟是为通讯提供安全服务的连接。客体类别association代表IPsec联盟,IPsec需要通过密钥管理(PF_KEY)套接字管理密钥,它通过客体类别key_socket进行表现

3)unix域套接字

Linux系统上的本地通讯可以使用unix域套接字(PF_UNIX)实现,这些套接字通常用于本地IPC

  • unix_stream_socket

面向连接的套接字也叫流套接字,通过客体类别unix_stream_socket进行表现

  • unix_dgram_socket

面向无连接的套接字也叫数据报套接字,通过客体类别unix_dgram_socket进行表现

  • sock_file

unix域套接字可以与文件系统上的某个特定文件关联起来,让其它应用程序很容易就连接到套接字,这个文件通过客体类别sock_file表现,它是一个与文件有关的客体类别,见前一篇文章SELinux零知识学习十、SELinux策略语言之客体类别和许可(4)。

4)Netlink套接字

SELinux中最后一组是Netlink套接字,这些套接字最初是开发用于在Linux最后提供一个标准意义的网络配置。现在它们常常用于在内核与用户之间通讯。基于协议类型的不同,有多种表示Netlink套接字的客体类别,常见的netlink_socket表示无特定客体类别的保留协议

你可能感兴趣的:(SELinux,SELinux)