首页 > 业界动态 > 正文

如何加强Magento电子商务网站的安全性?
2016-04-28 09:47:00   来源:来源:51CTO.com   评论:0 点击:

在本教程中,我们将探讨Magento安全方面的最佳实践,并通过几个例子教你如何确保Magento网站的安全。

51CTO网+ 首届中国APP创新评选大赛>>

Magento是很多公司都在使用的一种电子商务软件平台,其社区版是一款免费可用的开源程序。由于大量第三方开发的插件和主题扩展了默认功能和设计,Magento正在逐渐成为电子商务行业的WordPress。

如何加强Magento电子商务网站的安全性?

然而,越来越受欢迎的Magento给了黑客们一个觊觎这个电子商务平台足够充分的理由。尤其是如果你经营一家使用Magento平台的网店,你拥有的很重要、很敏感的客户信息,在黑客眼里就是异常宝贵的商品。因而,你有必要做好全面的摸底工作,采取最佳实践,确保Magento部署系统的每个部分的安全。

在本教程中,我们将探讨Magento安全方面的最佳实践,并通过几个例子教你如何确保Magento网站的安全。

1. 为Magento管理员帐户选择一个强大、安全的密码。

确保安装的Magento系统安装可靠,第一步就是为Magento管理员帐户设置一个强密码。确保管理员的密码长度至少是十个随机字符,包括数字、大小写字母和特殊字符(比如“q&t:A;-Q&4'?>#6”)。删除不使用的其他任何帐户。拥有的帐户数量越少,黑客得手的机会就越小。

2. 为所有的Magento网页使用加密连接(SSL/HTTPS)。

SSL是一种对于从Web浏览器发送到Web服务器的敏感信息加密的安全协议,比如登录信息、个人信息等。想在你的Magento网站上实施SSL,先要获得一份SSL证书(比如从Let's Encrypt获得)。有了获得的证书后,配置Web服务器,以便侦听端口443,并通过Magento管理后端来启用SSL。

比如说,如果你在基于Debian的服务器上使用Apache,应创建一个新的虚拟主机:

# vi /etc/apache2/sites-available/your-domain.com-ssl.conf

添加下面几行:

  1. <IfModule mod_ssl.c> 
  2. <VirtualHost *:443> 
  3.     ServerName your-domain.com 
  4.     DocumentRoot /var/www/html/magento/ 
  5.     SSLEngine on  
  6.     #Specify the path to your SSL certificate file: 
  7.     SSLCertificateFile /etc/apache2/ssl/your-domain.crt 
  8.     #Specify the path to private key file: 
  9.     SSLCertificateKeyFile /etc/apache2/ssl/your-domain.key 
  10.     #Specify the path to CA certificate: 
  11.     SSLCACertificateFile /etc/apache2/ssl/ca-bundle.crt 
  12.     <Directory /var/www/html/magento> 
  13.         Options -Indexes +FollowSymLinks +MultiViews 
  14.         Order allow,deny 
  15.         AllowOverride All 
  16.     </Directory> 
  17.     ErrorLog /var/log/apache2/ssl_error.log 
  18.     CustomLog /var/log/apache2/ssl_access.log combined 
  19. </VirtualHost> 
  20. </IfModule> 

启用mod_ssl Apache模块:

  1. # a2enmod ssl 

禁用默认的SSL虚拟主机,并启用"your-domain.com-ssl.conf"虚拟主机:

  1. # a2dissite default-ssl 
  2. # a2ensite your-domain.com-ssl.conf 

最后,重启Apache,让变更生效:

  1. # /etc/init.d/apache2 restart 

登录进入到Magento管理后端,然后进入到"系统">> "配置"。找到左边的菜单,在"通用"选择列表下,点击"Web"。在"安全"选项卡上,将"http"变更成"https",并将"前端使用安全URL"和"管理员使用安全ULR"设成"是"。别忘了清空Magento缓存和Web浏览器的缓存,然后试着用https来访问你的网站。

如果一些访客使用http://your-domain.com将你的网站加入书签,你又想确保所有http请求重定向至https,可以将下面几行添加到位于Magento网站的文档根目录下的.htaccess文件(比如"/var/www/html/magento/.htaccess"):

  1. RewriteCond %{HTTPS} off 
  2. RewriteRule ^(.*)$ https://your-domain.com/$1 [R=301,L] 

3. 为管理员后端创建自定义路径。

如果黑客使用蛮力攻击,企图闯入到你的Magento后端,Magento的默认管理员URL(比如yourstore.com/store/admin)可能很容易成为黑客的目标。为了防止这种情况,你可以定制默认的管理员路径,如下所示。

通过SSH以根用户身份登录到服务器。然后,打开位于Magento安装系统的"/app/etc"目录下的"local.xml"文件(比如"/var/www/html/magento/app/etc/local.xml"),找到下面这一行:

  1. <![CDATA[admin]]> 

把"admin"换成较为复杂的名称,比如"MyMagento123"或者你希望管理员后端的URL具有的任何名称。这会将管理员URL变换成"yourstore.com/store/MyMagento123"。

4. 将获准拥有管理员访问权的IP地址加入白名单。

除了像上面那样隐藏管理员URL外,你还可以在网络层面限制对管理员URL的访问。换句话说,将管理员访问权限制在你明确许可的仅仅几个IP地址或CIDR段。想为Apache创建一份IP白名单,将下面这个LocationMatch指令添加到你的虚拟主机配置里面。请注意:"MyMagento123"是你之前定义的自定义管理员登录页面。

  1. <LocationMatch "MyMagento123"> 
  2. Order Deny,Allow  
  3. Deny from All  
  4. Allow from 111.111.111.0/24 
  5. </LocationMatch> 

更新白名单后,别忘了重新启动Apache。现在,你就只能够从指定的IP地址段访问自定义管理员登录页面(yourstore.com/store/MyMagento123)了。

5. 加固Magento网站的文件许可机制。

为了遵守最小权限原则,就要确保Magento网站文件和目录无法被Web服务器之外的任何系统写入。为此,Web服务器用户(Debian上的www-data,或CentOS上的apache)就需要可以访问Magento网站文档根目录下面的Magento网站文件和目录,所以运行下面这个命令来做到这点(在Debian上):

  1. # chown www-data:www-data -R /var/www/html/magento 

对目录设置chmod 750,对所有网站文件设置640,"app/etc"、"media"和"var"这些目录除外,它们需要770权限(770权限将全面控制权赋予所有者和小组,对其他用户不赋予任何权限):

  1. # find /var/www/html/magento -type f -print0 | xargs -r0 chmod 640 
  2. # find /var/www/html/magento -type d -print0 | xargs -r0 chmod 750 
  3. # chmod -R g+w /var/www/html/magento/{app/etc,media,var} 

6. 为管理员访问使用双因子验证。

就安全而言,没有什么所谓的妙方高招。在这个方面,你可以为管理员访问添加的另一层保护就是双因子验证。如果启用了双因子验证插件,系统需要你出示一次性安全码,才能访问Magento后端。一次性安全码由安装在智能手机上的Google Authenticator应用程序生成,不怀好意的黑客很难搞到。

7. 只使用来自可信源的Magento插件。

任何软件系统的安全性取决于最薄弱的那一环。虽然庞大的第三方Magento插件生态系统无疑有利于Magento用户,但是这每一个插件有可能带来新的攻击途径。就算实施了其他所有的安全保护措施,只要某个编写得差劲的插件存在一个安全漏洞,就能突破你的Magento系统。在将任何第三方插件整合到你的Magento商店之前,总是要做好摸底工作,从Magento社区等独立社区了解开发者的声誉和客户评论。只使用来自可信源、一贯可靠的那些插件,以及定期更新和维护的那些插件。

8. 定期更新Magento。

只要推出新的安全补丁或版本,就要更新安装的Magento,包括所有插件和主题。在开始更新Magento之前,对你的Magento网站文件及数据库进行备份是个好主意。

想知道目前安装在网站上的Magento是哪个版本,通过SSH以根用户身份登录进入到服务器,浏览到基于Magento的网站的文档根目录("/var/www/html/magento"),运行下面几个命令:

  1. # cd /var/www/html/magento 
  2. # php -r "include 'app/Mage.php'; echo 'Your Magento version is: ', Mage::getVersion(); " ; echo ""; 

结束语

我们在本教程中探讨了基于Magento的电子商务网站的最佳安全实践。遵守这些准则,你可以大大提高Magento网站的安全性。除了Magento配置外,你还可以使用其他技巧或方法来加强网站的总体安全性,比如阻止不需要的IP地址,或者安装入侵检测系统(IDS),所以务必要尽一切所能来加强安全。将网店开在虚拟专用服务器(VPS)或专用服务器上通常比开在共享主机托管系统上要好。如果你使用VPS或专用主机托管,可获得更好的性能,并且对自己的主机拥有更大的控制权。切记:一个小小的错误就会破坏你安装的整个Magento系统。

原文标题:How to improve the security of Magento e-commerce website  作者:RoseHosting

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【编辑推荐】

  1. Magento网站被攻击并传播恶意软件
  2. Magento存在XSS漏洞,在线商城可被攻击者操控
【责任编辑:蓝雨泪 TEL:(010)68476606】

相关热词搜索:Magento 电子商务网站安全

上一篇:2016,拿什么拯救我的应用安全?
下一篇:网安中国龙闪耀首都网络安全日 安恒信息发布玄武盾系列新品

分享到: 收藏