新聞中心
Memcache服務(wù)器端都是直接通過(guò)客戶(hù)端連接后直接操作,沒(méi)有任何的驗(yàn)證過(guò)程,不需要認(rèn)證就可以隨意交互。服務(wù)器直接暴露在互聯(lián)網(wǎng)上是比較危險(xiǎn)的,輕則數(shù)據(jù)泄露被其他無(wú)關(guān)人員查看,重則服務(wù)器被入侵。

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)改則,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):18982081108
Memcache暴露在外網(wǎng)中會(huì)被攻擊者利用發(fā)起DRDoS反射攻擊,通過(guò)發(fā)送大量帶有被害者IP地址的UDP數(shù)據(jù)包給放大器主機(jī),然后放大器主機(jī)對(duì)偽造的IP地址源做出大量回應(yīng),形成分布式拒絕服務(wù)攻擊。
1、IP訪問(wèn)限制
將Memcache服務(wù)放置于可信域內(nèi),有外網(wǎng)時(shí)不要監(jiān)聽(tīng)0.0.0.0,有特殊需求可以通過(guò)防火墻設(shè)置acl或者添加安全組。通過(guò)添加Memcache啟動(dòng)參數(shù)來(lái)監(jiān)聽(tīng)內(nèi)網(wǎng)的IP地址和端口,內(nèi)網(wǎng)間的訪問(wèn)能夠有效阻止攻擊者的非法訪問(wèn)。
- # memcached -d -m 1024 -u nobody -l 10.16.0.20 -p 11211 -c 1024 -P/tmp/memcached.pid
以上配置中設(shè)置Memcache服務(wù)器端只允許監(jiān)聽(tīng)內(nèi)網(wǎng)的10.16.0.20的IP的11211端口,占用1024MB內(nèi)存,并且允許最多1024個(gè)并發(fā)連接。
如果是對(duì)外提供服務(wù),并且需要通過(guò)外網(wǎng)IP來(lái)訪問(wèn)Memcache,防止機(jī)器掃描和SSRF等攻擊,可以將Memcache的監(jiān)聽(tīng)端口隨機(jī)改為其他的端口。
同時(shí)使用防火墻或者代理程序來(lái)過(guò)濾非法訪問(wèn)。一般在Linux下可以使用iptables或者FreeBSD下的ipfw來(lái)指定一些規(guī)則防止一些非法的訪問(wèn),比如可以設(shè)置只允許特定外網(wǎng)IP訪問(wèn)Memcache服務(wù)器,同時(shí)阻止其他非法訪問(wèn)。
- # iptables -F
- # iptables -P INPUT DROP
- # iptables -A INPUT -p tcp -s 192.168.0.2 --dport 11211 -j ACCEPT
- # iptables -A INPUT -p udp -s 192.168.0.2 --dport 11211 -j ACCEPT
上面的iptables規(guī)則就是只允許110.18.0.2這臺(tái)服務(wù)器對(duì)Memcache服務(wù)器的訪問(wèn),能夠有效地阻止一些非法訪問(wèn),相應(yīng)地也可以增加一些其他的規(guī)則來(lái)加強(qiáng)安全性,這個(gè)可以根據(jù)自己的需要來(lái)進(jìn)行。
2、使用SASL驗(yàn)證
簡(jiǎn)單驗(yàn)證安全層(Simple Authentication Security Layer,SASL)為應(yīng)用程序和共享庫(kù)的研發(fā)人員提供了用于驗(yàn)證、數(shù)據(jù)完整性檢查和加密的機(jī)制。
以CentOS為例來(lái)給Memcache添加SASL支持。
首先在系統(tǒng)中安裝SASL支持。
- yum install cyrus-sasl cyrus-sasl-lib cyrus-sasl-devel cyrus-sasl-plain
查看安裝結(jié)果。
- $saslauthd -v
- saslauthd 2.1.23
- authentication mechanisms: getpwent kerberos5 pamrimap shadow ldap
當(dāng)前可使用的密碼驗(yàn)證方法有g(shù)etwent、kerberos5、pam、rimap、shadow和ldap,配置成使用shadow方式進(jìn)行認(rèn)證。
- # 修改/etc/sysconfig/saslauthd文件
- MECH=shadow
重啟saslauthd。
- sudo /etc/init.d/saslauthd restart
- Stopping saslauthd: [OK]
- Starting saslauthd: [OK]
設(shè)置Memcache用戶(hù)的SASL認(rèn)證密碼。
- saslpasswd2 -c -a memcached memcacheuser
- Password: #輸入密碼
- Again (for verification): #再次輸入密碼
最終生成的密碼保存在/etc/sasldb2中。
使用sasldblistusers2命令查看已經(jīng)添加的用戶(hù)。
- memcacheuser@3b7fc9690a12:userPassword
在libmemcached官網(wǎng)選擇適合自己的libmemcached源碼壓縮包,如使用1.0.18版libmemcached-1.0.18.tar.gz進(jìn)行編譯安裝,添加--enable-sasl選項(xiàng)開(kāi)啟SASL認(rèn)證功能。
- tar zxvf libmemcached-1.0.18.tar.gz
- cd libmemcached-1.0.18
- ./configure --prefix=/usr/local/libmemcached --enable-sasl
- make
- make install
在memcached官網(wǎng)下載memcached服務(wù)端源碼,啟用SASL驗(yàn)證功能需要在編譯時(shí)指定--enable-sasl參數(shù),否則安裝成功后,無(wú)法啟用SASL執(zhí)行安裝。
- tar zxvf memcached-1.5.8.tar.gz
- cd libmemcached-1.5.8
- ./configure --enable-sasl --prefix=/opt/memcached --with-libevent=/opt/memcached/libevent
- make
- make install
啟動(dòng)memcached服務(wù),啟用SASL驗(yàn)證功能,在啟動(dòng)時(shí)需要加-S(大寫(xiě)S)參數(shù)。
- /opt/memcached/bin/memcached -S -m 2048 -u xxxxx -P
- /tmp/memcached/memcached.pid -c 1024 -p 11211 -b 1024 -d
在PECL網(wǎng)站搜索Memcached,下載memcached-3.0.4.tgz,解壓安裝PHP的Memcached擴(kuò)展。
- tar zxvf memcached-2.1.0.tar.gz
- cd memcached-2.1.0
- phpize
- ./configure --with-php-config=php-config --with-libmemcached-dir=/usr/local/libmemcached --enable-memcached-sasl
- make
- make install
修改PHP配置文件使SASL生效,同時(shí)重啟PHP。
- # vim /etc/php.d/memcache.ini
- extension=memcached.so
- memcached.use_sasl=1
在PHP代碼中使用SASL用戶(hù)名和密碼連接Memcached。
- $mc=new Memcached();
- $memcached->addServer('127.0.0.1',11211);
- $mc->setOption(Memcached::OPT_BINARY_PROTOCOL,true);
- $mc->setSaslAuthData("memcacheuser","password");
- $mc->set('key','value');
- echo $mc->get('key');
本文標(biāo)題:PHP安全:Memcache的使用安全
新聞來(lái)源:http://www.dlmjj.cn/article/djsicce.html


咨詢(xún)
建站咨詢(xún)
