如何關閉ftp防篡改
⑴ 網頁防篡改的部署網路架構是
在客戶需要防護的vpc內新建一台雲主機,使用網頁防篡改鏡像載入即可,保證防篡改伺服器雲主機與准備防護的客戶網站雲主機在同一個vpc內,網頁防篡改架構是標準的c/s架構。
防篡改伺服器側的用戶介面通過apache提供圖形化的網頁介面供用戶注冊服務及進行服務使用,後端使用public_server響應網頁的調用及協調dlsync服務,資料庫使用mongdb;
防篡改客戶端在用戶的網站雲主機上安裝一個代理程序,該代理分兩塊km、dlsync組成,dlsync與伺服器端配合完成文件的同步確保防篡改伺服器與保護客戶端文件的一致,dlsync的文件上傳使用ftp的60000-60010埠,對客戶端的網站路徑進行防護使用km組件,km通過antitamper_km將模塊注入linux內核,通過內核監控保護指定的目錄文件,使保護范圍內的文件處於無法修改及刪除狀態除非通過dlsync從防篡改服務端的命令實現文件的增刪改。
————————————————
⑵ HTTP,SSL/TLS和HTTPS協議的區別與聯系
概述:HTTP是普通明文傳輸協議,HTTPS是加密協議,相當於HTTP的安全版本,但需要HTTPS加密必須擁有SSL證書與TLS協議交流產生,SSL證書在線簽發:網頁鏈接
1、「HTTP」是什麼?
超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網路協議,所有的WWW文件都必須遵守這個標准,設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法(具體可查看馬海祥博客《深入解析互聯網協議的原理》的相關介紹)。
1960年美國人Ted Nelson構思了一種通過計算機處理文本信息的方法,並稱之為超文本(hypertext),這成為了HTTP超文本傳輸協議標准架構的發展根基。
簡單來說,HTTP就是一個網路協議,是專門用來幫你傳輸Web內容的,關於這個協議,就算你不了解,至少也聽說過吧?比如你訪問我的博客的主頁,瀏覽器地址欄會出現的網址:http://www.mahaixiang.cn,大部分網站都是通過HTTP協議來傳輸Web頁面、以及Web頁面上包含的各種東東(圖片、CSS 樣式、JS 腳本)。
2、「SSL/TLS」是什麼?
SSL是「Secure Sockets Layer」的縮寫,中文叫做「安全套接層」,它是在上世紀90年代中期,由網景公司設計的(順便插一句,網景公司不光發明了 SSL,還發明了很多 Web 的基礎設施——比如「CSS 樣式表」和「JS 腳本」)。
為啥要發明SSL這個協議捏?因為原先互聯網上使用的HTTP協議是明文的,存在很多缺點——比如傳輸內容會被偷窺(嗅探)和篡改,發明SSL協議,就是為了解決這些問題。
到了1999年,SSL因為應用廣泛,已經成為互聯網上的事實標准,IETF就在那年把SSL標准化,標准化之後的名稱改為TLS(是「Transport Layer Security」的縮寫),中文叫做「傳輸層安全協議」。
很多相關的文章都把這兩者並列稱呼(SSL/TLS),因為這兩者可以視作同一個東西的不同階段。
3、「HTTPS」是什麼意思?
解釋完 HTTP 和 SSL/TLS,現在就可以來解釋 HTTPS 啦,咱們通常所說的 HTTPS 協議,說白了就是「HTTP 協議」和「SSL/TLS 協議」的組合,你可以把 HTTPS 大致理解為——「HTTP over SSL」或「HTTP over TLS」(反正 SSL 和 TLS 差不多)。
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。
它是一個URI scheme(抽象標識符體系),句法類同http:體系,用於安全的HTTP數據傳輸。
https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的默認埠及一個加密/身份驗證層(在HTTP與TCP之間),這個系統的最初研發由網景公司(Netscape)進行,並內置於其瀏覽器Netscape Navigator中,提供了身份驗證與加密通訊方法,現在它被廣泛用於萬維網上安全敏感的通訊,例如交易支付方面。
4、談談「對稱加密」和「非對稱加密」的概念
如果我們想搞明白「對稱加密」和「非對稱加密」的概念,首先,我們就要先知道什麼是「加密」和「解密」?
(1)、什麼是「加密」和「解密」?
通俗而言,你可以把「加密」和「解密」理解為某種互逆的數學運算,就好比「加法和減法」互為逆運算、「乘法和除法」互為逆運算。
「加密」的過程,就是把「明文」變成「密文」的過程;反之,「解密」的過程,就是把「密文」變為「明文」,在這兩個過程中,都需要一個關鍵的東東——叫做「密鑰」——來參與數學運算。
(2)、什麼是「對稱加密」?
所謂的「對稱加密技術」,意思就是說:「加密」和「解密」使用相同的密鑰。這個比較好理解,就好比你用 7zip 或 WinRAR 創建一個帶密碼(口令)的加密壓縮包,當你下次要把這個壓縮文件解開的時候,你需要輸入同樣的密碼,在這個例子中,密碼/口令就如同剛才說的「密鑰」。
對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的密鑰(secret key),這種方法在密碼學中叫做對稱加密演算法,對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。
(3)、什麼是「非對稱加密」?
所謂的「非對稱加密技術」,意思就是說:「加密」和「解密」使用不同的密鑰,這玩意兒比較難理解,也比較難想到,當年「非對稱加密」的發明,還被譽為「密碼學」歷史上的一次革命。
非對稱加密為數據的加密與解密提供了一個非常安全的方法,它使用了一對密鑰,公鑰(public key)和私鑰(private key),私鑰只能由一方安全保管,不能外泄,而公鑰則可以發給任何請求它的人,非對稱加密使用這對密鑰中的一個進行加密,而解密則需要另一個密鑰。
由於篇幅有限,對「非對稱加密」這個話題,我就不展開了,有空的話,我會再單獨寫一篇文章在馬海祥博客上發布。
(4)、各自有啥優缺點?
看完剛才的定義,很顯然:(從功能角度而言)「非對稱加密」能乾的事情比「對稱加密」要多,這是「非對稱加密」的優點,但是「非對稱加密」的實現,通常需要涉及到「復雜數學問題」,所以,「非對稱加密」的性能通常要差很多(相對於「對稱加密」而言)。
這兩者的優缺點,也影響到了 SSL 協議的設計。
5、HTTP協議的特點
作為背景知識介紹,還需要再稍微談一下 HTTP 協議本身的特點,HTTP本身有很多特點,考慮到篇幅有限,馬海祥只談那些和HTTPS相關的特點,想要了解更深入的HTTP知識,可查看馬海祥博客《HTTP服務的七層架構技術解析及運用》的相關介紹。
(1)、HTTP的版本和歷史
如今咱們用的 HTTP 協議,版本號是 1.1(也就是 HTTP 1.1),這個 1.1 版本是1995年底開始起草的(技術文檔是RFC2068),並在1999年正式發布(技術文檔是RFC2616)。
在 1.1 之前,還有曾經出現過兩個版本「0.9 和 1.0」,其中的 HTTP 0.9 沒有被廣泛使用,而 HTTP 1.0 被廣泛使用過。
(2)、HTTP 和 TCP 之間的關系
簡單地說,TCP 協議是 HTTP 協議的基石——HTTP 協議需要依靠 TCP 協議來傳輸數據。
在網路分層模型中,TCP 被稱為「傳輸層協議」,而 HTTP 被稱為「應用層協議」。
有很多常見的應用層協議是以 TCP 為基礎的,比如「FTP、SMTP、POP、IMAP」等。
TCP被稱為「面向連接」的傳輸層協議,關於它的具體細節,俺就不展開了(否則篇幅又失控了),你只需知道:傳輸層主要有兩個協議,分別是TCP和UDP,TCP比UDP更可靠,你可以把 TCP 協議想像成某個水管,發送端這頭進水,接收端那頭就出水,並且 TCP 協議能夠確保,先發送的數據先到達(與之相反,UDP不保證這點)。
(3)、HTTP協議如何使用 TCP 連接?
HTTP對 TCP 連接的使用,分為兩種方式:俗稱「短連接」和「長連接」(「長連接」又稱「持久連接」,叫做「Keep-Alive」或「Persistent Connection」)
假設有一個網頁,裡麵包含好多圖片,還包含好多外部的CSS文件和JS文件,在「短連接」的模式下,瀏覽器會先發起一個 TCP 連接,拿到該網頁的 HTML 源代碼(拿到 HTML 之後,這個 TCP 連接就關閉了)。然後,瀏覽器開始分析這個網頁的源碼,知道這個頁麵包含很多外部資源(圖片、CSS、JS)。然後針對每一個外部資源,再分別發起一個個 TCP 連接,把這些文件獲取到本地(同樣的,每抓取一個外部資源後,相應的 TCP 就斷開)。
相反,如果是「長連接」的方式,瀏覽器也會先發起一個 TCP 連接去抓取頁面,但是抓取頁面之後,該 TCP 連接並不會立即關閉,而是暫時先保持著(所謂的「Keep-Alive」),然後瀏覽器分析 HTML 源碼之後,發現有很多外部資源,就用剛才那個 TCP 連接去抓取此頁面的外部資源。
在 HTTP 1.0 版本,默認使用的是「短連接」(那時候是 Web 誕生初期,網頁相對簡單,「短連接」的問題不大)。
到了1995年底開始制定 HTTP 1.1 草案的時候,網頁已經開始變得復雜(網頁內的圖片、腳本越來越多了),這時候再用短連接的方式,效率太低下了(因為建立 TCP 連接是有「時間成本」和「CPU成本」),所以,在 HTTP 1.1 中,默認採用的是「Keep-Alive」的方式。
6、SSL/TLS協議的基本運行過程
SSL/TLS協議的基本思路是採用公鑰加密法,也就是說,客戶端先向伺服器端索要公鑰,然後用公鑰加密信息,伺服器收到密文後,用自己的私鑰解密,但是這里有兩個問題:
(1)、如何保證公鑰不被篡改?
解決方法:將公鑰放在數字證書中,只要證書是可信的,公鑰就是可信的。
(2)、公鑰加密計算量太大,如何減少耗用的時間?
解決方法:每一次對話(session),客戶端和伺服器端都生成一個"對話密鑰"(session key),用它來加密信息。由於"對話密鑰"是對稱加密,所以運算速度非常快,而伺服器公鑰只用於加密"對話密鑰"本身,這樣就減少了加密運算的消耗時間。
因此,SSL/TLS協議的基本過程是這樣的:
(1)、客戶端向伺服器端索要並驗證公鑰。
(2)、雙方協商生成「對話密鑰」。
(3)、雙方採用「對話密鑰」進行加密通信。
7、SSL、HTTP和HTTPS協議的聯系
SSL是Netscape公司所提出的安全保密協議,在瀏覽器(如Internet Explorer、Netscape Navigator)和Web伺服器(如Netscape的Netscape Enterprise Server、ColdFusion Server等等)之間構造安全通道來進行數據傳輸,SSL運行在TCP/IP層之上、應用層之下,為應用程序提供加密數據通道,它採用了RC4、MD5 以及RSA等加密演算法,使用40位的密鑰,適用於商業信息的加密。
同時,Netscape公司相應開發了HTTPS協議並內置於其瀏覽器中,HTTPS實際上就是SSL over HTTP,它使用默認埠443,而不是像HTTP那樣使用埠80來和TCP/IP進行通信。HTTPS協議使用SSL在發送方把原始數據進行加密,然後在接受方進行解密,加密和解密需要發送方和接受方通過交換共知的密鑰來實現,因此,所傳送的數據不容易被網路黑客截獲和解密。
然而,加密和解密過程需要耗費系統大量的開銷,嚴重降低機器的性能,相關測試數據表明使用HTTPS協議傳輸數據的工作效率只有使用HTTP協議傳輸的十分之一。
假如為了安全保密,將一個網站所有的Web應用都啟用SSL技術來加密,並使用HTTPS協議進行傳輸,那麼該網站的性能和效率將會大大降低,而且沒有這個必要,因為一般來說並不是所有數據都要求那麼高的安全保密級別,所以,我們只需對那些涉及機密數據的交互處理使用HTTPS協議,這樣就做到魚與熊掌兼得(具體可查看馬海祥博客《從SEO的角度來分析網站是否該採用HTTPS協議》的相關介紹)。
總之不需要用https的地方,就盡量不要用。
8、HTTPS協議的需求是什麼?
花了好多口水,終於把背景知識說完了,下面正式進入正題,先來說說當初設計HTTPS是為了滿足哪些需求?
很多介紹 HTTPS 的文章一上來就給你講實現細節,對此,馬海祥覺得這是不好的做法,一上來就給你講協議細節,你充其量只能知道如何做,無法理解為什麼,我在前一個章節講了「背景知識」,在這個章節講了「需求」,這就有助於你理解了。
為什麼要設計成這樣?——這就是 WHY 型的問題。
(1)、兼容性
因為是先有 HTTP 再有 HTTPS,所以,HTTPS 的設計者肯定要考慮到對原有 HTTP 的兼容性。
這里所說的兼容性包括很多方面,比如已有的 Web 應用要盡可能無縫地遷移到 HTTPS;比如對瀏覽器廠商而言,改動要盡可能小。
基於「兼容性」方面的考慮,很容易得出如下幾個結論:
①、HTTPS還是要基於 TCP 來傳輸
如果改為 UDP 作傳輸層,無論是 Web 服務端還是瀏覽器客戶端,都要大改,動靜太大了。
②、單獨使用一個新的協議,把 HTTP 協議包裹起來
所謂的「HTTP over SSL」,實際上是在原有的 HTTP 數據外面加了一層 SSL 的封裝,HTTP 協議原有的 GET、POST 之類的機制,基本上原封不動。
打個比方:如果原來的 HTTP 是塑料水管,容易被戳破;那麼如今新設計的 HTTPS 就像是在原有的塑料水管之外,再包一層金屬水管,一來,原有的塑料水管照樣運行;二來,用金屬加固了之後,不容易被戳破。
(2)、可擴展性
前面說了,HTTPS 相當於是「HTTP over SSL」。
如果 SSL 這個協議在「可擴展性」方面的設計足夠牛逼,那麼它除了能跟 HTTP 搭配,還能夠跟其它的應用層協議搭配,豈不美哉?
現在看來,當初設計 SSL 的人確實比較牛,如今的 SSL/TLS 可以跟很多常用的應用層協議(比如:FTP、SMTP、POP、Telnet)搭配,來強化這些應用層協議的安全性。
接著剛才打的比方:如果把 SSL/TLS 視作一根用來加固的金屬管,它不僅可以用來加固輸水的管道,還可以用來加固輸煤氣的管道。
(3)、保密性(防泄密)
HTTPS需要做到足夠好的保密性。
說到保密性,首先要能夠對抗嗅探(行話叫 Sniffer),所謂的「嗅探」,通俗而言就是監視你的網路傳輸流量,如果你使用明文的 HTTP 上網,那麼監視者通過嗅探,就知道你在訪問哪些網站的哪些頁面。
嗅探是最低級的攻擊手法,除了嗅探,HTTPS 還需要能對抗其它一些稍微高級的攻擊手法——比如「重放攻擊」(後面講協議原理的時候,會再聊)。
(4)、完整性(防篡改)
除了「保密性」,還有一個同樣重要的目標是「確保完整性」。
在發明 HTTPS 之前,由於 HTTP 是明文的,不但容易被嗅探,還容易被篡改。
舉個例子:比如咱們的網路運營商(ISP)都比較流氓,經常有網友抱怨說訪問某網站(本來是沒有廣告的),竟然會跳出很多中國電信的廣告,為啥會這樣呢?因為你的網路流量需要經過 ISP 的線路才能到達公網,如果你使用的是明文的 HTTP,ISP 很容易就可以在你訪問的頁面中植入廣告。
所以,當初設計 HTTPS 的時候,還有一個需求是「確保 HTTP 協議的內容不被篡改」。
(5)、真實性(防假冒)
在談到 HTTPS 的需求時,「真實性」經常被忽略,其實「真實性」的重要程度不亞於前面的「保密性」和「完整性」。
舉個例子:你因為使用網銀,需要訪問該網銀的 Web 站點,那麼,你如何確保你訪問的網站確實是你想訪問的網站?
有些天真的同學會說:通過看網址裡面的域名,來確保,為啥說這樣的同學是「天真的」?因為 DNS 系統本身是不可靠的(尤其是在設計 SSL 的那個年代,連 DNSSEC 都還沒發明),由於 DNS 的不可靠(存在「域名欺騙」和「域名劫持」),你看到的網址裡面的域名未必是真實滴!
所以,HTTPS 協議必須有某種機制來確保「真實性」的需求(至於如何確保,後面會細聊)。
9、HTTPS和HTTP的區別
超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站伺服器之間傳遞信息,HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站伺服器之間的傳輸報文,就可以直接讀懂其中的信息,因此HTTP協議不適合傳輸一些敏感信息,比如信用卡號、密碼等。
為了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議HTTPS。
為了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通信加密。
一般來說,HTTPS和HTTP的區別主要為以下四點:
(1)、https協議需要到ca申請證書,一般免費證書很少,需要交費。
(2)、http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
(3)、http和https使用的是完全不同的連接方式,用的埠也不一樣,前者是80,後者是443。
(4)、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全(具體可查看馬海祥博客《HTTP與HTTPS的區別》的相關介紹)。
10、HTTPS和HTTP的性能比較
再來說最後一個需求——性能。
本來簡單的http協議,一個get一個response,由於https要還密鑰和確認加密演算法的需要,單握手就需要6、7個往返,任何應用中,過多的round trip肯定影響性能,接下來才是具體的http協議,每一次響應或者請求,都要求客戶端和服務端對會話的內容做加密/解密。
盡管對稱加密/解密效率比較高,可是仍然要消耗過多的CPU,為此有專門的SSL晶元,如果CPU信能比較低的話,肯定會降低性能,從而不能serve更多的請求,加密後數據量的影響,所以,才會出現那麼多的安全認證提示(具體可查看馬海祥博客《HTTPS對網站性能優化的影響》的相關介紹)。
一般來說,引入HTTPS之後,不能導致性能變得太差,否則的話,誰還願意用?
為了確保性能,SSL 的設計者至少要考慮如下幾點:
(1)、如何選擇加密演算法(「對稱」or「非對稱」)?
(2)、如何兼顧 HTTP 採用的「短連接」TCP 方式?
SSL 是在1995年之前開始設計的,那時候的 HTTP 版本還是 1.0,默認使用的是「短連接」的 TCP 方式——默認不啟用 Keep-Alive。
HTTPS的關鍵性能影響是CPU和往返,如果CPU很強的話,性能可能就是有人講的80%;如果cpu是瓶頸的話,有人講原來可以server330-500個請求每秒,現在只有30-50%,因此在使用https請求數據的時候要注意看看你的項目裡面是否真的需要。
⑶ 求教架設web伺服器如何做安全防護
第一步:選擇系統平台
1. 這里推薦 Windows Server 2003/32位,原因:該版操作系統成熟可靠,可用軟體豐富,能支持超大內存;
2. 安裝操作系統時,請不要安裝網上下載的Ghost版或精簡版,不能安裝有病毒的系統,否則可能前功盡棄。
第二步:部署所需環境
1. 安裝操作系統後,順便安裝好IIS和FTP,方便建立WEB和FTP用。(如果沒有安裝IIS,可以下載IIS組件自行安裝);
2. 如果需要ASP環境,請開啟ASP運行條件;
3. 如果需要SQL Server資料庫,請安裝對應軟體,建議SQL Server 2005,根據自己的系統要求進行選擇。
4. 如果需要.Net環境,請下載對應的.Net安裝包版本安裝。
5. 安裝其他軟體,如入侵防護系統,殺毒軟體等。
第三步:配置所需安全
1. 所需環境部署後,需要設置系統安全,包括磁碟許可權和資料庫,以及其他組件,這里2. 設置磁碟許可權,包括系統盤和其他磁碟;
3. 變更系統賬戶,如將 Administrator 重命名,盡可能設置復雜密碼。
第四步:配置管理工具
1. 安裝主機管理系統,建議安裝免費,方便開設站點,並可方便備份和恢復的主機管理系統;
2. 用主機系統開設站點,綁定域名,部署網頁文件,測試能否正常訪問;
3. 安裝其他主機管理軟體,比如一些被控端,但注意做好許可權設置工作。
第五步:部署運營監控
1. 部署遠程監控系統,如:代維系統,方便統一監控伺服器狀況,如IO、CPU、內存、帶寬等使用情況,及時預警;
2. 查殺網頁木馬,找出原來存在的網頁木馬文件,可以用:雲查殺系統或入侵防護系統掃描,發現木馬文件妥善處理;
3. 入侵防護系統可以實時監控網頁木馬、畸形文件、遠程登錄、用戶提權、防注入、進程限制、防篡改限制、非法內容生成控制等,推薦;
4. 如果數據重要,建議安裝安全套裝,提高安全系數。
第六步:注意事項
1. 不建議開啟伺服器上軟體的自動升級功能,比如殺毒軟體/輸入法等,因為很可能破壞系統的安全體系;
2. 不要在伺服器安裝不必要的軟體,比如QQ,以及有些殺毒軟體,特別消耗資源;
3. 不要輕易在伺服器上打開未知軟體和客戶網站,否則可能造成中毒;
4. 其他影響伺服器安全的事項。