Magento是很多公司都在使用的一种电子商务软件平台,其社区版是一款免费可用的开源程序。由于大量第三方开发的插件和主题扩展了默认功能和设计,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 添加下面几行: <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系统。 (责任编辑:好模板) |