Linux網(wǎng)站架構系列之a(chǎn)pache----調(diào)優(yōu)篇
其次是安全考慮,這樣會允許用戶自己修改服務器的配置,這可能會導致某些意想不到的修改,所以請認真考慮是否應當給予用戶這樣的特權。
1、禁用AllowOverride選項
我們通過修改apache主配置文件中的
Options none
AllowOverride None #禁止該選項,防止用戶重復載入
Require all granted
通過該設置加快了服務器響應速度,因為它不再讓每個請求去尋求每個目錄的訪問控制文件(.htaccess)
2、關閉.htaccess文件使用
默認在Unix平臺下能夠使用.htaccess來對目錄權限進行規(guī)則定義,但是這是不安全的,建議關閉,默認的選項:
AccessFileName .htaccess
這里我們將它關閉注釋掉
#AccessFileName .htaccess
全部目錄權限定義使用中的定義,不使用.htaccess進行定義。
十三、關閉自帶CGI功能
生產(chǎn)環(huán)境中,一般我們不使用apache自帶的cgi的功能,如果使用的話,可以用mod_perl模塊來替代。因此我們這里需要將apache主配置文件中有關cgi的內(nèi)容刪除掉。
刪除部分:
ScriptAlias /cgi-bin/ /usr/local/apache2.4.6/cgi-bin/
AllowOverride None
Options None
Require all granted
十四、禁止PHP解析指定站點的目錄
企業(yè)的站點有時會提供用戶進行上傳操作,而用戶上傳文件的存放目錄,我們是不能給php的解析權限的,否則會對apache服務和系統(tǒng)造成危害。
十五、apache的安全模塊
我們需要對apache站點增加一些擴展的安全模塊,如:mod_evasive20防DDOS、mod_limitipconn(針對單站點)配置、mod_security2防SQL注入等等之類的工具。
另外,下面是推薦給大家的幾個工具。
1、makejail
它是一個自動把建立jail所需要的程序放到jail內(nèi)的軟件,使用python編寫,他有debian和openbsd的版本。
2、mod-security
它是apche的一個模塊,它不僅可以實現(xiàn)過濾請求和日志審計等功能,而且可以防止SQLInjection和跨站腳本攻擊等是個很不錯的安全模塊。
十六、使用tmpfs文件系統(tǒng)替代頻繁訪問的目錄
tmpfs是一種基于內(nèi)存的文件系統(tǒng)。它最主要的兩個優(yōu)勢就是動態(tài)文件系統(tǒng)大小和速度快。因為典型的tmpfs文件系統(tǒng)會完全駐留在RAM中,讀寫幾乎可以是瞬間的。即使用了一些交換分區(qū),性能仍然是卓越的。因此對于那些頻繁訪問的目錄,建議使用tmpfs文件系統(tǒng)進行替代。
十七、優(yōu)化系統(tǒng)內(nèi)核參數(shù)
對系統(tǒng)內(nèi)核的優(yōu)化參數(shù),我們在系統(tǒng)的基礎優(yōu)化這邊博文已經(jīng)講過了。系統(tǒng)內(nèi)核優(yōu)化最主要的目的就是減少TIME-WAIT的TCP連接數(shù)。
由于在基礎優(yōu)化篇我們已經(jīng)對apache進行了內(nèi)核參數(shù)的優(yōu)化,因此這里我就不再操作了。這里我將為大家對優(yōu)化的參數(shù)進行講解。
net.ipv4.tcp_fin_timeout #表示如果套接字由本端要求關閉,這個參數(shù)決定了它保持在FIN-WAIT-2狀態(tài)的時間,默認值是60秒。
net.ipv4.tcp_tw_reuse #表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認值為0,表示關閉。該參數(shù)對應系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_tw_reuse 0
net.ipv4.tcp_tw_recycle #表示開啟TCP連接中TIME-WAIT sockets的快速回收該參數(shù)對應系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_tw_recycle提示:reuse和recycle兩個參數(shù)為了防止生產(chǎn)環(huán)境下web,squid等time_wait過多設置的。
net.ipv4.tcp_syncookies #表示開啟SYN Cookies功能。當出現(xiàn)SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,Centos5系列默認值為1,表示開啟。因此這個參數(shù)也可以不添加。該參數(shù)對應系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_syncookies,默認為1
net.ipv4.tcp_keepalive_time #表示當keepalive起用的時候,TCP發(fā)送keepalive消息的頻度。缺省是2小時,改為10分鐘。該參數(shù)對應系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_keepalive_time,默認為7200秒。
net.ipv4.ip_local_port_range #選項用來設定允許系統(tǒng)打開的端口范圍。即用于向外連接的端口范圍。該參數(shù)對應系統(tǒng)路徑為:/proc/sys/net/ipv4/ip_local_port_range 32768 61000
net.ipv4.tcp_max_syn_backlog #表示SYN隊列的長度,默認為1024,加大隊列長度為8192,可以容納更多等待連接的網(wǎng)絡連接數(shù)。選項為服務器端用來記錄那些尚未收到客戶端確認信息的連接請求的最大值。
該參數(shù)對應系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_max_syn_backlog
net.ipv4.tcp_max_tw_buckets #表示系統(tǒng)同時保持TIME_WAIT套接字的最大數(shù)量,如果超過這個數(shù)字,TIME_WAIT套接字將立刻被清楚并打印警告信息。默認為180000,對于Apache、Nginx等服務器來說可以調(diào)整低一點,如改為5000-30000,不同業(yè)務的服務器也可以給大一旦,比如lvs,squid。上幾行的參數(shù)可以很好地減少TIME_WAIT套接字數(shù)量,但是對于Squid效果卻不大。此項參數(shù)可以控制TIME_WAIT套接字的最大數(shù)量,避免Squid服務器被大量的TIME_WAIT套接字拖死。此參數(shù)對應系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_max_tw_buckets
net.ipv4.tcp_synack_retries #參數(shù)的值決定了內(nèi)核放棄連續(xù)之前發(fā)送SYN+ACK包的數(shù)量。該參數(shù)對應系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_synack_retries默認值為5
net.ipv4.tcp_syn_retries #表示在內(nèi)核放棄建立連接之前發(fā)送SYN包的數(shù)量。該參數(shù)對應系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_syn_retries 5
net.ipv4.tcp_max_orphans #選項用于設定系統(tǒng)中最多有多少個TCP套接字不被關聯(lián)到任何一個用戶文件句柄上。如果超過這個數(shù)字,孤立連接將立即被復位并打印出警告信息。這個限制這是為了防止簡單的Dos攻擊,不能過分依靠這個限制甚至認為減少這個值,更多的情況是增加這個值。該參數(shù)對應系統(tǒng)路徑為:/proc/sys/net/ipv4/tcp_max_orphans 65536
評論