注:以下所有操作均在CentOS 6.5 x86_64位系統下完成。
#准備工作#
在安裝Nginx之前,請確保已經使用yum安裝了各基礎組件,並且配置了www用戶和用戶組,具體見《CentOS安裝Nginx-1.6.2+安全配置》。
另外還需要先安裝以下幾個組件:
1、安裝Sqllite:
# wget http://www.sqlite.org/2014/sqlite-autoconf-3080704.tar.gz # tar zxf sqlite-autoconf-3080704.tar.gz # cd sqlite-autoconf-3080704 # ./configure --prefix=/usr/local/sqlite-3.8.7.4 # make && make install
2、安裝apr:
# wget http://archive.apache.org/dist/apr/apr-1.5.2.tar.gz # tar zxf apr-1.5.2.tar.gz # cd apr-1.5.2 # ./configure --prefix=/usr/local/apr-1.5.2 # make && make install
3、安裝apr-util:
# wget http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz # tar zxf apr-util-1.5.4.tar.gz # cd apr-util-1.5.4 # ./configure --prefix=/usr/local/apr-util-1.5.4 --with-apr=/usr/local/apr-1.5.2 # make && make install
#Apache的安裝#
開始下載Apache並進行編譯安裝:
# cd /usr/local/src # wget http://archive.apache.org/dist/httpd/httpd-2.4.25.tar.gz # cd httpd-2.4.25 # ./configure --prefix=/usr/local/apache-2.4.25 --with-apr=/usr/local/apr-1.5.2 --with-apr-util=/usr/local/apr-util-1.5.4 --enable-dav --enable-so --enable-maintainer-mod --enable-rewrite --with-sqlite=/usr/local/sqlite-3.8.7.4 # make && make install # cp /usr/local/apache-2.4.25/conf/httpd.conf /usr/local/apache-2.4.25/conf/httpd.conf.default # ln -s /usr/local/apache-2.4.25/ /usr/local/apache
接着修改http.conf配置文件:
# vim /usr/local/apache-2.4.25/conf/httpd.conf Listen 8888 User www Group www LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule rewrite_module modules/mod_rewrite.so
注:這里我們配置其監聽端口是8888,並且開啟DAV模塊和Rewrite模塊。
之后保存文件並開啟apache服務:
# /usr/local/apache/bin/apachectl start
注意新版本的Apache已經禁止以root用戶啟動Apache,啟動后如下所示:
# ps aux | grep httpd www 10087 0.0 0.5 221664 2960 ? Sl 15:41 0:00 /usr/local/apache-2.4.25/bin/httpd -k start www 10088 0.0 0.5 221664 2964 ? Sl 15:41 0:00 /usr/local/apache-2.4.25/bin/httpd -k start www 10089 0.0 0.7 287200 3528 ? Sl 15:41 0:00 /usr/local/apache-2.4.25/bin/httpd -k start www 10171 0.0 0.5 221664 2968 ? Sl 15:41 0:00 /usr/local/apache-2.4.25/bin/httpd -k start root 12966 0.0 0.7 98588 3872 ? Ss 2014 0:15 /usr/local/apache-2.4.25/bin/httpd -k start root 10331 0.0 0.1 103252 836 pts/0 S+ 15:49 0:00 grep httpd
注:這里有個httpd進程是root的,這是正常的,因為啟動后root才會fork出ww權限的進程,用戶的請求由www權限進程處理。
這個時候打開瀏覽器訪問地址http://youripaddress:8888/應該可以看到:
至此,Apache已經安裝完畢並且已經啟動成功。
#Apache的安全配置#
1、Apache默認是允許目錄瀏覽的,如果目錄下沒有索引文件則會出現目錄瀏覽漏洞,所以這里需要關閉目錄瀏覽。這里直接選擇全局關閉:
# vim /usr/local/apache/conf/httpd.conf <Directory "/usr/local/apache-2.4.25/htdocs"> Options Indexes FollowSymLinks Require all granted </Directory>
注:原來的Indexes改成-Indexes,也可以選擇在.htacess文件中部分禁止該功能,或者直接把Indexes這行刪除。
2、Apache默認輸出的banner會泄漏關鍵信息,比如服務器OS類型、Apache版本等。可以禁止起輸出這些信息:
# vim /usr/local/apache/conf/httpd.conf
ServerSignature Off
ServerTokens Prod
注:直接在文件末尾添加內容即可。
3、開啟訪問日志並正確配置其路徑(默認已開啟):
# vim /usr/local/apache/conf/httpd.conf <IfModule log_config_module> CustomLog "logs/access_log" common </IfModule>
4、確保目錄安全,由於是以www用戶啟動Apache的,所以可以設置Web目錄和文件的屬主為root用戶,Web目錄統一設置權限為755,Web文件權限統一設置為644(cgi文件若需執行可設置為755),只有上傳目錄需要可讀寫的權限設置為777。
# chown -R root:root /data/www/ # chmod 755 /data/www/ # chmod -R 777 /data/www/upload
另外,為了防止黑客上傳可執行腳本到777目錄下,必須設置該目錄為不能執行或訪問腳本,比如:
# vim /usr/local/apache/conf/httpd.conf <Directory "/usr/local/apache/htdocs/yourpath"> Options None AllowOverride None Order deny,allow Deny from all <FilesMatch "\.(jpg|jpeg|gif|png)$"> Order deny,allow Allow from all </FilesMatch> </Directory>
5、對管理目錄設置訪問IP名單限制,比如:
# vim /usr/local/apache/conf/httpd.conf <Directory "/usr/local/apache/htdocs/admin"> Order deny,allow Deny from all Allow from pair 11.12.23.0/24 </Directory>
6、去掉UserDir功能(默認已關閉)。