Magento是很多公司都在使用的一種電子商務(wù)軟件平臺,其社區(qū)版是一款免費(fèi)可用的開源程序。由于大量第三方開發(fā)的插件和主題擴(kuò)展了默認(rèn)功能和設(shè)計(jì),Magento正在逐漸成為電子商務(wù)行業(yè)的WordPress。
然而,越來越受歡迎的Magento給了黑客們一個覬覦這個電子商務(wù)平臺足夠充分的理由。尤其是如果你經(jīng)營一家使用Magento平臺的網(wǎng)店,你擁有的很重要、很敏感的客戶信息,在黑客眼里就是異常寶貴的商品。因而,你有必要做好全面的摸底工作,采取最佳實(shí)踐,確保Magento部署系統(tǒng)的每個部分的安全。
在本教程中,我們將探討Magento安全方面的最佳實(shí)踐,并通過幾個例子教你如何確保Magento網(wǎng)站的安全。
1. 為Magento管理員帳戶選擇一個強(qiáng)大、安全的密碼。
確保安裝的Magento系統(tǒng)安裝可靠,第一步就是為Magento管理員帳戶設(shè)置一個強(qiáng)密碼。確保管理員的密碼長度至少是十個隨機(jī)字符,包括數(shù)字、大小寫字母和特殊字符(比如“q&t:A;-Q&4'?>#6”)。刪除不使用的其他任何帳戶。擁有的帳戶數(shù)量越少,黑客得手的機(jī)會就越小。
2. 為所有的Magento網(wǎng)頁使用加密連接(SSL/HTTPS)。
SSL是一種對于從Web瀏覽器發(fā)送到Web服務(wù)器的敏感信息加密的安全協(xié)議,比如登錄信息、個人信息等。想在你的Magento網(wǎng)站上實(shí)施SSL,先要獲得一份SSL證書(比如從Let's Encrypt獲得)。有了獲得的證書后,配置Web服務(wù)器,以便偵聽端口443,并通過Magento管理后端來啟用SSL。
比如說,如果你在基于Debian的服務(wù)器上使用Apache,應(yīng)創(chuàng)建一個新的虛擬主機(jī):
# vi /etc/apache2/sites-available/your-domain.com-ssl.conf
添加下面幾行:
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
Options -Indexes +FollowSymLinks +MultiViews
Order allow,deny
AllowOverride All
ErrorLog /var/log/apache2/ssl_error.log
CustomLog /var/log/apache2/ssl_access.log combined
啟用mod_ssl Apache模塊:
# a2enmod ssl
禁用默認(rèn)的SSL虛擬主機(jī),并啟用"your-domain.com-ssl.conf"虛擬主機(jī):
# a2dissite default-ssl
# a2ensite your-domain.com-ssl.conf
最后,重啟Apache,讓變更生效:
# /etc/init.d/apache2 restart
登錄進(jìn)入到Magento管理后端,然后進(jìn)入到"系統(tǒng)">> "配置"。找到左邊的菜單,在"通用"選擇列表下,點(diǎn)擊"Web"。在"安全"選項(xiàng)卡上,將"http"變更成"https",并將"前端使用安全URL"和"管理員使用安全ULR"設(shè)成"是"。別忘了清空Magento緩存和Web瀏覽器的緩存,然后試著用https來訪問你的網(wǎng)站。
如果一些訪客使用http://your-domain.com將你的網(wǎng)站加入書簽,你又想確保所有http請求重定向至https,可以將下面幾行添加到位于Magento網(wǎng)站的文檔根目錄下的.htaccess文件(比如"/var/www/html/magento/.htaccess"):
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://your-domain.com/$1 [R=301,L]
3. 為管理員后端創(chuàng)建自定義路徑。
如果黑客使用蠻力攻擊,企圖闖入到你的Magento后端,Magento的默認(rèn)管理員URL(比如yourstore.com/store/admin)可能很容易成為黑客的目標(biāo)。為了防止這種情況,你可以定制默認(rèn)的管理員路徑,如下所示。
通過SSH以根用戶身份登錄到服務(wù)器。然后,打開位于Magento安裝系統(tǒng)的"/app/etc"目錄下的"local.xml"文件(比如"/var/www/html/magento/app/etc/local.xml"),找到下面這一行:
把"admin"換成較為復(fù)雜的名稱,比如"MyMagento123"或者你希望管理員后端的URL具有的任何名稱。這會將管理員URL變換成"yourstore.com/store/MyMagento123"。
4. 將獲準(zhǔn)擁有管理員訪問權(quán)的IP地址加入白名單。
除了像上面那樣隱藏管理員URL外,你還可以在網(wǎng)絡(luò)層面限制對管理員URL的訪問。換句話說,將管理員訪問權(quán)限制在你明確許可的僅僅幾個IP地址或CIDR段。想為Apache創(chuàng)建一份IP白名單,將下面這個LocationMatch指令添加到你的虛擬主機(jī)配置里面。請注意:"MyMagento123"是你之前定義的自定義管理員登錄頁面。
Order Deny,Allow
Deny from All
Allow from 111.111.111.0/24
更新白名單后,別忘了重新啟動Apache。現(xiàn)在,你就只能夠從指定的IP地址段訪問自定義管理員登錄頁面(yourstore.com/store/MyMagento123)了。
5. 加固Magento網(wǎng)站的文件許可機(jī)制。
為了遵守最小權(quán)限原則,就要確保Magento網(wǎng)站文件和目錄無法被Web服務(wù)器之外的任何系統(tǒng)寫入。為此,Web服務(wù)器用戶(Debian上的www-data,或CentOS上的apache)就需要可以訪問Magento網(wǎng)站文檔根目錄下面的Magento網(wǎng)站文件和目錄,所以運(yùn)行下面這個命令來做到這點(diǎn)(在Debian上):
# chown www-data:www-data -R /var/www/html/magento
對目錄設(shè)置chmod 750,對所有網(wǎng)站文件設(shè)置640,"app/etc"、"media"和"var"這些目錄除外,它們需要770權(quán)限(770權(quán)限將全面控制權(quán)賦予所有者和小組,對其他用戶不賦予任何權(quán)限):
# 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. 為管理員訪問使用雙因子驗(yàn)證。
就安全而言,沒有什么所謂的妙方高招。在這個方面,你可以為管理員訪問添加的另一層保護(hù)就是雙因子驗(yàn)證。如果啟用了雙因子驗(yàn)證插件,系統(tǒng)需要你出示一次性安全碼,才能訪問Magento后端。一次性安全碼由安裝在智能手機(jī)上的Google Authenticator應(yīng)用程序生成,不懷好意的黑客很難搞到。
7. 只使用來自可信源的Magento插件。
任何軟件系統(tǒng)的安全性取決于最薄弱的那一環(huán)。雖然龐大的第三方Magento插件生態(tài)系統(tǒng)無疑有利于Magento用戶,但是這每一個插件有可能帶來新的攻擊途徑。就算實(shí)施了其他所有的安全保護(hù)措施,只要某個編寫得差勁的插件存在一個安全漏洞,就能突破你的Magento系統(tǒng)。在將任何第三方插件整合到你的Magento商店之前,總是要做好摸底工作,從Magento社區(qū)等獨(dú)立社區(qū)了解開發(fā)者的聲譽(yù)和客戶評論。只使用來自可信源、一貫可靠的那些插件,以及定期更新和維護(hù)的那些插件。
8. 定期更新Magento。
只要推出新的安全補(bǔ)丁或版本,就要更新安裝的Magento,包括所有插件和主題。在開始更新Magento之前,對你的Magento網(wǎng)站文件及數(shù)據(jù)庫進(jìn)行備份是個好主意。
想知道目前安裝在網(wǎng)站上的Magento是哪個版本,通過SSH以根用戶身份登錄進(jìn)入到服務(wù)器,瀏覽到基于Magento的網(wǎng)站的文檔根目錄("/var/www/html/magento"),運(yùn)行下面幾個命令:
# cd /var/www/html/magento
# php -r "include 'app/Mage.php'; echo 'Your Magento version is: ', Mage::getVersion(); " ; echo "";
結(jié)束語
我們在本教程中探討了基于Magento的電子商務(wù)網(wǎng)站的最佳安全實(shí)踐。遵守這些準(zhǔn)則,你可以大大提高M(jìn)agento網(wǎng)站的安全性。除了Magento配置外,你還可以使用其他技巧或方法來加強(qiáng)網(wǎng)站的總體安全性,比如阻止不需要的IP地址,或者安裝入侵檢測系統(tǒng)(IDS),所以務(wù)必要盡一切所能來加強(qiáng)安全。將網(wǎng)店開在虛擬專用服務(wù)器(VPS)或?qū)S梅?wù)器上通常比開在共享主機(jī)托管系統(tǒng)上要好。如果你使用VPS或?qū)S弥鳈C(jī)托管,可獲得更好的性能,并且對自己的主機(jī)擁有更大的控制權(quán)。切記:一個小小的錯誤就會破壞你安裝的整個Magento系統(tǒng)。
原文標(biāo)題:How to improve the security of Magento e-commerce website 作者:RoseHosting