網路開展事業或在網路創業賺錢的第一步:【架設24小時賺錢網站主機】比網頁設計更優先!

感謝您造訪 Linux主機伺服器架設技術基地。 你可進入替你架設主機.影片教你維護頁面,詳細瞭解Linux主機架設及相關技術維護影片教學(完整配套措施),有主機馬上可以架設網站營運,完全無限制!

租用不如自有主機!聰明的網站經營者都選擇架設Linux主機伺服器做為網站運作平台,因功能完整又強大,免費架站程式超多!完全沒有版權問題,超強『防駭客攻擊與入侵』及安全防護可以讓你無後顧之憂。

                    架設主機.影片教你維護: http://por.tw/linux/new-E_learning/index.php

Linux主機伺服器架設技術基地  維護團隊  敬上
瀏覽模式: 普通 | 列表

Linux主機電子郵件 Openwebmail + spamassassin 擋垃圾信的設定方法

Linux主機電子郵件 Openwebmail + spamassassin 擋垃圾信的設定方法

首先先到官方網站看安裝的方式:

http://openwebmail.com/openwebmail/download/redhat/howto/spam/howto.txt

(裡面的第 4. 可以略過)

再來才是重頭戲,也是我卡了好幾天才發現的地方:

在 openwebmail.conf 裡面的設定找到 enable_spamcheck 這段,照以下的參數做修改就可以了。(下面的例子也把學習廣告信的功能也打開)

spamcheck_pipe                  /usr/bin/spamc  -c -x -t60 -u @@@USERNAME@@@
learnham_pipe                   /usr/bin/sa-learn --local --ham
learnspam_pipe                  /usr/bin/sa-learn --local --spam
enable_spamcheck                yes
enable_learnspam                yes
spamcheck_source_allowed        all

之後再照官方的說明文件,以 sample-spam.txt 寄一封測試的廣告信,如果設錯的話,在 openwebmail.log 裡面就會出現:

Sun Oct 24 21:52:06 2004 - [31314] (192.168.1.1) neo - spamscheck - pipe error - spamd error, exit=2
55, ret=From root@xxx.com  Sun Oct 24 21:52:01 2004

成功的話就會出現:

Sun Oct 24 22:18:20 2004 - [31484] (192.168.1.1) neo - spamcheck - spam 1000.0/10 found in msg <2004
1024141811.CF83A19434C@xxx.com>

另外廣告信學習的功能如果設定成功的話,在使用者點選學習功能的時候,在 log 裡就會看到類似以下的訊息:

Sun Oct 24 22:25:13 2004 - [31634] (192.168.1.1) neo - learnspam - 1 learned, 1 examined

如果學習的功能起不來,就要確定 CmdLearn.pm 是不是非 root 權限的人可以讀到? 如果不行的話,就下 chmod 打開權限就可以了。如果不確定 CmdLearn.pm 路徑的話可以下 #locate CmdLearn.pm 找看看。

但是要注意的是目錄的權限也要開,以我的環境 CmdLearn.pm 在 RH9 的 RPM 預設是裝在:

/usr/lib/perl5/site_perl/5.8.0/Mail/SpamAssassin/

而我是乾脆把整個目錄都把 Group 跟 Public 讀取跟執行的權限打開:

chmod 555 /usr/lib/perl5/site_perl/5.8.0/Mail/SpamAssassin/ -R

這樣每個使用者就可以開始使用 OpenWebMail 的擋廣告信及學習廣告信的功能了。

本文引用來至:http://www.neo.com.tw/archives/339

Linux主機防火牆規則(Linux主機伺服器架設技術)

Linux主機防火牆規則(Linux主機伺服器架設技術)

Linux 安裝完畢,便已內建基本的防火牆規則,它是採 IPTABLES 來進行封包過濾的動作。
預設的規則列主要在防止外面主機連線至主機,被阻擋的服務有 FTP, SSH, Samba網芳等。


Linux主機防火牆基本原理:

設定檔

設定規則列位置及套用方式是 Linux 專用的方法,與其他 Debian OS 不同。

    * 使用工具: iptables
    * 規則列位置: /etc/rc.local
    * 修改後套用
      root@dns:~# service rc.local start
    * 註: rc.local 原本設計是為開機後要手動執行特定工作的設定區,Linux 把它借來放置防火牆規則列


Linux主機防火牆基本觀念:

    * IPTABLES = "/sbin/iptables"
      這一行是指:設定 IPTABLES 這個變數,以後只要看到 $IPTABLES 這個字串,就代表 /sbin/iptables 這個指令

    * $IPTABLES -F
      這一行是指:把之前所有已設過的規則清空(flush)


Linux主機防火牆封包進出主機方向:

在 /etc/rc.local 內之「設定 filter table 的預設政策」會看到三行設定值,如下:

###-----------------------------------------------------###
# 設定 filter table 的預設政策
###-----------------------------------------------------###
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

筆者將其簡化說明如下:

    * INPUT   --> 外面要進入主機的網路封包,主要用於規範外面如何連線至主機上的各種服務,與 NAT 內網無關
    * OUTPUT  --> 從主機出去的網路封包。
    * FORWARD --> 從 B 網卡轉至 A 網卡,規範於有 NAT 主機或透通式防火牆用途時,內轉外網路封包之控管。
    * 依上例,預設所有的封包皆開放,不阻擋


INPUT規則列的寫法


規則列的寫法,是把預設政策擺在最下面一行,例外規則擺上面,如下所例

# 只有本主機所屬網段才能連到這台主機的 ssh port 22
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 203.68.102.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j DROP


上面的規則列可以用下面這張圖來表達,預設 22 埠是不被連線的,但有四個綠點例外。
Iptables sample.png



進階處理
取消某個通訊埠的阻擋


只要把所有該 port (--dport)的規則列前面加上 # 變成註解,或直接刪除即可,以 FTP 示例如下:

# 只有本主機所屬網段才能連到這台主機的 FTP SERVER port 21
# $IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 21 -j ACCEPT
# $IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 21 -j ACCEPT
# $IPTABLES -A INPUT -p tcp --dport 21 -j DROP

# 只有本主機所屬網段才能連到這台主機的 ssh port 22
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 203.68.102.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j DROP




新增例外連線範圍

若要新增例外連線點,一定要加在相同埠值區塊最後一行之前(建議第一行),假設我們要加中華電信某個網段 59.127.0.0/16 至 Port 22 的例外點上,做法如下:

    * 編輯 /etc/rc.local (紅字為新增部分)
      root@dns:~# vi /etc/rc.local

# 只有本主機所屬網段才能連到這台主機的 ssh port 22
$IPTABLES -A INPUT -p tcp -s 59.127.0.0/16 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 203.68.102.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j DROP


    * 套用新規則
      root@dns:~# service rc.local start



新增某個通訊埠連線限制
以 TCP 1723 為例

假設主機有架 VPN 服務,經由「netstat -nlp」查詢後得知其使用的埠值為 TCP 1723。因此,為避免不具善意的網客隨便亂測密碼,我們可以在 /etc/rc.loal加上其連線限制。

假設允許的網段為

   1. 校內: 163.26.182.0/24
   2. 校外某點: 220.130.230.76

    * 編輯 /etc/rc.local,在 IPv4 的設定區(就是 /sbin/ip6tables -F 之上),依 port 值排序,大約在網芳區塊後面加上。
      root@dns:~# vi /etc/rc.local(紅字為新增部分)

 ......

$IPTABLES -A INPUT -p tcp --dport 139 -j DROP
$IPTABLES -A INPUT -p tcp --dport 445 -j DROP
$IPTABLES -A INPUT -p udp --dport 137 -j DROP
$IPTABLES -A INPUT -p udp --dport 138 -j DROP

$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 1723 -j DROP

/sbin/ip6tables -F
/sbin/ip6tables -A INPUT -p tcp --dport 21 -j DROP
/sbin/ip6tables -A INPUT -p tcp --dport 22 -j DROP
/sbin/ip6tables -A INPUT -p tcp --dport 23 -j DROP
 ......


    * 套用新規則列
      root@dns:~# service rc.local start



以 ICMP 為例

預設不讓外面網路任意點可以 PING 本主機,造就本主機不存在的假象,但選定數點開放偵測。假設允許的網段為

   1. 教網中心:163.26.200.0/24
   2. 校內: 163.26.182.0/24
   3. 校外某點: 220.130.230.76


    * 編輯 /etc/rc.local,在 IPv4 的設定區,Port 21 規則列上方。
      root@dns:~# vi /etc/rc.local(紅字為新增部分)

 ......


$IPTABLES -A INPUT -p icmp -s 163.26.182.0/24 -j ACCEPT
$IPTABLES -A INPUT -p icmp -s 163.26.200.0/24 -j ACCEPT
$IPTABLES -A INPUT -p icmp -j DROP

# 只有本主機所屬網段才能連到這台主機的 FTP server port 21
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 21 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 21 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 21 -j DROP
 ......


    * 套用新規則列
      root@dns:~# service rc.local start



防止 DoS 攻擊

筆者朋友主機最近遭到 DoS 攻擊,我本來以 iptables -m limit 來處理,但發現它會不分來源一律阻擋,這樣無辜的 IP Address 也受到限制,非常不公平,思考並搜尋了一個晚上,後來決定以限制單一 IP 同時連線數(connlimit),來處理此類攻擊,它會把單一 IP 來源同時要求服務(--syn)的連線數,限制在一定的數量以內,正常用人工手動點網頁,就算該網頁有 FrameSet ,應也不致於大過 12(自已用手拼命點得到的結論)才對。因此在設定此限制時,以每一個 IP 同時連線數不得超過 15 為參數,並進行後續的觀察。在設定後,經過一段時間的觀察,CPU 再也不會一直維持在 90-100% 高檔了,大約只會偶而跳至 60-70% ,一般皆在 10 % 以內。重點是它只 tcp-reset 有問題的來源,無辜的人仍可享受應有的速度。

設定方式:

    * 請確認 syslog 有下列參數
          o Linux 在 /etc/syslog.conf
          o Ubuntu 在 /etc/rsyslog.d/50-default.conf

# iptables 的記錄可以寫入 /var/log/kern.log
kern.*                          -/var/log/kern.log

    * 先把可能攻擊的 ip 寫入 /var/log/kern.log ,再把它的封包無聲的丟掉;以同時 15 個連線為限。

$IPTABLES -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 -j LOG --log-level 4
$IPTABLES -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 -j REJECT --reject-with tcp-reset

    * 分析攻擊可能來源
          o 螢幕觀看(以 tab 鍵分隔欄位)
            root@dns:~# cat /var/log/kern.log |awk '{print $1 "\t" $2 "\t" $9}'
          o 轉至純文字,以供下載至試算表統計
            root@dns:~# cat /var/log/kern.log |awk '{print $1 "\t" $2 "\t" $9}' > /root/dosatt.txt
            呈現的結果部分截取如下:

May    10    SRC=60.250.181.66
May    10    SRC=60.250.181.66
May    10    SRC=60.250.181.66
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.250.181.66
May    10    SRC=60.250.181.66

    * 鎖了吧,可疑者!
      若某個 IP 來源您不認識,但每天常常超過,人工點網頁的極限(同時超過 15 個連線數),可以再加以下規則,把它鎖了吧!


$IPTABLES -A INPUT -i eth0 -p tcp -s 60.250.xxx.xx --dport 80 -j DROP

內嵌式系統 Boot Loader 技術(Linux主機伺服器架設技術)

內嵌式系統 Boot Loader 技術(Linux主機伺服器架設技術)

在私人的內嵌式板子運行 GNU/Linux 系統已經變得越來越流行。
一個內嵌式 Linux 系統從軟體的角度看通常可以分為四個層次:

1. 引導加載程式。內含固化在韌體(firmware)中的 boot 代碼(可選),和 Boot Loader 兩大部分。

2. Linux 內核。特定於內嵌式板子的定制內核以及內核的啟動參數。

3. 檔案系統。內含根檔案系統和建立於 Flash 記憶體裝置之上檔案系統。通常用 ram disk 來作為 root fs。

4. 使用者應用程式。特定於使用者的應用程式。有時在使用者應用程式和內核層之間可能還會內含一個內嵌式圖形使用者介面。常用的內嵌式 GUI 有:MicroWindows 和 MiniGUI 懂。

引導加載程式是系統加電後運行的第一段軟體代碼。回憶一下 PC 的體系結構我們可以知道,PC 機中的引導加載程式由 BIOS(其本質就是一段韌體程式)和位於硬碟 MBR 中的 OS Boot Loader(比如,LILO 和 GRUB 等)一起組成。BIOS 在完成硬體檢驗和資源配置後,將硬碟 MBR 中的 Boot Loader 讀到系統的 RAM 中,然後將控制權交給 OS Boot Loader。Boot Loader 的主要運行任務就是將內核映像從硬碟上讀到 RAM 中,然後跳轉到內核的入口點去運行,也即開始啟動操作系統。

而在內嵌式系統中,通常並沒有像 BIOS 那樣的韌體程式(注,有的內嵌式 CPU 也會內嵌一段短小的啟動程式),因此整個系統的加載啟動任務就完全由 Boot Loader 來完成。比如在一個基於 ARM7TDMI core 的內嵌式系統中,系統在上電或復位時通常都從位址 0x00000000 處開始執行,而在這個位址處安排的通常就是系統的 Boot Loader 程式。

本文將從 Boot Loader 的概念、Boot Loader 的主要任務、Boot Loader 的框架結構以及 Boot Loader 的安裝等四個方面來討論內嵌式系統的 Boot Loader。

2. Boot Loader 的概念

簡單地說,Boot Loader 就是在操作系統內核運行之前運行的一段小程式。通過這段小程式,我們可以起始化硬體裝置、建立記憶體空間的映射圖,從而將系統的軟硬體環境帶到一個合適的狀態,以便為最終呼叫操作系統內核準備好正確的環境。

通常,Boot Loader 是嚴重地依賴於硬體而實現的,特別是在內嵌式世界。因此,在內嵌式世界裡建立一個通用的 Boot Loader 幾乎是不可能的。儘管如此,我們仍然可以對 Boot Loader 歸納出一些通用的概念來,以指導使用者特定的 Boot Loader 設計與實現。

1. Boot Loader 所支援的 CPU 和內嵌式板

每種不同的 CPU 體系結構都有不同的 Boot Loader。有些 Boot Loader 也支援多種體系結構的 CPU,比如 U-Boot 就同時支援 ARM 體系結構和MIPS 體系結構。除了依賴於 CPU 的體系結構外,Boot Loader 實際上也依賴於具體的內嵌式板級裝置的配置。這也就是說,對於兩塊不同的內嵌式板而言,即使它們是基於同一種 CPU 而構建的,要想讓運行在一塊板子上的 Boot Loader 程式也能運行在另一塊板子上,通常也都需要修改 Boot Loader 的源程式。

2. Boot Loader 的安裝媒介(Installation Medium)

系統加電或復位後,所有的 CPU 通常都從某個由 CPU 製造商預先安排的位址上取指令。比如,基於 ARM7TDMI core 的 CPU 在復位時通常都從位址 0x00000000 取它的第一條指令。而基於 CPU 構建的內嵌式系統通常都有某種類型的固態存儲裝置(比如:ROM、EEPROM 或 FLASH 等)被映射到這個預先安排的位址上。因此在系統加電後,CPU 將首先執行 Boot Loader 程式。

下圖1就是一個同時裝有 Boot Loader、內核的啟動參數、內核映像和根檔案系統映像的固態存儲裝置的典型空間配置結構圖。

3. 用來控制 Boot Loader 的裝置或機制

主電腦和目的機之間一般通過串口建立連線,Boot Loader 軟體在執行時通常會通過串口來進行 I/O,比如:輸出列印訊息到串口,從串口讀取使用者控制字元等。

4. Boot Loader 的啟動過程是單階段(Single Stage)還是多階段(Multi-Stage)

通常多階段的 Boot Loader 能提供更為複雜的功能,以及更好的可移植性。從固態存儲裝置上啟動的 Boot Loader 大多都是 2 階段的啟動過程,也即啟動過程可以分為 stage 1 和 stage 2 兩部分。而至於在 stage 1 和 stage 2 具體完成哪些任務將在下面討論。

5. Boot Loader 的操作模式 (Operation Mode)

大多數 Boot Loader 都包括兩種不同的操作模式:"啟動加載"模式和"下載"模式,這種區別僅對於開發人員才有意義。但從最終使用者的角度看,Boot Loader 的作用就是用來加載操作系統,而並不存在所謂的啟動加載模式與下載工作模式的區別。

啟動加載(Boot loading)模式:這種模式也稱為"自主" (Autonomous)模式。也即 Boot Loader 從目的機上的某個固態存儲裝置上將操作系統加載到 RAM 中運行,整個過程並沒有使用者的介入。這種模式是 Boot Loader 的標準工作模式,因此在內嵌式產品發佈的時侯,Boot Loader 顯然必須工作在這種模式下。

下載(Downloading)模式:在這種模式下,目的機上的 Boot Loader 將通過串口連線或網路連線等通信手段從主電腦(Host)下載檔案,比如:下載內核映像和根檔案系統映像等。從主電腦下載的檔案通常首先被 Boot Loader 儲存到目的機的 RAM 中,然後再被 Boot Loader 寫到目的機上的FLASH 類固態存儲裝置中。Boot Loader 的這種模式通常在第一次安裝內核與根檔案系統時被使用;此外,以後的系統更新也會使用 Boot Loader 的這種工作模式。工作於這種模式下的 Boot Loader 通常都會向它的終端使用者提供一個簡單的指令行介面。
標籤: 網路資訊

Linux主機伺服器架設技術(主機資料移轉)

Linux主機伺服器架設技術(主機資料移轉)

 主機的移轉要掌握以下幾點原則:

   1. 要注意原網頁應用軟體之安全性
      有些舊的軟體,可能已有漏洞,不要再把舊的版本轉移過來。
   2. 在移轉資料的同時,必須要注意,該資料的檔案權限。不要在完成資料移轉之後,一般 user 都「看」不到,只剩 root 一個才看得到。
   3. 可在兩台 Linux 之間直接使用 gFtp 軟體,以 SFTP2 (SSH2) 協定、 Root 身份,直接把各種資料從舊機器傳送到新機器上。

---------------------------------------------------------------------------------
  資料庫移轉

    * 資料庫位置:/var/lib/mysql
    * /var/lib/mysql/mysql 及 /var/lib/mysql/test 不可搬動
      除了上述這兩個資料夾不可搬動外,其餘在 /var/lib/mysql/ 底下的資料夾(資料庫),皆可以搬到新 Linux Server主機的 /var/lib/mysql 底下。
          因為 /var/lib/mysql/mysql 是 MySQL 的系統資料庫,它記錄了許許多多 MySQL Server 的設定參數。而且,舊版的 MySQL 與新版的 MySQL ,系統資料庫會有欄位定義上的不同,若您把舊版系統資料庫,直接覆蓋到新版之上,可能會造成 MySQL 啟動失敗。
          例外:若是新舊主機的 Linux/Linux Server 版本一致,理論上其 MySQL 版本應該也一致,就可以執行以下動作即可
         1. 直接把 /var/lib/mysql/ 底下所有資料夾複製到新主機上相同的位置上
         2. 不必再動 MySQL 使用者權限的部份
    * 複製到新主機時,要記得把 /var/lib/mysql 底下所有的資料夾(資料庫)權限,改為 mysql.mysql
      root@dns:~# chown -R mysql.mysql /var/lib/mysql/*
    * 在 Linux 底下可以使用 filezilla 以 SFTP 的協定,直接用 Root 身份進行搬動
      root@dns:~# apt-get install filezilla
    * 檢查所有 PHP+MySQL程式碼(如 ANN 公告欄...etc),把所使用到的 MySQL 使用者帳號密碼,新增至新主機的 MySQL 內
      使用 phpmyadmin,例: http://Your.ServerName/phpmyadmin
      在首頁上點:「權限」 → 「新增使用者」 (新增 MySQL 的使用者)

---------------------------------------------------------------------------------
網頁搬家

    * 網頁位置
          Red Hat 系列: /var/www/html
          Linux/Linux 系列: /var/www
          ☆.自行編譯安裝: /usr/local/apache2/htdocs
    * 可以使用圖形化工具 gFtp 以 SFTP 的協定,直接用 Root 身份進行搬動
          ☆.例1:從舊 Red Hat(含 Fedora) 之/var/www/html → Linux Server 之 /var/www
    * 也可用指令 scp
      例:以 root 身份把遠端的 /var/www/sfs3 複製回本機之 /var/www/sfs3 底下
      root@dns:~# scp root@your.old.host:/var/www/sfs3 /var/www
    * 注意:Linux 的 Apache2 Server 在送出網頁時,預設會採用 utf8 編碼,可是原主機上的網頁卻可能是 Big5 ,此時,我們必須把預設編碼解除,並加強其多國語言編碼之處理能力。
          ☆.解除送出網頁時的預設編碼
            編輯 /etc/apache2/conf.d/charset ,把 AddDefaultCharset UTF-8 變成註解

            # AddDefaultCharset UTF-8
          ☆.加強多國語言編碼處理能力,編輯 /etc/apache2/sites-available/default ,新增紅字部分。

<VirtualHost *:80>
      ServerAdmin webmaster@n10.domo.tnc.edu.tw
      ServerName n10.domo.tnc.edu.tw

      DocumentRoot /var/www/
      <Directory />
         Options FollowSymLinks MultiViews
         AllowOverride None
      </Directory>
 ...

使用者搬家(家目錄移轉)

    * 各使用者的家目錄,集中在 /home/ 底下
    * 用 gFtp 以 SFTP 的協定,直接用 Root 身份進行搬動(檔案權限,會被改為 root.root)


User 移轉

Linux 的 User 相關資料如下:

    * 各使用者資料夾 /home/*
    * 設定檔 /etc/passwd
    * 密碼檔 /etc/shadow
    * 群組檔 /etc/group
    * 群組密碼檔 /etc/gshadow

若是 Linux Server 或 Linux pureXXX 的舊主機,移轉至 Linux Server。把上列各檔,有關使用者的部份,「複製」/「貼上」至新主機同名檔案的檔尾部份。以 /etc/passwd 舉例如下:

   1. 把舊主機 passwd, shadow, group, gshadow 傳輸至新主機 /root 底下
   2. 使用文字編輯器,如 gedit 打開 /root/passwd ,複製舊主機上的使用者資料,貼至新主機的 /etc/passwd 的檔尾處(不要動到原本的資料)。


歸還其原有權限

    * 最後,要把權限還給該使用者
      root@dns:~# chown -R user.user /home/user
          ☆.註:以上 chown 要在下面 User 移轉完畢,才可以處理
    * 若人數過多,這裡有快速做法
      http://myip.tw/itsmw/index.php/Home_chowner



網頁資料庫編碼轉換

本文介紹如何在 Linux Server 下把 Big5 碼的網頁暨其資料庫轉成 UTF8 碼,並轉至 Linux 上的資料庫。當然,這並不是必要性動作,本文在此只是提供一個作法給大家參考而已,並不鼓勵大家把所有網頁暨其資料庫轉碼。


資料庫轉碼

在此,筆者以自己所寫的一支 Big5 小程式「學生資訊檢測練習區」來擔任本次的範例,它內含三支 php 程式碼以及一個資料庫(兩張表)。


Linux Server 上把資料庫轉出

    * 把整個 Big5 碼資料庫,在 Linux Server 上用 phpmyadmin 轉出成 SQL 檔
          ☆.Step1 在 phpmyadmin 首頁上點選「輸出」

          ☆.Step2 選妥所要下載的資料庫 --> 轉成 sql 檔

    * 預設會存成 localhost.sql , 我們把它改成 compuexam.sql,並放到 /root 底下
      root@dns:~# mv localhost.sql compuexam.sql
    * 預處理 compuexam.sql 把文字檔內可能會出現錯誤,如「'成功\'」變成「'成功'」
      root@dns:~# vi compuexam.sql
      在 vim 內下取代命令:「:%s/\\'/'/g」後存檔


    * 下載 ols3 提供的轉碼工具
      root@dns:~# wget http://myip.tw/itsmw/images/f/fe/B2U.zip

    * 執行轉碼作業

   1. 把 B2U.zip 解壓
      root@dns:~# unzip B2U.zip --> 會解出執行檔 bg5-db2-utf8
   2. 轉碼至新資料庫 new_ce
      root@dns:~# ./bg5-db2-utf8 compuexam.sql new_ce mysql_passwd
      註:使用法為「./bg5-db2-utf8 已匯出的sql檔路徑檔名 新的資料庫名稱 MySQL管理密碼」



轉入 Linux Server 上的 MySQL 資料庫

    * 由上述方式製作出的資料庫,其實是預設採用 latin1 字集定義,但骨子裡放的是 utf8 碼的資料庫,使用官方版的 phpmyadmin 會無法正確顯示其文字,不過可以改用筆者修改的 phpMyAdmin解決此一問題。
          ☆.下載並放至 /var/www
            root@dns:~# cd /var/www
            root@dns:/var/www# wget http://myip.tw/itsmw/images/f/fb/PhpMyA.zip
            root@dns:/var/www# unzip PhpMyA.zip
          ☆.瀏覽方式   http://your.Linux.server/phpMyA
          ☆.進入首頁後,先選妥右側語言為: Language: 中文utf8 -- Chinese traditional(utf8)
    * 再來,只要把 Linux server 上 /var/lib/mysql/new_ce 整個資料夾搬至 Linux 上的 /var/lib/mysql 底下,並 chown 為 mysql.mysql 便完成 utf8 資料庫的製作


進一步轉成符合 MySQL 5.x UTF8 編碼校對之資料庫

接著,我們可以再利用筆者的 phpMyA 輸出 new_ce 資料庫,改寫部分內容,再用官方 phpmyadmin 匯入成標準 MySQL 5.x 版接受的 UTF8 編碼資料庫。以下操作是在 Linux Server 上,作法如下:

    * new_ce 資料庫前置處理

   1. 用 phpMyA 把 new_ce 資料庫輸出成 localhost.sql
   2. 改寫 localhost.sql ,把以下這兩行刪除

      CREATE DATABASE `new_ce`;
      USE new_ce;
   3. 把所有建立資料表最後一行 DEFAULT CHARSET=latin1 改成 DEFAULT CHARSET=utf8

      CREATE TABLE IF NOT EXISTS `table name` (
       ...
       ...
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ...;


    * 使用官方 phpmyadmin 建立 newutf8 資料庫,示例如下


    * 再點選 newutf8 資料庫 --> 【載入】 --> 選 localhost.sql --> MySQL相容模式要選用 MYSQL40 --> 【執行】

    * 這樣就可以使用官方 phpmyadmin 來檢視該資料庫,不過本動作可能會導致您舊 PHP 程式碼(SQL 語法太舊,沒加入語系校對)無法讀取該資料庫,所以請慎思是否要這麼做!

網頁轉碼

依本例,不止要搬動 compuexam 為 new_ce 資料庫,還要把其應用程式:/var/www/compuexam/ 底下所有的 PHP 程式轉碼為 utf8 才算完成。

    * 先從 Linux Server 把 /var/www/compuexem 複製至 Linux Server 的 /var/www/compuexam
    * 在 Linux Server 的 /var/www/compuexam 下建立以下之 shell 檔
      root@dns:~# vi /var/www/compuexam/b2utf8.sh

#! /bin/sh
for i in *.php; d☆.\
   ech☆."$(iconv -f big5 -t utf8 $i)" > $i
done

    * 在 /var/www/compuexam 執行該 shell
      root@dns:~# cd /var/www/compuexam
      root@dns:/var/www/compuexam# chmod +x b2utf8.sh
      root@dns:/var/www/compuexam# ./b2utf8.sh


    * 修改所有的 PHP 程式碼,把語言宣告改成 UTF-8,如下所示

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />



注意資料庫密碼

    * 每支 PHP+MySQL 的 PHP 程式碼,必定會有設定資料庫密碼的程式碼,因此,從 Linux Server 轉至 Linux 後,要打開該程式檢視 MySQL 的密碼是否正確

    * 另外, PHP 程式碼之資料庫名稱設定也要記得修改

    * 若一切就緒,就可以測試瀏覽

遠端備份(Linux主機伺服器架設技術)

遠端備份(Linux主機伺服器架設技術)

rSync 是遠端備份資料的機制,而且這個機制是跨平台的,也就是不限作業系統類型。
建議的作法是,用 Linux 架一台 rSync Server ,供其他 Linux Server 或 Windows 平台備份資料。


在架設上,Linux Server 的方式最簡易,但由於其預設檔名編碼為 Big5 碼,鑑於相容,筆者建議採用 Linux 系列來架設。
但是 Linux 上沒有 Linux server 的 rysnc 快速設定工具, 所以若要把 Linux 當成 rsync server, 就得依下面步驟來處理。
rSync伺服器

    * 修改 /etc/default/rsync
      RSYNC_ENABLE=false → 改成RSYNC_ENABLE=true


    * 到現有的 Linux server 產生伺服器設定檔 /etc/rsyncd.conf 及 /etc/rsyncd.secrets 複製到 Linux 的 /etc 底下。再依以下 rsyncd.conf 示例中所示, 必須建立 /mybk1 資料夾來放備份資料。
          o rsyncd.secrets 的內容為「帳號:密碼」, 示例如下

            my_backup:my_backup_passwd

          o 權限改為 400
            user@Linux:# sudo chmod 400 rsyncd.secrets

          o rsyncd.conf 檔示例

log file = /var/log/rsyncd.log
    [mybk1]                   
    path = /mybk1             
    auth users = my_backup    
    uid = root                
    gid = root                
    secrets file = /etc/rsyncd.secrets
    read only = no

    [mybk2]            
    path = /mybk2             
    auth users = my_backup    
    uid = root                
    gid = root                
    secrets file = /etc/rsyncd.secrets
    read only = no

註:[mybk1]是區段名稱, 從[mybk1]至read only = no為一區段, 而一個設定檔, 允許設定多個區段

    *
          o 建立 /mybk1 及 /mybk2 資料夾
            user@Linux:# sudo mkdir /mybk1
            user@Linux:# sudo mkdir /mybk2



rSync客戶端

    * 到現有的 Linux server 產生客戶端執行檔 bk-Linux.sh 及 rsyncd.secrets 丟至 rsync 客戶端電腦上的 /root 底下, 這兩個檔案的擁有者必須為 root , 而且必須 su 至 root 權限來執行
          o Client 端的 rsyncd.secrets 必須注意兩件事
         1. 內容只含密碼

            my_backup_passwd

         2. 檔案權限必須設定為 400 (-r--------)
          o Client 端的 bk-Linux.sh 內容示例如下

#! /bin/sh

/usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /var/www my_backup@rsync.server::mybk1

註:把 /var/www 備份至 rsync.server這台主機的 mybk1 區段

    * 對 bk-Linux.sh 賦予執行權
      user@Linux:# sudo chmod +x /root/bk-Linux.sh

    * 執行備份動作
      user@Linux:# sudo /root/bk-Linux.sh

    * 設定 crontab , 定時執行 /root/bk-Linux.sh
      user@Linux:# sudo crontab -e

      0 3 * * * /root/bk-Linux.sh

      註:每日 3 時執行 bk-Linux.sh 以備份資料


在 Windows 用 rsync 備份至 Linux 上的 rsync server

    * 請參考下列網址:
      http://myip.tw/itsmw/index.php/DeltaCopy

rSync還原

    * 不論您的 client 端為何種 OS,一律建議使用 FileZilla,使用 SFTP 模式取回即可。請參考下面動畫示範:
      http://myip.tw/Linuxdoc/LinuxBase/m6_filezilla_sftp.htm

DNS雙向解析服務(Linux主機伺服器架設技術)Domain Name Server

DNS雙向解析服務(Linux主機伺服器架設技術)Domain Name Server

本文並不在介紹從無到有寫出 dns 完整的設定檔,主要還是先利用 Linux/Linux Server 提供的工具,產生基本設定檔,再進一步解釋其中涵義,以及如何修改新增/修改主機名稱對映。

DNS開啟Port

    * TCP anynet 53
    * UDP anynet 53
    * TCP localhost 953 (管理指令用)

全球DNS管理

DNS是 Domain Name Server 的簡稱,它的功能在於把 IP(v4 and v6) 位址與英文網址建立起對照表,以提供雙向解析的服務。
在 InterNet 上,所有的 DNS Server 是以階層的方式,層層授權,層層管理。例如:「edu.tw」是教育部電算中心的網域,電算中心會為其架 DNS Server,管理所有的學術網路。
由此,教育部的 DNS Server 授權縣教育網路中心的 DNS Server 自行管理【tnc.edu.tw】的網域。
最後再由 dns.tnc.edu.tw 授權各校的 DNS Server 自行管理學校網域。更詳細的資料,請參考上面所列兩篇文章。

 Domain Name 皆是由 dns.tnc.edu.tw (163.26.200.1) 授權出去的【網域】,所以務必要建置 DNS Server 啟用該網域。
至於特定用途的網站,才由 dns.tnc.edu.tw 指定網址。如:《 xoops.tnc.edu.tw 》、《 x.tnc.edu.tw 》、《 freesf.tnc.edu.tw 》等,皆在 163.26.200.1 中直接指定網址。

安裝與初步設定
DNS 查詢指令簡介
Client DNS 查詢過程

在介紹查詢指令前,我們要先了解什麼是 DNS Cache,而它又和 Client 的 DNS 有關,因此本文在此做一簡單說明。
Client 端的 IP查詢過程

別台 DNS Server 會 cache 學校 dns 記錄,因此 dns server 若做任何變動,Client 電腦並不會立即知道(被 cache 騙了)。
因此,若有變更 dns 記錄,除了要修改 serial 外,想查詢是否設定成功,只得對自己查,這也是為何 dig 指令後面必須加上 @163.26.xxx.xxx 參數的原因。

在 Linux 上常用的 DNS 查詢指令

    * nslookup dc1es.tnc.edu.tw
      直接查詢 dc1es.tnc.edu.tw 的 IP 位址
    * dig dc1es.tnc.edu.tw
      查詢 dc1es.tnc.edu.tw 網域狀況,詢問的對象視 /etc/resolv.conf 內 nameserver 的設定值而異
    * dig @163.26.200.1 dc1es.tnc.edu.tw
      向 163.26.200.1 查詢 dc1es.tnc.edu.tw 網域狀況
    * dig @163.26.200.1 dns.dc1es.tnc.edu.tw AAAA
      向 163.26.200.1 查詢 dns.dc1es.tnc.edu.tw 的 IPv6 網址
    * dig -x 163.26.182.1
      查詢 163.26.182.1 的反解記錄
    * dig @163.26.200.1 -x 163.26.182.1
      向 163.26.200.1 查詢 163.26.182.1 的反解記錄
    * dig @163.26.200.1 -x 2001:288:75a6::1
      向 163.26.200.1 查詢 IPv6 2001:288:75a6::1 的反解記錄
    * dig @163.26.182.1 dc1es.tnc.edu.tw MX
      向 163.26.182.1 查詢收件人為 xxx@dc1es.tnc.edu.tw 的信件會轉送至何處
    * dig @163.26.182.1 dns.dc1es.tnc.edu.tw MX
      向 163.26.182.1 查詢收件人為 xxx@dns.dc1es.tnc.edu.tw 的信件會轉送至何處
    * dig @168.95.1.1 yahoo.com NS
      向 168.95.1.1(中華電信 DNS Server) 查詢 yahoo.com 網域是由那些 Name Server 來服務



DNS Server套件

Linux/Linux Server 已預設裝妥 Bind9 這一套 DNS Server 套件及其設定工具 ols3dns ,使用其產生器,所製造出的設定檔結構解釋如下:

    * 設定檔位置在 /etc/bind/ 底下


    * 無限制遞迴查詢(預設值)
          主控檔: named.conf
            其功能在於指定各網域(Zones)的設定檔名稱暨位置,以下各設定檔是以 ols3dns 產生器為例來進行說明,實務上,檔名只要在 named.conf 定義清楚即可,不一定要遵循下面的範例

rndc.key     

遠端控制(Remote Name Daemon Control)金鑰

RNDC詳解: http://dns-learning.twnic.net.tw/bind/security.html#two
named.ca     最頂層 dns server 定義,在 named.conf 設定時必須使用 type hint 來指定
db.xxxx.tnc.edu.tw     IPv4/IPv6共用正解檔
db.163.26.xxx     IPv4反解檔
2001.288.75xx.rev     IPv6反解檔
localhost     IPv4/IPv6 localhost 正解檔
rev-127.0.0     IPv4 localhost 反解檔
rev.local6     IPv6 localhost 反解檔


    * 限制遞迴查詢設定檔結構
          主控檔: named.conf + auth_zones.conf
            named.conf 主內容在限制遞迴查詢,而可查詢的網域改放在 auth_zones.conf
          其他檔案與上面一致


    * port 值: TCP/UDP 53 ; localhost: 953
    * 手動啟動 | 停止 DNS 服務: /etc/init.d/bind9 start | stop | restart


設定檔內關鍵用語解說

筆者整理了 Bind9 各設定檔常出現的關鍵用語如下,請參考:
$TTL 86400     對方主機查詢完畢,其值要保留(快取)的秒數,例:86400秒
$ORIGIN     宣告本設定檔所列之所有記錄出自於那個網域,最後必須以「.」做結尾,否則會自動再加上網域名稱
$ORIGIN subnet     授權自己的子網域給另一台 DNS Server
@     代表「Zone」

以 db.xxx.tnc.edu.tw 設定檔為例,【@】指的是 xxx.tnc.edu.tw。
以 localhost 設定檔為例,【@】指的是 localhost
IN SOA     開始授權(Star of Authority),後面接了兩個參數是指「本 zone 的管理主機名」及「本 zone 的管理者」
IN NS     負責的 Name Server 主機名稱為何?
IN A     為主機名稱賦予 IPv4 位址
IN AAAA     為主機名稱賦予 IPv6 位址
IN CNAME --> 別名     例: www,ftp,s1...皆是 dns 的分身
IN PTR --> 反解     某 IP 所代表的主機名稱
IN MX -->Mail eXchange     轉信,例:
    mail.tw IN MX 0 spamgw.tw
    mail.tw IN MX 10 mail.tw

說明如下:

   1. 把【xxx@mail.tw】信件先轉給【spamgw.tw】(註: 有兩筆 MX 記錄時,數值低的有較高的優先權)
   2. 【spamgw.tw】收了信之後(並處理之),發現原來指定收信人是在【mail.tw】,因此再把它轉回給【mail.tw】
   3. 如果 spamgw 故障,理論上會送至第二優先 mail.tw(它自己),但依游戲規則,就算是 mail.tw 它自己,它還是會去問 dns.tw ,信件 xxx@mail.tw 的 MX 為何?結果 dns.tw 說,要優先送 spamgw.tw。簡言之,設了 MX 之後,最優先的那台主機一定不可以故障,否則會收不到信件

    * 注意:mail 與 dns 同位址時,不可以採用 CNAME 的設法,一定要用 IN A,才可正常收發信件

限制遞迴查詢 vs 不限制

限制遞迴查詢的意思是,本 DNS Server 只回答所轄網域的問題,其餘不答。不限制的話,就沒有上述限制。例如:當一台 client 向 DNS Server(163.26.182.1)詢問 tw.yahoo.com 時,若有做限制,那麼它不會回答,因為 tw.yahoo.com 不歸 dc1es.tnc.edu.tw 所管。反之,若不做任何限制,它會依其根設定檔(named.ca)一層層往上問,幫 client 找到 tw.yahoo.com 的 IP Address 並回覆之。

可是,貴校可能已設妥限制,而且學校的電腦也都以本校的 DNS Server 為查詢主機,為何還是可以查得到 tw.yahoo.com ?那是因為在 named.conf 內的:「acl allow_clients { 127.0.0.1; 163.26.182.0/24; 2001:288:75a6::/48; };」設定中有說明,要開放給校內的機器查詢。

限制遞迴查詢雖然會造成一些不方便,但它會有較高的安全性,尤其是對 ARP 類病毒偽造網址攻擊,有較高的防禦能力。不過未來若 IPv6 only 實施(沒有 ARP 機制,改用 fe80:...機制),其實限制遞迴查詢,就比較沒有存在意義(目前是 IPv4 與 IPv6並存)。


Linux Server初步設定方法

有兩個方式來設定 DNS 參數

   1. 在設定管理密碼(Linux-setup)時勾選【這台主機要擔任 DNS Server 嗎 ?】,就會在 /etc/bind/ 底下產生不限遞迴查詢的相關設定檔
      注意:本方式僅適用於裝完 Linux Server,第一次登入時。因為 Linux-setup 本身會改變很多設定值(不只 dns),若機器已順利運作多時,勿用。
   2. 直接在終端機介面下指令

   1. 不限遞迴查詢: root@dns~# ols3dns
   2. 限制遞迴查詢: root@dns~# ols3dns --no-recursive
   3. 以大成國小為例
      #-----------------------------------------------------#

      # 臥龍小三 工 具 箱 (1.0.7Linux) Copyright 2006 OLS3  #
      # DNS 自動產生器 1.0.7Linux for Linux          #
      # All rights Reserved.                #
      #-----------------------------------------------------#

      請輸入網域名稱? 例如: jmjh.tnc.edu.tw
      dc1es.tnc.edu.tw
      請輸入IP前三個數字? 例如: 163.26.167
      163.26.182
      請輸入第一台主機的第四個IP?
      例如: 163.26.167.1 的 1
      1
      您要架設第二部 DNS 嗎?(Y/N)
      N

      Done!


Linux初步設定方法

與 Linux Server 一樣,有兩個方式來產生基本的 DNS 設定檔

   1. 在設定管理密碼(Linux-csetup-utf8/Linux-csetup)時,在最後一個問題【這台主機要擔任 DNS Server 嗎 ?】回答「Y」,就會在 /etc/bind/ 底下產生不限遞迴查詢的相關設定檔。
      注意:本方式僅適用於裝完 Linux Server,第一次登入時。因為 Linux-setup 本身會改變許多設定值,若機器已順利運作多時勿用。
   2. 先把終端機的字元編碼改為 Big5 ,再下指令

   1. 不限遞迴查詢: root@dns~# ols3dns
   2. 限制遞迴查詢: root@dns~# ols3dns --no-recursive
   3. 設定過程與上例一樣,請參考上面文件



進階設定
IPv4 的正反解
新增一筆IPv4位址正解

要新增一筆正解記錄只要在正解檔「 /etc/bind/db.xxx.tnc.edu.tw 」內,加上一筆 IN A 的記錄,再把 serial n加1,並重新啟動 DNS Server 即可。 下文,筆者以新增 spamfilter.dc1es.tnc.edu.tw 網址,指向 163.26.182.250 IPv4 位址為例進行解說。

   1. 編輯 /etc/bind/db.xxx.tnc.edu.tw

      $TTL 86400
      @  IN  SOA dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (
                 2006030801 ; 這個數字是序號(serial no.) , 每修改一次就要加 1 號
                 86400 ; refresh
                 1800 ; retry
                 1728000 ; expire
                 1200 ; Negative Caching
                 )
         IN   NS dns.dc1es.tnc.edu.tw.
      dns IN A 163.26.182.1
      @ IN MX 0 mail.dc1es.tnc.edu.tw.
      ;網域名稱 dc1es.tnc.edu.tw 也要賦予一組 IPv4 位址
      dc1es.tnc.edu.tw. IN A 163.26.182.1
      ;
      s1     IN   CNAME dns.dc1es.tnc.edu.tw.
      www    IN   CNAME dns.dc1es.tnc.edu.tw.
      ftp    IN   CNAME dns.dc1es.tnc.edu.tw.
      proxy  IN   CNAME dns.dc1es.tnc.edu.tw.
      ;
      mail  IN  A  163.26.182.1
      s2    IN  A  163.26.182.2
      nt    IN  A  163.26.182.3
      s4    IN  A  163.26.182.4
      s5    IN  A  163.26.182.5
      nat   IN  A  163.26.182.234
      ;為 spamfilter 加上 IN A 的記錄
      spamfilter IN A 163.26.182.250  
      註1:正反解設定檔是用「;」來標示註解文字,不是「#」,請勿用錯
      註2:每一行都要靠左,除非本行是上一行的附屬設定

   2. 重新啟動 bind9
      root@dns:~# service bind9 restart
   3. 檢查重新啟動的訊息是否正常
      root@dns:~# tail -50 /var/log/syslog



IPv4反解問題


IPv4正解,可以由上層 DNS Server 授權某任一 IPv4 位址來擔任 DNS 工作,不受 IPv4 網段影響。但反解就不行,因為它受到「至少要一個完整 C Class 網段」的限制。因此,所有分配到 163.26.xxx.1 的學校,可以幫其他前三個數字一致的機器做反解,但 163.26.xxx.129 就不行。這也是為什麼,我們可以向中華電信申請 dns 名稱正解管理權,但反解就不行,只能靠它幫忙代管的原因。

基於上述原因,若貴校有非反解不可的原因,又不在 163.26.xxx.0 網段上,可以連絡教網中心主任協助處理。至於 IPv6 的部分,因為所配發網段皆是完整的 prefix 48 ,所以不會有此一困擾。不過如果貴校如果剛好就分配到 163.26.xxx.0 網段,則可以經由編輯 /etc/bind/db.163.26.xxx 來新增一筆 IPv4 反解記錄。
$TTL 86400

@   IN   SOA   dns.dc1es.tnc.edu.tw.   admin.dns.dc1es.tnc.edu.tw. (
      2000082620  ; serial 要加 1
      86400  ; refresh
      1800  ; retry
      1728000  ; expire
      1200  ; Negative Caching
      )
      IN   NS   dns.dc1es.tnc.edu.tw.

1     IN   PTR   dns.dc1es.tnc.edu.tw.
2     IN   PTR   s2.dc1es.tnc.edu.tw.
3     IN   PTR   nt.dc1es.tnc.edu.tw.
4     IN   PTR   s4.dc1es.tnc.edu.tw.
5     IN   PTR   s5.dc1es.tnc.edu.tw.
234   IN   PTR   nat.dc1es.tnc.edu.tw.
250   IN   PTR   spamfilter.dc1es.tnc.edu.tw.


手動增加 IPv6 的正反解
沒限制遞迴查詢(預設)
修改 named.conf

把紅字的部分, 加至 /etc/bind/named.conf
options {

     directory "/etc/bind";
     allow-transfer {
        163.26.182.2; // Secondary DNS
     };
     listen-on-v6 { any; };
};

logging {
     category lame-servers{null;};
};

zone "." {
     type hint;
     file "named.ca";
};

zone "localhost" {
     type master;
     file "localhost";
};

zone "0.0.127.in-addr.arpa" {
     type master;
     file "rev-127.0.0";
};

zone "dc1es.tnc.edu.tw" {
     type master;
     file "/etc/bind/db.dc1es.tnc.edu.tw";
};

zone "182.26.163.in-addr.arpa" {
     type master;
     file "db.163.26.182";
};

// ::1 的反解檔
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa."{
     type master;
     file "rev.local6";
};

// 2001.288.750b 的反解檔
zone "6.a.5.7.8.8.2.0.1.0.0.2.ip6.arpa." {
     type master;
     file "2001.288.75a6.rev";
};


繼續修改 db.xxx.tnc.edu.tw

$TTL 86400
@  IN  SOA dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (
           2006030802 ; serial 要加 1
           86400 ; refresh
           1800 ; retry
           1728000 ; expire
           1200 ; Negative Caching
           )
   IN   NS dns.dc1es.tnc.edu.tw.
dns  IN  A    163.26.182.1
     IN  AAAA 2001:288:75a6::1
;上面 IN AAAA 前面一定要留空白, 代表是要繼續設 dns 主機的 AAAA(IPv6) 記錄
;
@ IN MX 0 mail.dc1es.tnc.edu.tw.
;
dc1es.tnc.edu.tw. IN A 163.26.182.1
      IN  AAAA  2001:288:75a6::1
;上面兩行指「網域名稱 dc1es.tnc.edu.tw 也賦予一組 IPv4 及 IPv6 位址」
;
s1     IN CNAME dns.dc1es.tnc.edu.tw.
www    IN CNAME dns.dc1es.tnc.edu.tw.
ftp    IN CNAME dns.dc1es.tnc.edu.tw.
proxy  IN CNAME dns.dc1es.tnc.edu.tw.
;
mail   IN  A     163.26.182.1
       IN  AAAA  2001:288:75a6::1
s2     IN  A     163.26.182.2
nt     IN  A     163.26.182.3
s4     IN  A     163.26.182.4
s5     IN  A     163.26.182.5
nat    IN A  163.26.182.234
       IN AAAA  2001:288:75a6::234  
spamfilter IN A  163.26.182.250  
;經過修改 spamfilter.dc1es.tnc.edu.tw 便會有 IPv4 及 IPv6 兩筆記錄


修改 localhost 新增 ::1 正解

$TTL 86400
@    IN   SOA    dns.dc1es.tnc.edu.tw.    admin.dns.dc1es.tnc.edu.tw. (
      2000082620 ; serial 要加 1
      86400 ; refresh
      1800 ; retry
      1728000 ; expire
      1200 ; Negative Caching
      )
     IN   NS   dns.dc1es.tnc.edu.tw.
;
localhost. IN  A    127.0.0.1
           IN  AAAA  ::1

    * 註:紅字為修改之處



建立 ::1 及 2001.288.75xx.rev 反解檔

    * 建立 ::1 IPv6 的 localhost 反解
      root@dns~# vi /etc/bind/rev.local6

$TTL 86400
@ IN  SOA  dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (1 15m 5m 30d 1h)
    IN   NS  dns.dc1es.tnc.edu.tw.

; (1 15m 5m 30d 1h) 中的 1 是序號, 每次修改都要加 1

;;

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. IN PTR localhost.

註:除了 IN NS 這一行為 SOA 這一行的附屬參數,所以左側留有空白外,其餘各行前面不可留空白

    * 建立 IPv6 反解檔
      root@dns~# vi /etc/bind/2001.288.75a6.rev

$TTL 86400
$ORIGIN 6.a.5.7.8.8.2.0.1.0.0.2.ip6.arpa.
@  IN   SOA dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (1 15m 5m 30d 1h)
   IN   NS   dns.dc1es.tnc.edu.tw.
;;
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0  IN  PTR  dns.dc1es.tnc.edu.tw.
234.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0  IN  PTR  nat.dc1es.tnc.edu.tw.

限制遞迴查詢

只需修改下面這兩個設定檔,其餘設定值與不限遞迴查詢一致
修改 named.conf

options {
     directory "/etc/bind";
     allow-transfer {
        163.26.182.2;
     };
     listen-on-v6 { any; }; //要加上這一行
};


logging {
     category lame-servers{null;};
};

// 把學校 IPv6 網段加入可允許查詢區,例:新增 2001:288:75a6::/48;
acl allow_clients { 127.0.0.1; 163.26.182.0/24; 2001:288:75a6::/48; };

// 在 acl 中的 IP 允許的操作
view "recursive" {
     match-clients { allow_clients; };
     recursion yes;
     include "auth_zones.conf";
};

// 未在 acl 中的 IP 拒絕使用遞迴式查詢
view "external" {
     match-clients { any; };
     recursion no;
     include "auth_zones.conf";
};


修改 auth_zones.conf

zone "." {
     type hint;
     file "named.ca";
};

zone "localhost" {
     type master;
     file "localhost";
};

zone "0.0.127.in-addr.arpa" {
     type master;
     file "rev-127.0.0";
};

zone "dc1es.tnc.edu.tw" {
     type master;
     file "/etc/bind/db.dc1es.tnc.edu.tw";
};

zone "182.26.163.in-addr.arpa" {
     type master;
     file "db.163.26.182";
};

// 新增 ::1 的反解檔
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa."{
     type master;
     file "rev.local6";
};

// 新增 2001.288.75a6 的反解檔
zone "6.a.5.7.8.8.2.0.1.0.0.2.ip6.arpa." {
     type master;
     file "2001.288.75a6.rev";
};
修改 db.xxx.tnc.edu.tw 正解檔

 與不限遞迴查詢做法相同,請參考前文

建立 ::1 及 2001.288.75xx.rev 反解檔

 與不限遞迴查詢做法相同,請參考前文

主機架設方案,所配送的電腦耗電量一年約花費多少成本?

 學員來信問道:
老師您好:
請問您的主機架設方案,所配送的電腦耗電量一年約花費多少成本?(因為我擔心電費問題....)
謝謝!


總教頭回覆:
我的經驗:架設主機後網站掛上Google點擊廣告
結果賺的錢用來付給:家裡的上網費、電費、水費、瓦斯費、大樓管理費、電話費....全部不用錢,還有賺!
所以你不用為『電腦耗電量一年約花費』多少成本煩惱!

總教頭架設之Linux主機,用儀器實際測量數據證明:用電54瓦(超省電!)
比一個100瓦家用燈泡省約一半!比各位一般300瓦的PC電腦省電多多!

attachments/201104/6584384162.jpg

結論:單單上網不架設主機的人是笨蛋!(因為不管你有沒有架設主機,上網費用都是一樣的!)
你現在知道為何要聘請專家幫你架設主機了吧?
架設一台可以賺錢(高效能、不耗電)的主機,要有多方的專要考量

一台Linux主機營運幾年下來,那成本可差大了!
所以勸告網友與學員(不要自己DIY)可以用與高效能是不一樣的!
備註:網友與學員不要寫信來問我如何省電與硬體配備規格!(別想來個撿現成的!)

需要架設主機服務,就是讓專業者整體規劃!

經營網站最怕的就是:被駭客入侵(植入:釣魚網頁)

經營網站最怕的就是:被駭客入侵(植入:釣魚網頁)

剛剛看到一篇文章:網路釣魚 Google公佈識別法
能識別網路釣魚的手法是上網者必須具備的自保之道
但是經營網站者更應注意到,如何防止網站被駭客入侵(植入:釣魚網頁)?
你有顧問可以技術諮詢嗎?網站發生問題又有誰能幫你及時處理?
購置:「架設Linux主機+架站+維護教學課程+遠端協助」專案,你就可以免費獲得協助!
以下是詳細的內容介紹:
http://por.tw/linux/new-E_learning/index.php


-------------------------------------------------------------------
以下是該篇新聞的引用全文:

網路釣魚 Google公佈識別法
編譯中心綜合1日電 世界新聞網 北美華文新聞、華商資訊
June 02, 2011 06:02 AM | 2787 次 | 0 0 評論 | 3 3 推薦 | 電郵給朋友 | 列印
Google公司1日宣佈遭受疑似來自中國的駭客攻擊,圖為Google在加州山景的總部。(美聯社)

Google公司1日宣佈遭受疑似來自中國的駭客攻擊,圖為Google在加州山景的總部。(美聯社)
slideshow
Google公司(Google)1日宣佈,該公司成為一波似乎來自中國濟南的網路釣魚(phishing)行動的攻擊目的,Google公司也公佈了網路釣魚者使用的假Gmail登入網頁的形象。

這個攻擊的做法是對受害者發出假的電郵,往往發出電郵的帳戶似乎屬於受害者的同事、家人或朋友,這些電郵中有假的連結(link),通至假的Gmail網站,該形象逼真的假網站即搜集受害者的電郵使用者名稱和密碼。

駭客然後使用這些登入資料,把受害者收到的所有電郵轉寄給一個第三者,有時也搜集被害者聯絡人的資訊,用來做其他的釣魚詐騙。

這個詐欺是由部落格Contagio發現的,該部落格在2月詳細分析了此詐騙行動,並登出假電郵和假登入網頁的形象。

Contagio 指出了真假Gmail登入網頁的細微差異,內含連結的目的和小處設計的對照。但由於假網頁非常逼真,Google公司不指望使用者辨別差異,該公司建議使用者用其雙因素認系統(two-factor authentication system),這個系統會送一個密碼到使用者的電話,供其用來登入,如果使用者設定了這個保護措施,而在登入時未被要求密碼,這個網頁就可能是假的。

Google公司也建議使用者注意可疑的轉寄設定,這可能代表駭客正在覆制其電郵,此外,也要注意網頁上方的一個紅色警示標誌,這代表Google公司已偵測到「可疑的活動」,可能是駭客已經侵入該帳戶。

Read more: 世界新聞網-北美華文新聞、華商資訊 - 網路釣魚 Google公佈識別法

Linux主機伺服器為何需要防火牆?

Linux主機伺服器為何需要防火牆?

Linux主機伺服器防火牆防火牆最重要的任務:
1.規劃出切割被信任(如子網域)與不被信任(如 Internet)的網段
2.規劃出可提供 Internet 的服務與必須受保護的服務
3.分析出可接受與不可接受的封包狀態

畢竟網路的世界是很複雜的,而 Linux 主機也不是一個簡單的東西。
說不定哪一天你在進行某個軟體的測試時,主機突然間就啟動了一個網路服務, 如果你沒有管制該服務的使用範圍,那麼該服務就等於對所有 Internet 開放,那就麻煩了!
因為該服務可能可以允許任何人登入你的系統,那不是挺危險?

所以囉,防火牆能作什麼呢?防火牆最大的功能就是幫助你『限制某些服務的存取來源』!
舉例來說:
(1)你可以限制檔案傳輸服務 (FTP) 只在子網域內的主機才能夠使用,而不對整個 Internet 開放。
(2)你可以限制整部 Linux 主機僅可以接受客戶端的 WWW 要求,其他的服務都關閉。
(3)你還可以限制整部主機僅能主動對外連線,對我們主機主動連線的封包狀態 (TCP 封包的 SYN flag) 就予以抵擋等等。
這些就是Linux主機最主要的防火牆功能!

Linux主機虛擬通道(PPTP VPN)(Linux主機伺服器架設技術)

Linux主機虛擬通道(PPTP VPN)(Linux主機伺服器架設技術)

用 Linux 建立虛擬通道(PPTP VPN),供公司外部的 IP 與主機建立專用通道,再以此通道對外連線。
其運作原理如下,pptpd 提供使用撥接進入的通道, iptables 提供 route 出去的路由。


Linux pptp設定

    * 安裝 pptp
      root@Linux:# apt-get update
      root@Linux:# apt-get install pptpd
    * 修改 /etc/pptpd.conf
      root@Linux:# vi /etc/pptpd.conf (確保您的設定檔內, 有以下參數設定)

option /etc/ppp/pptpd-options
logwtmp

#撥接進入時, vpn server 的 ip address
localip 192.168.0.1
#撥接進入時, 可配發的 ip address (與 dhcp 無關)
remoteip 192.168.0.10-20

    * 修改 /etc/ppp/pptpd-options
      root@Linux:# vi /etc/ppp/pptpd-options

# name 參數與 client 端設定有關
name myvpn_name

refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128

# 配送 ip address 給 client 時, 指定 DNS Server IP 位置供 client 使用
ms-dns 168.95.1.1
ms-dns 168.95.192.1

proxyarp

# Debian: do not replace the default route
nodefaultroute

lock
nobsdcomp

    * 建立可撥入的帳號密碼, 修改 /etc/ppp/chap-secrets
      root@Linux:# vi /etc/ppp/chap-secrets

# client         server         secret              IP addresses
username         myvpn_name     自訂password         *

#IP address 使用 "*" 代表不限制這個帳號所撥入的 ip 位置

    * 啟動 pptpd
          o 手動啟動: root@Linux:# service pptpd restart
          o 開機自動啟動: 使用 ntsysv 設定

    * 至此, 您可以由 winxp 試著撥入, 應已可以取得一個 192.168.0.10-20 的 IP 位置。不過您也會發現,怎麼無法上網? 原因是, 您的網路封包皆已導向 vpn server , 若 vpn server 不給上, 您反而無法上網。因此, 接下來, 必須修改 /etc/rc.local 的 iptables 規則列, 來解決此一問題。



Linux iptables設定

    * 修改 /etc/rc.local
      root@Linux:# vi /etc/rc.local

# 打開 forward, 找到下面這一行, 去除 #
echo "1" > /proc/sys/net/ipv4/ip_forward

#在 $IPTABLES -P FORWARD ACCEPT 這一行的下方, 加入以下數行
###-----------------------------------------------------###
# 啟動 VPN 內部對外轉址
###-----------------------------------------------------###
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
iptables -A FORWARD -i ppp0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT

# 注意: ppp0 這網卡代號可能因 pptpd 軟體而異,請下指令 ifconfig 查詢正確代號
# ------------------------------------------------------###


#在此區塊底下加上 vpn 連線限制
###-----------------------------------------------------###
# 拒絕外部 IP 連至內部 port 號
###-----------------------------------------------------###

###--------------------------------------------------------------###
# 限制外面取用 VPN 連線, ex: 只開放 220.130.230.77及 163.26.182.0/24 撥入
###--------------------------------------------------------------###
$IPTABLES -A INPUT -p tcp -s 220.130.230.77 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 1723 -j DROP

    * 啟用新規則列
      root@Linux:# service rc.local start
本Linux主機伺服器架設基地立志於收集各類Linux主機伺服器架設、網站架設及網頁設計技術教學資訊,便於本人和廣大網友及網友查詢檢索,無論公司或個人認為本站存在侵權內容均可與本站聯繫,任何此類反饋資訊一經查明屬實後,將立即移除!