2009年2月20日 星期五

rsync的文章

公司的主機資料同步都是用rsync來做的
rsync 也有支援 SSH,也就是加密傳輸。
目前主機上就都是這樣在做的,但這些都是前人做好的

一直沒花時間去弄懂它..
直到前一陣子為了弄unix -> windows的資料同步
才把它稍微搞懂了一下

以下記錄網路上二篇文章的連結以及安裝過程跟所遇到的問題


介紹一下 rsync 這個同步備份程式
這一篇主要教了以下幾種方式的同步
unix -> unix
unix -> windows
windows -> unix
windows -> windows


然後....
Rsync + SSH — 讓 Server 自動異地備援也加密
這一篇就是講到怎麼讓rsync透過ssh來同步


下面記錄一下我的安裝過程

1.安裝cwrsync server(連結)

2.安裝完成後,在windows的服務裡,啟動 Openssh SSHD 和 RsyncServer 這兩個服務
註:若遇到無法啟動RsyncServer時,請先去C:\Program Files\cwRsyncServe下,把rsyncd.pid刪除,再啟動

3.把C:\Program Files\cwRsyncServer\var\SvcwRsync\.ssh\cwrsync 這個檔案丟到unix主機上
要執行rsync to windows.sh這個程式的user目錄下的.ssh裡面,權限設成600

4.設定windows上的rsync.conf以及要在unix上執行的shell script檔
註:這邊是利用在柚可椰小站所分享的shell script來做
要改的是restore to windows.sh中的
# identity: private key file for cwRsyncServer service account (available from Start Menu)
identity='/.ssh/cwrsync'

# which ps? /usr/ucb/ps for Solaris and /bin/ps for others
PS=/usr/ucb/ps

這二行,依自己的需求更改即可(修改cwrsync放的位置,以及ps這個程式所在的位置)
然後rsync.conf則是在C:\Program Files\cwRsyncServer\下
例:
[backupWeb]
path = /cygdrive/f/e-rent/web
read only = false
transfer logging = yes

節錄文章中二段比較需要注意的地方,script的用法,以及rsync.conf的設定說明以及使用restore to windows.sh的語法注意事項

cwRsync 的網站上介紹了一個 shell script 。我把那個 shell script 稍微改寫一下,改成 backup_from_windows.shrestore_to_windows.sh

backup_from_windows.sh 的用途是 windows -> unix,用法是
backup_from_windows.sh <windows_ip><windows_module><unix_directory>

restore_to_windows.sh 的用途是 unix -> windows,用法是
restore_to_windows.sh <windows_ip><unix_directory><windows_module>


另外要特別提一點,在 windows 的 rsyncd.conf 裡的一個標準的 module 寫法是像這樣

[test1]
path = /cygdrive/d/16
read only = false
transfer logging = yes


這個 module 的名稱是 test1 ,所定義的目錄是 D:\16,read only 是 false,所以除了備份之外也可以回存。所以想要在 unix 上把 windows 上的 D:\16 備份到 /work/16,就會下像這樣的指令,

backup_from_windows.sh 10.0.0.50 test1 /work/16

這樣 D:\16 下的所有目錄和檔案就會全部備份到 /work/16 去了。

但是,如果要把 /work/16 回存到 D:\16 的話,請記得要用 /work/16/ 而不是 /work/16,也就是說指令要這樣下,

restore_to_windows.sh 10.0.0.50 /work/16/ test1

如果不用 /work/16/ 而用 /work/16 的話,在 windows 裡的 D:\16 裡就會多一個目錄 D:\16\16,這就不是我們所期待的結果了。

這個部份的語法問題,在另一篇文章裡有說明到


上面用到的檔案若無法連結,我有自己上傳一份備用的
cwRsyncServer
back from windows.sh
restore to windows.sh
公司的主機資料同步都是用rsync來做的
rsync 也有支援 SSH,也就是加密傳輸。
目前主機上就都是這樣在做的,但這些都是前人做好的

一直沒花時間去弄懂它..
直到前一陣子為了弄unix -> windows的資料同步
才把它稍微搞懂了一下

以下記錄網路上二篇文章的連結以及安裝過程跟所遇到的問題


介紹一下 rsync 這個同步備份程式
這一篇主要教了以下幾種方式的同步
unix -> unix
unix -> windows
windows -> unix
windows -> windows


然後....
Rsync + SSH — 讓 Server 自動異地備援也加密
這一篇就是講到怎麼讓rsync透過ssh來同步


下面記錄一下我的安裝過程

1.安裝cwrsync server(連結)

2.安裝完成後,在windows的服務裡,啟動 Openssh SSHD 和 RsyncServer 這兩個服務
註:若遇到無法啟動RsyncServer時,請先去C:\Program Files\cwRsyncServe下,把rsyncd.pid刪除,再啟動

3.把C:\Program Files\cwRsyncServer\var\SvcwRsync\.ssh\cwrsync 這個檔案丟到unix主機上
要執行rsync to windows.sh這個程式的user目錄下的.ssh裡面,權限設成600

4.設定windows上的rsync.conf以及要在unix上執行的shell script檔
註:這邊是利用在柚可椰小站所分享的shell script來做
要改的是restore to windows.sh中的
# identity: private key file for cwRsyncServer service account (available from Start Menu)
identity='/.ssh/cwrsync'

# which ps? /usr/ucb/ps for Solaris and /bin/ps for others
PS=/usr/ucb/ps

這二行,依自己的需求更改即可(修改cwrsync放的位置,以及ps這個程式所在的位置)
然後rsync.conf則是在C:\Program Files\cwRsyncServer\下
例:
[backupWeb]
path = /cygdrive/f/e-rent/web
read only = false
transfer logging = yes

節錄文章中二段比較需要注意的地方,script的用法,以及rsync.conf的設定說明以及使用restore to windows.sh的語法注意事項

cwRsync 的網站上介紹了一個 shell script 。我把那個 shell script 稍微改寫一下,改成 backup_from_windows.shrestore_to_windows.sh

backup_from_windows.sh 的用途是 windows -> unix,用法是
backup_from_windows.sh <windows_ip><windows_module><unix_directory>

restore_to_windows.sh 的用途是 unix -> windows,用法是
restore_to_windows.sh <windows_ip><unix_directory><windows_module>


另外要特別提一點,在 windows 的 rsyncd.conf 裡的一個標準的 module 寫法是像這樣

[test1]
path = /cygdrive/d/16
read only = false
transfer logging = yes


這個 module 的名稱是 test1 ,所定義的目錄是 D:\16,read only 是 false,所以除了備份之外也可以回存。所以想要在 unix 上把 windows 上的 D:\16 備份到 /work/16,就會下像這樣的指令,

backup_from_windows.sh 10.0.0.50 test1 /work/16

這樣 D:\16 下的所有目錄和檔案就會全部備份到 /work/16 去了。

但是,如果要把 /work/16 回存到 D:\16 的話,請記得要用 /work/16/ 而不是 /work/16,也就是說指令要這樣下,

restore_to_windows.sh 10.0.0.50 /work/16/ test1

如果不用 /work/16/ 而用 /work/16 的話,在 windows 裡的 D:\16 裡就會多一個目錄 D:\16\16,這就不是我們所期待的結果了。

這個部份的語法問題,在另一篇文章裡有說明到


上面用到的檔案若無法連結,我有自己上傳一份備用的
cwRsyncServer
back from windows.sh
restore to windows.sh

[Ubuntu]關於update-rc.d 用法

如果在 /etc/init.d 中加入一個 script,還須要製作相關的 link
存到 /etc/rc*.d 中。
K 開頭是 kill , S 開頭是 start , 數字順序代表啟動的順序。
這些動作都可以利用update-rc.d來完成。


例:
在 /etc/init.d 中建立一個叫作 zope 的 script , 然後

update-rc.d zope defaults

就會產生以下連結::

Adding system startup for /etc/init.d/zope ...
/etc/rc0.d/K20zope -> ../init.d/zope
/etc/rc1.d/K20zope -> ../init.d/zope
/etc/rc6.d/K20zope -> ../init.d/zope
/etc/rc2.d/S20zope -> ../init.d/zope
/etc/rc3.d/S20zope -> ../init.d/zope
/etc/rc4.d/S20zope -> ../init.d/zope
/etc/rc5.d/S20zope -> ../init.d/zope

其他進階使用方式請 man update-rc.d

延伸閱讀: Debian和RH的差異這一篇內容是在講下述內容
<使用Debian工具進行工作>
RH包含了一些用於自動管理SysV初始腳本過程的工具,也就是chkconfig民service。
Debian並包含這些工具,但是卻提供相似的管理工具:update-rc.d與invoke-rc.d。

如果在 /etc/init.d 中加入一個 script,還須要製作相關的 link
存到 /etc/rc*.d 中。
K 開頭是 kill , S 開頭是 start , 數字順序代表啟動的順序。
這些動作都可以利用update-rc.d來完成。


例:
在 /etc/init.d 中建立一個叫作 zope 的 script , 然後

update-rc.d zope defaults

就會產生以下連結::

Adding system startup for /etc/init.d/zope ...
/etc/rc0.d/K20zope -> ../init.d/zope
/etc/rc1.d/K20zope -> ../init.d/zope
/etc/rc6.d/K20zope -> ../init.d/zope
/etc/rc2.d/S20zope -> ../init.d/zope
/etc/rc3.d/S20zope -> ../init.d/zope
/etc/rc4.d/S20zope -> ../init.d/zope
/etc/rc5.d/S20zope -> ../init.d/zope

其他進階使用方式請 man update-rc.d

延伸閱讀: Debian和RH的差異這一篇內容是在講下述內容
<使用Debian工具進行工作>
RH包含了一些用於自動管理SysV初始腳本過程的工具,也就是chkconfig民service。
Debian並包含這些工具,但是卻提供相似的管理工具:update-rc.d與invoke-rc.d。

2009年2月5日 星期四

Apache 防止 Dos 攻擊套件

Denial of Service 可以稱為 “阻絕服務攻擊”。這個名稱也經常聽見,在很多地方都發生。
其實 Denial of Service 所傳送的請求和正常的是一樣,只是每分鐘傳送數以十計以上請求傳送至伺服器中。令伺服器每秒處理十分大量的工作。

受到這一種攻擊,輕則只有伺服器暫時停止服務。重則會把伺服器中的硬體破壞。有不少例子都是由於伺服器在同一時間處理十分大量的工作後,CPU 最後壞了。最近公司的其中一個網站受到這些不明來歷的 Denial of Service 攻擊,伺服器一直當機。
搜尋了不少網站,終於找到了一個方法。不過不知道是否可行的。所使用的是 mod_dosevasive。
雖然是第一次用,不過是否真的能夠防止就必須等到下一次受到攻擊使知道。
(雖然一裝好就有阻斷了很多IP,但是不是真的從此相安無事,就得等時間來驗證了)


1.首次下載 mod_dosevasive 1.1 版本。

2.然後解壓 mod_dosevasive_1.10.tar.gz

tar zxvf mod_dosevasive_1.10.tar.gz


3.把您的 httpd.conf 備份

4.開始安裝mod_dosevasive

Apache 1.3.x:
cd mod_dosevasive
apxs -cia mod_dosevasive.c


Apache 2.0.x:
cd mod_dosevasive
apxs -cia mod_dosevasive20.c


註:若沒安裝apxs,可執行yum provides <some_file_name>去搜尋需要的套件
例如:yum provides spxs

在這裡,要安裝的指令是yum install httpd-devel


5.修改您的 httpd.conf 加入
Apache 1.3.x:


DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600


Apache 2.0.x:


DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 10
DOSBlockingPeriod 600



最後是在httpd.conf 當中的設定參數解釋:

DOSHashTableSize
 這是佔中您記憶體的大小。當數目越大處理越快,當您的伺服器是很多人流的,您必須加大這個數字。
DOSPageCount
 同一頁同一人時能夠在同一個時段中最多可請求幾次,超過會禁止。時段可以在 DOSPageInterval 中設定。
DOSSiteCount
 同一個網站同一人在伺服器中最多可佔有幾個 Object,超過會禁止。時段可以在 DOSSiteInterval 中設定。
DOSPageInterval
 DOSPageCount 中所計算的每一個時間區段,以秒計算。預設是 1 秒。
DOSSiteInterval
 DOSSiteCount 中所計算的每一個時間區段,以秒計算。預設是 1 秒。
DOSBlockingPeriod
 當發現疑似攻擊後暫停多久?預設是 10 秒。當發現後,使用者會接收到 403 (Forbidden) 的訊息。

以下三個參數要放在IfModule外面

DOSEmailNotify
設定接收攻擊信息的電郵地址。
例:DOSEmailNotify you@yourdomain.com

DOSSystemCommand
這是收到攻擊信息時所使用的指令。
例:DOSSystemCommand ”su - someuser -c \’/sbin/… %s …\’”
  /bin/mail -t %s (%s指的是DOSEmailNotify設定的email address)

DOSLogDir
記錄檔案設定。
例:DOSLogDir ”/var/lock/mod_dosevasive”

Denial of Service 可以稱為 “阻絕服務攻擊”。這個名稱也經常聽見,在很多地方都發生。
其實 Denial of Service 所傳送的請求和正常的是一樣,只是每分鐘傳送數以十計以上請求傳送至伺服器中。令伺服器每秒處理十分大量的工作。

受到這一種攻擊,輕則只有伺服器暫時停止服務。重則會把伺服器中的硬體破壞。有不少例子都是由於伺服器在同一時間處理十分大量的工作後,CPU 最後壞了。最近公司的其中一個網站受到這些不明來歷的 Denial of Service 攻擊,伺服器一直當機。
搜尋了不少網站,終於找到了一個方法。不過不知道是否可行的。所使用的是 mod_dosevasive。
雖然是第一次用,不過是否真的能夠防止就必須等到下一次受到攻擊使知道。
(雖然一裝好就有阻斷了很多IP,但是不是真的從此相安無事,就得等時間來驗證了)


1.首次下載 mod_dosevasive 1.1 版本。

2.然後解壓 mod_dosevasive_1.10.tar.gz

tar zxvf mod_dosevasive_1.10.tar.gz


3.把您的 httpd.conf 備份

4.開始安裝mod_dosevasive

Apache 1.3.x:
cd mod_dosevasive
apxs -cia mod_dosevasive.c


Apache 2.0.x:
cd mod_dosevasive
apxs -cia mod_dosevasive20.c


註:若沒安裝apxs,可執行yum provides <some_file_name>去搜尋需要的套件
例如:yum provides spxs

在這裡,要安裝的指令是yum install httpd-devel


5.修改您的 httpd.conf 加入
Apache 1.3.x:


DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600


Apache 2.0.x:


DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 10
DOSBlockingPeriod 600



最後是在httpd.conf 當中的設定參數解釋:

DOSHashTableSize
 這是佔中您記憶體的大小。當數目越大處理越快,當您的伺服器是很多人流的,您必須加大這個數字。
DOSPageCount
 同一頁同一人時能夠在同一個時段中最多可請求幾次,超過會禁止。時段可以在 DOSPageInterval 中設定。
DOSSiteCount
 同一個網站同一人在伺服器中最多可佔有幾個 Object,超過會禁止。時段可以在 DOSSiteInterval 中設定。
DOSPageInterval
 DOSPageCount 中所計算的每一個時間區段,以秒計算。預設是 1 秒。
DOSSiteInterval
 DOSSiteCount 中所計算的每一個時間區段,以秒計算。預設是 1 秒。
DOSBlockingPeriod
 當發現疑似攻擊後暫停多久?預設是 10 秒。當發現後,使用者會接收到 403 (Forbidden) 的訊息。

以下三個參數要放在IfModule外面

DOSEmailNotify
設定接收攻擊信息的電郵地址。
例:DOSEmailNotify you@yourdomain.com

DOSSystemCommand
這是收到攻擊信息時所使用的指令。
例:DOSSystemCommand ”su - someuser -c \’/sbin/… %s …\’”
  /bin/mail -t %s (%s指的是DOSEmailNotify設定的email address)

DOSLogDir
記錄檔案設定。
例:DOSLogDir ”/var/lock/mod_dosevasive”