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