apache web 站點安全
想必大家都知到在windows server 2003上可以建web服務器,而且可以實現身份驗證、來源控制以及加密訪問。
其實在linux下也可以實現,下面我會給大家詳細解釋並操作 :使用虛擬機建立web服務器
首先安裝httpd文件
案例1:身份認證
原理:
在很多網站對用戶的訪問權限進行了嚴格的限制,用戶在訪問某些資源時需要給出“用戶名/口令”來確認自己的身份。目前,使用最多的身份認證方法是將用戶名、口令存放在一個數據庫中,當用戶要訪問某些受限制的資源時,要在某一個頁面中輸入用戶名和口令,程序將用戶輸入的用戶名和口令與數據庫存放的“用戶名/口令"相比較,如果輸入正確,則正常使用資源,否則,資源訪問被拒絕。但是,這種身份認證方式有兩個很大的問題,一方面只要用戶有一次身份認證成功,就可以記錄下受限資源的鏈接地址,在下一次訪問時只需輸入該地址,而無需通過身份認證過程就可訪問受限資源;另一方面用戶可以在受限制的資源的超級鏈接處點右鍵,選擇“屬性",就可以查看到受限制資源的鏈接地址,直接訪問該地址,使身份認證不能達到預期的效果。
Apache實現身份認證的基本原理是:當系統管理員啓動身份認證功能後,可以在要限制的目錄中添加一個默認名“.htaccess"的文件。當用戶訪問該路徑下的資源時,系統就會彈出一個對話框,要求用戶輸入“用戶名/口令"。也就是說,它的身份認證功能不是人爲由程序控制,而是由系統直接控制的。這樣就避免了用戶記錄需要認證的資源的超級鏈接,不會下次直接訪問資源。
首先,配置httpd.conf
[root@server1 httpd]# vim /etc/httpd/conf/httpd.conf
在(327行)修改如下所示:
allowoverride all (可以實現身份驗證)
來到站點的主目錄下(站點主目錄在/var/www/html目錄下)
[root@server1 Server]# cd /var/www/html/
[root@server1 html]# echo "welcome" >index.html(建個網頁)
再創建說明文件 .htaccess
進入/var/www/目錄下創建.htpasswd並添加賬戶:
查看
啓動apache服務,並驗證:
[root@server1 www]# service httpd start
打開瀏覽器
案例2:來源控制
只需要在/etc/httpd/conf/httpd.conf(332,333行)加以修改:
案列3:加密訪問 https (http+ssl)
HTTPS(全稱:Hypertext 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開發並內置於其瀏覽器中,用於對數據進行壓縮和解壓操作,並返回網絡上傳送回的結果。HTTPS實際上應用了Netscape的安全套接層(SSL)作爲HTTP應用層的子層。(HTTPS使用端口443,而不是像HTTP那樣使用端口80來和TCP/IP進行通信。)SSL使用40 位關鍵字作爲RC4流加密算法,這對於商業信息的加密是合適的。HTTPS和SSL支持使用X.509數字認證,如果需要的話用戶可以確認發送者是誰。
也就是說它的主要作用可以分爲兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。
HTTPS和HTTP的區別
一、https協議需要到ca申請證書,一般免費證書很少,需要交費。
二、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。
四、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
數字摘要
這個非常簡單,我們在下載文件的時候經常會看到有的下載站點也提供下載文件的“數字摘要“,供下載者驗證下載後的文件是否完整,或者說是否和服務器上的文件”一模一樣“。其實,數字摘要就是採用單項Hash函數將需要加密的明文“摘要”成一串固定長度(128位)的密文,這一串密文又稱爲數字指紋,它有固定的長度,而且不同的明文摘要成密文,其結果總是不同的,兒同樣的明文其摘要必定一致。 因此,“數字摘要“叫”數字指紋“可能會更貼切一些。“數字摘要“是https能確保數據完整性和防篡改的根本原因。
拓撲圖
一、實現CA
第一步編輯openssl.cnf文件
[root@server1 ~]#vim /etc/pki/tls/openssl.cnf
修改(88,90行)如圖:
修改(134,147行)默認值如圖:
創建需要的目錄和文件
[root@server1 CA]# mkdir certs newcerts cr1
[root@server1 CA]# touch index.txt serial
[root@server1 CA]# echo "01" >serial(初始值爲01)
第二步:先建私鑰文件
[root@server1 CA]#openssl genrsa 1024 >private/cakey.pem
[root@server1 CA]# chmod 600 private/cakey.pem(修改權限)
生成證書:
[root@server1 CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem(給自己頒發證書)
二、搭建web服務器
第一步:結合ssl安裝mod_ssl模塊:
第二步:申請證書
創建並進入certs目錄:
[root@server1 ~]# mkdir -pv /etc/httpd/certs
在目錄下建httpd.key放私鑰文件:
[root@server1 certs]# openssl genrsa 1024 >httpd.key
[root@server1 certs]# chmod600 httpd.key
建httpd.req放請求文件:
建httpd.cert放證書文件:
現在查看數據庫文件(本來爲空的,發現現在已添加)
[root@server1 certs]# cd /etc/pki/CA/
[root@server1 CA]# cat index.txt
V140824012802Z01unknown/C=CN/ST=BEIJING/O=abc/OU=tec/CN=www.abc.com
三、捆綁
編輯/etc/httpd/conf.d/ssl.conf文件(112、119行)如圖:
不使用明文訪問的話需要編輯 vim /etc/httpd/conf/httpd.conf
在(134行)將80端口禁掉
配置完成;接着需要在瀏覽器上修改
訪問服務器,會出現以下情況:
我們需要安裝證書
接着就可以訪問了