• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用SSL構建一個安全的Apache

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    byquack 參考資料:InstallingandSecuringtheApacheWebserverwithSSL 一、簡介 這篇文章要說明的是如何將阿帕奇與SSL(SecureSocketLayer)結合起來安裝 配置。眾所周知,在網絡上以明文傳遞敏感信息是相當不安全的,因此SSL提供 了一種加密手段,在底層上為上

    by quack
    參考資料:Installing and Securing the Apache Webserver with SSL

    一、簡介  

    這篇文章要說明的是如何將阿帕奇與SSL(Secure Socket Layer)結合起來安裝  
    配置。眾所周知,在網絡上以明文傳遞敏感信息是相當不安全的,因此SSL提供  
    了一種加密手段,在底層上為上層協議提供服務和加密方案,因此當用戶在以  
    HTTP協議傳輸數據時,窺探者將難以獲取數據的信息。當然加密只是在傳輸過程  
    中的,對用戶是完全透明的。   

    那么就開始吧……  

    二、準備工作  

    如果你的系統是從頭裝起的話,建議你留出一個叫/chroot的分區用來運行Apache。  
    至于這個分區的大小,取決于你自已,一般來說,一個普通的網站有40M也就夠了。  
    但你的系統如果早就運行了Apache,你可以另外開辟一個分區,或者選擇不用獨立  
    分區來安裝,僅僅在根下面開一個目錄。  

    另外我假定你的系統已經通過了一定的安全檢測——在安裝Apache之前(如果有其它  
    漏洞存在的話,你認為運行在其上的Apache會怎樣,所謂覆巢之下,焉有完卵,檢  
    測至少要包括(但不僅限于)——移除不安全的SUID程序、升級某些守護進程,去掉不  
    必要的服務。還假定你是的WEB SERVER是運行TCP/IP而且有自己的地址。  

    三、平臺  

    以下測試都在下列平臺下通過:  

    1、Slackware 4.x distribution using gcc 2.7.2.3 and Perl v5.005_02  

    2、Solaris 7 on Sparc using gcc v2.8.1 and Perl v5.005_03  

    四、獲取所需要的軟件  

    因為阿帕奇并沒有在她的包里自己SSL,因此我們必須先下載到這些加密網頁所必需的  
    部份:  

    1、Apache Web Server - http://www.apache.org/dist/  

    不必多說,我們當然需要獲得這個web server,現在的版本是1.3.11,阿帕奇是現在世界  
    上使用最廣泛的web server。  

    2、mod_ssl - http://www.modssl.org  

    這是一個為Apache1.3.x web server提供強力加密的的軟件模塊,它使用的是SSL v2和v3  
    以及TLS(Transport Layer Security)v1 協議。該軟件包是在BSD的license下開發的,在  
    非商業的情況下,你可以自由地使用它,要判斷該使用哪一個版本的mod_ssl很簡單,它的  
    版本號是<mod_ssl-version>-<apache-version>格式的,也就是說,你如果用的是1.3.11  
    的Apache,那么就該用2.50-1.3.11的mod_ssl。  

    3、mod_perl - http://perl.apache.org/dist/  

    4、Open SSL - http://www.openssl.org  

    這一軟件包提供了SSL v2/v3(Secure Sockets Layer)及TLS v1(Transport Layer Security)  
    協議的加密保護。  

    5、RSAref - 用搜索引擎查找一下"rsaref20.tar.Z"應該就能找到了  

    我們將把這些程序安裝于/usr/local目錄下  

    增加功能模塊可以給阿帕奇更強大的功能,如果你需要更多的模塊的話,自己去獲  
    得它并且加載,比如mod_php這一模塊也是現在流行的,可以使阿帕奇提供php腳本  
    支持……  

    五、軟件包的安裝  

    在實際安裝前我們要決定我們將把web server安裝在什么環境下,對于一個對  
    安全有相當高要求的人來說,可以將服務器和軟件安裝于chroot環境,chroot  
    改變root 目錄并且僅在這一目錄中執行程序,這提供了一個內建的小環境,即  
    使入侵者已經通過cgi程序或者其它辦法通過80端口獲得了系統的進入權限,它  
    也只能夠在這一受限的環境中活動,從安全角度考量,這當然是最好的,但對  
    系統管理員來說,這樣安裝相對麻煩一些,還必須把一些必要的庫,perl以及  
    相關工具也搬到chroot中,所以——你自己決定吧,這里我們介紹的是在chroot  
    下安裝。  

    展開這些軟件包:  

    #gzip -d -c apache_1.3.11.tar.gz | tar xvf -  
    #gzip -d -c mod_ssl-2.5.0-1.3.11.tar.gz | tar xvf -  
    #gzip -d -c openssl-0.9.4.tar.gz | tar xvf -  
    #gzip -d -c mod_perl-1.21.tar.gz | tar xvf -  


    展開并且編譯rsaref  

    #mkdir rsaref  
    #cd rsaref  
    #gzip -d -c ../rsaref20.tar.Z | tar xvf -  
    #tar xvf rsaref.tar  
    #cp -rp install/unix temp  
    #cd temp  
    #make  
    #mv rsaref.a librsaref.a  
    #cd ../../  


    編譯OpenSSL  

    #cd openssl-0.9.4  
    #perl util/perlpath.pl /usr/bin/perl (Path to Perl)  
    #./config -L`pwd`/../rsaref/temp/  
    #make  
    #make test  
    #cd ..  


    將mod_perl加到Apache的編譯選項里  

    #cd mod_perl-1.21  
    #perl Makefile.PL APACHE_PREFIX=/usr/local/apache \  

    APACHE_SRC=../apache_1.3.11/src \  

    USE_APACI=1  

    你會得到下面的提示:  

    Configure mod_perl with ../apache_1.3.11/src ? [y]  

    直接按enter就是默認的yes  

    然后Makefile會問你是否建立httpd,可以用n選擇不。  

    #make  
    #make install  
    #cd ..  

    將mod_ssl加到Apache中  

    #cd mod_ssl-2.5.0-1.3.11  
    #./configure --with-apache=../apache_1.3.11 \  

    --prefix=/usr/local/apache \  

    --with-ssl=../openssl-0.9.4 \  

    --with-rsa=../rsaref/temp \  

    --activate-module=src/modules/perl/libperl.a  
    #cd ..  


    編譯Apache:  

    #cd apache_1.3.11  

    在編譯以前我們可以再做一件事——編輯包含http server版本號的文件,使想得到它的入  
    侵者摸不著腦袋長哪兒  

    #<your favorite text editor> src/include/httpd.h  

    尋找下面的行 (approx. 454)并且改變server的名字及版本號——可以隨便用你想改成的東西。  

    define SERVER_BASEVERSION "Apache/1.3.11"  

    現在你可以編譯阿帕奇了  

    #make  

    現在你可以生成一個CA了(actual certificate).  

    #make certificate  

    按照該授權書的安裝介紹做。  

    #make install  

    這將會把阿帕奇裝在/usr/local/apache。  

    測試web server (還沒裝SSL)是否運行正常 ----調用web server:  

    /usr/local/apache/bin/apachectl start  

    當WEB服務器運行起來后,你可以用 lynx或者任意什么瀏覽器連接你的80端口,如果能看到apache  
    的歡迎頁,就OK了。  

    停止server:  

    /usr/local/apache/bin/apachectl stop  

    測試web server (同時起SSL) - 調用帶SSL的WEB服務器  

    /usr/local/apache/bin/apachectl startssl  

    服務器運行時你用Netscape或者其它支持SSL的瀏覽器來看https://your.ip.here,看到歡迎頁了么?  

    要停止SERVER:  

    /usr/local/apache/bin/apachectl stop  


    六、阿帕奇的配置  

    現在我們可以來看看阿帕奇的配置文件了——需要記住的是如果你對它做了更改,  
    在未重新啟動httpd守護進程前,它是不會發生作用的。好,現在我們可以進目錄  
    /usr/local/apache/conf看看了。  

    httpd.conf -  
    這是阿帕奇的主要配置文件,你可以在這里設定服務器啟動時的基本環境,比如服務  
    器的啟動方式、端口號、允許的最多連接數等等,這一文件的注釋非常詳細,要看明  
    白應該沒什么問題。  

    access.conf -  

    這一文件是設定系統中的存取方式和環境的,但現在已經可以在httpd.conf中設定了,  
    所以推薦你別動它,放空好了。  

    srm.conf -  

    這家伙主要做的是資源上的設定,你也可以放空,僅僅設定httpd.conf中的相關項。  

    現在重啟web server來使改動生效:  

    #/usr/local/apache/bin/apachectl restart  


    七、將阿帕奇設定在chroot環境下  

    現在我們開始把剛才建立的東西移到chroot環境下——包括阿帕奇服務器以及所有需  
    要的庫文件。當然如前面所說的,這部份是可選的,如果你怕麻煩的話就算了,但轉  
    移后可以對你的web server多一個可靠的保護。  

    建立/chroot目錄  

    #mkdir /chroot  

    建立一些必需的子目錄  

    #mkdir /chroot/dev  
    #mkdir /chroot/lib  
    #mkdir /chroot/etc  
    #mkdir /chroot/bin  
    #mkdir /chroot/usr  
    #mkdir /chroot/usr/local  


    在我們的chroot建立/dev/null  

    #mknod -m 666 /chroot/dev/null c 1 3  

    將阿帕奇拷貝到/chroot目錄中  

    #cp -rp /usr/local/apache/ /chroot/usr/local  

    拷貝必需的二進制文件  

    #cp /bin/sh /chroot/bin  

    確定哪些庫是必需的——這取決于你編譯時內建了哪些模塊  

    #ldd /usr/local/apache/bin/httpd  

    將需要的庫拷貝到chroot目錄  

    #cp /lib/libm.* /chroot/lib/  
    #cp /lib/libgdbm.* /chroot/lib  
    #cp /lib/libdb.* /chroot/lib  
    #cp /lib/libdl.* /chroot/lib  
    #cp /lib/libc.* /chroot/lib  

    拷貝網絡連接所需要的函數庫  

    #cp /lib/libnss* /chroot/lib  

    拷貝必需的/etc下的文件到chroot  

    #cp /etc/passwd /chroot/etc  
    #cp /etc/shadow /chroot/etc  
    #cp /etc/group /chroot/etc  
    #cp /etc/resolv.conf /chroot/etc  
    #cp /etc/hosts /chroot/etc  
    #cp /etc/localtime /chroot/etc  
    #cp /etc/localtime /chroot/etc  
    #cp /etc/ld.so.* /chroot/etc  

    測試chroot下的阿帕奇  

    #chroot /chroot /usr/local/apache/bin/apachectl start  


    現在再  

    #chroot /chroot /usr/local/apache/bin/apachectl stop  

    服務器就停下來了,如果不行的話,再次確認是否所有需要的庫都拷到了/chroot/lib  
    下了,如果仍然無幫助的話,或者可以以strace方式運行httpd,它的輸出可能會有一  
    些有價值的內容可以幫助確定是丟失了哪些庫或者二進制文件。  

    然后我們可以做一些小工作了:默認情況下阿帕奇是以nobody用戶及用戶組運行的,不  
    要更改它。  

    在passwd\shadow\group等文件中包含了大量系統信息,所以你可以替換掉它們。  

    建立一個用戶名為httpd,UID為80  
    建立一個組名為httpd,GID為80  

    用下面的命令來將/chroot下的passwd,shadow,group替換掉  

    #echo "httpd:80:100:,,,:/home/httpd:/bin/false" > /chroot/etc/passwd  
    #echo "httpd:*LK*:11010:0:99999:7:::" > /chroot/etc/shadow  
    #echo "httpd:80:" > /chroot/etc/group  

    設定好文件的許可權限  

    #chmod 600 /chroot/etc/passwd shadow group  

    現在我們可以編輯apache的配置文件并進行需要的配置,文件在  
    /chroot/usr/local/apache/conf/httpd.conf,尋找到包含apache運行用戶  
    及組的信息的行并改變它(approx. line 263),當然是改成httpd/httpd。  

    一切運行正常后我們可以刪除前面的那些服務器安裝的東西——/usr/local下的,  
    包括服務器以及那些內建的模塊等等。  

    #rm -rf /usr/local/apache  
    #rm -rf /usr/local/mod_ssl-2.5.0-1.3.11/  
    #rm -rf /usr/local/mod_perl-1.21/  
    #rm -rf /usr/local/openssl-0.9.4/  
    #rm -rf /usr/local/rsaref  

    如果以后還想改變它們的配置,增加新的模塊,那么將原先的apache留下來也行。  

    將阿帕奇設定為在開機時自啟動,修改/etc/rc.d/rc.local并且加入以下行:  

    echo "Starting Apache-SSL"  
    /usr/sbin/chroot/apache/bin/apachectl startssl  

    如果一切都運行正常的話,那么恭喜你,你已經成功地運行了帶SSL支持的阿帕奇  
    了,這會使你的web server更加安全,如果你希望加入更多的模塊實現其它功能的  
    話,自己動手吧,最后要說明的是:在chroot環境中最好只有必需的一些二進制程  
    序,而SUID程序還是干掉比較好些。

     stevenyi 回復于:2003-01-16 17:49:36
    good

     shenvo 回復于:2003-01-16 18:05:42
    在bsd4.7下用ports安裝ssl+apache1.3.27,執行/usr/local/sbin/apachectl startssl 后,用https無法瀏覽,可以用http://localhosts:443/瀏覽到,是什么原因?

     南非蜘蛛 回復于:2003-01-16 18:10:01
    [quote:ed3385006a="shenvo"]在bsd4.7下用ports安裝ssl+apache1.3.27,執行/usr/local/sbin/apachectl startssl 后,用https無法瀏覽,可以用http://localhosts:443/瀏覽到,是什么原因?[/quote:ed3385006a]
    freebsd不是有一個裝好的ssl的apache的ports嗎?直接裝那個

     shenvo 回復于:2003-01-16 18:20:45
    就是用的那個,搞不定

     南非蜘蛛 回復于:2003-01-17 12:52:21
    [quote:b8a2dd4c12="shenvo"]就是用的那個,搞不定[/quote:b8a2dd4c12]
    給的信息太少

     shuqing_zhou 回復于:2003-01-20 11:19:05
    南非蜘蛛,前兩天我在網上看到了你的那篇用SSL構建一個安全的Apache的文章,正好我有這方面的工作需要,就按照你的文章一步步的作了。而且中間沒有出現什么錯誤。但是最后在啟動ssl的時候,提示apachectl 沒有這個參數,他只有start,stop,restart等。不知道是什么原因。而且我看到在conf文件夾中已經有sss_crt,ssl_key等目錄,但是奇怪的是里面沒有內容。對了,我是在RedHat 7.3下作的。  
            希望您能在百忙之中幫幫忙,好嗎?
            萬分感謝??!

     xiaohua 回復于:2003-07-19 23:54:56
    apache 2 + ssl 怎么搞???問了很多人了     那位能幫忙?

     郝君 回復于:2003-08-19 02:12:40
    好dongdong,艘藏

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>