RHEL7: Changes between versions.

Presentation

The RHEL 7 release brought many changes from RHEL 6, some of them breaking backward compatibility (Systemd, etc). Unfortunately, such changes happened between minor versions of RHEL 7 too.
Here you will find a non-exhaustive list of such changes.

NFS

Syntax Change

The RHEL 7.1 release completely changed the way the various NFS services worked.

The nfs-secure-server service doesn’t work the same way anymore, the nfs-idmap service has a new brother, nfs-idmapd, and the Kerberos NFS client gets a new nfs-client.target.

Migration Problems

NFS Mount Behavior

In RHEL 7.4, the NFS mount behavior has changed, trying NFS vers=4.1 by default. Also, rather than trying 4.0 after failing on 4.1, RHEL 7.4 fails down to NFS 3. To get the previous behavior, force vers=4.0 (source).

NetworkManager

From RHEL 7.2 to RHEL 7.3, NetworkManager underwent a major evolution, going from v1.0.6 to v1.4.0. Modularity was at the heart of the changes.

IPv6 Security

In v1.2, a new IPv6 feature has been added called Stable Privacy Addressing through a new connection property: ipv6.addr-gen-mode. It is a tracking prevention mechanism activated by default (ipv6.addr-gen-mode=stable-privacy) (see details here). To disable this new feature and get the previous behavior, type:

# nmcli con mod "Wired connection 1" ipv6.addr-gen-mode eui64

Another new IPv6 feature popped up called Privacy Extension bringing a new ipv6.ip6-privacy connection property. This allows randomization of MAC addresses and is activated by default (ipv6.ip6-privacy=1) (see details here). To disable this new feature and get the previous behavior, type:

New Unit File Directives

With RHEL 7.3, the NetworkManager service got two new directives in its unit file for security purpose:

ProtectSystem=true

ProtectHome=read-only

These directives forbid some changes made to respectively system (/usr, /boot, /root, /run/user) and /home directories, mainly the creation of symbolic links to them (see details here). If you use a non-standard directory structure, you may need to remove these directives.

Systemd

With RHEL 7.2, Systemd moves from v208 to v219 and many changes happened.

New Systemd Directives

Some new directives regarding security have been introduced in the v219 version of Systemd.

In the NetworkManager chapter above, the ProtectSystem and ProtectHome directives were already mentioned but some others exist (see details here).

Conflicts with Docker

RemoveIPC Directive

A new option called RemoveIPC was introduced in RHEL 7.2 through Systemd v219. When set to yes, this option forces a cleanup of all allocated inter-process communication (IPC) resources linked to a user leaving his last session. If a daemon is running as a user with a uid number >=1000, it may crash.

This option should always be set to no by default but, due to the logic of package upgrade, it is highly advisable to set RemoveIPC=no in the /etc/systemd/logind.conf file followed by # systemctl restart systemd-logind (source).

Certificate Verification in Python

The Python standard library includes multiple modules that provide HTTP client functionality, including httplib, urllib, urllib2, and xmlrpclib. While these modules support HTTPS connections, they traditionally performed no verification of certificates presented by HTTPS servers, and offered no way to easily enable such verification (see details here).

In RHEL 7.0 and RHEL 7.1, there was no certificate verification.

In RHEL 7.2, a new file was created called /etc/python/cert-verification.cfg with verify=disable as main content.

In RHEL 7.3, the same file now displays verify=platform_default: this means that certificate verification depends on hard-coded value in the ssl module. According to the ssl module used, certificate verification will happen or not. However, it is perfectly possible to assign enable or disable to the verify directive to define the wanted behavior.

SELinux

Up to RHEL 7.2, the semodule -l command was displaying the version of the loaded policy:

[root@rhel72]# semodule -l
abrt 1.4.1
accountsd 1.1.0
acct 1.6.0
...

With RHEL 7.3, this information is not given anymore:

[root@rhel73]# semodule -l
abrt
accountsd
acct
...

This can be a problem with configuration management tool like Puppet. More details about this serious compatibility problem are available here and here.

Libvirt Based Containers

With RHEL 7.3, it seems that execution of real-time libvirt based containers doesn’t work as before. New parameters need to be set up (see details here).

Nmtui bugs

Don’t use the nmtui command with RHEL 7.0: this command is reported as regularly crashing in this minor version.

OpenSSH Versions

In RHEL 7.0, OpenSSH was in version 6.4p1. From RHEL 7.1 to RHEL 7.3, OpenSSH stayed in version 6.6.1p1 with limited changes.

In RHEL 7.4, OpenSSH moved to version 7.4p1. Expect some issues with legacy code (see details here).
At least two RedHat articles dealing with OpenSSH changes in RHEL 7.4 have been posted (here and here).

Other Compatibility Problems?

Leave a comment if you find another problem not listed here.

(3 votes, average: 5.00 out of 5)

Loading...

Upcoming Events (CET)

Mar

25

Sun

RHCSA7: Task of the day

Allowed time: 10 minutes.
Create two new user accounts "steve" and "oliver".
Create a group "team". Create a directory "shared".
All files put into the "shared" directory by "steve" or "oliver" should belong to the "team" group and be only visible by them.

RHCE7: Task of the day

Allowed time: 10 minutes.
Change the SSH process configuration to only listen on the 443 port.