请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站
联系我们
查看: 6763|回复: 0

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

[复制链接]

142

主题

145

帖子

620

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
620
发表于 2016-4-29 11:37:42 | 显示全部楼层 |阅读模式

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

然而,越来越受欢迎的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

添加下面几行:

  • <IfModule mod_ssl.c>
  • <VirtualHost *:443>
  •     ServerName your-domain.com
  •     DocumentRoot /var/www/html/magento/
  •     SSLEngine on  
  •     #Specify the path to your SSL certificate file:
  •     SSLCertificateFile /etc/apache2/ssl/your-domain.crt
  •     #Specify the path to private key file:
  •     SSLCertificateKeyFile /etc/apache2/ssl/your-domain.key
  •     #Specify the path to CA certificate:
  •     SSLCACertificateFile /etc/apache2/ssl/ca-bundle.crt
  •     <Directory /var/www/html/magento>
  •         Options -Indexes +FollowSymLinks +MultiViews
  •         Order allow,deny
  •         AllowOverride All
  •     </Directory>
  •     ErrorLog /var/log/apache2/ssl_error.log
  •     CustomLog /var/log/apache2/ssl_access.log combined
  • </VirtualHost>
  • </IfModule>

启用mod_ssl Apache模块:

  • # a2enmod ssl

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

  • # a2dissite default-ssl
  • # a2ensite your-domain.com-ssl.conf

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

  • # /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"):

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

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

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

  • <![CDATA[admin]]>

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

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

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

  • <LocationMatch "MyMagento123">
  • Order Deny,Allow  
  • Deny from All  
  • Allow from 111.111.111.0/24
  • </LocationMatch>

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

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

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

  • # chown www-data:www-data -R /var/www/html/magento

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

  • # find /var/www/html/magento -type f -print0 | xargs -r0 chmod 640
  • # find /var/www/html/magento -type d -print0 | xargs -r0 chmod 750
  • # 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"),运行下面几个命令:

  • # cd /var/www/html/magento
  • # 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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表