動作

Ob2d openwebmail

出自 Itsmw

簡介

 OpenWebmail 2.5x 系列只能安裝在 OB2D/Ubuntu 11.04 上,但隨著 Linux 發行版本的升級,原本的 2.5x 版由於套件太舊,所以被排除在外而無法安裝。還好該專案已由 acatysmoof.com 轉手維護,目前已有 3.x 版出現,因而使得較新的 Ubuntu / Debian 也有機會可以繼續使用。在 OB2D 及 Ubuntu 12.04 的安裝請見本文,在 Ubuntu 11.04 上的安裝與使用,請參考筆者拙著「Ubuntu Linux 網管手冊」。



安裝 openwebmail

OB2D sqz系列

 底下動作,皆是以 root 身份,在 /root 目錄底下運作。


  • 執行安裝時 Openwebmail 設定訊息
    • Send the site report?(Y/n) n




Ubuntu 12.04 上安裝 OpenWebmail 3.0

加裝兩個 perl 模組

  • 要加裝的兩個 perl 模組分別為:libauthen-pam-perl 及 libhtml-template-perl ,libauthen-pam-perl 可以直接裝入,但 libhtml-template-perl 必須強迫安裝 2.9.x 版才行。
  • libauthen-pam-perl 安裝
    root@dns:~# apt-get update
    root@dns:~# apt-get install libauthen-pam-perl
  • libhtml-template-perl 安裝
    1. 換至 /root 資料夾底下
      root@dns:~# cd
    2. 手動下載舊檔
      root@dns:~# wget http://ftp.isu.edu.tw/pub/Linux/Ubuntu/ubuntu/pool/main/libh/libhtml-template-perl/libhtml-template-perl_2.9-2_all.deb
    3. 手動安裝
      root@dns:~# dpkg -i libhtml-template-perl_2.9-2_all.deb


下載&解壓縮


安裝

  • 把原始碼複製到 Apache2 網頁及 cgi-bin 處
    • root@dns:~# cp -rf cgi-bin/openwebmail /usr/lib/cgi-bin/
    • root@dns:~# cp -rf data/openwebmail /var/www/
  • 建立 logfile
    • root@dns:~# touch /var/log/openwebmail.log
    • root@dns:~# chown root:mail /var/log/openwebmail.log
  • 把 redirect.html 複製成 index.html

root@dns:~# cp -p /var/www/openwebmail/redirect.html /var/www/openwebmail/index.html

  • 更改 openwebmail.conf
    root@dns:~# cd /usr/lib/cgi-bin/openwebmail
    root@dns:/usr/lib/cgi-bin/openwebmail# vi etc/openwebmail.conf
ow_cgidir               /usr/local/www/cgi-bin/openwebmail
ow_cgiurl               /cgi-bin/openwebmail
ow_htmldir              /usr/local/www/data/openwebmail
ow_htmlurl              /openwebmail

  變成

ow_cgidir               /usr/lib/cgi-bin/openwebmail
ow_cgiurl               /cgi-bin/openwebmail
ow_htmldir              /var/www/openwebmail
ow_htmlurl              /openwebmail
  • 為 Ubuntu 建立 auth_unix.conf 設定檔
    root@dns:/usr/lib/cgi-bin/openwebmail# cp etc/defaults/auth_unix.conf etc/
  • 修改 auth_unix.conf 內容
    root@dns:/usr/lib/cgi-bin/openwebmail# vi etc/auth_unix.conf
passwdfile_plaintext    /etc/passwd
passwdfile_encrypted    /etc/master.passwd
passwdmkdb              /usr/sbin/pwd_mkdb

  變成

passwdfile_plaintext    /etc/passwd
passwdfile_encrypted    /etc/shadow
passwdmkdb              none
  • 建立 dbm.conf
    root@dns:/usr/lib/cgi-bin/openwebmail# cp etc/defaults/dbm.conf etc/
  • 修改 dbm.conf 內容
    root@dns:/usr/lib/cgi-bin/openwebmail# vi etc/dbm.conf
dbm_ext           .db

  變成

dbm_ext           .pag


初始化 openwebmail

  • 初始化 openwebmail (.pl files will automatically be C wrapped if perl version is 5.12 or higher)
    root@dns:/usr/lib/cgi-bin/openwebmail# ./openwebmail-tool.pl --init
    • 初始化時,下面這個問題,必須答「n
      Send the site report?(Y/n) n
  • 注意:如果已經啟用SELinux功能,請執行下面步驟(Ubuntu 預設是沒啟動的,可以跳過)
# update all the openwebmail files to run safely under SELinux
chcon -u system_u /var/log/openwebmail.log
chcon -t httpd_sys_script_rw_t /var/log/openwebmail.log
restorecon -R /var/www/{htdocs,cgi-bin}/openwebmail
chcon -R -t httpd_sys_content_t auth etc lib misc modules quota shares
chcon -t httpd_unconfined_script_exec_t /usr/lib/cgi-bin/openwebmail/openwebmail*
  • setuid the .pl files
    root@dns:/usr/lib/cgi-bin/openwebmail# chmod 4755 openwebmail*.pl
  • 若此次是升級(例 3.0 b1 -> 3.0 b4),請再執行以下這條指令
    root@dns:/usr/lib/cgi-bin/openwebmail# ./openwebmail-tool.pl --alluser --index


測試連線

  • 結束,試用看看吧!
    http://your.domain/openwebmail/



進階設定

把功能列改成中文版



連結方式:注意網址列不要再加 dns

 OpenWebmail 會依據您所輸入的網址列為寄件主機,例如:

  • 輸入 http://www.xxx.tnc.edu.tw/openwebmail 後登入,寄件者會變成 user@www.xxx.tnc.edu.tw
  • 輸入 http://163.26.xxx.1/openwebmail 後登入,寄件者很可能會變成 user@dns.xxx.tnc.edu.tw,依 hostname 值決定
  • 輸入 http://xxx.tnc.edu.tw/openwebmail 後登入,寄件者才會變成 user@xxx.tnc.edu.tw


 因此,建議各校網管人員,在首頁的超連結上,要加上 http://xxx.tnc.edu.tw/openwebmail。另外,因為台南縣有一台郵件過濾器,可以在 OpenWebmail 之下再加一組取回信件的超連結 http://spamfilter.xxx.tnc.edu.tw:1680,方便學校人員點選。




把 OpenWebmail 納入加密的網頁通道(HTTPS; 443)

 把 OpenWebmail 納入加密的網頁通道(HTTPS; 443)最大的好處在於,使用者於公眾網路(餐廳、車站...etc)收發信件時,所有傳輸的封包皆被加密,因此若網段內有人偷裝封包攔截器,也無法直接取得使用者的帳號、密碼及信件內容等個人資料。

為 apache2 建置 ssl 通道(以大成國小為例)

 請參考右文: 在 OB2D 上建立加密網頁通訊

把 OpenWebmail 改為 HTTPS

  • 編輯 /usr/lib/cgi-bin/openwebmail/openwebmail.pl , 在最上面註解下面, 加上
# added by OLS3 (ols3@lxer.idv.tw)
if ($ENV{'HTTPS'} ne 'on') {
   print "Content-type: text/html\n\n";
   print <<HERE;
<html>
<head><meta http-equiv="Refresh" content="0;URL=https://$ENV{'HTTP_HOST'}/cgi-bin/openwebmail/openwebmail.pl">
</head>
<body onload="window.open('https://$ENV{'HTTP_HOST'}/cgi-bin/openwebmail/openwebmail.pl','_top')">
</body>
</html>

HERE

   exit;
}
  • 本段是說, 若使用者輸入 http://your.host.name/openwebmail/ 強制轉到 https 通道




OpenWebmail資安--Fail2Ban

 首先,要先感謝國眾電腦阿寶哥介紹 Fail2Ban,以下的設定檔,大部是參考其提供的資料寫成。言歸正傳,之所以介紹 fail2ban 的原因在於網路上有很多網蟲會使用 network script 不斷的 try OpenWebmail 上使用者密碼,一旦被試中,立即變成垃圾信的跳板。因此就如同 denyhosts 之於 SSH 服務一樣,可以採用 fail2ban 來防止駭客透過 OpenWebmail 猜使用者密碼。

 Fail2ban 是一套使用 Python 開發,並以自由軟體授權(GPLv2)的資安軟體。它可藉由分析記錄檔,對「猜測密碼」的行為具有一定程度的阻擋作用。因此它適用於 ftp, SSH, mail 等系統。



B2D Server/OB2D sqz 作法

由於 B2D Server 採用最新的原始碼手動安裝,與 OB2D sqz apt-get 所安裝的版本一樣,所以除了安裝過程外,設定方式一致。

安裝

  • B2D Server 下載安裝
    • apt-get update
    • apt-get install python-dev
    • fail2ban 0.8.4
    • tar xjvf fail2ban-0.8.4.tar.bz2
    • cd fail2ban-0.8.4/
    • python setup.py install


  • OB2D sqz 安裝
    • root@dns:~# apt-get update
    • root@dns:~# apt-get install fail2ban


  • 執行 client 程式測試,若可正常跑出使用說明即代表安裝完成
    • fail2ban-client -h




設定

 要修改兩個設定檔,一個是 /etc/fail2ban/jail.conf --> 設定要啟用 openwebmail 的防禦;另一個是配套設定檔 /etc/fail2ban/filter.d/openwebmail-auth.conf ,這裡頭放了過濾的細則。

  • 編輯 /etc/fail2ban/jail.conf 並修改/新增(紅字部分)部分內容
# 以下這三個參數值,請自行斟酌修改

# 其意義為:在 findtime 秒之內,密碼輸入錯誤高達 maxretry 次以上時,便得阻擋 bantime 秒
bantime = 1200
findtime = 20
maxretry = 5

[openwebmail-auth]

enabled = true
filter = openwebmail-auth
# action 是指:符合狀況時,使用 iptables 來阻擋對方 ip adress
# sendmail-whois 是指:出現任何狀況(啟動/關閉/阻擋)時,皆以 email 通知 admin
action = iptables[name=openwebmail-auth, port=http, protocol=tcp]
      sendmail-whois[name=openwebmail, dest=me@example.com]
logpath = /var/log/openwebmail.log



  • 新增 /etc/fail2ban/filter.d/openwebmail-auth.conf

# Author: Cyril Jaquier
# $Revision: 569

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
#         host must be matched by a group named "host". The tag "<HOST>" can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P<host>\S+)
# Values: TEXT
#
failregex = \(<HOST>\) .* Password incorrect
            \(<HOST>\) .* no such user

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =




啟動/關閉

  • B2D Server
    由於 B2D Server 必須由原始碼安裝,因此無法套用至 ntsysv 或使用 service 指令來處理。
    • 啟動
      root@dns~# fail2ban-client start
    • 關閉
      root@dns~# fail2ban-client stop
    • 將下面指令寫入 /etc/init.d/rc.local 最後一行即可在開機時自動啟動
strFail2ban=$(netstat -nlp|grep fail2ban.sock)
if [ "$strFail2ban" == "" ]; then
   /usr/bin/fail2ban-client start
fi


  • OB2D sqz
    • 啟動
      root@dns:~# service fail2ban start
    • 關閉
      root@dns:~# service fail2ban stop
    • 永遠啟用,請執行 ntsysv 設定



OB2D e 系列作法

 本段只在 OB2D e 系列主機測試運行,其他 OB2D 平台作法可能有所不同。

安裝

  • apt-get update
  • apt-get install fail2ban
  • 執行 client 程式測試,若可正常跑出使用說明即代表安裝完成
    • fail2ban-client -h



設定

 要修改兩個設定檔,一個是 /etc/fail2ban/jail.conf --> 設定要啟用 openwebmail 的防禦;另一個是配套設定檔 /etc/fail2ban/filter.d/openwebmail-auth.conf ,這裡頭放了過濾的細則。

  • 編輯 /etc/fail2ban/jail.conf 並修改/新增(紅字部分)部分內容

# ssh 預設啟動阻擋, 建議關閉
 ...
[ssh]

enabled = false
port    = ssh
 ...
# 到檔尾新增下列參數
[openwebmail-auth]
enabled = true
port = http,https
filter = openwebmail-auth
logpath = /var/log/openwebmail.log
# 以下這三個參數值,請自行斟酌修改
# 其意義為:在 findtime 秒之內,密碼輸入錯誤高達 maxretry 次以上時,便得阻擋 bantime 秒
findtime =1200
bantime = 300
maxretry = 5


  • 新增 /etc/fail2ban/filter.d/openwebmail-auth.conf

# Author: Cyril Jaquier
# $Revision: 569

[Definition]

# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
#         host must be matched by a group named "host". The tag "<HOST>" can
#         be used for standard IP/hostname matching and is only an alias for
#         (?:::f{4,6}:)?(?P<host>\S+)
# Values: TEXT
#
failregex = \(<HOST>\) .* Password incorrect
            \(<HOST>\) .* no such user

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =


  • 測試設定檔 root@dns:~# fail2ban-client start
    • 此時會把啟動時所有的訊息列出,供網管人員檢視,若正常,以後才可改用 service fail2ban start
  • 網路檢查
    • 使用 netstat -nlp ,會發現 fail2ban.sock 的呈現
    • 使用 iptables -L 會發現多出 openwebmail-auth 的 CHAIN



啟動/關閉

 在 OB2D 上就與其他伺服套件一致,使用 ntsysv 來管理是否開機啟動,手動的方式如下:

  • 啟動
    root@dns~# service fail2ban start
  • 關閉
    root@dns~# service fail2ban stop



本文小檔案

題名: Title::Ob2d Openwebmail
作者: Creator::itsmw作者群
主題/關鍵詞: Subject::ob2d, openwebmail, https
簡述: Description::在 OB2D 上安裝 openwebmail
出版者: Publisher::台南縣教網中心 itsmw 計畫
其他參與者: Contributor::itsmw作者群
日期: Date::2010-4-20
文件類型: Type::08伺服器軟體
資料格式: Format::text/html
文件識別代號: Identifier::http://myip.tw/itsmw/index.php?title=Ob2d_openwebmail
來源: Source::http://www.debianadmin.com/install-and-configure-apache2-with-php5-and-ssl-support-in-debian-etch.html
語言: Language::zh-TW
相關資源: Relation::http://b2d-linux.com
文件涵蓋範圍: Coverage::Linux平台
版權規範: Rights::GNU Free Documentation License 1.2