WordPress Linux服务器强化教程
根据Wikipedia的说法,全球目前有超过59%的由WordPress提供支持。
所有功劳归功于用户友好的简单创新GUI。
这是关于WordPress的最好的事情之一。
它具有一些要点,其中包括新手Web用户可以轻松地使用其功能轻松地创建一些专业。
WordPress Web Server安全性的主要考虑因素。
我们需要遵循本教程,它有助于使WordPress Web服务器更安全。
处理WordPress安全性时,我们需要了解几件事。
由于WordPress面临许多类型的安全性问题,错误和漏洞。
根据安全研究人员的报告,WordPress是最具针对性和最受攻击的CMS。
它已经通过使用某些WordPress漏洞,SQL Injection,XSS等进行了攻击。
但是,为了实时保护Web服务器,同时,我们需要仔细遵循所有WordPress强化技巧。
准备工作
- 我们必须在安装了WordPress的LAMP Stack上运行基于Ubuntu或者Debian的Linux发行版。
- 我们需要具有sudo权限的普通用户帐户
提示1-禁用目录浏览
目录浏览是攻击者/用户用来从系统访问敏感信息的方法。
它还显示了目录结构,这对攻击者浏览整个系统很有用。
除非并且直到我们需要预先使用此功能,否则应将其禁用。
目录浏览图示如下:
步骤1-修改虚拟主机配置文件。
编辑Apache虚拟主机配置文件。
$sudo nano /etc/apache2/sites-available/000-default.conf
我们将看到给定的行
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html <Directory /var/www/html Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
找到以下行:
Options Indexes FollowSymLinks
更改为:
Options FollowSymLinks
之后,保存并退出配置文件。
最后重启Apache服务
$sudo service apache2 restart
目录浏览图示如下:
第2步-修改Apache默认配置文件
编辑Apache默认配置文件。
$sudo nano /etc/apache2/apache2.conf
我们将看到给定的行
<Directory /var/www Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
找到以下行:
Options Indexes FollowSymLinks
更改为:
Options FollowSymLinks
之后,保存并退出配置文件。
最后,重新启动Apache服务
$sudo service apache2 restart
技巧2-关闭服务器签名
攻击者想了解服务器签名,包括PHP版本和Apache Web服务器版本。
这有助于攻击者发现系统中的漏洞并启动与之相关的攻击。
建议关闭服务器签名。
第1步-隐藏PHP版本
转到php.ini文件以隐藏PHP版本
$sudo nano /etc/php5/apache2/php.ini
找到以下行:
expose_php = On
更改为:
expose_php = Off
之后,保存并退出php.ini文件。
最后,重新启动Apache服务
$sudo service apache2 restart
第2步-隐藏Apache版本
检查上的服务器签名
$curl --head http://www.theitroad.com
输出示例
HTTP/1.1 200 OK Date: Sat, 16 May 2015 11:12:17 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Server: Apache/2.4.7 (Ubuntu)
它显示了服务器签名服务器:Apache/2.4.7(Ubuntu)
关闭Apache服务器签名
$sudo nano /etc/apache2/apache2.conf
将这些行添加到最后几行
ServerSignature Off
之后,保存并退出配置文件。
$sudo service apache2 restart
最后,重新启动Apache服务
$curl --head http://www.theitroad.com
检查以进行测试
HTTP/1.1 200 OK Date: Sat, 16 May 2015 11:12:17 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive
输出示例
我们将看不到服务器签名。这意味着服务器签名已关闭。
提示3-为基于Ubuntu或者Debian的发行版启用自动安全更新。
$sudo apt-get install unattended-upgrades
通过在基于Ubuntu或者Debian的发行版上实施自动更新,保护Web服务器免受现有安全漏洞补丁的侵害,并定期更新服务器软件。
服务器软件,操作系统和Web应用程序中的错误会导致Web服务器受到攻击者的侵害。
基于主要和次要应用所有安全更新。
集成自动更新的方法有很多,其中一种是无人值守升级方法,可以对基于Ubuntu或者Debian的发行版进行自动更新。
始终使用最新的稳定的Web服务器软件,并需要定期更新或者修补OS和Web服务器软件。
用户适当的补丁程序管理可保护Web服务器并定期对软件进行补丁程序。
使用“无人值守升级”包
$sudo dpkg-reconfigure --priority=low unattended-upgrades
激活无人值守的升级
之后,点击“是”以启用自动更新
$cat /etc/apt/apt.conf.d/20auto-upgrades
检查它是否被激活
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1";
$sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
它表明我们已经成功启用了自动安全更新
注意:这是可选步骤(如何在未经确认的情况下完成升级后自动重启Ubuntu或者Debian)
Unattended-Upgrade::Automatic-Reboot "false";
找到以下行:
Unattended-Upgrade::Automatic-Reboot "true";
更改为:
之后,保存并退出配置文件。
提示4-启用自动WordPress更新
$sudo nano /var/www/html/wp-config.php
通过使用wp-config文件启用自动更新
/** Automatically Updates the WordPress Core, Plugins and Themes. */ add_filter( 'auto_update_core', '__return_true' ); add_filter( 'auto_update_plugin', '__return_true' ); add_filter( 'auto_update_theme', '__return_true' );
添加给定的行
之后,保存并退出配置文件。
提示5-删除信息痕迹
$sudo rm -rf /var/www/html/info.php
删除包含有关系统信息的文件。
这使攻击者能够成功识别系统。
必须先删除此信息文件,然后再进行操作。
删除PHP信息文件。
$sudo rm -rf /etc/motd.tail
删除那些显示WordPress数据库密码的痕迹Motd.tail文件。
$sudo rm -rf /var/www/html/readme.html
删除包含WordPress版本的WordPress自述文件。
提示6-整合一些WordPress调整
$sudo nano /var/www/html/robots.txt
第1步-创建Robot.txt文件
这是使网络搜寻器/蜘蛛停止访问敏感目录的重要步骤。
这样可以阻止对不需要的Web爬网程序的访问。
User-agent: * Disallow: /wp-admin/
添加给定的行
$sudo nano /var/www/html/.htaccess
之后,保存并退出配置文件。
步骤2-使用.htaccess文件限制和保护WP-config文件
WP-config是包含数据库凭据的文件,并且包含WordPress CMS的wp-salts。
我们必须先阻止重要文件,然后才能落入不法之徒手中。
<files wp-config.php> order allow,deny deny from all </files>
添加给定的行
$sudo mysql_secure_installation
之后,保存并退出配置文件。
第3步-执行MySQL安全安装
在进入使服务器安全的生产环境之前,需要运行mysql_secure_installation。