2011年10月25日 星期二

Linux網管入門-CentOS基本操作

Linux網管入門-CentOS基本操作

Back 首頁 Next

一、Linux操作環境簡介:
多人環境:UNIX最好的就是可以提供多人共用,而Linux自然也可以支援多工環境了!!
在 Linux 上面允許不同的人使用,而且每個人都有其特殊的權限,
只有一個人具有至高無上的權力,那就是 root (系統管理員)。
多工行為:Linux 可以同時由不同的人使用『同一個檔案』,只要有權限不論是開啟或者是修改。
多個管理視窗:在 Linux 當中,預設提供了六個文字界面登入視窗,以及一個圖形界面,
你可以使用 [Alt]+[F1].....[F7]來切換不同的終端機界面。
指令查詢:在 Linux 當中,不了解指令參數如何使用,可以在指令後加上-h來查詢,
如果希望進一步了解,可以用man command(要查詢的指令)。


二、基本指令:
瀏覽目錄
ls
-all:全部列出,並分行呈現
-l:全部列出

查詢目錄路徑
pwd

變更使用者
chown
-R:全部目錄及檔案都轉換
chown -R user.group abc/: 將abc這個目錄全部都轉換給user這個使用者和group這個群組

變更權限
chmod
-rwxrwxrwx :檔案屬性三個一組由2進位組成,r=4、w=2、x=1
如果是5就是表示r-x、6就是表示rw-,以此類推
前三個藍色字代表檔案或目錄使用者的權限;
中間三個綠色字代表檔案或目錄群組的權限;
後面三個紅色字代表檔案或目錄任何人的權限;
-R:全部目錄及檔案都轉換
chmod -R 744 abc/:全部列出 將abc這個目錄及檔案,全部都換成轉換給user這個使用者和group這個群組

查看目前登入者的帳號
whoami

查看目前所有系統登入者的帳號
who

查看之前所有系統登入者的資料
last
ip

系統重新開機
reboot
shutdown
-r:重新開機與reboot意思相同
-h:重新開機並關閉電源
-h +5:五分鐘後,重新開機並關閉電源
ip
login 登入系統
logout 登出系統

文字編輯軟體
vi
開始編輯檔案,請必須先按「a」或是「i」來進行編輯
如果視窗左下解出「-insert」或是「-插入」就可以開始編輯檔案
按「Esc」可以作上層編輯或是下層指令之轉換
:w寫入檔案
:q離開檔案
:q!強制離開檔案
nano(RH9以前為pico)
指令操作下層有說明

觀看系統正在執行的行程
ps
ps -aux|more:常用方式
參數說明:
a :選擇所有的程序列出
u :所有使用者的程序均列出
x :所有 tty 的程序列出
ps
USER:說明該程序是屬於哪一個人的;
PID:該程序的代號;
%CPU:代表該程序使用了多少 CPU 資源;
%MEM:代表該程序使用了多少的 RAM ;
VSZ, RSS:佔去的 ram 的大小( bytes );
TTY:是否為登入者執行的程序?若為 tty1-tty6 則為本機登入者,
若為 pts/?? 則為遠端登入者執行的程序;
STAT:該程序的狀態,( R )為可執行的,( S )
為該程序正在睡眠中,就是沒有執行了,( T )正在偵測或者是停止了,
( Z )僵屍程式,就是 zombie 死掉的程式啦!需要以 kill 除去囉;
START:該程序開始的日期;
TIME:該程序跑了多久的時間;
COMMAND:該程序的內容;

觀看前幾名系統正在執行的行程
top
觀看系統記憶體使用量
free

刪除系統正在執行的行程
kill
kill 1999:刪除某個程序,利用ps來查詢PID值
參數說明:
-1:刪除某個程序(類似reload)
-2:使用者中斷該工作,類似 [Ctrl]+c 來中斷一個工作
-9:強制殺掉一個工作,並立刻執行
-15:停止一個工作(這是預設值)

可觀看系統資訊,包括你的核心版本、主機名稱、CPU 資訊
uname
uname -a:查詢所有系統資訊

查看系統磁碟容量資訊
df
df -h:查詢所有磁碟容量,並以mb為單位呈現

查看系統分割區容量資訊
du
du -s -h:查詢某個分割區容量,並以mb為單位呈現

掛載相關設備的方式
mount
mount -t auto /(掛載設備名稱,在/dev/下面) /(預計要在本機對應的目錄名稱,目錄必須先建立)
如果不清楚要mount device的名稱,可以先用ls -l /dev/* (usb隨身碟通常是sd開頭的,硬碟是hd,光碟是cdrom)
mount -t auto /dev/sdb1 /mnt/usb

查看系統開機資訊
dmesg
dmesg | more :查詢開機資訊

什麼是 yum yum 的全名是: Yellow dog Updater, Modified yum
是一個自動更新/移除 rpm 套件的程式。
由於CentOS也是源自redhat系統,所以他目前也是以yum作套件控管。
它會自動計算相依性,判斷哪些應該安裝,哪些則不必。
和 yum 相同性質的還有 apt,不過 yum 比 apt 還要優秀好用。
Client端 yum 設定
先透過rpm查詢是否安裝了yum
yum
如果沒有,請線上下載rpm來安裝暨大ftp下載
預設gpgcheck=1 所以必須將GPG KEY安裝完成,
http://mirror.centos.org/centos/下載所需要的key檔
或是在本站下載RPM-GPG-KEY-centos4 或是在暨大ftp站下載 RPM-GPG-KEY-centos4
下載完後安裝請用 "rpm --import " 指令來匯入 之後便可以直接作更新
如果覺得麻煩的話,其實在下面的設定檔,可以直接加上gpg的下載網址即可!!
在CentOS4.3預設已經直接加上: gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

在CentOS中修改yum的url和FC4類似,需要在repos的目錄下修改。
cd /etc/yum.repos.d/
修改 nano CentOS-Base.repo 分別將[base]、[update]的baseurl改到國內
baseurl=http://ftp.ncnu.edu.tw/Linux/CentOS/$releasever/os/$basearch/
baseurl=http://ftp.ncnu.edu.tw/Linux/CentOS/$releasever/updates/$basearch/
另外[addons] 中的網址表示CentOS還在測試中的rpm尚未正式released
[extras] 中的網址表示CentOS額外可能可以用的rpm
[centosplus] 中的網址表示CentOS額外的rpm具有特別的功能
[contrib] 中的網址表示CentOS一些使用者提供的rpm

義守大學的mirror站亦可作yum
baseurl=http://ftp.isu.edu.tw/pub/Linux/CentOS/$releasever/os/$basearch/
baseurl=http://ftp.isu.edu.tw/pub/Linux/CentOS/$releasever/updates/$basearch/

靜宜大學的mirror站亦可作yum
baseurl=http://ftp.cs.pu.edu.tw/Linux/CentOS/$releasever/os/$basearch/
baseurl=http://ftp.cs.pu.edu.tw/Linux/CentOS/$releasever/updates/$basearch/

台南縣網的mirror站亦可作yum
baseurl=http://ftp2.tnc.edu.tw/pub1/centos/$releasever/os/$basearch/
baseurl=http://ftp2.tnc.edu.tw/pub1/centos/$releasever/updates/$basearch/

手動執行
yum install *(安裝某個套件)
yum update *(更新某個套件)
yum update;yum clean package(更新所有套件,並於安裝後刪除套件)

yum中沒有的套件如何尋找
http://rpmfind.net/linux/RPM/
但是此處rpm沒有針對CentOS來收集其rpm,如果需要的話可以用el4的版本來試試,
因但是建議還是以CentOS community提供較妥當,為選用CentOS最主要的訴求就是穩定!!
另一個好用搜尋引擎http://www.google.com.tw


三、修改系統環境:
修改語系設定檔 /etc/sysconfig/i18n
原本為:
LANG="zh_TW.UTF-8"
SYSFONT="latarcyrheb-sun16"
SUPPORTED="zh_TW.UTF-8:zh_TW:zh"

修改為:
LANG="zh_TW.Big5"
SYSFONT="latarcyrheb-sun16"
SUPPORTED="zh_TW.Big5:zh_TW:zh"
修改完後必須重新開機,設定才能生效!!


系統服務開機設定位置 /etc/rc.d/init.d 之中
針對某項服務,如果啟動或關閉(例如 httpd)
service httpd start|stop|restart
/etc/rc.d/init.d httpd start|stop|restart
這樣就可以在執行時,處理各項系統的服務的狀態!!

如果希望一開機就啟動或關閉(例如 httpd)
首先就必須了解開機時有不同指令層級,如level 1|2|3|4|5
利用chkconfig --list httpd (查看httpd各層級開機啟動狀態)
chkconfig
利用chkconfig --level 3 httpd on (設定httpd在level 3中開機要啟動)
這樣就可以在執行時,處理各項系統的服務的狀態!!

另一個更容易的方式,透過webmin設定
WEBMIN


四、視窗化操作介面X Windows
執行層級(Run level)為5者直接為視窗介面
設定開機時系統執行的設定,CentOS 4.3預設為5,一登入就執行X Windows
修改系統開機層級設定檔 /etc/inittab 修改完後存檔,重開機後就會新的設定層級開機
比較簡單的方式,用指令修改 /sbin/init 1|2|3|4|5
ip
如果是文字模式時者,可以用startx來執行X Windows
ip
登入後的畫面
ip


五、忘記root密碼、系統開機有問題,無法登入時
如同RH系統,通常將LILO改為用Grub 做為開機管理程式,
要進入單人維護模式就比較麻煩一些。在開機的過程當中,會有讀秒的時刻,
此時請按下任意按鍵,就會進入選單畫面。
boot
這個時候只要選擇相對的核心檔案,並且按下「e」,就可以進入編輯畫面了。
boot
此時,你看到的畫面有點像:
root (hd0,0)
kernel /vmlinuz-2.6.9.34 EL root=/ 此時,請將游標移動到 kernel 那一行,再按一次「e」進入 kernel 該行的編輯畫面中,
然後在出現的畫面當中,最後方輸入 single :
boot
root (hd0,0)
kernel /vmlinuz-2.6.9.34 EL root=/ single
再按下「Enter」確定之後,按下 b 就可以 boot 看看啦。
boot
在使用者使用 GRUB 開機進入單一使用者模式後,並取得# 提示符號,
boot
使用者需要輸入 passwd root,然後使用者便可以輸入新的 root 密碼。

如果是系統發生有問題時,可以作磁碟檢查
fsck -y
完成後後,重開機 shutdown -r now,重新啟動。


六、安裝完成無法提供遠端網路連線
請先確認SELINUX是否關閉
設定檔路徑 /etc/selinux/config 中SELINUX=enabled(enforced)改為disabled
修改完後需要重新開機!!

如果仍然不行,請確認iptables的防火牆是否設定了部分規則
設定檔路徑 /etc/sysconfig/iptables
查詢iptables的規則的指命 iptables -L
暫時先停用iptables的規則的指命 iptables -F


七、應用程式安裝及管理
rpm管理系統程式套件
rpm(Redhat Package Manager)
rpm -e *.rpm:移除某個套件
rpm -q *.rpm:查詢某個套件
rpm -qi *.rpm:查詢某個套件完整安裝資訊
rpm -ivh *.rpm:安裝新的套件
rpm -ivh --replacepkgs *.rpm:安裝已經裝的套件
rpm -Uvh *.rpm:昇級新版本的套件
rpm -Fvh *.rpm:更新已經安裝過的套件,只有裝過的才會更新

x window下rpm操作
直接將要安裝套件用滑鼠左鍵按兩下,會出現執行訊息
rpm
告知此套件相關資訊
rpm
確定後就直接安裝,安裝完成後就直接關閉視窗
rpm



Back 首頁 Next

2011年9月29日 星期四

扭矩(牛頓 . 米),這個物理量和它的單位是什麼意思?(轉貼)

扭矩(牛頓 . 米),這個物理量和它的單位是什麼意思?(轉貼)

分類:私房筆記
2009/03/26 23:43
馬力與扭力哪一項最能具體代表車輛性能?有人說「起步靠扭力,加 速靠馬力」,也有人說「馬力大代表極速高,扭力大代表加速好」,其實這些都是片段的錯誤解釋,其實車輛的前進一定是靠引擎所發揮 的扭力,所謂的「扭力」在物理學上應稱為「扭矩」,因為以訛傳訛的結果,大家都說成「扭力」,也就從此流傳下來,為導正視聽,
本文以下皆稱為「扭矩」。

扭 矩的理念從國小時候的「杠杆原理」就說明過了,定義是「垂直方向的力乘上與旋轉中心的距離」,公製單位為牛頓-米(N-m),除以重力加速度 9.8m/sec2之後,單位可換算成國人熟悉的公斤-米(kg-m)。英製單位則 為磅因- (lb-ft),在美國車的型錄上較為常見,若要轉換成公製,只要將lb-ft的數字除以7.22即可。

汽車驅動力的計算模式︰

將 扭矩除以車輪半徑即可由引擎馬力-扭力輸出曲線圖可發現,在每一個轉速下都有一個相對的 扭矩數值,這些數值要如何轉換成實際推展汽車的力量呢?答案很簡單,就是「除以一個長度」,便可獲得「力」的數據。舉例而言,一 部1.6升的引擎大約可發揮15.0kg-m的最大扭力,此時若直接連上185/ 60R14尺寸的胎環,半徑約為41公分,則經由車輪所發揮的推進力量為15/0.41=36.6公斤的力量(事實上公斤並不是力量的單位,而是重量的單 位,須乘以重力加速度9.8m/sec2才是力的標準單位「牛頓」)。

36公斤的力量怎么推展一公公頓的車重呢?而且動輒數千轉的引擎 轉速更不可能恰好成為胎環轉速,否則車子不就飛起來了?幸好聰明的人類發明了「齒輪」,利用不同大小的齒輪相連搭配,可以將旋轉的速度降低,同時將扭矩放 大。由於齒輪的圓周比就是半徑比,因此從小齒輪傳遞動力至大齒輪時,轉動的速度降低的比率以及扭矩放大的倍數,都恰好等於兩齒輪的齒數比例,這個比例就是 所謂的「齒輪比」。

舉例說明,以小齒輪帶動大齒輪,假設小齒輪的齒數為15齒,大齒輪的齒數為45齒。
當小齒輪以3000rpm的轉速旋轉,而扭矩為20kg-m時,傳遞至大齒輪的轉速便降低了1/3,變成1000rpm;但是扭矩反而放大三倍,成為60kg-m。這就是引擎扭矩經由變速箱可降低轉速並放大扭矩的基本原理。

在 汽車上,引擎輸出至胎環為止共經過兩次扭矩的放大,第一次由變 速箱的檔位作用而產生,第二次則導因於最終齒輪比(或稱最終傳動 比)。扭矩的總放大倍率就是變速箱齒比與最終齒輪比的相乘倍數。舉例來說,手排六代喜美的一檔齒輪比為3.250,最終齒輪比為4.058,而引擎的最大 扭矩為14.6kgm/5500rpm,於是我們可以算出第一檔的最 大扭矩經過放大後為14.6×3.250×4.058=192.55kgm,比原引擎放大了13倍。此時再除以胎環半徑約0.41m,即可獲得推力約為 470公斤。然而上述的數值並不是實際的推力,畢竟機械傳輸的過程中必定有磨 耗損失,因此必須將機械效率的原素考慮在內。

論及機械效率,每經過一個齒輪傳輸,都會產生一次動力損耗,手排變速箱的機械效率約在95%左右,自排變速箱較慘,約剩88%左右,而傳動軸的萬向接頭 效率約為98%,各位自己乘乘看就知道實際的推力還剩多少。整體而 言,汽車的驅動力可由下列公式計算︰

扭矩×變速箱齒比×最終齒輪比×機械效率
驅動力= ────────────────────
胎環半徑(單位為公尺)

馬力亦非「力」乃「功率」的一種
了 解如何將扭矩經由變速箱的齒比放大成為實際推力之後,接著可以研究什麼叫做「馬力」。馬力其實也不是一種「力」,而是一種功率 (Power)的單位,定義為單位時間內所能做「功」的大小。儘管如此,我們不得不繼續使用「馬力」這個名字,畢竟已經用太久了,講「功率」恐怕沒幾個消 費者聽得懂?

功率是由扭矩計算出來的,而計算的公式相當簡單︰功率(W)=2π× 扭矩(N-m)×轉速(rpm)/60,簡化計算後成為︰功率(kW)=扭矩(N-m) ×轉速(rpm)/9549,詳細的推導請參看方塊文章。然而功率kW要如何 轉換成大家常見的「馬力」呢,這又有一段故事得講。
英製或公製?
1PS=735W;1hp=746W
馬力定義竟然不一樣﹗

談 到引擎的馬力,相信不少人會直覺地想到什麼DIN、SAE、EEC、JIS等等不同測試標準,到底這些標準的差異在哪兒,以後有空再研究;有點誇張的是由 於英製與公製的不同,對「馬力」的定義基本上就不一樣。英製的馬力(hp)定義為︰一匹馬於一分鐘內將200磅因(lb)重的物體拉動165英 (ft),相乘之後等於33,000ft-lb/min;而公製的馬力(PS)定義則為一匹馬於一分鐘內將75公斤的物體拉動60公尺,相乘之後等於 4500kg-m/min。經過單位換算,(1lb=0.454kg;1ft=30.48cm)竟然發現1hp=4566kg-m/min,與公製的 1PS=4500kg-m有些許差異,而如果以功率W(1W=1Nm/sec= 9.8kgm/sec)來換算的話,可得1hp=746W;1PS=735W兩項不一樣的結果。
同樣是「馬力」,英製馬 力與公製馬力的定義竟然不一樣﹗難道英國馬比較「有力」嗎?

到 底世界上為什麼會有英製與公製的分別,就好像為什麼有的汽車是右駕,有的卻是左駕一樣,是人類永遠難以協調的差異點。若以大家 比較熟悉的幾個測試標準來看,德國的DIN與歐洲共同體的新標準 EEC還有日本的JIS是以公製的PS為馬力單位,而SAE使用的是英製的 hp為單位,但為了避免複雜,本刊一率將馬力的單位標示為hp。近來,越來越多的原廠數據已改提供絕對無爭議的KW作為引擎輸出的功率數值。

不 過話說回來,1PS與1hp之間的差異僅1.5%,每一百匹馬力差1.5匹,差異並不大。一般房車的馬力多半僅在200匹馬力以下,兩者由於定義的差異也 僅3匹馬力左右,因此如果您真要「馬馬計較」,就把SAE 標準的數據多個1.5%吧﹗不過SAE、JIS、DIN、EEC各種測試標準之 間亦有些許差異,這個老問題已經爭論過很多次了,單位之間不能真正劃上等號,然而在差別不怎么多的情況之下,就當作相同吧﹗因此 管他是PS或hp,都差不多可以視為相等。

終於可以做結論了﹗將上述獲得的馬力與功率換算模式代入功率與扭矩的換算公式,並且將扭矩的單位換算為大家熟悉的kg-m之後,可得下列結果︰
英製馬力hp=扭力(kg-m)×引擎轉速(rpm)/727
公製馬力PS =扭力(kg-m)×引擎轉速(rpm)/716

知 道這些公式之後有什麼用呢?從「馬力hp=扭力×轉速/727」看來, 如果能增加引擎轉速,扭力不變的情況下,便能增加馬力。例如若能 將轉速從6000rpm增加到8000rpm,等於增加了33%,但因為凸輪軸的 限制使得8000rpm時的扭力下降了10%,則仍能使馬力增加19.7%,這 說明了時下改裝計算機的為何能在解除斷油後大幅增加馬力。
所以不要被「增加??匹馬力」的廣告所著魔。

讓 我們從另外一個角度來想︰如果在同樣的轉速下,增加20匹馬力,代表能增加多少推力呢?以最大扭力點發揮於5000rpm的情況下,將公式稍微變換一下, 可發現增加的扭力=20hp×727/ 5000rpm=2.9kgm。再將這個結果代入汽車驅動力的公式,同樣以喜美 的一檔計算,2.9×3.250×4.058/0.41=93公斤。對於一公頓重的車身而言,影響似乎也不怎么大;再者如果相差5匹馬力的話,推力更僅增 加23公斤,可見相差5匹馬力,根本也沒差多少,所以能「增加5匹馬力」的產品,到底應該花多少錢去改裝,您自個兒會拿捏了吧?

大馬力決定真性能﹗
到 底大馬力的車子跑得快,還是大扭力的車子跑得快?從公式可以知 道大馬力的原因是「高轉速的時候仍保有高扭力數值」,也就是說要 有大馬力,不只是低轉速的扭力要好,連高轉速的扭力都得繼續維持 ,這表示扭力與馬力的爭論根本是多餘的,只要能做到高馬力,除了表示各轉速區域的扭力都很大之外,更代表材料技術的優越性,將活塞、進排氣閥門的材質與重 量予以強化與輕量化,才能將引擎轉速提升。

扭矩與功率的換算公式推導
假設一圓的半徑為r(單位為m),扭矩為T(單位為N- m),則圓周上切線 方向的力F=T/r,由於功率的定義為「每秒鐘所作的功」,對於圓周?動而言,每旋轉一圈所作的功為︰F×圓周總長2πr 將F=T/r代入計算,每一圈所作的功Work=F×2πr=(T/r)×2πr=2πT
再乘上引擎轉速rpm就是每分鐘所作的功,但功率P的單位是N-m/sec ,所以需除以60,轉換成每秒所作的功。代入公式︰P=T2πrpm/60,將常數整理後,則可得P(kW)=Trpm/9545。

由 上文可見,一台車的動力由發動機傳輸到車輪,需要經過多組齒輪因此有所損耗,如果德製馬力測的是傳遞到車輪上的動力,那麼同樣發動機用在不同車型上的動力 輸出應該不同,試拿bmw330和bmw530做比較,其功率均是225hp/5900rpm;結論,要么bmw在數據上造假,要么它測的是發動機輸出淨 值。

2011年9月1日 星期四

熱膨脹係數的通式

L=L0(1+αΔT)
上面是線膨脹公式
L是膨脹後的長度
L0是膨脹前的長度
α是膨脹係數,每個不同的物質都有它的膨脹係數
ΔT是溫度差

例子:
假設有一根黃金材質的線,原長30cm,
它的線膨脹係數在20度C時是14*10^-6
然後你加熱到100度C,那麼ΔT就等於100-20=80
代入公式
L=30*(1+14*10^-6*80)=30*(1+0.00112)=30.0336
你可以很明顯的看出αΔT就是膨脹後增加的長度
而且其實跟原長比例差很多(我指增加量)
所以固體的熱膨脹不會太明顯

而面膨脹公式L=L0(1+βΔT)
而體膨脹公式L=L0(1+γΔT)
跟線膨脹的應用是一樣的
而因為膨脹係數很小,所以我們會用β=2α,γ=3α來近似

下面的膨脹係數你可以參考
http://zh.wikipedia.org/wiki/%E7%83%AD%E8%86%A8%E8%83%80%E7%B3%BB%E6%95%B0

2011年5月28日 星期六

如何自訂 Apache Log

分享:如何自訂 Apache Log
« 於: 2009-10-11 01:12 »

每當在看 apache 的 log 檔時,總是覺得畫面密密麻麻的,好多字都看不完,雖然預設的 log 已經提供足夠的訊息讓我們來偵錯或查詢異狀,但總是覺得不夠人性化,也許您會覺得看多了就會習慣,可是換個角度想,如果可以按照自己想要的訊息來紀錄,不是更好嗎,所以才會有這篇文章。

話不多說,先來看以下的資料 (資料來源:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats)

Apache Custom Log Formats (如果翻譯的不對,請糾正。)

Format String Description
%% 百分比符號
%a 遠端 IP 位址
%A 本機 IP 位址
%B 回應一個 request 的大小 (bytes),含 HTTP headers
%b 以 CLF 格式回應一個 request 的大小 (bytes),含 HTTP headers
%{Foobar}C 傳送到伺服器的 Foobar cookie 的內容
%D request 傳送到伺服器的時間 (microseconds)
%{FOOBAR}e 伺服器環境變數 FOOBAR 的內容
%f 檔名
%h 遠端主機名稱
%H request 的通訊協定
%{Foobar}i The contents of Foobar: header line(s) in the request sent to the server.
Changes made by other modules (e.g. mod_headers) affect this.
%k 在一個 connection requests handled 中 keepalive 的數量
%l 遠端的 logname (This will return a dash unless mod_ident is present and Identity Check is set On).
%m The request method.
%{Foobar}n The contents of note Foobar from another module.
%{Foobar}o The contents of Foobar: header line(s) in the reply.
%p 伺服器回應一個 request 的 canonical port number
%{format}p The canonical port of the server serving the request or the server's actual port or the client's actual port.
Valid formats are canonical, local, or remote.
%P 回應 request 時的 PID
%{format}P The process ID or thread id of the child that serviced the request. Valid formats are pid, tid, and hextid. hextid requires APR 1.2.0 or higher.
%q The query string (prepended with a ? if a query string exists, otherwise an empty string).
%r First line of request.
%s 狀態. 若是由內部轉址來的 request,則將顯示原始 request 的狀態
%t 伺服器收到 request 的時間 (standard english format)
%{format}t 同上,但以自訂的格式來顯示時間
%T 伺服器回應 request 的時間 (in seconds)
%u 遠端的使用者 (from auth)
%U The URL path requested (not including any query string)
%v 伺服器回應 request 時的 canonical ServerName
%V The server name according to the UseCanonicalName setting.
%X Connection status when response is completed :
 X:connection aborted before the response completed.
 +:connection may be kept alive after the response is sent.
 -:connection will be closed after the response is sent.
This directive was %c in late versions of Apache 1.3, but this conflicted with the historical ssl %{var}c syntax.
%I Bytes received, including request and headers, cannot be zero. You need to enable mod_logio to use this.
%O Bytes sent, including headers, cannot be zero. You need to enable mod_logio to use this.

我的 httpd.conf 中 log 的設定:

引用
LogFormat '--------------------\n%{%Y-%m-%d}t%{%H:%M:%S}t from %h\nrequest url : %U\nquery string : %q\nstatus : %s\n%{User-Agent}i' localDefine

 # \n:代表換行
 # {%Y-%m-%d}t:代表將時間以 日期 來顯示
 # %{%H:%M:%S}:代表將時間以 時:分:秒 來顯示

‥‥
CustomLog '/var/log/httpd-access.log' localDefine

套用設定所顯示的效果:

引用
--------------------
2009-10-11 00:37:41 from 163.19.150.208
request url : /albumThumb.php
query string : ?s=35&i=recorderTeam-03.jpg&pr=/webhd/share/photo&pd=2009-09-25-Recorder_Concert
status : 200
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
--------------------
2009-10-11 00:37:41 from 163.19.150.208
request url : /albumThumb.php
query string : ?s=35&i=listenStory-20.jpg&pr=/webhd/share/photo&pd=2009-08-29-Listen_Story
status : 200
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
--------------------
2009-10-11 00:37:41 from 163.19.150.208
request url : /albumThumb.php
query string : ?s=35&i=leofoo-19.jpg&pr=/webhd/share/photo&pd=2009-09-19-LeoFoo_Village
status : 200
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
‥‥

用apache限定訪客來源IP

用apache限定訪客來源IP

設定檔: /usr/local/etc/apache/httpd.conf

舉例來說:
我希望限制 http://ohaha.ks.edu.tw/secret/ 資料夾,
只能給某些IP連結(此例為允許163.19.163.99).

如範例:

#設定連結位址
Order deny,allow
Deny from all #先拒絕全部IP連結
Allow from 163.19.163.99 #開放允許的IP位址


也可以使用區段的方式表示或是分開表示,如範例:

Allow from 163.19.163.0/24 #區段
Allow from 163.19.163.97 163.19.163.98 #分開表示


若不屬於此授權IP的使用者,連結此網站就會看到如下畫面

Forbidden
You don't have permission to access /secret/ on this server.


若希望連結此網頁的人得到稍微詳細的資訊,則可以在 ErrorDocument 設定
如範例:


Order deny,allow
Deny from all
Allow from 163.19.163.99
ErrorDocument 403 /error/deny.htm #希望提供顯示的錯誤頁面


並記得新增您要顯示的錯誤頁面.

也可以使用 方式限定
如範例:


Order deny,allow
Deny from all
Allow from 163.19.163.99
ErrorDocument 403 /error/deny.htm


- 已使用 Google 工具列寄出"

2011年5月27日 星期五

防 ssh 暴力攻擊 使用iptables & shell @ CentOS

Owen's: [轉錄][Linux] 防 ssh 暴力攻擊 使用iptables & shell @ CentOS: "原則上 ssh port 能不要全部開啟事最好的,如果一定要開啟的話,必需要作些防護措施, port 22 一旦開啟後最容易遇到的就是會有人不斷的try密碼 設計原理: 1. 抵擋 ssh 暴力攻擊 2. 如果連續攻擊3次以上則抵擋 3. 利用 TCP-Wrapper 偵測是否有登入失敗 ,有失敗才執行shell mkdir /etc/firewall/ touch /etc/firewall/sshd.sh chmod 755 /etc/firewall/sshd.sh vi /etc/firewall/sshd.sh 寫入以下資料 #!/bin/bash # 檔案存放的路徑 basedir='/etc/firewall' # log 存放的地方 sshlog='/var/log/auth.log' # mail for mailfor='root' # 登入錯誤訊息 faildMsg='sshd.*Failed password' faildMsgInvalid='sshd.*Failed password for invalid user' # 登入幾次失敗 就擋掉 loginCountFail=3 # 計算前 XXXX 行是否有登入失敗的狀況 failcount=`/usr/bin/tail -n 50 '$sshlog' | /bin/grep '$faildMsg' | wc -l` #cat '$sshlog' | grep 'sshd.*Failed password for' | grep -v 'invalid' | cut -d ' ' -f11 #cat '$sshlog' | grep 'sshd.*Failed password for invalid user' | cut -d ' ' -f13 # 如果有登入失敗的話 if [ '$failcount' -gt '0' ]; then # 建立 登入失敗 暫存檔 #cat /var/log/auth.log | grep 'sshd.*Failed password for' | grep -v 'invalid' cat '$sshlog' | grep 'sshd.*Failed password for' | grep -v 'invalid' > /tmp/ssh_tmp.log #cat /var/log/auth.log | grep 'sshd.*Failed password for' | grep -v 'invalid' cat '$sshlog' | grep 'sshd.*Failed password for invalid user' > /tmp/ssh_tmp2.log # 建立 登入失敗 IP 暫存檔 #cat '$sshlog' | grep '$faildMsg' | cut -d ' ' -f13 | sort | uniq > /tmp/ssh_ip_tmp.log cat /tmp/ssh_tmp.log | cut -d ' ' -f11 > /tmp/ssh_ip_tmp.log cat /tmp/ssh_tmp2.log | cut -d ' ' -f13 >> /tmp/ssh_ip_tmp.log # 取得要封鎖的IP位址 #blockip=`cat /tmp/ssh_ip_tmp.log` blockip=`cat /tmp/ssh_ip_tmp.log | sort | uniq` # iptables中,找出定義的ruleexistchar中的ip。 #iptables -L INPUT -n | grep 'tcp dpt:22' | grep 'DROP' | awk '{print $4}' | sort | uniq ruleexistip=`iptables -L INPUT -n | grep 'tcp dpt:22' | grep 'DROP' | awk '{print $4}' | sort | uniq` blacklist=`cat '$basedir'/ssd_blacklist_d` for ip in $blacklist do `iptables -D INPUT -p TCP -s $ip --dport 22 -j DROP` > /dev/null done rm -rf '$basedir'/ssd_blacklist_d # 利用 for 迴圈去跑 drop IP for ip in $blockip do # 計算此IP登入幾次失敗 count=`cat /tmp/ssh_ip_tmp.log | grep '$ip' | wc -l` # 如果登入失敗次數大於 預設值 則執行 drop if [ '$count' -gt '$loginCountFail' ] ; then #echo $ip $count # 如果從secure找出的ip已存在於iptables,就不需要加這條rule了。 if [ '$ip' = '$ruleexistip' ]; then : else `iptables -I INPUT -p TCP -s $ip --dport 22 -j DROP` fi # if [ '$ip' = '$ruleexistip' ]; # 建立黑名單 echo '$ip' >> '$basedir'/ssd_blacklist_d cat '$basedir'/ssd_blacklist_d | sort | uniq > '$basedir'/ssd_blacklist_d fi # if [ '$count' -gt '$loginCountFail'] ; done # for loop done # 刪除暫存檔 rm -rf /tmp/ssh*.log mail -s 'ssh hacker 抵擋的IP位址' $mailfor < '$basedir'/ssd_blacklist_d fi # if [ '$failcount' -gt '0' ]; 然後在 vi /etc/hosts.allow 加入 sshd : ALL : spawn /etc/firewall/sshd.sh 參考資料: * http://www.andowson.com/posts/list/33.page * http://ssorc.tw/rewrite.php/read-93.html

- 已使用 Google 工具列寄出"

2011年5月25日 星期三

安裝Tripwire確保系統安全

舊油燈裡的巨人: 安裝Tripwire確保系統安全: "安裝Tripwire確保系統安全

前陣子有個朋友的機器被駭客入侵了,雖然資料都救回來了,但是系統裡到底有沒有殘留的木馬其實很難講,除了用chkrootkit掃掃看有沒有木馬之外, 幫系統做一個指紋系統應該會比掃描木馬的結果來的正確,因為木馬千奇百怪,掃描軟體是不是可以正確掃出來其實還滿難說的,而如果替系統建立一個指紋資料 庫,對重要的檔案產生指紋編碼,當哪天檔案被人竄改時,我們也可以在第一時間察覺,避免威脅擴散。而這篇記錄要說明的就是tripwire的設定方式。網路上有很多關於tripwire的安裝及設定方法,但很神奇的,他們講的都是舊版的,新版的已經不是這樣安裝了,所以僅利用此篇文章紀錄安裝方式,以免日後忘了又找不到相關說明。

Tripwire是一個opensource的專案,不過也有商業版,目前就我所知只有商業版的支援windows系統,而open source的專案則僅適用於Unix-like系統,台灣目前沒有商業版的代理商。

先從http://sourceforge.net/projects/tripwire/下載最新版的tripwire,目前是2.4.1.2的版本,先下載source code版本,就是tripwire-src那個專案。
上傳到機器上之後,由於檔案是bz2壓縮的,所以請先用bunzip2解壓縮:
bunzip2 tripwire-2.4.1.2-src.tar.bz2
再把tar檔案解開:
tar xvf tripwire-2.4.1.2-src.tar
解開後進入tripwire安裝檔資料夾,使用configure設定要安裝的目的:
./configure --prefix=/usr/local/tripwire (讓它安裝在/usr/local底下)
跑完後系統會告訴你是不是缺少什麼東西,沒有的話就直接輸入:
make clean; make
make之後,需要稍微修改一下install.cfg,這個檔案就位於<>\install底下,找到TWMAILPROGRAM,然後將它指到你的sendmail主程式的目錄,例如:
if [ -z '$path_to_sendmail' ] ; then
TWMAILPROGRAM='/usr/sbin/sendmail'
else
TWMAILPROGRAM='${path_to_sendmail} -oi -t'
fi
完成後就可以開始make install了,系統會出現授權條款,看完之後要輸入accept才能繼續安裝。
接下來要設定幾個密碼
Enter the site keyfile passphrase:
Enter the local keyfile passphrase:
將資料庫初始化,執行以下指令對指紋資料庫進行第一次初始化
/usr/local/tripwire/sbin/tripwire -m
檢查etc底下的twcfg.txt檔案,裡面包含了一些tripwire的設定
修改/usr/local/tripwire/etc底下的twpol.txt,這個檔案是tripwire附的設定範例檔,使用者可以針對需要檢測的資料夾進行設定,如果整各系統都要做指紋檔的話,將會花費很長的時間,我們可以針對較重要的資料夾進行控管。
修改完畢後存檔,利用以下的指令更新policy
/usr/local/tripwire/sbin/tripwire -m p -Z low ../etc/twpol.txt
建立一個cron job,定期掃描系統,並將報告寄出
#!/bin/sh
/usr/local/tripwire/sbin/tripwire -m c -M >
然後就看報告了,資訊化的背後最後處理的還是人啊。

- 已使用 Google 工具列寄出"