evasive 這個模組可以提供 Apache 基本的防 DoS 能力,注意,這指的是 DoS 而非 DDoS ,因為 evasive 主要就是依同一 IP 的單位時間連線數請求來作為防禦的依據,對於 DDoS 並沒有太大的效用,但是對於 DoS 則是非常不錯了。
在Ubuntu 16.04 LTS 下的安裝指令如下:
sudo apt-get install libapache2-mod-evasive sudo mkdir /var/log/mod_evasive sudo chown www-data:www-data /var/log/mod_evasive/ sudo vim /etc/apache2/mods-available/evasive.conf sudo a2enmod evasive sudo service apache2 restart
安裝之後你必須修改 /etc/apache2/mods-available/evasive.conf 設定檔,簡單的設定內容如下:
首先我們來談談 DoS 跟 DDoS 有什麼不同?不要懷疑,很多人都跟我說是一樣的東西,沒錯!它們是很像,但是不完全一樣,DoS 的全名是Denial-of-Service,就是阻斷服務,而 DDoS 則是 Distributed Denial-of-Service ,多了一字,變成分散式阻斷服務,這2種網路攻擊的基本精神相同,但手法有所變化,而後者不管在防禦上或是判斷上難度都高出許多。
站在網站防禦的角度上,DoS 攻擊可以是一台電腦就達到,例如用ApacheBench這隻測試程式就可以達到攻擊的目的,所以我們可以用 IP 來源+單位時間內的連線數,去做出有效的判斷,進而採取防禦手段;但 DDoS 是分散式的,也就是攻擊的來源是由多個不同的來源 IP 在同一段時間內持續發起連線請求,進而佔據目標網站的大量資源,達到阻斷服務的目的,在判斷上跟防禦上,難度都高很多,舉一個簡單的問題為例,誰是真的訪客?誰又是真的來亂的?這就防禦DDoS的難處。
分享一下在網路上找到,用 PHP 開發的 HTML, CSS, JavaScript minifier,也有人把 minify 稱之為壓縮(compress),我個人認為這並不是真正意義上的”壓縮”,”壓縮”應該是像是 gzip 或是 apache 的 mod_deflate 才是,所以 minify 會是比較好的說法,minify 是一種瘦身工具,去除了不必要的多餘字元,進而達到減少檔案原始 size 的方式,實際測試呢?本站的首頁原始大小約為 20617 bytes,經過這隻程式 minify 之後,網頁瘦身成 19117 bytes,成功減重 7.27%。
測試環境:
Server : AWS EC2 t2.micro + Ubuntu 16.04 LTS
測試指令:
ab2 -n 5000 -c 50 http://codeant.cc/
沒有快取時:Requests per second: 25.99 [#/sec] (mean)
除了用 PHPMyAdmin 來進行 MySQL 資料庫的性能優化之外,mysqltuner.pl 這一個用 Perl 寫成的 Script 也是相當實用的小幫手,我都是用來做 double check 用的,安裝跟使用上也是簡易的等級,學習曲線並不高。
PHPMyAdmin 這套軟體絕對是使用 LAMP 環境架設網站的必裝套件之一,它的功能還包含 MySQL 資料庫的效能優化,對於網站效能,我們錙銖必較,而資料庫的效能調校,你絕對不能忽視。
提供一下簡單的 PHP EMail Test Script,在執行 PHP mail() 之前,你必須確認 php-mail, sendmail, snmp 這三個套件已經裝上了,才能讓這個 script 發揮效用。
$to = "bill@codeant.cc"; $from = "john@codeant.cc"; $subject = "PHP Email 簡易系統環境測試"; $message = "如果你有看到這封 Email ,那就代表 PHP Mail 測試通過了。"; mail($to, $subject, $message, $from); printf("PHP Email Test Done!\n");
有需求就會去開發,如果沒有現成的可用的時候,有時候就是會想要只取代第一個出現的目標字串,下面的 PHP 程式碼可以滿足這個功能,你也可指定要取代的次數。
function str_replace_count ($search, $replace, $subject, $count = 1)
{
$search = '/'.preg_quote($search, '/').'/';
return preg_replace($search, $replace, $subject, $count);
}
// Test
$subject = "abc123456abc789654abc456abc123";
$search = "abc";
$replace = "xxyyzz";
echo "Replace once : ".str_replace_count($search, $replace, $subject)."\n";
echo "Replace twice: ".str_replace_count($search, $replace, $subject, 2)."\n";
下面是測試的結果:
Replace once : xxyyzz123456abc789654abc456abc123
Replace twice: xxyyzz123456xxyyzz789654abc456abc123
當初是為了開發 Android 系統而開始使用 Ubuntu 12.04,過程中其實也沒有時麼不適應的問題,作為一個開發人員,挑系統也不是一個很正確的行為,也因此讓我變成 CentOS(伺服器), openSUSE(筆電), Ubuntu(Android 開發) 三刀流。但是在AWS(Amazon Web Services) 的 EC2 上,我其實是選用 Ubuntu 16.04 來作為我的 t2.micro instance 的作業系統。
下面簡單紀錄一下啟動 LAMP 環境的安裝過程:
當你採取自己管理主機來架設網站的時候,你可以使用 Webalizer 來觀察網站的訪問情況,Webalizer 主要是使用 Apache Web Server 的 access.log 來進行分析統計,在安裝上不管是 CentOS 或是 Ubuntu 系統都提供相當方便的方式,下面我們以 Ubuntu 16.04 LTS 來當作例子。
安裝指令: