分類
FreeBSD/Linux

apache deny ip設定

想要將 apache 的站台, 拒絕讓某個(某群ip)存取的方式, 有幾個方法, 其中最單純最俱體的方式就是直接利用 <Directory></Directory> 這個 tag 中的限制存取來操作最為單純方便 (當然, 虛擬主機可不行, 可以直接利用 .htaccess 設定該層目錄的存取權限)

一般來設, 設定如下:

<Directory "/usr/home/website1">
  order deny,allow
</Directory>

這樣即可. 就是判斷 deny , 預設為 allow 的條件, 也就是所謂公開站台的設定, 若有要限制某些 ip 存取, 可以這樣下:

<Directory "/usr/home/website1">
  order deny,allow
  deny from 1.2.3.4
  deny from 11.22.33.
</Directory>

其中的 deny from 1.2.3.4 是限制某個單一 ip, 而 deny from 11.22.33. 是指 11.22.33.* 都是拒絕存取的, 如此一來, 便能有效管理不想讓某些 ip (例如爬蟲類或是一些吃資源的 ip, 又或是攻擊的 ip)訪問做好限制.

不過發生了一個有趣的狀況, 也就是之前設了, 發現沒有用, 在多次交叉比對檢查後, 發現是這個原因, 就是在 <VirtualHost> 內的 DocumentRoot 指定為 /home/website1 而在 <Directory> 內的目錄指向是 /usr/home/website1 , 這樣一來, apache 在存取該 website1 的檔案時, 是走 /home/website1 下的檔案, 雖然和 /usr/home/website1 一樣, 不過對 apache 來說卻是不同, 這個要特別注意才行, 否則可能會有設定好的 <Directory> 的限制 ip, 但實際上沒有作用, 原因就有可能發生在這裡了.

又或反過來說, 設定的路徑一定要一致, 而且儘量用完整路徑, 不要用簡化的 link 路徑指向檔案, 也比較容易除錯一些. 所以原則上是這樣的:

<VirtualHost *:80>
  ServerName test.diary.tw
  Document /usr/home/www/test
.....
</VirtualHost>

<Directory "/usr/home/www/test">
  order deny,allow
  deny from 1.2.3.4
</Directory>

這樣就 ok 啦, 千萬要注意紅字部分要一致的這件事, 否則可能設了沒有作用, 原因就在這裡了..

另外補充一下, 若是這種方式限制存取的話, client 會拿到 403 的存取失敗代碼.

分類
Windows 懶得分類

快速kill process的方式(Windows)

手邊剛好在處理一個大量 process 未結束於系統上的一個問題. 該 server 不知什麼原因, 在起動 cgi 程式時, 發生了這個現象, 偶發的不會自行結束, 於是在系統內就留下了許多該 process 的名稱. 利用 task manager 會看到大量的 process, 雖未佔用 cpu, 不過會吃掉一部分的記憶.

在不方便重開 server 的狀況下, 如何快速地將相同名稱的 process 一起刪除呢? 於是上網想查看看有沒有什麼方便的小工具可以做這件事. 結果很順利地找到系統內建的一個指令: taskkill

這個指令是給定要刪除的 pid 或 image name (就是執行檔名稱), 來進行 process kill 的動作. 簡單研究一下, 進行了測試, 效果相當不錯, 800多個 process 一下就刪完了, 使用的指令如下:

taskkill /IM mytest.exe /F

如此一來, 所有 mytest.exe 的 process 一口氣就被 kill 完成了.

另外有許多方便的參數可供使用, 詳情可以利用 taskkill /? 來取得說明, 列表如下:

TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

Description:
This tool is used to terminate tasks by process id (PID) or image name.

Parameter List:
/S system Specifies the remote system to connect to.

/U [domain\]user Specifies the user context under which the
command should execute.

/P [password] Specifies the password for the given user
context. Prompts for input if omitted.

/FI filter Applies a filter to select a set of tasks.
Allows “*” to be used. ex. imagename eq acme*

/PID processid Specifies the PID of the process to be terminated.
Use TaskList to get the PID.

/IM imagename Specifies the image name of the process
to be terminated. Wildcard ‘*’ can be used
to specify all tasks or image names.

/T Terminates the specified process and any
child processes which were started by it.

/F Specifies to forcefully terminate the process(es).

/? Displays this help message.

Filters:
Filter Name Valid Operators Valid Value(s)
———– ————— ————————-
STATUS eq, ne RUNNING |
NOT RESPONDING | UNKNOWN
IMAGENAME eq, ne Image name
PID eq, ne, gt, lt, ge, le PID value
SESSION eq, ne, gt, lt, ge, le Session number.
CPUTIME eq, ne, gt, lt, ge, le CPU time in the format
of hh:mm:ss.
hh – hours,
mm – minutes, ss – seconds
MEMUSAGE eq, ne, gt, lt, ge, le Memory usage in KB
USERNAME eq, ne User name in [domain\]user
format
MODULES eq, ne DLL name
SERVICES eq, ne Service name
WINDOWTITLE eq, ne Window title

NOTE
—-
1) Wildcard ‘*’ for /IM switch is accepted only when a filter is applied.
2) Termination of remote processes will always be done forcefully (/F).
3) “WINDOWTITLE” and “STATUS” filters are not considered when a remote
machine is specified.

Examples:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI “PID ge 1000” /FI “WINDOWTITLE ne untitle*”
TASKKILL /F /FI “USERNAME eq NT AUTHORITY\SYSTEM” /IM notepad.exe
TASKKILL /S system /U domain\username /FI “USERNAME ne NT*” /IM *
TASKKILL /S system /U username /P password /FI “IMAGENAME eq note*”

給大家參考!

參考資料: XP: kill a Windows process from the command line with taskkill

分類
Windows

好用netstat指令

在 windows 下使用 netstat 指令來查詢已開啟的 listen port (-a), 以及已建立的連線 (active connection) 是十分方便的工具. 不過若是要知道該 connection 或 listen port 是由哪個 process 建立的, 在 netstat 指令下是無法達成的, 必須藉由另一個 sysinternals (被 ms 併入了)的 tcpview 工具.

不過, 現在可以不用這麼麻煩了, netstat 工具已經增加了這個功能, 指令是 (-b), 例如:

netstat -nb

可 以找出目前建立 connection 的不解析名稱(即使用ip及port number, -n)的方式, 列出對應的執行檔名稱及 process id (PID), 如此一來, 對於要快速追蹤 active connection 及 listen port 的 process (或執行檔名) 可以更快速的利用指令來取得.

常用的方式如下:

netstat -na

netstat -nab

為什麼使用 -n, 因為可以不用反查 hostname, 直接顯示 ip, 速度較快啦.
另外使用 -b 的功能應該是要在 windows 2003 sp2 及以上, windows xp sp3, windows vista 以上才有.

分類
FreeBSD/Linux

ssh登入緩慢問題

最近的一次更新, 讓 FreeBSD 主機在登入時, 速度變得很慢, 這對操作上有蠻大的影響, 於是問了同事, 也著手進行查詢相關的可能, 原來是 OpenSSH 的名稱反查問題, 簡單處理方式如下:

修改 /etc/ssh/sshd_config 檔內的一個 UseDNS 參數, 設為 no 即可.

官方說明連結: http://www.openssh.org/faq.html#3.3

3.3 – ssh(1) takes a long time to connect or log in

 

Large delays (more that 10 seconds) are typically caused a problem with name resolution:

  • Some versions of glibc (notably glibc 2.1 shipped with Red Hat 6.1) can take a long time to resolve “IPv6 or IPv4” addresses from domain names. This can be worked around with by specifying AddressFamily inet option in ssh_config.
  • There may be a DNS lookup problem, either at the client or server. You can use the nslookup command to check this on both client and server by looking up the other end’s name and IP address. In addition, on the server look up the name returned by the client’s IP-name lookup. You can disable most of the server-side lookups by setting UseDNS no in sshd_config.

下面還有如何判定是 “slow”

CPU Time (SSHv1)[1] Time (SSHv2)
170MHz SPARC/sun4m 0.74 sec 1.25 sec
236MHz HPPA/8200[2] 0.44 sec 0.79 sec
375MHz PowerPC/604e 0.38 sec 0.51 sec
933MHz VIA Ezra 0.34 sec 0.44 sec
2.1GHz Athlon XP 2600+ 0.14 sec 0.22 sec

參考看看吧!

分類
FreeBSD/Linux

找指定檔案內容的語法

在 Linux, FreeBSD 下若要指定目錄以下的檔案內容查詢的指令, 可以利用 find 配合 -exec 參數, 再配合 grep 指令即可達到目的.

使用方式如下:

find . -name “*.log” -exec grep Virtual {} \;

這個方式就以 . 目錄以下, 找出所有 .log 的檔案, 內容有含 “Virtual” 的行內容, 但要注意最後方的 semicolon (分號) 要以反斜線開頭, 才會被 -exec 認識.

分類
Windows 懶得分類

forfiles指令介紹

在 WINDOWS 下, 若是要將某些檔案做什麼處理的方式, 我通常使用 VBS 的 SCRIPT 來操作, 不過其實還有更方便簡捷的方法, 看到這篇文章 windows server下的檔案處理程式Forfiles , 原來其實在 windows 下還有個這麼方便的檔案列舉工具.

一般最常用的是刪除 log 檔案, 指定目錄, 並指令時間 (例如保留一週, 一週前的刪除), 就可以利用這個指令進行刪除:

forfiles /p c:\temp /s /m *.log /d -7 /c “cmd /c del @FILE”

或是列舉出指定目錄下的檔案(非目錄)的名稱列出:

forfiles /p c:\ /c “cmd /c if @isdir==FALSE echo @FILE”

請注意上面的 “FALSE” 要大寫!

再來看看微軟的官方說明: Forfiles

以下列出該指令的參數說明: (利用 forfiles /? 取得)

FORFILES [/P pathname] [/M searchmask] [/S]
[/C command] [/D [+ | -] {yyyy/MM/dd | dd}]

描述:
選取一個檔案 (或一組檔案),並在檔案上
執行命令。這對批次工作很有幫助。

參數清單:
/P pathname 表示要開始搜尋的路徑。
預設資料夾是目前的
目錄 (.)。

/M searchmask 根據 searchmask 搜尋檔案。
預設的 searchmask 是 ‘*’。

/S 指示 forfiles 遞迴搜尋
子目錄。例如 “DIR /S”。

分類
系統技術

FPT-全網頁效能偵測服務(web版本)

從[愛迪 怕死我]網站看來的.

這個 full page test 線上服務有幾點很方便的功能.

  1. 方便好用-整個是在瀏覽器下操作
  2. 圖表整理清楚-整個圖形化的呈現結果, 清楚地呈現整個效能問題及診斷
  3. 容易分析-根據提供的結果, 很容易地找出問題或需要調整的地方

這個工具很重要的地方就在於不用安裝, 而且針對網頁無論是設計面或是效能面都有一個客觀的診斷結果, 對於在設計及開發網站應用程式來說是很方便而重要的參考依據. 我們來看看操作的方式, 首先連結到 http://tools.pingdom.com/fpt/ , 簡潔的操作介面上只需要填入要測試的 url 即可, 按下 test 之後, 就可以取得很棒的一個圖表測試報告:

分類
Windows

windows vista sp1繁體中文出來囉

延遲已久的 vista sp1繁體中文版出來囉.

之前在 zdnet 上的消息, vista sp1 繁體中文版即將上市了, 參見: Vista SP1中文版五月釋出 相容性成賣點, 相較於英文版的 sp1, 的確讓大家等了好一陣子, 有在使用 vista 的用戶快去下載安裝囉!

官方連結如下:
KB936330:x64 系統的 Windows Vista Service Pack 1 All Language Standalone 版
KB936330:Windows Vista Service Pack 1 All Language Standalone 版 <-這是32bit版
Windows Vista Service Pack 1 All Language Standalone 版 CD ISO <-這是32bit版cd image
Windows Vista Service Pack 1 All Language Standalone 版 DVD ISO <-這是32和64bit的dvd image

快用看看吧!

另外順帶一提的, server 2008 的版本, 由於核心和 vista 是一樣的, 所以在發行時, 已是 with sp1 的狀況囉, 可以參考下面的截圖:

分類
系統技術

apache加掛壓縮模組deflate/gzip

在阿駕零零壹站上看到這篇: [Apache] 壓縮你的網頁 – mod_deflate/mod_gzip、ob_gzhandler、zlib, 覺得效果不錯, 試著進行調整自己的主機, 加入這項功能.

由於 apache2 有自帶 mod_deflate 模組, 所以設定起來很快也很方便, 只要設定一下 httpd.conf:

LoadModule deflate_module modules/mod_deflate.so

將 # 拿到, 並加上

<IfModule mod_deflate.c>
  DeflateCompressionLevel 6
  AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
  AddOutputFilter DEFLATE html htm xml php css js
</IfModule>

並重啟一下服務即可順利完成.

但由於本站使用的是 apache 1.3x, 所以要麻煩一點, 配合的模組是 mod_gzip, 這個版本已經很久了, 可以先到 http://sourceforge.net/projects/mod-gzip/ 這裡進行下載.

若是 windows 下使用 dll 那組, linux/bsd則用 so 那組, 將檔案複製到 apache/modules 下, 設置 httpd.conf 檔案:

分類
系統技術

404 HANDLER

瀏覽器遇到web server回應的status code 404相信大家都不陌生, 無論是IIS或是APACHE都一樣, 只要是找不到這個檔案, 就是回應 404 給client囉.

如何handle web的回應, 除了是要有更 friendly 的回應外, 對於網站管理員來說, 更希望獲得哪些檔案是 user 要, 但是 web 上沒有的. 還記得之前有篇網路轉寄的內容, 有個 web server 的404回應網頁很有趣, 自怨自艾半天, 讓人會心一笑, 這就是友善回應的一種應用. 但能將 404用程式做某種方式記錄或是通知方便管理員處理, 相信也是在某些應用下的重要功能(當然要依實際狀況來用, 因為實務上發生404的機會並不低).