1. 程式人生 > >伺服器運維之安全配置1

伺服器運維之安全配置1

1.編譯安裝mod_security 
mod_security是一個集入侵檢測和防禦引擎功能的開源web應用安全程式(或web應用程式防火牆)它以Apache Web伺服器的模組方式執行, 目標是增強web應用程式的安全性, 防止web應用程式受到已知或未知的攻擊。

# cd /usr/local/src 
# wget http://www.modsecurity.org/download/modsecurity-apache_2.1.3.tar.gz

# tar -zxvf modsecurity-apache_2.1.3.tar.gz # cd modsecurity-apache_2.1.3/apache2

# cat /usr/local/apache2/conf/httpd.conf | grep "ServerRoot" | grep -v "#"

ServerRoot "/usr/local/apache2" # 
#vi Makefile 
top_dir = /usr/local/apache2

# make # make install 
vi /usr/local/apache2/conf/httpd.conf

載入下列模組

LoadModule unique_id_module modules/mod_unique_id.so

LoadModule security2_module
modules/mod_security2.so
新增一行:
Include conf/modsecurity/*.conf
儲存。
cd/usr/local/src/modsecurity-
apache_2.1.3/rules
#mkdir
/usr/local/apache2/conf/modsecurity
#cp*.conf
/usr/local/apache2/conf/modsecurity/customize
modsecurity_crs_10_config.conf.
Additionally you may want to edit
modsecurity_crs_30_http_policy.conf
which enforces an application specific
HTTP protocol usage.
重啟apache
2,iptables規則
vi/usr/local/sbin/fw.sh
將以下指令碼命令貼上到 fw.sh 檔案中。
#!/bin/bash
#Stop iptables service first
service iptables stop
#Load FTP Kernel modules
Ishin/modnrohe in conntrack ftn

/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
#Inital chains default policy
/sbin/iptables-F-t filter
/sbin/iptables-P INPUT DROP
/sbin/iptables-P OUTPUT ACCEPT
#Enable Native Network Transfer
/sbin/iptables-A INPUT-i lo -j ACCEPT
#Accept Established Connections
/sbin/iptables-A INPUT-m state--state
ESTABLISHED,RELATED-j ACCEPT
#ICMP Control
/sbin/iptables-A INPUT-p icmp-m limit--limit 1/s-limit-burst 10-i ACCEPT#

limit 1/s--limit-burst 10-jACCEPT#
WWW Service
/sbin/iptables-A INPUT-p tcp--dport 80-jACCEPT
#FTP Service
/sbin/iptables-A INPUT-p tcp--dport 2121-j ACCEPT
#SSH Service
/sbin/iptables-A INPUT-p tcp--dport
59825-jACCEPT
#Anti DDOS
/sbin/iptables-I INPUT-p tcp--syn-m ttl--ttl-eq 117-j DROP
/sbin/iptables-I INPUT-p tcp--syn-m
length-length:40-j DROP

#chmod 755/usr/local/sbin/fw.sh
#echo'/usr/local/sbin/fw.sh'>>
/etc/rc.d/rc.local
#/usr/local/sbin/fw.sh
3、apachet和 php 優化設定
對於訪問量稍大的站點,Apache的這些預設配置是無法滿足需求的,我們仍需調整Apache的一些引數,使Apache能夠在大訪問量環境下發揮出更好的效能。以下我們對Apache配置檔案httpd.conf中對效能影響較大的引數進行一些說明。
(1)Timeout 該引數指定Apache在接收請求或傳送所請求內容之前的最長等待時間(秒),若超過該時間Apache則放棄處理該請求,並釋放連線。該引數預設值為120,推薦設定為60,對於訪問量較大的網站可以設定為30。

(2)KeepAlive 該引數控制Apache是否允許在一個連線中有多個請求,預設開啟。但對於大多數論壇型別站點來說,通常設定為off以關閉該支援。
(3)MPM-prefork.c 在預設情況下Apache使用Prefork(程序)工作模式,可以說這部分的引數設定是對Apache效能影響的核心和關鍵。

檢視你的apache執行的模式:
#/usr/local/apache2/bin/httpd-1
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c

然後使用者可以在配置文件中找到以下配置段:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 15
MaxRequestsPerChild 0
這就是控制Apache程序工作的配置段,為了更好的理解上述配置中的各項引數,下面讓我們先了解一下Apache是如何控制程序工作的。我們知道,在Unix系統中,很多服務(Service)的守護程序(Daemon)在啟動時會建立一個程序以準備應答可能的連線請求,服務即進入了埠監聽狀態,當一個來自客戶端(Client)的請求被髮送至服務所監聽的埠時,該服務程序即會處理該請求,在處理過程中,該程序處於獨佔狀態,也就是說如果此時有其他請求到達,這些請求只能“排隊”等待當前請求處理完成且服務程序釋放。這樣就會導致越來越多的請求處於佇列等待狀態,實際表現就是該服務處理能力非常低下。Apache 使用Prefork模式很好的解決了這一問題。下面我們來看看Apache實際上是如何高效率工作的。當Apache啟動時,Apache會啟動StartSpareServers個空閒程序同時準備接收處理請求,當多個請求到來時,StarSpareServers進行會越來越少,當空閒程序減少到MinSpareServers個時,Apache為了能夠繼續有充裕的程序處理請求,它會再啟動StartsServers個程序備用,這樣就大大減少了請求佇列等待的可能,使得服務效率提高,這也是為什麼叫做Pre-fork的原因;讓我們繼續跟蹤Apache的工作,我們假設Apache已經啟動了200個程序來處理請求,理論上來說,此時Apache一共有205個程序,而過了一段時間,假設有100個請求都得到了Apache的響應和處理,那麼此時這100個程序就被釋放成為空閒程序,那麼此時Apache有105個空閒程序。而對於服務而言,啟動太多的空閒程序時沒有任何意義的,反而會降低伺服器的整體效能,那麼Apache真的會有105個空閒程序麼?當然不會!實際上Apache隨時在檢查自己,當發現有超過MaxSpareServers個空閒程序時,則會自動停止關閉一些程序,以保證空閒程序不過過多。