如何在Ubuntu上配置WordPress安全更新和安装

简介: 如何在Ubuntu上配置WordPress安全更新和安装

本文介绍了如何在WordPress中安全地使用SSH进行更新,避免FTP并优化权限设置,以分离内容所有者与网页进程,确保网站的安全性。

简介


WordPress 是当今互联网上最流行的 CMS(内容管理系统)。虽然许多人使用它是因为它功能强大且简单易用,但有时人们会在方便性和安全性之间做出权衡。

这种情况体现在你选择分配目录所有权和权限以及执行升级的方式上。有各种不同的方法来做这些事情。我们将选择我们认为相对安全的升级和安装主题和插件的方式。

在本指南中,我们假设您已经完成了服务器的初始设置。您还需要在您的 VPS 上安装 LAMP 堆栈。

我们还假设您已经在 Ubuntu 12.04 上安装了 WordPress。您可以按照我们的指南在 Ubuntu 12.04 上安装 WordPress。

一旦您拥有了用户和所需的软件,您就可以开始按照本指南进行操作。

使用 SSH 设置安全更新


如果您没有配置基于密钥的更新和安装,每当您尝试执行这些任务时,您将收到连接信息的提示。

它将要求您提供 FTP 凭据,例如主机名、FTP 用户名和FTP密码:

!WordPress ftp 凭据

FTP 是一种固有的不安全协议,因此我们不建议在大多数情况下使用它。我们将配置我们的安装以使用安全的替代方案。

更改权限


如果您按照上面安装 WordPress 的指南进行操作,您会注意到您将网站目录的权限赋予了 Apache 网页用户。这是一个快速入门的方法,但可能存在安全风险。在理想情况下,您应该将内容所有者与网页进程分开。我们将在准备允许 SSH 更新的过程中执行此操作。

我们将创建一个名为 wp-user 的用户来拥有我们的 WordPress 安装。

sudo adduser wp-user

系统会询问您很多问题,包括您想设置的密码。我们不想设置密码,所以通过所有提示,包括重复的密码问题,按下 “ENTER”。

接下来,切换到 /var/www/html 目录,这是我们的 WordPress 文件所在的位置。

cd /var/www/html

我们将使我们的新用户拥有此目录下的所有内容的所有权,将其从我们在安装过程中配置的 www-data Apache 网页用户更改为新用户。

sudo chown -R wp-user:wp-user /var/www/html

为 WordPress 创建 SSH 密钥


现在,我们需要为我们的 WordPress 用户创建一个 SSH 密钥对。通过以下命令登录 WordPress 用户:

sudo su - wp-user

我们将使用 ssh-keygen 命令创建一个密钥对:

ssh-keygen -t rsa -b 4096

系统会询问您要将密钥存储在何处以及如何命名。选择 /home/wp-user/wp_rsa。然后系统会要求您选择一个密码。通过提示按下 “ENTER” 以创建一个无需密码认证的密钥。

退出到您的普通用户账户:

exit

我们需要进行一些维护工作以确保权限安全。我们希望给 WordPress 用户所有权,但将 www-data 组设置为组所有者。然后我们希望限制其他访问:

sudo chown wp-user:www-data /home/wp-user/wp_rsa*
sudo chmod 0640 /home/wp-user/wp_rsa*

您需要创建 ~/.ssh 目录并为其设置适当的权限和所有权,以便网页进程可以登录。

sudo mkdir /home/wp-user/.ssh
sudo chown wp-user:wp-user /home/wp-user/.ssh/
sudo chmod 0700 /home/wp-user/.ssh/

现在,我们可以将公钥输入到我们的授权密钥文件中,以便用户可以使用这些凭据登录。由于我们还没有这个文件,我们可以简单地复制公钥。

sudo cp /home/wp-user/wp_rsa.pub /home/wp-user/.ssh/authorized_keys

再次,我们需要调整这些文件的权限和所有权,以确保它们可以被访问,同时保持安全:

sudo chown wp-user:wp-user /home/wp-user/.ssh/authorized_keys
sudo chmod 0644 /home/wp-user/.ssh/authorized_keys

由于这些密钥仅用于从 WordPress 站点内部登录,而该站点位于同一台计算机上,我们可以将登录限制为此服务器:

sudo nano /home/wp-user/.ssh/authorized_keys

在文件的开头,添加红色部分以限制密钥仅在本地计算机上使用:

from="127.0.0.1" ssh-rsa...


保存并关闭文件。

调整 WordPress 配置以使用密钥


现在,我们可以安装 WordPress 验证 SSH 登录所需的软件包:

sudo apt-get update
sudo apt-get install php5-dev libssh2-1-dev libssh2-php

现在我们有了这些工具,我们可以编辑配置文件并设置我们配置的值。

sudo nano /var/www/html/wp-config.php

在文件末尾添加以下行:

define('FTP_PUBKEY','/home/wp-user/wp_rsa.pub');
define('FTP_PRIKEY','/home/wp-user/wp_rsa');
define('FTP_USER','wp-user');
define('FTP_PASS','');
define('FTP_HOST','127.0.0.1:22');

保存并关闭文件。

现在,我们应该重新启动 Apache 以利用我们的新更新程序:

sudo service apache2 restart

测试结果


现在,我们可以测试配置是否正确。通过浏览器访问以下 URL 以管理员身份登录到您的 WordPress 站点:

your_domain.com/wp-admin

我们可以通过尝试安装新主题来检查我们的设置是否配置正确。点击“外观”,然后点击“主题”。

!WordPress 主题

在顶部,点击“安装主题”:

!WordPress 安装主题

搜索一个主题或点击“特色”主题。点击“安装”以在您的站点上安装主题。它应该成功登录、下载并安装您指定的密钥文件:

!WordPress 主题安装成功

您可以点击“激活”切换到新主题,然后点击“访问站点”查看结果。

常见问题


如果您配置了 SSH 密钥不正确,可能会遇到一些问题。

在尝试通过 Web 界面推送更改时,您可能会看到一个常见错误:

用户的公钥和私钥不正确

这个错误非常不明确。它可能由多种原因引起,其中一些原因包括:

  • 公钥、私钥和包含它们的目录权限不正确。
    Web 进程需要能够读取这些文件,因此如果 Web 服务器组是所有者,则每个文件至少需要有 640 权限。
    另一方面,~.ssh 目录只需要对将要登录的用户可访问。这意味着我们示例中的 wp-user 用户。目录的内容应该同样由该用户拥有,并且其他人不可写。
  • 文件所有权不正确。这些相同的密钥需要由正确的用户拥有。通常情况下,这是登录用户和 Web 进程用户的混合。
    在我们的示例中,wp-user 拥有私钥和公钥,而 www-data 组是组所有者。这使我们能够将它们与正确的用户关联起来,同时允许服务器读取文件。
  • 文件格式不正确。如果您的公钥或私钥存在格式问题,WordPress 将拒绝该密钥并拒绝使用它。~/.ssh/authorized_keys 文件也是如此。
    您添加到 authorized_keys 文件的部分,from="127.0.0.1" ... 不应存在于公钥中。即使 SSH 将其视为有效文件,WordPress 将在将尝试发送到 SSH 守护程序之前拒绝它。

在更新或安装主题和插件的过程中,另一个常见错误是:

无法创建目录...

这通常是与不正确的 Web 目录所有权有关。如果您将使用 wp-user 帐户更新文件,则上传目录也需要由该用户拥有并可访问。

这意味着您需要将 /var/www/html 目录中的文件和文件夹交给 wp-user 帐户。如果您按照上述说明操作仍然遇到问题,请确保将 -R 选项传递给 chown 命令。

另一个要检查的是上传目录是否对 WordPress 用户具有写权限。切换到文档根目录:

cd /var/www/html

如果我们检查此文件夹中文件的权限,我们应该看到所有者(第一列)的写权限,但第二列或第三列没有:

ls -l

total 180
-rw-r--r--  1 wp-user wp-user   177 Nov 18 15:21 index.html
-rw-r--r--  1 wp-user wp-user   418 Sep 24 20:18 index.php
-rw-r--r--  1 wp-user wp-user    20 Nov 18 15:24 info.php
-rw-r--r--  1 wp-user wp-user 19929 Jan 18  2013 license.txt
-rw-r--r--  1 wp-user wp-user  7128 Oct 23 16:08 readme.html
-rw-r--r--  1 wp-user wp-user  4892 Oct  4 10:12 wp-activate.php
drwxr-xr-x  9 wp-user wp-user  4096 Oct 29 16:08 wp-admin/
-rw-r--r--  1 wp-user wp-user   271 Jan  8  2012 wp-blog-header.php
-rw-r--r--  1 wp-user wp-user  4795 Sep  5 21:38 wp-comments-post.php
-rw-r--r--  1 wp-user wp-user  3350 Nov 19 12:23 wp-config.php
-rw-r--r--  1 wp-user wp-user  3177 Nov  1  2010 wp-config-sample.php
drwxr-xr-x  5 wp-user wp-user  4096 Nov 19 12:25 wp-content/
. . .

如您所见,权限为 -rw-r--r-- 的文件和权限为 drwxr-xr-x 的目录表明拥有文件和目录的 wp-user 具有写权限,其他人没有。

在包含主题、插件等的 wp-content 目录中进行类似的检查,将向我们显示这些目录是否由 wp-user 用户拥有并可写。

cd /var/www/html/wp-content
ls -l

total 16
-rw-r--r-- 1 wp-user wp-user   28 Jan  8  2012 index.php
drwxr-xr-x 3 wp-user wp-user 4096 Oct 29 16:08 plugins
drwxr-xr-x 6 wp-user wp-user 4096 Nov 19 13:10 themes
drwxr-xr-x 2 wp-user wp-user 4096 Nov 19 13:10 upgrade

这些目录已正确配置。

结论


虽然 WordPress 很方便,可以相对容易地配置和管理,但这并不意味着安全性不应该是您网站的主要关注点。

诸如更新安装这样简单的事情,一旦有安全发布,就应该立即进行。这也不应该是一个迫使您使用不安全协议或设置不安全目录权限的过程。

保护您的更新程序和正确的目录权限是一个简单的任务,可以防止一个相当大的安全问题。


目录
相关文章
|
10天前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
60 2
|
10天前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
776 3
|
4天前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
25 4
Linux系统之Ubuntu安装cockpit管理工具
|
9天前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
42 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
9天前
|
网络协议 Ubuntu 网络安全
|
9天前
|
Ubuntu Linux C语言
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
本文介绍了在Ubuntu 18.04系统上编译安装OpenCV 3.4.0及其扩展包opencv_contrib 3.4.0的详细步骤,包括下载源码、安装依赖、配置CMake和编译安装,以及常见问题的解决方法。
14 1
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
|
10天前
|
Ubuntu 虚拟化
软件安装(二):VMware ubuntu20.04 安装步骤
这篇文章是关于如何在VMware Workstation 16 Player上安装Ubuntu 20.04桌面版的详细步骤指南。
74 2
软件安装(二):VMware ubuntu20.04 安装步骤
|
11天前
|
PyTorch TensorFlow 算法框架/工具
Jetson环境安装(一):Ubuntu18.04安装pytorch、opencv、onnx、tensorflow、setuptools、pycuda....
本文提供了在Ubuntu 18.04操作系统的NVIDIA Jetson平台上安装深度学习和计算机视觉相关库的详细步骤,包括PyTorch、OpenCV、ONNX、TensorFlow等。
23 1
Jetson环境安装(一):Ubuntu18.04安装pytorch、opencv、onnx、tensorflow、setuptools、pycuda....
|
14天前
|
消息中间件 监控 Ubuntu
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
47 3
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
|
5天前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
17 1