如何在CentOS 5/6/7或RHEL 5/6/7上修复并保护Linux服务器免受Dirty COW漏洞攻击


本文将介绍如何修复CentOS/Red Hat上的Dirty Cow Linux漏洞。Dirty Cow Linux漏洞于2016年10月19日被披露,这是一个在Linux操作系统内核级别的权限提升漏洞,被称为Dirty COW,因为它利用了内核长期存在的COW(写时复制)机制,导致大多数服务器面临风险。实际上,在Red Hat上,它被称为CVE-2016-5195。这可能会影响Red Hat Enterprise Linux 5、6、7附带的内核。

Dirty Cow意味着服务器上的普通用户或非特权用户将获得对所有可读取文件的写访问权限,从而提高他们在系统上的访问权限。

大多数Linux发行版都已经发布了针对此漏洞的修复程序,因此无需担心,您可以使用本文中的方法来修复它。

检查CentOS/RHEL机器上的漏洞

要在CentOS/RHEL机器上检查漏洞,我们需要运行以下脚本,该脚本适用于RHEL和CentOS上的许多内核。

我们可以使用以下链接从Red Hat存储库下载脚本

# wget https://access.redhat.com/sites/default/files/rh-cve-2016-5195_1.sh
Output:
--2016-11-21 11:41:19--
https://access.redhat.com/sites/default/files/rh-cve-2016-5195_1.shResolving access.redhat.com... 104.120.145.18
Connecting to access.redhat.com|104.120.145.18|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16478 (16K) [application/x-sh]
Saving to: “rh-cve-2016-5195_1.sh”
100%[======================================>] 16,478 72.4K/s in 0.2s
2016-11-21 11:41:19 (72.4 KB/s) - “rh-cve-2016-5195_1.sh” saved [16478/16478]

下载文件后,我们需要为脚本添加可执行权限。

# chmod +x rh-cve-2016-5195_1.sh

现在,我们将运行脚本以检测机器是否存在漏洞。

# ./rh-cve-2016-5195_1.sh
Output:
Your kernel is 2.6.32-642.6.1.el6.x86_64 which IS vulnerable.
Red Hat recommends that you update your kernel. Alternatively, you can apply partial
mitigation described at https://access.redhat.com/security/vulnerabilities/2706661 .

修复CentOS/RHEL上的Dirty Cow漏洞

我们可以直接从RHEL/CentOS存储库应用修复程序,只需更新内核并重新启动服务器即可。

以下是更新CentOS/RHEL机器上所有软件包的命令。

# sudo yum update
Output:
yum update
Loaded plugins: fastestmirror, security
Setting up Update Process
Determining fastest mirrors
epel/metalink | 4.9 kB 00:00
* base: mirror.fibergrid.in
* epel: epel.scopesky.iq
* extras: mirror.fibergrid.in
* updates: mirror.fibergrid.in
…
…
Resolving Dependencies
--> Running transaction check
---> Package bind-libs.x86_64 32:9.8.2-0.47.rc1.el6_8.1 will be updated
---> Package bind-libs.x86_64 32:9.8.2-0.47.rc1.el6_8.3 will be an update
---> Package bind-utils.x86_64 32:9.8.2-0.47.rc1.el6_8.1 will be updated
---> Package bind-utils.x86_64 32:9.8.2-0.47.rc1.el6_8.3 will be an update
---> Package httpd.x86_64 0:2.2.15-54.el6.centos will be updated
---> Package httpd.x86_64 0:2.2.15-55.el6.centos.2 will be an update
---> Package httpd-tools.x86_64 0:2.2.15-54.el6.centos will be updated
---> Package httpd-tools.x86_64 0:2.2.15-55.el6.centos.2 will be an update
---> Package java-1.7.0-openjdk.x86_64 1:1.7.0.111-2.6.7.2.el6_8 will be updated
---> Package java-1.7.0-openjdk.x86_64 1:1.7.0.121-2.6.8.1.el6_8 will be an upda te
…
kamailio-debuginfo.x86_64 0:4.4.4-1.1
kamailio-mysql.x86_64 0:4.4.4-1.1
kamailio-unixodbc.x86_64 0:4.4.4-1.1
kernel-firmware.noarch 0:2.6.32-642.11.1.el6
kernel-headers.x86_64 0:2.6.32-642.11.1.el6
kexec-tools.x86_64 0:2.0.0-300.el6_8.1
libblkid.x86_64 0:2.17.2-12.24.el6_8.1
libgcrypt.x86_64 0:1.4.5-12.el6_8
libuuid.x86_64 0:2.17.2-12.24.el6_8.1
nss.x86_64 0:3.21.3-2.el6_8
nss-sysinit.x86_64 0:3.21.3-2.el6_8
nss-tools.x86_64 0:3.21.3-2.el6_8
nss-util.x86_64 0:3.21.3-1.el6_8
perf.x86_64 0:2.6.32-642.11.1.el6
policycoreutils.x86_64 0:2.0.83-30.1.el6_8
selinux-policy.noarch 0:3.7.19-292.el6_8.2
selinux-policy-targeted.noarch 0:3.7.19-292.el6_8.2
tzdata.noarch 0:2016i-1.el6
tzdata-java.noarch 0:2016i-1.el6
util-linux-ng.x86_64 0:2.17.2-12.24.el6_8.1
Complete!

更新完成后,我们需要重新启动机器才能使更新生效,以下是重新启动机器的命令。

# sudo reboot

更新后验证系统内核更新

由于我们已经升级了软件包并更新了机器以修复Dirty Cow漏洞,我们需要检查内核是否已升级,以下是验证的命令。

我们可以运行之前步骤中下载的脚本以检查漏洞,或者运行以下命令:

./rh-cve-2016-5195_1.sh
Output:
Your kernel is 2.6.32-642.11.1.el6.x86_64 which is NOT vulnerable.

如果脚本显示机器不存在漏洞,则表示修复成功。

# uname -r
Output:
2.6.32-642.11.1.el6.x86_64

我们可以看到内核已从2.6.32-642.6.1.el6.x86_64更新到2.6.32-642.11.1.el6.x86_64,因此Linux机器已安全地免受Dirty Cow漏洞的攻击。

在本文中,我们学习了如何使用RHEL提供的脚本检查CentOS/RHEL Linux机器上的Dirty Cow漏洞,以及如何修复该漏洞并在更新后进行验证。

更新于:2020年1月23日

244 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告