The present invention is generally directed to computer security. More particularly, it is directed to configuring mandatory access control in a computer, and applications thereof.
Many computer operating systems have a security mechanism commonly referred to as access control. There are two main types of access control—discretionary access control and mandatory access control.
Under discretionary access control, system resources have security attributes (e.g., read/write/execute permission flags and/or access control lists) associated with them. Access to system resources is controlled based on these security attributes, which are used to protect the system resources (e.g., files) owned by one user from unauthorized access by other users. A weakness associated with discretionary access control is that the security attributes assigned to each system resource are specified by the resource owner and can be modified or removed at will. During a computer attack, an attacker may be able to alter discretionary access control security attributes and thereby gain access to any or all system resources.
Under mandatory access control, access to system resources is controlled by security attributes that cannot be modified or removed during normal operation. In this way, mandatory access control offers a greater level of security compared to discretionary access control.
One form of mandatory access control is type enforcement. Type enforcement is implemented, for example, in security-enhanced Linux (SELinux). In type enforcement, both applications and system resources are assigned type labels. Access for a type enforcement system such as SELinux is defined by a collection of rules contained in a file called a policy. A policy file is loaded into the operating system of a machine during the boot process. The type labels assigned to applications and system resources cannot be changed during normal operation.
Although mandatory access control such as type enforcement provides a greater level of security than discretionary access control, configuring the policy is difficult. The policy language of SELinux, for example, exposes many complexities of the operating system that must be well understood by a system developer before the system developer can create an effective security-enhanced system. Many system developers, however, do not have such an understanding. Therefore, many system developers cannot take advantage of the enhanced security offered by mandatory access control such as type enforcement.
What are needed are new techniques and tools for configuring mandatory access control that overcome the deficiencies noted above.
The present invention provides systems and methods for configuring a mandatory access control security policy in a computer, and applications thereof. In an embodiment, the present invention provides a security configuration program. The security configuration program configures a security policy based on user input. For example, a user may provide input regarding ranges of values corresponding to a resource, such as ports and/or Internet protocol (IP) addresses, to which a process is to be granted access. The security configuration program configures the security policy to allow the process access to the specified ranges of values for the resource. In this way, a security configuration program in accordance with an embodiment of the present invention allows a user to configure and extend a security policy without special knowledge of the security policy language.
Further features and advantages of the invention, as well as the structure and operation of various embodiments of the invention, are described in detail below with reference to the accompanying drawings. It is noted that the invention is not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein.
The accompanying drawings, which are incorporated herein and form part of the specification, illustrate the present invention and, together with the description, further serve to explain the principles of the invention and to enable a person skilled in the relevant art(s) to make and use the invention.
The features and advantages of the present invention will become more apparent from the detailed description set forth below when read in conjunction with the drawings. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
The present invention provides systems and methods for configuring a mandatory access control security policy in a computer, and applications thereof. In the detailed description that follows, references to “one embodiment”, “an embodiment”, “an example embodiment”, etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
As illustrated in
The labeling statements label the types of resources according to the specific value(s) of the resource. For example, as illustrated in policy 104 of
The access rules grant access to the resources based on attributes. For example, the access rules of policy 104 allow process A to communicate with IP addresses labeled X over ports labeled alpha (α) over interfaces labeled gamma (γ) on machine 102. Similarly, the access rules of policy 104 allow process B to communicate with IP addresses labeled Y on ports labeled beta (β) over interfaces labeled gamma (γ).
As mentioned above, security configuration program 108 allows a user to manage and/or configure policy 104 running on machine 102. A user may utilize features and tools of security configuration program 108 by interacting with a graphical user interface provided on a display 130.
For example,
Screen shot 204 illustrates ranges of ports with which process B may communicate, as currently specified by security policy 104. Screen shot 204 illustrates that the current configuration of security policy 104 only allows process B to communicate with TCP port 2222.
Policy 320 includes definitions and labeling rules. The definitions include three ranges of ports, labeled range 1, range 2, and range 3 in policy 320.
Range 1 is defined as a type that includes ports 1 through 2221, and it is given two attributes. First, it is defined as a port type. Second, it is defined as a port for process A. This is because, according to the example of
Range 2 is defined as a type that includes port 2222, and it is given three attributes. Similar to range 1, range 2 is defined as a port type. Unlike range 1, however, range 2 is defined as a port for both process A and process B. This is because, according to the example of
Range 3 is defined as a type that includes ports 2223 through 65535, and it is given similar attributes as range 1. This is because, according to the example of
The labeling rules included in policy 320 associate the types defined in the definitions with their corresponding resources on machine 102.
As described herein, security configuration program 108 allows a user to manage security policy 104 by interacting with a simple graphical user interface, without requiring the user to understand the complexities of the definitions, labeling statements, and access rules of security policy 104.
As illustrated in
Range sifter module 610 receives user input 602. Based on user input 602, range sifter module 610 generates non-overlapping ranges 604. For example, as illustrated in
As illustrated in
For range AC1, attribute grouping module 620 defines a type corresponding to port 2221—namely, tcp_2221_port_t. Attribute grouping module 620 also adds this type to the attribute “bw_ProcessA_port”. Unlike range A1, however, the type of range AC1 is also added to the “bw_ProcessC_port” attribute, because both process A and process C are supposed to be able to communicate on port 2221, as specified by the user.
In accordance with the user input, and in a similar manner to ranges A1 and AC1, range ABC is associated with process A, process B, and process C. Range AC2 is associated with process A and process C. Range A2 is associated with process A.
Labeling module 630 generates labeling statements 908 based on the non-overlapping ranges 704 as illustrated, for example, in
In order to configure the security policy to grant processes A, B, and C access to the ports specified by the user, labeling statements 908 must be loaded into the security policy in the kernel. Linking module 640 may be optionally included in security configuration program 108 to load labeling statements 908 into the security policy.
As illustrated in
As noted above, security configuration program 108 also allows a user to configure the security policy to grant a process access to a specified range of IP addresses. For example,
Referring to screen shot 1102, Range A is specified to include addresses 192.168.30.0/255.255.255.0. To understand how the numbers 192.168.30.0/255.255.255.0 specify the IP addresses that are to be included in Range A, it is helpful to discuss IP addresses and network masks (“netmasks”).
In Range A, the first set of numbers (namely, 192.168.30.0) is an IP address, and the second set of numbers (namely, 255.255.255.0) is a netmask. Each of these sets of numbers is referred to as a “dotted quad,” and comprises four sets of 8-bit numbers. Thus, each dotted quad comprise 32-bits, which means that an IP address or netmask, when written in binary, comprises a string of thirty-two 1s and 0s. Notably, netmasks always comprise 1s followed by 0s. IP addresses and netmasks are written as dotted quads to make them easier for humans to comprehend.
The IP address 192.168.30.0 specifies the starting IP address in Range A. The netmask 255.255.255.0 is used to determine IP addresses included in Range A. To determine if an IP address is included in Range A, the binary representation of the IP address is ANDed with the binary representation of the netmask. As an example, the IP addresses 192.168.30.4 and 192.168.30.100 are both in Range A because, when ANDed with the binary representation of the netmask 255.255.255.0, the starting IP address is generated, as illustrated in Table 1.
Security configuration program 108 allows a user to configure the IP addresses to which process C should be granted access. For example,
Based on ranges of IP addresses for processes A, B, and C, security configuration program 108 reconfigures the security policy to grant each process access to the specified range of IP addresses. First, range sifter module 610 generates non-overlapping ranges corresponding to the ranges of IP addresses specified by the user. For example,
As illustrated in
Based on the non-overlapping ranges 1404 of IP addresses, attribute grouping module 620 generates groups of non-overlapping ranges based on attributes. For illustrative purposes,
As illustrated in definitions 1506, attribute grouping module 620 defines a type corresponding to range AB1—namely, ip—192—68—30—0to 192—168—30—39_node_t. Attribute grouping module 620 also adds this type to the attributes “bw_ProcessA_node” and “bw_ProcessB_node”, attributes associated with process A and process B, respectively. This is because both process A and process B are supposed to have access to this range of IP addresses in accordance with the user input.
For range ABC, attribute grouping module 620 defines a type corresponding to IP address 192.168.30.40—namely, ip—192—168—30—40_node_t. Attribute grouping module 620 also adds this type to the attributes “bw_ProcessA_node”, “bw_ProcessB_node”, and “bw_ProcessC_node”. Unlike the type of range AB1, attribute grouping module 620 associates the type ip—192—168—30—40_node_t of range ABC with processes A, B, and C because each of these processes is supposed to have access to IP address 192.168.30.40, as specified by the user input.
In accordance with the user input, and in a similar manner to ranges AB1 and ABC, range AB2 is associated with processes A and B.
Labeling module 630 generates labeling statements 1608 based on the non-overlapping ranges 1404′ of IP addresses as illustrated in
Similar to the example illustrated in
Various aspects of the present invention, such as security configuration program 108, can be implemented by software, firmware, hardware, or a combination thereof.
Computer system 1800 includes one or more processors, such as processor 1804. Processor 1804 can be a special purpose or a general purpose processor. Processor 1804 is connected to a communication infrastructure 1806 (for example, a bus or network). Computer system 1800 may also include a graphics processing system 1802 for rendering images to an associated display 1830.
Computer system 1800 also includes a main memory 1808, preferably random access memory (RAM), and may also include a secondary memory 1810. Secondary memory 1810 may include, for example, a hard disk drive 1812 and/or a removable storage drive 1814. Removable storage drive 1814 may comprise a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, or the like. The removable storage drive 1814 reads from and/or writes to a removable storage unit 1818 in a well known manner. Removable storage unit 1818 may comprise a floppy disk, magnetic tape, optical disk, etc. which is read by and written to by removable storage drive 1814. As will be appreciated by persons skilled in the relevant art(s), removable storage unit 1818 includes a computer usable storage medium having stored therein computer software and/or data.
In alternative implementations, secondary memory 1810 may include other similar means for allowing computer programs or other instructions to be loaded into computer system 1800. Such means may include, for example, a removable storage unit 1822 and an interface 1820. Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and other removable storage units 1822 and interfaces 1820 which allow software and data to be transferred from the removable storage unit 1822 to computer system 1800.
Computer system 1800 may also include a communications interface 1824. Communications interface 1824 allows software and data to be transferred between computer system 1800 and external devices. Communications interface 1824 may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, or the like. Software and data transferred via communications interface 1824 are in the form of signals 1828 which may be electronic, electromagnetic, optical, or other signals capable of being received by communications interface 1824. These signals 1828 are provided to communications interface 1824 via a communications path 1826. Communications path 1826 carries signals 1828 and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link or other communications channels.
In this document, the terms “computer program medium” and “computer usable medium” are used to generally refer to media such as removable storage unit 1818, removable storage unit 1822, a hard disk installed in hard disk drive 1812, and signals 1828. Computer program medium and computer usable medium can also refer to memories, such as main memory 1808 and secondary memory 1810, which can be memory semiconductors (e.g. DRAMs, etc.). These computer program products are means for providing software to computer system 1800.
Computer programs (also called computer control logic) are stored in main memory 1808 and/or secondary memory 1810. Computer programs may also be received via communications interface 1824. Such computer programs, when executed, enable computer system 1800 to implement embodiments of the present invention as discussed herein, such as security policy generator 700 of
Various systems and methods for implementing mandatory access control in a computer, and applications thereof, have been described in detail herein. It is to be appreciated that the Detailed Description section, and not the Summary and Abstract sections, is intended to be used to interpret the claims. The Summary and Abstract sections may set forth one or more but not all exemplary embodiments of the present invention as contemplated by the inventor(s), and thus, are not intended to limit the present invention and the appended claims in any way. Furthermore, although aspects of the present invention have been described with reference to SELinux, the invention is not limited to the Linux operating system or SELinux. Based on the description contained herein, a person skilled in the relevant art(s) will appreciate that embodiments of the present invention can be implemented with regard to other operating systems.