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"):
- RewriteCond %{HTTPS} off
- 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"),找到下面这一行:
- <![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
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】