目前分類:FreeBSD (119)

瀏覽方式: 標題列表 簡短摘要

這是篇記錄將 OpenWebMail 2.52 -> OpenWebMail 2.53 的升級過程

雖然只是套件的更新,但實際上系統做了許多套件的更動

另外看此篇前,建議先跳到第5點閱讀

1.前置備份作業

首先,要做好「備份」重要資料的工作,在這裡我備份了「系統設定檔」、「公用通訊錄」、「郵件規則」及「使用者個人設定」

系統設定檔 PathToOpenwebmail/openwebmail.conf

公用通訊錄在 PathToOpenwebmail/etc/addressbooks/global

郵件規則在 PathToOpenwebmail/etc/filter.book ( 補充一篇郵件規則的設定教學 From 工頭的家 )

使用者個人設定在 PathToOpenwebmail/users/ ( 整個目錄 )

2.開始升級套件

在此我的狀況描述一下,本來以為很單純只要下載 2.53 版本解開,放上去就可以執行了,但系統一直給我 500 的 Error

後來才發現,原來我並沒有 suidperl 這程式,經過查詢後,發現2種解決方式

第一種就是直接去更新 Perl ,但我並沒有採用這種方式

# cd /usr/ports/lang/perl5.8
# make ENABLE_SUIDPERL=yes
# make test
# make install clean
# rehash
# whereis suidperl
# ln -s /usr/local/bin/suidperl /usr/bin/suidperl

第二種就是用 portupgarade 更新 Perl,而我是採用這種

#portupgrade -rf "perl-5.8.*" -m "ENABLE_SUIDPERL=yes"

一做下去,不得了了 ... 有196個套件因相依性的問題都一併做了更新 -_-

連帶我原本的 Apache、PHP、Webmin 等套件都幫我升級到了最新的版本,好在更新過程沒有什麼 Error

不過唯一一個有出錯的就是 OpenWebMail 無法透過 portupgrade 做更新,因此我又再一次進入 /usr/ports/mail/openwebmail 安裝了一次

3.倒回原本資料

就把前置備份作業的檔案,再 Copy or Move 回原本應有的位置即可

4.升級後可能會發生的問題

目前碰到的問題,和潛艦這篇問題一模一樣,閱讀時會出現 UTF-8 的字眼,故可參考看看修改看看

5.注意事項

升級前務必做好備份的工作,這非常重要!最簡單的方式,就是直接備份原本 OpenWebMail 所有的目錄,避免升級至新版本後,有無法預期的錯誤時,還有舊版本可以用

ps. 這次升級是心血來潮,選在大家上班時間進行,比預期的時間延長了3小時,但還是在下班前完成了,下次可能要在離峰時段做,不然電話一直來還蠻刺激的

Bojack 發表在 痞客邦 留言(0) 人氣()

今天同事提到我們有些 Switch 的時間有些問題,看起來是系統沒有做到時間對時的動作

查了一下資料,其實我們自行架設一台 NTP Server,而所謂的 NTP 就是 Network Time Protocol

做時間校正有什麼好處呢?舉例而言,,若發生資安事件時,需查詢多項設備的 Log 進行比對時,Log 時間的正確性、一致性就十分重要了

搜尋了一下文章,便參考此篇 OpenNTPD-網路對時FreeBSD 上弄一台 NTP Server

安裝就下面2行而已

# cd /usr/ports/net/openntpd

# make install clean

接下來在 /etc/rc.conf 加入

openntpd_enable="YES"

設定一下 NTP Server 的參數,去編輯 /usr/local/etc/ntp.conf

listen on 192.168.1.1
server tick.stdtime.gov.tw
server tock.stdtime.gov.tw
server clock.stdtime.gov.tw
server watch.stdtime.gov.tw
server time.stdtime.gov.tw
server ntp.ntu.edu.tw

再修改 /etc/syslog.conf 加入下面這行,以方便我們看校正時的 Log

ntp.info /var/log/openntpd.log

當然別忘了要新增出 openntpd.log 這檔案出來

# touch /var/log/openntpd.log

好了之後就重新啟動 syslogd 這服務,並且也一起啟動 openntp

# /etc/rc.d/syslogd reload

# /usr/local/etc/rc.d/openntpd start

這樣 Server 的配置就完成了

而 FreeBSD Client 的部份僅需要在 ntp.conf 留一行 Server 的 IP 就好了,如下

server 192.168.1.1

至於像 Windows 要針對自己所架設的 NTP Server 對時的話,可下載 NTP 校時軟體 即可校正

 

Bojack 發表在 痞客邦 留言(0) 人氣()

PTTFreeBSD 版 看到的問題,[問題] 轉址?封包?重新導向?

Appleboy 提供了很好的解答,用 redir

可將主機開一個 Port 當作服務再 Redirect 到自己或是特定主機

# cd /usr/ports/net/redir

# make install clean

若希望開機時就執行,加入 /etc/rc.conf

redir_enable="YES"

# 此範例為假設連到A主機的80 Port 就轉到 B主機的 80 Port
redir_flags="--lport=80 --cport=80 --caddr=目的地IP"

 

Bojack 發表在 痞客邦 留言(0) 人氣()

裡面介紹了一些 DNS 安全防護的設定,可仔細閱讀一下

網管人 - 介紹forwarders、acl與view等設定以及網域名稱購買 中小企業DNS Server安全防護實作

另外看到也補充一篇網中人有關 view 實作的文章,這篇很值得推薦一讀

Bind9 View 底下的 master/slave 設定方案

 

Bojack 發表在 痞客邦 留言(0) 人氣()

http://blog.tenyi.com/2008/10/mailbox.html

 

Bojack 發表在 痞客邦 留言(0) 人氣()

今天發生的靈異現象,有二位學生常常反應登入 E-mail 時系統總是異常 ~

經查修發現是 /var/mail/A學生 這檔案的 Owner 不是 A學生,反而是 B學生,於是乎用 Chown -R A學生 /var/mail/A學生 就可以解決

事隔二天,B 學生來反應一樣的問題,經查修發現 /var/mail/B學生 這檔案的 Owner 居然是 A學生 ?! 若用 Chown -R B學生 /var/mail/B學生 可以解決B學生的問題

再回頭來看 A學生,怪了,怎麼 /var/mail/A學生 的 Owner 變成 B學生?

看起來這二個帳號有點錯亂了,看一下 UID 也正常沒有彼此重覆 ~ 備份好學生的資料後,決定重建看看

先刪了 A學生後,再去 ls -l /var/mail/B學生,出現了這樣的訊息「bad file descriptor」,顯然是哪兒出錯了

搜尋到 2003 這篇同樣為 bad file descriptor 的文章,看起來得用 FSCK 來修復看看,完成後再來重建這二位同學的帳號,Everything is fine !!

 

Bojack 發表在 痞客邦 留言(0) 人氣()

 最近找到的幾篇文章,記錄一下

  mod_evasive


Protecting Apache against DOS attack with mod_evasive

Apache mod_evasive - Evasive Maneuvers for Apache
 

Bojack 發表在 痞客邦 留言(0) 人氣()

cp /dev/null /path/to/file

Bojack 發表在 痞客邦 留言(1) 人氣()

這陣子校園的無線網路漫遊出了一些問題,他校來咱們學校使用無線網路都無法認證通過 ~


出錯的環節應該是在 Roaming Server 上,此外咱們學校也沒有一台「正式」的 Radius Server


因此這幾天花了一點時間研究跨校漫遊的架構,也決定在 FreeBSD 上重弄一台 FreeRadius 並且整合 OpenLDAP 的帳號,以達單一帳號之整合


下方是簡略的系統架構圖,目前我們學校是用 Aruba 的產品,AP 是 AP-61,Controller 則是用 6000



以上圖為例,當使用者連上 AP 後則會自動導向 AP Controller 並找 Radius Server 做驗證,若是本校學生則向 LDAP 做帳號密碼驗證,若是他校人員則會再透過 VPN Roaming 回該校做帳號密碼之驗證。


Bojack 發表在 痞客邦 留言(5) 人氣()

官網安全性公告 : FreeBSD-SA-08:06.bind

#freebsd-update fetch
#freebsd-update install
#/etc/rc.d/named restart

 [1] 潛艦 - FreeBSD-SA-08:06.bind - DNS 安全性更新
 
 [2] How To Patch / Upgrade BIND 9.x Under FreeBSD Operating System

Bojack 發表在 痞客邦 留言(0) 人氣()

昨天機房 UPS 突然跳電,二台 Mail Server 硬生生給它掛點,重開許多目錄都 mount 不起來,Try  了很久終於找到「正確」的方式

首先先開機進入 Single Mode ,以 FreeBSD 6 為例,開機選單按 4 即可進入 Single Mode

接下來進去後先按一下 Enter ,以我的系統為例,輸入下列指令

# mount -a
# df
/dev/da0s1a   10154158      70668   9271158     1%    /
devfs                1          1         0   100%    /dev
/dev/da1s1d 2055518950 1106617646 784459788    59%    /home
/dev/da0s1e   10154158    1037240   8304586    11%    /tmp
/dev/da0s1f   80729226   30448924  43821964    41%    /usr
/dev/da0s1d   81245672     800846  73945174     1%    /var

先確認有哪些目錄後,就一個一個 umount 做 fsck 修復的動作,修復完再 mount 回來
# umount /home
# fsck -y /home
# mount /home

若一開始連 / 都 mount 不起來的話,記得要先 fsck 根目錄才行唷!

為何說這是「正確」的方式,因為過去都沒有先 umonut 就直接 fsck,難怪一開始修完還是無法正常開機

花費了六個小時才完工,真是個辛苦的代價!

Bojack 發表在 痞客邦 留言(1) 人氣()

# cat /var/run/dmesg.boot | more

Bojack 發表在 痞客邦 留言(1) 人氣()

今天發生問題的 Log 如下

dumping master file : /etc/namedb/master/tmp-vMYZAVtS: open: permission denied

一開始解決的方式是把 /etc/named 都設為 777 ,但想想應該不對

查了一下,原來是目錄 Owner 的問題

FreeBSD 7 裡,DNS 預設的 Owner 應該是 bind ( 其它版本可能是 named ?! 還沒驗證過 )

因此正確解決方式應該為

# chown bind /etc/named/master

Bojack 發表在 痞客邦 留言(0) 人氣()

自從接觸到學校的 Mail Server 後,才知道 Mail Server 應該要如何管理、檔案要如何配置與設定。

近來思考到一個問題,以一台 Mail Server 來說,到底它可以支援到多少人呢?

根據 FreeBSD 使用手冊所言,以正常的使用情況之下,通常是 0 ~ 65535 個人,不過要扣掉一些系統預設的帳號,所以應當也有655xx個人數可以使用

實際上 man adduser 後,裡面是建議最好少於 32000!

Automatically generated or your choice. It must be less than 32000.

尤於學生的數量逐年增加,且隨著畢業後學生仍可繼續使用 E-mail 情況下,65535遲早有用完的一天。

解決的方法很簡單,在經費充足的情況下,只要有需要時,就買台 Mail Server 就好了!

今天大概研究了一下,實際上一台 FreeBSD 可支援的 UID 可以到 4294967295,就是快43億啦!

為什麼硬要超過65535的限制呢?因為 ... 我們即將導入 LDAP 了

未來所有的帳號都會往 LDAP 集中存放,所以 UID 在未來勢必會超過這限制!今天開玩笑說,若哪天我突然離職了,就表示有 Server 快出問題啦

只是官方是不建議超過這限制,因為若有其它相關服務有限定 UID 範圍時,這邊就會發生問題了 ~

為了驗證我的 Mail Server 未來會不會發生無法寄信或無法收信的情況,新增了一個 UID 為 12345678的 User,嗯,經過測試,看起來應該沒什麼問題 ~~~

BTW,LDAP 整合 Postfix 的文件還在整理 ... 希望近期還有動力整理出來。若有更好的解決方法也提供給我知道 ...

Bojack 發表在 痞客邦 留言(0) 人氣()

標題真不知該怎麼下比較好 ... 簡而言之,一般我們總會在 /etc/make.conf 下面設定欲更新 Ports 連線的站台

以台灣來說,目前總共有 15 個 Mirror Site ( 和美國一樣多! )

只是那麼多台要怎麼設定比較好?首先先去安裝 /usr/ports/sysutils/fastest_cvsup 這個套件
# cd /usr/ports/sysutils/fastest_cvsup
# make install clean

接下來下一行指令
# fastest_cvsup -c tw

最後系統就會告訴你前三名是哪三台了!

Bojack 發表在 痞客邦 留言(0) 人氣()

這一篇其實沒有什麼內容 ~ 只是學校最近正在做單一帳號整合,因此弄了一台 LDAP Server + LDAP Client 起來

所以目前正在跑的幾台 FreeBSD ,未來都要改向 OpenLDAP Server 做認證

這中間整合的過程說起來有些痛苦 ... 目前測試階段已經可以讓 FreeBSD 的 User 向 LDAP 做認證,Postfix 也可以向 LDAP 做認證,OpenWebMail 也是 ...

過一陣子再把這些筆記一篇一篇整理出來,中間改了一堆東西,不記下來下次一定全部忘光光

Bojack 發表在 痞客邦 留言(3) 人氣()

FreeBSD 的核心 (Kernel) 是用來控制所有硬體、系統資源分配等管理功能,在升級系統時偶爾也要重編一次 Kernel。最近試著將 6.0 upgrade to 6.3-STABLE,做一下簡單筆記。升級系統有一定風險,升級前一定要做好備份並且找其它機器多多練習!

首先要先找到 Kernel 在哪兒,通常都是在 /usr/src/sys/i386/conf 裡的 GENERIC。若有參考王俊斌先生的教學,會發現他有建議另外 copy 一個檔案來當作新的核心檔案,像我就是 copy 成 BOJACK。

# cd /usr/src/sys/i386/conf
# cp GENERIC BOJACK

在跨版本升級時,記得要先去編輯 /usr/share/example/cvsup/stable-supfile 這個檔案,可參考此篇 更新 FreeBSD Security Patch 的設定

# cd /usr/src
# make update
# make buildworld
# make buildkernel KERNCONF=BOJACK

接下來進入 single user mode ( 人就要到機器前面喔! )
# shutdown now
# make installkernel KERNCONF=BOJACK
# reboot

重新開機進去之後
# cd /usr/src
# mergemaster -p
# make installworld
# mergemaster
# reboot

[1] FreeBSD 使用手冊 - Chapter 22 更新、升級 FreeBSD
[2] PTT  FreeBSD 板 12667 kevinblue 發表之文章

Bojack 發表在 痞客邦 留言(0) 人氣()

以往安裝好 FreeBSD 第一件是就是要去安裝 cvsup

# cd /usr/ports/net/cvsup-without-gui;make install clean

每次都得等 CVSUP 安裝好後才可以更新 Ports

自從 FreeBSD 6.2 開始,系統就內建了 csup 這指令來更新 Ports,使用方法就和 cvsup 一模一樣,的確省去大幅時間在安裝 cvsup

要使用前記得搭配 /etc/make.conf 的設定喔 ( 如下 )

SUP_UPDATE=yes
SUP=/usr/bin/csup
SUPFLAGS=-g -L 2
SUPHOST=cvsup.tw.FreeBSD.org
SUPFILE=/usr/share/examples/cvsup/stable-supfile
PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile

MASTER_SITE_BACKUP?=    \
ftp://cvsup.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://cvsup2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://cvsup3.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}
WITHOUT_X11=yes

Bojack 發表在 痞客邦 留言(0) 人氣()

常常看到網路有人在問「請問我用 tarball 安裝xx時出了xx的錯誤 ... 」,接下來一定會看到有人說「為什麼不用 Ports ?」
大部份的 Service 我也都是用 Ports 來安裝,唯獨網頁伺服器這部份一直都是用 Tarball 的方式來裝,老實說雖然我可以很自由加入我的編譯參數,打造我想要的情況,但每每遇到升級就又是另一個工程,因為一切都要再來一次,看來要改變常用 Tarball 的習慣了...

===================================
1. 安裝 MySQL ~ 設定編碼為 unicode
===================================
# cd /usr/ports/databases/mysql50-server
# make WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_unicode_ci BUILD_OPTIMIZED=yes install clean

安裝好之後,我們要產生 MySQL 一開始所要用的 Database,預設會裝在 /var/db/mysql 裡 ( 若不想裝在預設的地方,安裝時下參數 --localstatedir=/path/to/your/location )
# rehash
# mysql_install_db

複製 MySQL 的系統設定檔到 /etc 下
# cp /usr/local/share/mysql/my-xxx.cnf /etc/my.cnf

設定 MySQL 資料庫權限,並且啟動它
# chown -R mysql:mysql /var/db/mysql
# echo “mysql_enable=yes” >> /etc/rc.conf
# /usr/local/etc/rc.d/mysql-server start

設定 MySQL Root 的密碼
# mysqladmin -u root password 新密碼

若是更新舊的版本,就稍微注意一下
Remember to run mysql_upgrade (with the optional --datadir=<dbdir> flag) the first time you start the MySQL server after an upgrade from an earlier version.

最後我們可以測試登入一下 MySQL,有出現以下畫面就 OK
# mysql -u root -p
Enter password: (請輸入密碼)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.60-log FreeBSD port: mysql-server-5.1.60
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

===================================
2. 安裝 Apache
===================================
# cd /usr/ports/www/apache22
# make install clean

===================================
3. 安裝 PHP
===================================
# cd /usr/ports/lang/php5
# make config install clean

記得要勾選此選項喔,不然 Apache 會不認得 PHP
APACHE     Build Apache module

再安裝 PHP Extensions
# cd /usr/ports/lang/php5-extensions
# make config install clean

建議加勾選 GD、MYSQL、MySQLI、MBSTRING、ZIP 和 ZLIB

===================================
4. 修改設定檔
===================================
首先設定 PHP 的設定檔,以後就是設定 php.ini 這檔
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

修改 Apache 的設定
# vi /usr/local/etc/apache22/httpd.conf

在最上面加入
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

找到
DirectoryIndex index.html
把它變成
DirectoryIndex index.php index.html index.htm

設定一開機啟動 Apache & MySQL
# vi /etc/rc.conf

加入這三行
apache22_enable="YES"
apache22_http_accept_enable="YES"
mysql_enable="YES"

在 /usr/local/www/apache22/data 裡新增一個檔案叫 index.php,內容如下
<?php phpinfo(); ?>

重開機,大功告成!

[1] Only gossips and gossips only - install Apache + PHP + MySQL from Ports

Bojack 發表在 痞客邦 留言(4) 人氣()

自從聽到學校要導入 ISMS,其中有一小部份就是要做 Log 的收集 ( 請人來稽核時需收集三個月以上的 Log ),至於要收集哪些 Log 呢?原則上是看單位自行定義,例如我要收集登入成功與否的 Log 或是 Mailserver 的 Maillog ... 前幾天在潛艦那看到這篇將所有機器的 syslog 集中到 syslog server 統一管理,大概測試了一下後是沒有問題。但如果說今天我想要收集不同台 Server 的 Log ,又希望能夠各自存放在自己的目錄該怎麼辦?

假設我的 Log Server 是 FreeBSD 6.2 ,想要收集二台 FreeBSD 的 Log,分別為 FreeBSD 4.11 authlog 及 FreeBSD 6.2 maillog,如下圖所示

Bojack 發表在 痞客邦 留言(1) 人氣()