“遠(yuǎn)程桌面”面板下方有一個(gè)“選擇用戶”的按鈕,點(diǎn)擊之后,在“遠(yuǎn)程桌面用戶” 窗口中點(diǎn)擊“添加”按鈕鍵入允許的用戶,或者通過“高級(jí)→立即查找”添加用戶。遠(yuǎn)程的登錄具有一定的風(fēng)險(xiǎn),所以可登錄的帳戶一定要控制好。還可以設(shè)置為只允許特定的IP訪問(例如只允許管理員網(wǎng)段訪問)—由于限制較大,這個(gè)要根據(jù)實(shí)際情況來操作的。
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括南華網(wǎng)站建設(shè)、南華網(wǎng)站制作、南華網(wǎng)頁制作以及南華網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,南華網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到南華省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
不但企業(yè)的門戶網(wǎng)站被篡改、資料被竊取,而且還成為了病毒與木馬的傳播者。有些Web管理員采取了一些措施,雖然可以保證門戶網(wǎng)站的主頁不被篡改,但是卻很難避免自己的網(wǎng)站被當(dāng)作肉雞,來傳播病毒、惡意插件、木馬等等。筆者認(rèn)為,這很大一部分原因是管理員在Web安全防護(hù)上太被動(dòng)。他們只是被動(dòng)的防御。為了徹底提高Web服務(wù)器的安全,筆者認(rèn)為,Web安全要主動(dòng)出擊。具體的來說,需要做到如下幾點(diǎn)。 一、在代碼編寫時(shí)就要進(jìn)行漏洞測(cè)試 現(xiàn)在的企業(yè)網(wǎng)站做的越來越復(fù)雜、功能越來越強(qiáng)。不過這些都不是憑空而來的,是通過代碼堆積起來的。如果這個(gè)代碼只供企業(yè)內(nèi)部使用,那么不會(huì)帶來多大的安全隱患。但是如果放在互聯(lián)網(wǎng)上使用的話,則這些為實(shí)現(xiàn)特定功能的代碼就有可能成為攻擊者的目標(biāo)。筆者舉一個(gè)簡(jiǎn)單的例子。在網(wǎng)頁中可以嵌入SQL代碼。而攻擊者就可以利用這些SQL代碼來發(fā)動(dòng)攻擊,來獲取管理員的密碼等等破壞性的動(dòng)作。有時(shí)候訪問某些網(wǎng)站還需要有某些特定的控件。用戶在安裝這些控件時(shí),其實(shí)就有可能在安裝一個(gè)木馬(這可能訪問者與被訪問者都沒有意識(shí)到)。 為此在為網(wǎng)站某個(gè)特定功能編寫代碼時(shí),就要主動(dòng)出擊。從編碼的設(shè)計(jì)到編寫、到測(cè)試,都需要認(rèn)識(shí)到是否存在著安全的漏洞。筆者在日常過程中,在這方面對(duì)于員工提出了很高的要求。各個(gè)員工必須對(duì)自己所開發(fā)的功能負(fù)責(zé)。至少現(xiàn)在已知的病毒、木馬不能夠在你所開發(fā)的插件中有機(jī)可乘。通過這層層把關(guān),就可以提高代碼編寫的安全性。 二、對(duì)Web服務(wù)器進(jìn)行持續(xù)的監(jiān)控 冰凍三尺、非一日之寒。這就好像人生病一樣,都有一個(gè)過程。病毒、木馬等等在攻擊Web服務(wù)器時(shí),也需要一個(gè)過程?;蛘哒f,在攻擊取得成功之前,他們會(huì)有一些試探性的動(dòng)作。如對(duì)于一個(gè)采取了一定安全措施的Web服務(wù)器,從攻擊開始到取得成果,至少要有半天的時(shí)間。如果Web管理員對(duì)服務(wù)器進(jìn)行了全天候的監(jiān)控。在發(fā)現(xiàn)有異常行為時(shí),及早的采取措施,將病毒與木馬阻擋在門戶之外。這種主動(dòng)出擊的方式,就可以大大的提高Web服務(wù)器的安全性。 筆者現(xiàn)在維護(hù)的Web服務(wù)器有好幾十個(gè)?,F(xiàn)在專門有一個(gè)小組,來全天候的監(jiān)控服務(wù)器的訪問。平均每分鐘都可以監(jiān)測(cè)到一些試探性的攻擊行為。其中99%以上的攻擊行為,由于服務(wù)器已經(jīng)采取了對(duì)應(yīng)的安全措施,都無功而返。不過每天仍然會(huì)遇到一些攻擊行為。這些攻擊行為可能是針對(duì)新的漏洞,或者采取了新的攻擊方式。在服務(wù)器上原先沒有采取對(duì)應(yīng)的安全措施。如果沒有及時(shí)的發(fā)現(xiàn)這種行為,那么他們就很有可能最終實(shí)現(xiàn)他們的非法目的。相反,現(xiàn)在及早的發(fā)現(xiàn)了他們的攻擊手段,那么我們就可以在他們采取進(jìn)一步行動(dòng)之前,就在服務(wù)器上關(guān)掉這扇門,補(bǔ)上這個(gè)漏洞。 筆者在這里也建議,企業(yè)用戶在選擇互聯(lián)網(wǎng)Web服務(wù)器提供商的時(shí)候,除了考慮性能等因素之外,還要評(píng)估服務(wù)提供商能否提供全天候的監(jiān)控機(jī)制。在Web安全上主動(dòng)出擊,及時(shí)發(fā)現(xiàn)攻擊者的攻擊行為。在他們采取進(jìn)一步攻擊措施之前,就他們消除在萌芽狀態(tài)。 三、設(shè)置蜜罐,將攻擊者引向錯(cuò)誤的方向 在軍隊(duì)中,有時(shí)候會(huì)給軍人一些偽裝,讓敵人分不清真?zhèn)?。其?shí)在跟病毒、木馬打交道時(shí),本身就是一場(chǎng)無硝煙的戰(zhàn)爭(zhēng)。為此對(duì)于Web服務(wù)器采取一些偽裝,也能夠?qū)⒐粽咭蝈e(cuò)誤的方向。等到供給者發(fā)現(xiàn)自己的目標(biāo)錯(cuò)誤時(shí),管理員已經(jīng)鎖定了攻擊者,從而可以及早的采取相應(yīng)的措施。筆者有時(shí)候?qū)⑦@種主動(dòng)出擊的行為叫做蜜罐效應(yīng)。簡(jiǎn)單的說,就是設(shè)置兩個(gè)服務(wù)器。其中一個(gè)是真正的服務(wù)器,另外一個(gè)是蜜罐?,F(xiàn)在需要做的是,如何將真正的服務(wù)器偽裝起來,而將蜜罐推向公眾。讓攻擊者認(rèn)為蜜罐服務(wù)器才是真正的服務(wù)器。要做到這一點(diǎn)的話,可能需要從如下幾個(gè)方面出發(fā)。 一是有真有假,難以區(qū)分。如果要瞞過攻擊者的眼睛,那么蜜罐服務(wù)器就不能夠做的太假。筆者在做蜜罐服務(wù)器的時(shí)候,80%以上的內(nèi)容都是跟真的服務(wù)器相同的。只有一些比較機(jī)密的信息沒有防治在蜜罐服務(wù)器上。而且蜜罐服務(wù)器所采取的安全措施跟真的服務(wù)器事完全相同的。這不但可以提高蜜罐服務(wù)器的真實(shí)性,而且也可以用來評(píng)估真實(shí)服務(wù)器的安全性。一舉兩得。 二是需要有意無意的將攻擊者引向蜜罐服務(wù)器。攻擊者在判斷一個(gè)Web服務(wù)器是否值得攻擊時(shí),會(huì)進(jìn)行評(píng)估。如評(píng)估這個(gè)網(wǎng)站的流量是否比較高。如果網(wǎng)站的流量不高,那么即使被攻破了,也沒有多大的實(shí)用價(jià)值。攻擊者如果沒有有利可圖的話,不會(huì)花這么大的精力在這個(gè)網(wǎng)站服務(wù)器上面。如果要將攻擊者引向這個(gè)蜜罐服務(wù)器的話,那么就需要提高這個(gè)蜜罐服務(wù)器的訪問量。其實(shí)要做到這一點(diǎn)也非常的容易?,F(xiàn)在有很多用來交互流量的團(tuán)隊(duì)。只要花一點(diǎn)比較小的投資就可以做到這一點(diǎn)。 三是可以故意開一些后門讓攻擊者來鉆。作為Web服務(wù)器的管理者,不僅關(guān)心自己的服務(wù)器是否安全,還要知道自己的服務(wù)器有沒有被人家盯上?;蛘哒f,有沒有被攻擊的價(jià)值。此時(shí)管理者就需要知道,自己的服務(wù)器一天被攻擊了多少次。如果攻擊的頻率比較高,管理者就高興、又憂慮。高興的是自己的服務(wù)器價(jià)值還蠻大的,被這么多人惦記著。憂慮的是自己的服務(wù)器成為了眾人攻擊的目標(biāo)。就應(yīng)該抽取更多的力量來關(guān)注服務(wù)器的安全。 四、專人對(duì)Web服務(wù)器的安全性進(jìn)行測(cè)試 俗話說,靠人不如靠自己。在Web服務(wù)器的攻防戰(zhàn)上,這一個(gè)原則也適用。筆者建議,如果企業(yè)對(duì)于Web服務(wù)的安全比較高,如網(wǎng)站服務(wù)器上有電子商務(wù)交易平臺(tái),此時(shí)最好設(shè)置一個(gè)專業(yè)的團(tuán)隊(duì)。他們充當(dāng)攻擊者的角色,對(duì)服務(wù)器進(jìn)行安全性的測(cè)試。這個(gè)專業(yè)團(tuán)隊(duì)主要執(zhí)行如下幾個(gè)任務(wù)。 一是測(cè)試Web管理團(tuán)隊(duì)對(duì)攻擊行為的反應(yīng)速度。如可以采用一些現(xiàn)在比較流行的攻擊手段,對(duì)自己的Web服務(wù)器發(fā)動(dòng)攻擊。當(dāng)然這個(gè)時(shí)間是隨機(jī)的。預(yù)先Web管理團(tuán)隊(duì)并不知道?,F(xiàn)在要評(píng)估的是,Web管理團(tuán)隊(duì)在多少時(shí)間之內(nèi)能夠發(fā)現(xiàn)這種攻擊的行為。這也是考驗(yàn)管理團(tuán)隊(duì)全天候跟蹤的能力。一般來說,這個(gè)時(shí)間越短越好。應(yīng)該將這個(gè)時(shí)間控制在可控的范圍之內(nèi)。即使攻擊最后沒有成功,Web管理團(tuán)隊(duì)也應(yīng)該及早的發(fā)現(xiàn)攻擊的行為。畢竟有沒有發(fā)現(xiàn)、與最終有沒有取得成功,是兩個(gè)不同的概念。 二是要測(cè)試服務(wù)器的漏洞是否有補(bǔ)上。畢竟大部分的攻擊行為,都是針對(duì)服務(wù)器現(xiàn)有的漏洞所產(chǎn)生的?,F(xiàn)在這個(gè)專業(yè)團(tuán)隊(duì)要做的就是,這些已發(fā)現(xiàn)的漏洞是否都已經(jīng)打上了安全補(bǔ)丁或者采取了對(duì)應(yīng)的安全措施。有時(shí)候我們都沒有發(fā)現(xiàn)的漏洞是無能為力,但是對(duì)于這些已經(jīng)存在的漏洞不能夠放過。否則的話,也太便宜那些攻擊者了。
第一步:在Linux上安裝和配置OTPW
在Debian、Ubuntu或Linux Mint上:
用apt-get安裝OTPW程序包。
$ sudo apt-get install libpam-otpw otpw-bin
使用文本編輯工具,打開SSH的PAM配置文件(/etc/pam.d/sshd),注釋掉下面這行代碼(以禁用密碼驗(yàn)證)。
#@include common-auth
然后添加下面兩行代碼(以啟用一次性密碼驗(yàn)證):
auth required pam_otpw.so
session optional pam_otpw.so
在Fedora或CentOS/RHEL上:
在基于紅帽的系統(tǒng)上,沒有作為預(yù)制程序包的OTPW。于是,我們通過從源代碼來構(gòu)建的方法,安裝OTPW。
首先,安裝基本組件:
$ sudo yum git gcc pam-devel
$ git clone
$ cd otpw
使用文本編輯工具打開Makefile,編輯以“PAMLIB=”開頭的這一行,如下所示。
在64位系統(tǒng)上:
PAMLIB=/usr/lib64/security
在32位系統(tǒng)上:
PAMLIB=/usr/lib/security
編譯后安裝。請(qǐng)注意:安裝環(huán)節(jié)會(huì)自動(dòng)重啟SSH服務(wù)器。所以如果你使用SSH連接,就要準(zhǔn)備好斷開。
$ make
$ sudo make install
現(xiàn)在你需要更新SELinux策略,因?yàn)?usr/sbin/sshd試圖寫入到用戶的主目錄,而默認(rèn)的SELinux策略不允許這個(gè)操作。下面這些命令可以起到更新策略的作用。如果你不使用SELinux,跳過這一步好了。
$ sudo grep sshd /var/log/audit/audit.log | audit2allow -M mypol
$ sudo semodule -i mypol.pp
下一步,用文本編輯工具打開SSH的PAM配置文件(/etc/pam.d/sshd),注釋掉下面這行代碼(以禁用密碼驗(yàn)證)。
#auth substack password-auth
然后添加下面兩行代碼(以啟用一次性密碼驗(yàn)證):
auth required pam_otpw.so
session optional pam_otpw.so
第二步:針對(duì)一次性密碼配置SSH服務(wù)器
下一步是配置SSH服務(wù)器,以接受一次性密碼。
用文本編輯工具打開/etc/ssh/sshd_config,設(shè)置下列三個(gè)參數(shù)。確保你沒有不止一次地添加這幾行,因?yàn)槟菚?huì)引起SSH服務(wù)器失效。
UsePrivilegeSeparation yes
ChallengeResponseAuthentication yes
UsePAM yes
你還需要禁用默認(rèn)的密碼驗(yàn)證??梢砸暻闆r,禁用公密驗(yàn)證,那樣萬一你沒有一次性密碼,就可以恢復(fù)到基于密鑰的驗(yàn)證。
PubkeyAuthentication yes
PasswordAuthentication no
現(xiàn)在,重啟SSH服務(wù)器。
在Debian、Ubuntu或Linux Mint上:
$ sudo service ssh restart
在Fedora或CentOS/RHEL 7上:
$ sudo systemctl restart sshd
第三步:用OTPW生成一次性密碼
如前所述,你需要事先創(chuàng)建一次性密碼,并將它們存儲(chǔ)在遠(yuǎn)程SSH服務(wù)器主機(jī)上。為此,以你登錄時(shí)所用的用戶身份運(yùn)行otpw-gen工具。
$ cd ~
$ otpw-gen temporary_password.txt
它會(huì)要求你設(shè)置一個(gè)前綴密碼。你以后登錄時(shí),就需要輸入這個(gè)前綴密碼以及一次性密碼。實(shí)際上前綴密碼是另一層保護(hù)機(jī)制。即使密碼表落到了不法分子手里,前綴密碼也會(huì)迫使對(duì)方采用蠻力攻擊。
一旦前綴密碼設(shè)置完畢,命令會(huì)生成280個(gè)一次性密碼,并將它們存儲(chǔ)在輸出文本文件(比如temporary_password.txt)中。每個(gè)密碼(默認(rèn)情況下長(zhǎng)度是8個(gè)字符)的前面是三位數(shù)的索引號(hào)。你可以將文件打印在紙張上,隨身攜帶。
你還會(huì)看到~/.otpw文件已創(chuàng)建,這些密碼的密碼散列就存儲(chǔ)在其中。每一行的頭三位表明了將用于SSH登錄的密碼的索引號(hào)。
$ more ~/.otpw
OTPW1
280 3 12 8
191ai+:ENwmMqwn
218tYRZc%PIY27a
241ve8ns%NsHFmf
055W4/YCauQJkr:
102ZnJ4VWLFrk5N
2273Xww55hteJ8Y
1509d4b5=A64jBT
168FWBXY%ztm9j%
000rWUSdBYr%8UE
037NvyryzcI+YRX
122rEwA3GXvOk=z
測(cè)試用于SSH登錄的一次性密碼
現(xiàn)在,不妨像平常那樣登錄到SSH服務(wù)器:
$ ssh user@remote_host
如果OTPW成功設(shè)置,你會(huì)看到略有不同的密碼提示符:
Password 191:
現(xiàn)在打開密碼表,尋找密碼表中的索引號(hào)“191”。
023 kBvp tq/G 079 jKEw /HRM 135 oW/c /UeB 191 fOO+ PeiD 247 vAnZ EgUt
據(jù)上面密碼表顯示,編號(hào)“191”的一次性密碼是“fOO+PeiD”。你需要在前面加上前綴密碼。比如說,如果你的前綴密碼是“000”,那么需要輸入的實(shí)際的一次性密碼是“000fOO+PeiD”。
一旦你成功登錄,所使用的密碼會(huì)自動(dòng)作廢。如果你查看~/.otpw,就會(huì)注意到第一行被換成了“---------------”,這意味著密碼“191”已經(jīng)無效。
OTPW1
280 3 12 8
---------------
218tYRZc%PIY27a
241ve8ns%NsHFmf
055W4/YCauQJkr:
102ZnJ4VWLFrk5N
2273Xww55hteJ8Y
1509d4b5=A64jBT
168FWBXY%ztm9j%
000rWUSdBYr%8UE
037NvyryzcI+YRX
122rEwA3GXvOk=z
粗略地分析, 登錄機(jī)制主要分為登錄驗(yàn)證、登錄保持、登出三個(gè)部分。登錄驗(yàn)證是指客戶端提供用戶名和密碼,向服務(wù)器提出登錄請(qǐng)求,服務(wù)器判斷客戶端是否可以登錄并向客戶端確認(rèn)。 登錄認(rèn)保持是指客戶端登錄后, 服務(wù)器能夠分辨出已登錄的客戶端,并為其持續(xù)提供登錄權(quán)限的服務(wù)器。登出是指客戶端主動(dòng)退出登錄狀態(tài)。容易想到的方案是,客戶端登錄成功后, 服務(wù)器為其分配sessionId, 客戶端隨后每次請(qǐng)求資源時(shí)都帶上sessionId。
上述簡(jiǎn)易的登錄驗(yàn)證策略存在明顯的安全漏洞,需要優(yōu)化。
客戶端第一次發(fā)出登錄請(qǐng)求時(shí), 用戶密碼以明文的方式傳輸, 一旦被截獲, 后果嚴(yán)重。因此密碼需要加密,例如可采用RSA非對(duì)稱加密。具體流程如下:
再仔細(xì)核對(duì)上述登錄流程, 我們發(fā)現(xiàn)服務(wù)器判斷用戶是否登錄, 完全依賴于sessionId, 一旦其被截獲, 黑客就能夠模擬出用戶的請(qǐng)求。于是我們需要引入token的概念: 用戶登錄成功后, 服務(wù)器不但為其分配了sessionId, 還分配了token, token是維持登錄狀態(tài)的關(guān)鍵秘密數(shù)據(jù)。在服務(wù)器向客戶端發(fā)送的token數(shù)據(jù),也需要加密。于是一次登錄的細(xì)節(jié)再次擴(kuò)展。
在最原始的方案中, 登錄保持僅僅靠服務(wù)器生成的sessionId: 客戶端的請(qǐng)求中帶上sessionId, 如果服務(wù)器的redis中存在這個(gè)id,就認(rèn)為請(qǐng)求來自相應(yīng)的登錄客戶端。 但是只要sessionId被截獲, 請(qǐng)求就可以為偽造, 存在安全隱患。
引入token后,上述問題便可得到解決。 服務(wù)器將token和其它的一些變量, 利用散列加密算法得到簽名后,連同sessionId一并發(fā)送給服務(wù)器; 服務(wù)器取出保存于服務(wù)器端的token,利用相同的法則生成校驗(yàn)簽名, 如果客戶端簽名與服務(wù)器的校驗(yàn)簽名一致, 就認(rèn)為請(qǐng)求來自登錄的客戶端。
1.3 TOKEN失效
用戶登錄出系統(tǒng)
失效原理:
在服務(wù)器端的redis中刪除相應(yīng)key為session的鍵值對(duì)。
App因?yàn)橐獙?shí)現(xiàn)自動(dòng)登陸功能,所以必然要保存一些憑據(jù),所以比較復(fù)雜。
App登陸要實(shí)現(xiàn)的功能:
這里判斷時(shí)間,主要是防止攻擊者截取到加密串后,可以長(zhǎng)久地利用這個(gè)加密串來登陸。
不用AES加密,用RSA公鑰加密也是可以的。AES速度比RSA要快,RSA只能存儲(chǔ)有限的數(shù)據(jù)。