Configuring SELinux Security Policies

If the UNIX distribution features SELinux (Security-Enhanced UNIX), you may need to configure SELinux security policies to enable correct Dr.Web for Linux component operation (for example, operation of the scan engine) after they are installed.

1. Universal Package Installation Issues

If SELinux is enabled, installation from the installation file (.run) can fail because an attempt to create the drweb user, under which Dr.Web for Linux components operate, can be blocked.

If installation of Dr.Web for Linux from the file (.run) fails due to inability to create the drweb user, check the SELinux operation mode with the getenforce command. The command outputs the current scanning mode:

Permissive—protection is active but a permissive strategy is used: actions that violate the security policy are not denied but information on the actions is logged.

Enforced—protection is active and restrictive strategy is used: actions that violate security policies are blocked and information on the actions is logged.

Disabled—SELinux is installed but not active.

If SELinux is operating in Enforced mode, change it to Permissive. For that purpose, use the following command:

# setenforce 0

which temporarily (until the next reboot) enables Permissive mode for SELinux.

Note that regardless of the operation mode enabled with the setenforce command, after the restart of the operating system, SELinux returns to the safe operation mode specified in the its settings (file with SELinux settings usually resides in the /etc/selinux directory).

After the successful Dr.Web for Linux installation, enable the Enforced mode again before starting the product. For that, use the following command:

# setenforce 1

2. Dr.Web for Linux Operation Issues

In some cases when SELinux is enabled, certain auxiliary Dr.Web for Linux components (for example, drweb-se and drweb-filecheck used by Scanner and SpIDer Guard) cannot start. If so, object scanning and file system monitoring become unavailable. When an auxiliary module fails to start, the main Dr.Web for Linux window displays messages on 119 and 120 errors and information on these errors is also registered by syslog (the log is usually located in the /var/log/ directory).

When the SELinux security system denies access, such an event is logged. In general, when the audit daemon is used on the system, the log of the audit is stored in the /var/log/audit/audit.log file. Otherwise, messages about blocked operations are saved to the general log file (/var/log/messages or /var/log/syslog).

If auxiliary modules do not function because they are blocked by SELinux, compile special security policies for them.

Note that certain UNIX distributions do not feature the utilities mentioned below. If so, you may need to install additional packages with the utilities.

Configuring SELinux Security Policies:

1.Create a new file with the SELinux policy source code (a .te file). This file defines restrictions related to the described policy module. The policy source code can be created in one of the following ways:

1)Using the audit2allow utility, which is the simplest method. The utility generates permissive rules from messages on access denial in system log files. You can set to search messages automatically or specify a path to the log file manually.

Note that you can use this method only if Dr.Web for Linux components have violated SELinux security policies and these events are registered in the audit log file. If not, wait for such an incident to occur or force-create permissive policies by using the policygentool utility (see below).

The audit2allow utility resides either in the policycoreutils-python package or in the policycoreutils-devel package (for Red Hat Enterprise Linux, CentOS, Fedora operating systems, depending on the version) or in the python-sepolgen package (for Debian and Ubuntu operating systems).

Example of using audit2allow:

# grep drweb-se.real /var/log/audit/audit.log | audit2allow -M drweb-se

In this example, the audit2allow utility performs a search in the audit.log file to find access denial messages for drweb-se module.

The following two files are created: policy source file drweb-se.te and the drweb-se.pp policy module ready to install.

If no security violation incidents are found in the system audit log, the utility returns an error message.

In most cases, you do not need to modify the policy file created by the audit2allow utility. Thus, it is recommended to go to step 4 for installation of the drweb-se.pp policy module. Note that the audit2allow utility outputs invocation of the semodule command. By copying the output to the command line and executing it, you complete step 4. Go to step 2 only if you want to modify security policies which were automatically generated for Dr.Web for Linux components.

2)Using the policygentool utility. For that purpose, specify name of the module operation with which you want to configure and the full path to the executable file.

Note that the policygentool utility, included in the selinux-policy package for Red Hat Enterprise Linux and CentOS, may not function correctly. If so, use the audit2allow utility.

Example of policy creation using policygentool:

For drweb-se:

# policygentool drweb-se /opt/drweb.com/bin/drweb-se.real

For drweb-filecheck:

# policygentool drweb-filecheck /opt/drweb.com/bin/drweb-filecheck.real

You will be prompted to specify several common domain characteristics. After that, three files that determine the policy are created for each of the modules:

<module_name>.te, <module_name>.fc and <module_name>.if.

2.If required, edit the generated policy source file <module_name>.te and then use the checkmodule utility to create a binary representation (a .mod file) of this source file of the local policy.

Note that to ensure successful execution of the command, the checkpolicy package must be installed in the system.

Usage example:

# checkmodule -M -m -o drweb-se.mod drweb-se.te

3.Create a policy module for installation (a .pp file) with the help of the semodule_package utility.

Example:

# semodule_package -o drweb-se.pp -m drweb-se.mod

4.To install the created policy module, use the semodule utility.

Example:

# semodule -i drweb-se.pp

For details on SELinux operation and configuration, refer to documentation for your UNIX distribution.