[Debian] Debian 掛載ISO檔 不指定

Category : linux | Post on 2011/02/15 16:28 by hero | Comments:0


掛載命令(Mount)

掛載 MDF

mount -o loop -t iso9660 filename.mdf /media/cdrom


掛載 iso

mount -o loop -t iso9660 FILENAME.ISO /mnt/iso

AMD64 Cool'n'Quiet 不指定

Category : linux | Post on 2010/09/23 23:06 by hero | Comments:0
使用Cool'n'Quiet技术的AMD Opetron/Athlon64CPU 可以在空载时降低频率和电压(风扇转速的降低依赖于主板而和CPU无关,比如Epox 9nda3+主板会在CPU温度低于设定值时自动降低转速))。
现在我们就让这个功能在debian里起作用。




首先确保以下被满足

Power Management Support
CPU Frequency Scaling
'usrspace' cpufreq policy governor
AMD Opteron/Athlon64 PowerNow
我的PC的模块加载情况:
pure64[~]cat /proc/modules |grep freq
cpufreq_userspace 6216 2 - Live 0xffffffffa0272000
cpufreq_powersave 2240 0 - Live 0xffffffffa0270000
freq_table 5064 1 powernow_k8, Live 0xffffffffa01bf000
pure64[~]cat /proc/modules |grep k8
powernow_k8 10440 0 - Live 0xffffffffa01c2000

然后就简单了,apt-get install powernowd
设置开机自动运行powernowd就行了,一般不用加参数



cat /proc/cpufreq可以看CPU调速的策略
pure64[~]cat /proc/cpufreq
          minimum CPU frequency  -  maximum CPU frequency  -  policy
CPU  0      1000000 kHz ( 55 %)  -    1800000 kHz (100 %)  -  userspace

cat /proc/cpuinfo看当前CPU Mhz和bogomips
pure64[~]cat /proc/cpuinfo
processor    : 0
vendor_id    : AuthenticAMD
cpu family    : 15
model        : 31
model name    : AMD Athlon(tm) 64 Processor 3000+
stepping    : 0
cpu MHz        : 1004.598
cache size    : 512 KB
fpu        : yes
fpu_exception    : yes
cpuid level    : 1
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext lm 3dnowext 3dnow
bogomips    : 1988.83
TLB size    : 1088 4K pages
clflush size    : 64
cache_alignment    : 64
address sizes    : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp

可以看见空载的时候自动降低频率到1000Mhz左右,同样电压也会降低.
满载时频率自动提升,可以测试一下

$cat /dev/urandom > /dev/null$cat /proc/cpuinfopure64[~]cat /proc/cpuinfo processor  : 0vendor_id  : AuthenticAMDcpu family  : 15model    : 31model name  : AMD Athlon(tm) 64 Processor 3000+stepping  : 0cpu MHz    : 1808.277cache size  : 512 KBfpu    : yesfpu_exception  : yescpuid level  : 1wp    : yesflags    : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext lm 3dnowext 3dnowbogomips  : 3579.90TLB size  : 1088 4K pagesclflush size  : 64cache_alignment  : 64address sizes  : 40 bits physical, 48 bits virtualpower management: ts fid vid ttp
看每个频率对应电压可以dmesg|grep powernow-k8(不过由于nv_sata问题,我的dmesg里全是nv_sata error信息,下面是别人的)
$dmesg|grep powernow-k8

Jul 30 21:38:39 terry powernow-k8:    0 : fid 0x2 (1000 MHz), vid 0x12 (1100 mV)Jul 30 21:38:39 terry powernow-k8:    1 : fid 0xa (1800 MHz), vid 0x6 (1400 mV)Jul 30 21:38:39 terry powernow-k8:    2 : fid 0xc (2000 MHz), vid 0x2 (1500 mV)P.S.换了2.6.11,nv_sata问题解决了。pure64[~]dmesg |grep k8Linux version 2.6.11-9-amd64-k8 (root@athlon.lowpingbastards.de) (gcc version 3.4.4 20050314 (prerelease) (Debian 3.4.3-12)) #1 Sun Mar 27 12:58:31 CEST 2005powernow-k8: Found 1 AMD Athlon 64 / Opteron processors (version 1.00.09e)powernow-k8:    0 : fid 0xa (1800 MHz), vid 0x6 (1400 mV)powernow-k8:    1 : fid 0x2 (1000 MHz), vid 0x12 (1100 mV)另外2.6.11可以手动控制ondeman,powersave

[馬上學馬上記]Linux 指令 不指定

Category : linux | Post on 2010/09/16 10:40 by hero | Comments:0
iptables -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT

Iptable開PORT指令

iptables -L

Iptable查詢

Centos Bind vi /var/named/chroot/var/named/named.domain

Bind9-提供 Domain Name 與 IP 對應的服務 不指定

Category : linux | Post on 2010/09/11 10:23 by hero | Comments:0
Bind9-提供 Domain Name 與 IP 對應的服務
內容

   1. 前言
   2. 實作環境
   3. 安裝及設定
         1. 步驟1.本機反解範例檔案 (localhost.rev)
         2. 步驟2.修改 DNS 設定檔 (named.conf)
               1. 步驟2-1.安全性設定 - 隱藏 BIND DNS 版本
               2. 步驟2-2.安全性設定 - 存取控制清單 ACLs
               3. 步驟2-3.限制來源查詢要求 (allow-query)
               4. 步驟2-4.限制來源查詢要求 (allow-recursion)
               5. 步驟2-5.限制特定 Zone 查詢要求 (allow-query)
               6. 步驟2-6.安全性設定 - Zone Transfer 限制
               7. 步驟2-7.進階性設定 - 代詢伺服器機制
         3. 步驟3.建立 named.weithenn.for 檔案 (Forward)
         4. 步驟4.修改服務設定檔 (rc.conf)
         5. 步驟5.修改本機 DNS 查詢設定檔 (resolv.conf)
         6. 步驟6.啟動 DNS 服務
   4. 安全性設定測試
         1. 測試1.隱藏 BIND DNS 版本
         2. 測試2.Zone Transfer 限制
   5. 參考
   6. Me FAQ

前言

DNS,Domain Name Service 主要目地為解決 Domain Name 與 IP Address 之間相互的對應問題,在網路世界間中的溝通其實就是使用 IP Address 來溝通 (就像是人類使用的身份證),但一連串的數字這樣對人類來說太過於麻煩,因此便出現 Domain Name Service 服務來將 IP Address 轉換成人類可方便閱讀的 Domain Name,簡單來說就是例如: 您輸入的 Yahoo 網址 http://tw.yahoo.com 轉成 IP Address 以便連結到 Yahoo 的網頁伺服器,關於網域名稱服務可參考站內文章 DNS 伺服器的原理與運作流程

FreeBSD 5.3-RELEASE 起內建 Bind9 不但安全性相對提高,並也把 Chroot 功能給加了進來,比較不習慣的可能就是設定檔的路徑

/etc/namedb/               //原本設定檔實際路徑 (系統自動幫您連結至 Chroot 功能新路徑 /var 下)
/var/named/etc/namedb/     //Bind9 設定檔的實際路徑

實作環境

    * FreeBSD 6.x-RELEASE
          o FreeBSD 6.1、6.2-RELEASE
    * FreeBSD 5.x-RELEASE
          o FreeBSD 5.3、5.4-RELEASE
    * BIND 9.3.x
          o BIND 9.3.0、9.3.3

安裝及設定
步驟1.本機反解範例檔案 (localhost.rev)

執行下列指令產生本機反解範例檔案 localhost.rev,產生的範例檔案 (localhost.rev 及 localhost-v6.rev) 將產生於 /var/named/etc/namedb/master 目錄下。

#cd /var/named/etc/namedb/                          //切換路徑                
#sh make-localhost                                  //產生範例檔

步驟2.修改 DNS 設定檔 (named.conf)

修改 DNS 設定檔 named.conf

#vi /var/named/etc/namedb/named.conf                //編輯 named.conf 內容如下

步驟2-1.安全性設定 - 隱藏 BIND DNS 版本

為何要隱藏您的 BIND DNS 版本呢? 原因在於有心人士可以透過先瞭解您 DNS 主機所運作的 BIND 版本來尋找相關漏洞攻擊程式,因此在 ISC BIND 建議下可透過設定來隱藏 BIND 系統版本。

options {
        directory       "/etc/namedb";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";   //將資料庫內容 Dump 出來路徑 (執行rndc dumpdb)
        statistics-file "/var/stats/named.stats";    //統計資訊路徑 (執行rndc stats)
        version         "None of your business";     //當別人查詢您的 BIND 版本時顯示的文字內容

步驟2-2.安全性設定 - 存取控制清單 ACLs

我們可以利用設定存取控制清單 (ACL,Access Control List,) 功能來限制外來對 Domain 的查詢要求並且配合 Allow-Query 參數來限制所有或特定 Zone 的查詢要求。

acl "dns1.weithenn.org" { 61.60.59.58; };
acl "dns2.weithenn.org" { 61.60.59.57; };

步驟2-3.限制來源查詢要求 (allow-query)

DNS Server 僅回應列表中 IP Address 的查詢要求,這裡的 allow-query 限制為針對 DNS Server

options {
          allow-query { 168.95.192.1/32; 168.95.1.1/32; dns1.weithenn.org; dns2.weithenn.org; };
};

步驟2-4.限制來源查詢要求 (allow-recursion)

允許哪些來源可以使用 DNS Server 進行遞迴查詢動作。簡單說就是透過這台 DNS 來查詢任何資料,包含不是該 DNS 主機負責的 Zone 也代為查詢,您應該不想讓別人用您的 DNS Server 去探查別人的 DNS 主機資訊吧?

options {
          allow-recursion { 127.0.0.1/32; 61.60.59.58/32; };
};

步驟2-5.限制特定 Zone 查詢要求 (allow-query)

DNS Server 僅回應列表中 IP Address 的查詢要求,這裡的 allow-query 限制為針對區域 (Zone),當您設定限制所有或特定 Zone 的查詢要求時,其特定 Zone 設定優先權將大為限制所有查詢要求。

zone "weithenn.org" {
        type master;
        file "master/named.weithenn.for";
        allow-query { dns2.weithenn.org; };        //僅回應這個 IP 的查詢要求
};

步驟2-6.安全性設定 - Zone Transfer 限制

DNS 架構下常需透過更新 Zone File 動作來更新 DNS Master 及 DNS Slave 間 Zone File 的資料,在信任網域下將 Zone File 資料列出是 OK 的,但若是能由外界進行查詢您 Zone 資料時將會演變為具有危險的行為,想想若有人知道您 Zone File 設定都一清二楚那他即可針對特定主機進行攻擊行為,因此限制您的 Zone Transfer 將更顯重要。比較常被忘記的部份為會記得設定 DNS Master 其 allow-transfer 對象為 DNS Slave,但別忘記了 DNS Slave 必須設定 allow-transfer { "none"; }; 避免您的 Zone File 從 DNS Slave 端被傳送出去這是比較容易被忘記的設定。

zone "weithenn.org" {
        type master;
        file "master/named.weithenn.for";
        allow-transfer { 61.60.59.57; };           //僅此 IP 能 Zone Transfer 此 Zone File
        allow-transfer { dns2.weithenn.org; };     //可配合 ACLs 使用
};

步驟2-7.進階性設定 - 代詢伺服器機制

代詢伺服器 (Forwarders) 機制為當您為您的站台指派代詢伺服器後,那麼所有對外的 DNS 查詢都會先送到您所指定的代詢伺服器,讓代詢伺服器利用快取資訊幫您快速回應 DNS 查詢,在台灣我們可設定全台最大的 DNS 快取伺服器其設定內容如下:

forwarders {
                168.95.192.1;
                168.95.1.1;
};

設定好 named.conf 後可利用 BIND 9 新增加的指令 named-checkconf 來檢查 named.conf 設定檔語法是否正確,若語法正確則執行完指令後將不會有任何訊息,若語法有錯會顯示錯誤訊息及行數。

/usr/sbin/named-checkconf                        //檢查 named.conf 語法是否有錯
                           -v                     //顯示 named-checkconf 版本

步驟3.建立 named.weithenn.for 檔案 (Forward)

建議您可複製剛才建立的反解範例檔案 localhost.rev 再進行修改可避免 keyin 錯誤。

    * SOA: 為標準區域中的第一筆記錄,之後括號 () 內為與次要 DNS 溝通的相關資訊,其數值單位為 (秒)
          o Serial: 區域版本編號
          o Refresh: 同步更新時間
          o Retry: 重試同步時間
          o Expire: 同步到期時間
          o Minimum: 最小快取存活時間

#vi /var/named/etc/namedb/master/named.weithenn.for   //建立正解檔內容如下
$TTL      86400
@       IN      SOA     user.weithenn.org. hostmaster.weithenn.org. (
                                      2005042601 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
               IN      NS      gateway
               IN      A       61.60.59.58
gateway       IN      A       61.60.59.58
www           IN      A       61.60.59.58
mail          IN      A       61.60.59.58  
@             IN      MX  10  mail

設定好 named.weithenn.for 後可利用 BIND 9 新增加的指令 named-checkzone 來檢查 named.weithenn.for 設定檔語法是否正確,若語法正確則執行完指令後將不會有任何訊息,若語法有錯會顯示錯誤訊息及行數。

/usr/sbin/named-checkzone weithenn.org named.weithenn.for         //檢查語法是否有錯
/usr/sbin/named-checkzone -d weithenn.org named.weithenn.org      //開啟除錯功能
                           -v                                      //顯示 named-checkconf 版本

步驟4.修改服務設定檔 (rc.conf)

修改 /etc/rc.conf 中加入下列的設定以便在系統重新開機時時會啟動 DNS 服務

#vi /etc/rc.conf                                                  //編輯rc.conf內容如下
named_enable="YES"                                                //啟動 named 服務  
named_flags="-u bind"                                             //採用 bind 這個帳號來啟動 DNS 服務 (安全性設定)

步驟5.修改本機 DNS 查詢設定檔 (resolv.conf)

修改本機 DNS 查詢設定檔 /etc/resolv.conf 加上 Domain Name 及本機 IP Address,關於此設定檔詳細內容可參考站內文章 resolv.conf

#vi /etc/resolv.conf                                              //修改設定檔加入如下三行
domain weithenn.org
nameserver 127.0.0.1                                              
nameserver 61.60.59.58

步驟6.啟動 DNS 服務

請鍵入如下指令啟動 DNS 服務

#/etc/rc.d/named start                                            //啟動 DNS 服務
                  stop                                             //停止 DNS 服務
                  restart                                          //重新啟動 DNS 服務
                  rcvar                                            //顯示應該填入 rc.conf 的內容
                  reload                                           //重新讀取 DNS 設定檔
                  status                                           //顯示目前 DNS 狀態

安全性設定測試

剛才上面的安全性設定完成後,我們測試一下剛才的安全性設定是否生效
測試1.隱藏 BIND DNS 版本

透過下列指令來測試是否無法查詢到 BIND 版本 (DNS_Server就是您要測那一台的 domain name 或是 IP 也可以),不過隱藏 BIND DNS 版本不代表就絕對安全,只是讓攻擊者無法馬上得知您的 BIND DNS 版本 (好讓他方便找該版本漏洞)。

#dig -t txt -c chaos VERSION.BIND DNS_Server

若設定正確則可看到回應 VERSION.BIND 就是您填入的內容,若沒設定好當然版本就被順利查詢到啦。

;; ANSWER SECTION:
VERSION.BIND.           0       CH      TXT     "None of your business" //隱藏版本成功
VERSION.BIND.           0       CH      TXT     "9.3.0"                 //隱藏版本失敗

測試2.Zone Transfer 限制

檢測方式 (以 nslookup 為例 )

#nslookup                                                               //進入 nslookup 交談模式
>server weithenn.org                                                    //指定以 weithenn.org 為 NS 做查詢
Default Server: weithenn.org
Address: 61.60.59.58    
>ls -d weitenn.org                                                      //檢查是否限制無法查尋 Zone File
[weithenn.org] ***
  Can't list domain weitenn.org: Unspecified error

參考

[FreeBSD Handbook-BIND9 and FreeBSD]

[FreeBSD 使用手册-BIND9 和 FreeBSD]

[ DNS系統的強化與保護]

[BIND - logging file not found - LinuxQuestions.org]

[サーバ設定手順・パソコントラブル解決・エラー解決・コマンド集・プログラミング/「GOBU」(ゴブ)]

[DNS/BIND Issue: “named: the working directory is not writable” | Slaptijack]

[named: the working directory is not writable - The FreeBSD Forums]
Me FAQ

Q1.logging channel 'security_log' file '/var/log/named/dns-security.log': file not found?

Error Message:

啟動 DNS 服務後,在系統訊息中看見如下錯誤訊息

#tail /var/log/messages
Jul 14 13:21:06 ms1 named[59648]: starting BIND 9.4.3-P2 -u bind -t /var/named -u bind
Jul 14 13:21:06 ms1 named[59648]: command channel listening on 127.0.0.1#953
Jul 14 13:21:06 ms1 named[59648]: the working directory is not writable
Jul 14 13:21:06 ms1 named[59648]: logging channel 'default_log' file '/var/log/named/dns-default.log': file not found
Jul 14 13:21:06 ms1 named[59648]: logging channel 'lamer_log' file '/var/log/named/dns-lamer.log': file not found
Jul 14 13:21:06 ms1 named[59648]: logging channel 'query_log' file '/var/log/named/dns-query.log': file not found
Jul 14 13:21:06 ms1 named[59648]: logging channel 'security_log' file '/var/log/named/dns-security.log': file not found
Jul 14 13:21:06 ms1 named[59648]: isc_log_open '/var/log/named/dns-default.log' failed: file not found
Jul 14 13:21:07 ms1 named[59648]: isc_log_open '/var/log/named/dns-query.log' failed: file not found
Jul 14 13:21:13 ms1 named[59648]: isc_log_open '/var/log/named/dns-lamer.log' failed: file not found

Ans:

原因在於設定檔中指定的路徑並非實體路徑,而是相對於 Chroot 服務的相對路徑,可看到 DNS 執行序為 -t /var/named 配合 named.conf 中指定的相對路徑才是最後 Log 寫入路徑。

#ps aux |grep named
bind     59648  0.0  0.5 20724 16852  ??  Ss    1:21PM   0:00.12 /usr/sbin/named -u bind -t /var/named -u bind

而 named.conf 設定檔中內容如下

logging {
    category lame-servers { lamer_log; };                            //在本DNS上查不到的記錄(遞迴查詢)
    category security{ security_log;};                               //安全記錄
    category queries { query_log;};                                  //查詢記錄
    category default {default_log;};                                 //BIND啟動記錄
    channel default_log {
        file "/var/log/named/dns-default.log" versions 10 size 20m;  //此 Log 寫入路徑為 /var/named/var/log/named/dns-default.log (修改前)
        file "/var/log/dns-default.log" versions 10 size 20m;        //此 Log 寫入路徑為 /var/named/var/log/dns-default.log (修改後)
        severity info;
    };

Q2.the working directory is not writable?

Error Message:

啟動 DNS 服務後,在系統訊息中看見如下錯誤訊息

#tail /var/log/messages
Jul 14 15:18:01 ms1 named[64145]: starting BIND 9.4.3-P2 -t /var/named -u bind
Jul 14 15:18:01 ms1 named[64145]: command channel listening on 127.0.0.1#953
Jul 14 15:18:01 ms1 named[64145]: the working directory is not writable

Ans:

若您確定在 /var/named 下權限設定正確 (owner bind) 後啟動 DNS 服務仍看到錯誤訊息,請依如下步驟進行修改後再重新啟動 DNS 服務即可解決。

#vi /etc/mtree/BIND.chroot.dist
/set type=dir uname=root gname=wheel mode=0755             //預設值
/set type=dir uname=bind gname=wheel mode=0755             //修改後
#/etc/rc.d/named restart                                   //修改完成後重新啟動 DNS 服務

首頁 最新文章 FreeBSD 筆記 Linux 筆記 Windows 筆記 隨機文章 關於本站 遊山玩水
沙子地方 翔賀香腸 刊登廣告 刊登廣告 刊登廣告
本頁是唯讀的 參閱其他版本 管理 Oddmuse
最後編輯於 2009-07-22 11:14 CST 由 Weithenn

搜尋:
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com
Tags:

bind9-提供Domain Name與IP對應的服務 不指定

Category : linux | Post on 2010/05/11 18:35 by hero | Comments:0
前言
DNS (Domain Name Service) 主要目地為解決 Domain Name 與 IP Address 之間相互的對應問題,在網路世界間中的溝通其實就是使用 IP Address 來溝通(就像是人類使用的身份證),但一連串的數字這樣對人類來說太過於麻煩,因此便出現 Domain Name Service 服務來將 IP Address 轉換成人類可方便閱讀的 Domain Name,簡單來說就是將您所輸入的網址 tw.yahoo.com 轉成 IP,以便連結到 Yahoo 的網頁伺服器。DNS 伺服器的原理與運作流程

實作環境
•CentOS 5.1 (Linux 2.6.18-53.1.4.el5)
•bind-9.3.3-10.el5
•bind-chroot-9.3.3-10.el5
•system-config-bind-4.0.3-2.el5.centos (cp to /etc/named.conf)
安裝及設定
步驟1.安裝相關套件
利用 yum 來安裝 bind 及其相關套件

#yum install system-config-bind          //安裝 system-config-bind 套件來產生 named.conf 範例檔
#yum groupinstall "DNS Name Server"      //安裝 bind 及 bind-chroot 套件複製相關檔案到 Bind Chroot 目錄 /var/named/chroot/ 下

#cp -p /usr/share/system-config-bind/profiles/default/named.conf /var/named/chroot/etc/      //複製 named.conf 範例檔
#ln -s /var/named/chroot/etc/named.conf /etc/named.conf                                      //建立連結到 /etc 下
#cp -p /usr/share/system-config-bind/profiles/default/named/* /var/named/chroot/var/named/   //複製相關範例檔至 bind chroot 目錄下
#cp /usr/share/doc/bind-9.3.3/sample/var/named/named.root /var/named/chroot/var/named/       //複製 bind root 檔至 bind chroot 目錄下
#chown -R named /var/named/chroot                                                            //把 owner 權限更改為 named步驟2.編輯 bind 設定檔 (named.conf)
#vi /var/named/chroot/etc/named.conf    //編輯 named.conf 內容如下步驟2-1.安全性設定 -- 隱藏 BIND DNS 版本
限制查詢 BIND DNS 版本,為何要隱藏您的 BIND DNS 版本呢?原因在於有心人士可以先瞭解您 BIND 版本來尋找相關漏洞攻擊程式,讓您 DNS 伺服器無法運作,因此在 ISC BIND 下可以透過設定來隱藏 BIND 系統版本。

options {
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";    //將資料庫內容 Dump 出來路徑(執行rndc dumpdb)
        statistics-file "/var/named/data/named_stats.txt";  //統計資訊路徑(執行rndc stats)
        version         "None of your business";            //當別人查詢您的BIND版本時顯示的內容步驟2-2.安全性設定 -- 存取控制清單 ACLs
我們可以利用存取控制清單 (Access Control List,ACL),來限制外來對 Domain 的查詢要求,可以配合 allow-query 參數來限制所有或特定 Zone 的查詢要求。

acl "dns1.weithenn.org" { 61.60.59.58; };
acl "dns2.weithenn.org" { 61.60.59.57; };步驟2-3.安全性設定 -- 限制所有查詢要求 allow-query
也就是我只回應列表 IP 的查詢要求 (ex. 可以用 nslookup 將 server 指向我來進行查尋動作),下列我只回應 LAN 網段及 Hinet Cache DNS Server 的查詢要求。

options {
          allow-query { 192.168.1.0/24; 168.95.192.1/32; 168.95.1.1/32; };
};步驟2-4.安全性設定--限制所有查詢要求 allow-recursion
就是允許哪些來源可以使用 DNS 主機進行遞迴查詢動作。簡單說就是透過這台 DNS 來查詢任何資料,包含不是該 DNS 主機負責的 zone 也代為查詢,你不想讓別人用你的 DNS 去探查別人的 DNS 主機資訊吧?

options {
          allow-recursion { 127.0.0.1/32; 192.168.1.0/24; 61.60.59.58/32; };
};步驟2-5.安全性設定 -- 代詢伺服器機制
代詢伺服器 (Forwarders) 機制為當你為你的站台指派代詢伺服器後,那麼所有對外的 DNS 查詢都會先送到你所指定的代詢伺服器,讓代詢伺服器利用快取資訊幫您快速回應 DNS 查詢,設定內容如下:

forwarders {
                168.95.192.1;
                168.95.1.1;
};步驟2-6.安全性設定 -- 限制特定 Zone 查詢要求
zone "weithenn.org" {
        type master;
        file "master/named.weithenn.for";
        allow-query { dns2.weithenn.org; };   //我只回應這個 IP 的查詢要求
};要注意的是當您設定限制所有或特定 Zone 的查詢要求時,其特定 Zone 設定優先權將大為限制所有查詢要求。

步驟2-7.安全性設定 -- Zone Transfer 限制
DNS 架構下常需透過更新 Zone File 動作更新 Master 及 Slave 間 Zone File 的資料,在信任網域下,將 Zone File 資料列出是 OK 的,若是能由外界進行查找您的 Zone 資料時將為演變為具有危險的行為,想想若有人將您 Zone File 的設定都摸的一清二楚,感覺相當恐怖的,因此限制您的 Zone transfer 將是必須的。要記得的是 Slave 要設定為 allow-transfer { "none"; }; 這是比較容易被忘記的設定。

zone "weithenn.org" {
        type master;
        file "master/named.weithenn.for";
        allow-transfer { 61.60.59.57; };           //只有這個 IP 能 Zone Transfer 我的 Zone File
        allow-transfer { dns2.weithenn.org; };  //也可配合 ACLs 使用
};設定好 named.conf後可利用 BIND 9 才新增加的指令 named-checkconf 來檢查 named.conf 設定檔語法是否正確,若語法正確則執行完指令後將不會有任何訊息,若語法有錯會顯示錯誤訊息及行數。

/usr/sbin/named-checkconf        //檢查 named.conf 語法是否有錯
                           -v     //顯示 named-checkconf 版本步驟3.建立 named.weithenn.for 檔案 (Forward)
可複製 named.local 範例檔再修正即可避免 keyin 錯誤,SOA 為標準區域中的第一筆記錄,( )內為與次要DNS溝通的資訊,依序為區域版本編號、同步更新時間、重試同步時間、同步到期時間、快取存活時間,單位為(秒)。

#vi /var/named/chroot/var/named/named.weithenn.org   //建立正解檔內容如下
$TTL      86400
@       IN      SOA     user.weithenn.org. hostmaster.weithenn.org. (
                                      2008012101 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
               IN      NS      gateway
               IN      A       61.60.59.58
gateway       IN      A       61.60.59.58
www           IN      A       61.60.59.58
mail          IN      A       61.60.59.58
dns1          IN      A       61.60.59.58
dns2          IN      A       61.60.59.57
@             IN      MX  10  mail 設定好 named.weithenn.org 後可利用 BIND 9 才新增加的指令 named-checkzone 來檢查 named.weithenn.org 設定檔語法是否正確,若語法正確則執行完指令後將不會有任何訊息,若語法有錯會顯示錯誤訊息及行數。

#/usr/sbin/named-checkzone weithenn.org named.weithenn.org      //檢查語法是否有錯
#/usr/sbin/named-checkzone -d weithenn.org named.weithenn.org   //開啟除錯功能
                            -v                                   //顯示 named-checkconf 版本步驟4.每次開機時啟動 DNS 服務
使用 chkconfig 指令來查看 named 在各 runlevel 下狀態

#chkconfig --list |grep named
named           0:off   1:off   2:off   3:off   4:off   5:off   6:off設定 named 在開機時 (runlevel 為 2、3、4、5 時) 會啟動服務

#chkconfig named on     檢查剛才的設定是否生效

#chkconfig --list | grep named
named           0:off   1:off   2:on    3:on    4:on    5:on    6:off步驟5.編輯 /etc/resolv.conf 改變 nameserver 查尋順序
domain weithenn.org
nameserver 127.0.0.1           //設定自已為 dns 查尋順序第一個
nameserver 61.60.59.58並確定 /etc/nsswitch.conf 內對於 hosts 的搜尋順序

#grep hosts: /etc/nsswitch.conf
#hosts:     db files nisplus nis dns
hosts:      files dns          //先 /etc/hosts 再 /etc/resolv.conf步驟6.手動啟動 DNS 服務
#/etc/rc.d/init.d/named start
Starting named:                                            [  OK  ]檢查一下 named process 是否執行

#ps ax |grep named
17798 ?        Ssl    0:00 /usr/sbin/named -u named -t /var/named/chroot檢查是否 LISTEN Port 53 (named)、953 (rndc)

#netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 61.60.59.58:53              0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN
tcp        0      0 ::1:953                     :::*                        LISTEN補充:IPTables 設定
若您的 CentOS 有開啟 IPTables Firewall 則記得開啟 Port 53 (tcp / udp),參考 /etc/services

#cat /etc/sysconfig/iptables
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --dport 53 -j ACCEPT   -->加入此行 (less /etc/services)
-A INPUT -i eth0 -p udp -s 192.168.1.0/24 --dport 53 -j ACCEPT   -->加入此行(less /etc/services)
-A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --dport 80 -j ACCEPT
COMMIT加入後記得重新啟動 iptables service

#/etc/rc.d/init.d/iptables restart安全性設定測試
隱藏 BIND DNS 版本
可透過下列指令來測試是否無法查詢到 BIND 版本 (DNS_Server 就是您要測那一台的 domain name 或是 IP 也可以),不過隱藏 BIND DNS 版本不代表就絕對安全,只是讓攻擊者無法馬上得知您的 BIND DNS 版本(好讓他方便找該版本漏洞)。

#dig -t txt -c chaos VERSION.BIND DNS_Server若設定正確則可看到回應 VERSION.BIND 就是您填入的內容,若沒設定好當然版本就被順利查詢到啦。

;; ANSWER SECTION:
VERSION.BIND.           0       CH      TXT     "None of your business" //隱藏版本成功
VERSION.BIND.           0       CH      TXT     "9.3.0"                 //隱藏版本失敗Zone Transfer 限制
用 windows xp 的命令提示字元並使用 nslookup 去測試

#nslookup                                 //進入nslookup交談模式
>server dns1.weithenn.org                 //指定以 weithenn.org 為 NS 做查詢
Default Server: dns1.weithenn.org
Address: 61.60.59.58
>ls -d weitenn.org                        //有做限制無法查尋Zone File
[dns1.weithenn.org] ** Can't list domain weithenn.org: Query refused並且可從 DNS Server 上看到如下訊息 (zone transfer denied)

#tail /var/log/messages
Jan 21 17:23:20 dns1 named[18861]: client 192.168.1.5#3021: zone transfer 'weithenn.org/AXFR/IN' denied參考
[ DNS系統的強化與保護]

[DNS Tips - TechWiki]

[Quick HOWTO : Ch18 : Configuring DNS/zh - Ubuntu中文]

[Centos 5 problem with starting named fail - Page 2 - HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials]

[ HowtoForge - Traditional DNS Howto]

[eastern-logic.com » Blog Archive » named.conf file is missing on CentOS5 systems]

[Tony Bhimani’s Blog » Blog Archive » What happened to named.conf in ISC BIND DNS on Fedora 7?]

[酷!學園 - DNS問題:Slave無法取得Master資料]

[鳥哥的 Linux 私房菜 -- DNS Server]

[Unexpected rcode (SERVFAIL) - KhoLiX Wiki]

[Solaris 資訊站 - BIND 細項功能設定]

[SuSE Linux 論壇 :: 觀看文章 - DNS Server 架設問題]

Me FAQ
Q1.Locating /var/named/chroot//etc/named.conf failed: [FAILED]?
Error Meaage:

使用 yum 群組安裝 "DNS Name Server" 卻出現如下訊息說找不到 named.conf 設定檔?

#yum groupinstall "DNS Name Server"
...略
Running Transaction
  Installing: bind                         ######################### [1/2]
  Installing: bind-chroot                  ######################### [2/2]
Locating /var/named/chroot//etc/named.conf failed:            //失敗?
[FAILED]
Installed: bind.i386 30:9.3.3-10.el5 bind-chroot.i386 30:9.3.3-10.el5
Complete! Ans:

因為安裝時只選 KDE 其它都沒選,所以也沒有 /etc/named.conf 此時只要安裝 system-config-bind 套件即可產生 Bind 9 相關範例檔。

#yum install system-config-bind          //安裝 system-config-bind 套件來產生 named.conf 範例檔Q2.slaver dns 無法同步 master dns 的 zone file - dumping master file: tmp-tdjEbsWA0W: open: permission denied?
Error Meaage:

slaver dns 設定好相關內容也使用 /usr/sbin/named-checkconf 檢查過語法沒問題,但就是無法同步 master dns 的 zone file 查看 /var/log/message 發現如下錯誤訊息

#tail /var/log/messages
Jan 21 16:10:48 dns1 named[17951]: zone weithenn.org/IN: Transfer started.
Jan 21 16:10:48 dns1 named[17951]: dumping master file: tmp-2EyNgvNaiD: open: permission denied
Jan 21 16:10:48 dns1 named[17951]: transfer of 'weithenn.org/IN' from 192.168.1.22#53: failed while receiving responses: permission denied Ans:

看到訊息有 permission denied 的字眼,直覺想到應該是權限的問題查看了 named 的 process 是 -u (user) 是 named 但我 /var/named 下有些 owner 是 root 應該是此問題所導致的,改變 /var/named 下的權限後就可順利同步 master dns zone files 了 (當然前提是 iptables 也設定好)

#ps ax |grep named                             //查看 named process
17951 ?        Ssl    0:00 /usr/sbin/named -u named -t /var/named/chroot
#chown -R named:named /var/named/              //改變權限Q3.** server can't find www.weithenn.org: REFUSED?
Error Meaage:

當要利用 nslookup 來查詢 dns 設定是否正確時,卻無法查詢並得到如下錯誤訊息

#nslookup
>www.weithenn.org
Server:         192.168.1.100
Address:        192.168.1.100#53
** server can't find www.weithenn.org: REFUSED且在 dns server 也看到如下拒絕 client 查詢的訊息

#tail /var/log/messages
Jan 21 16:29:56 dns1 named[18861]: client 192.168.1.100#32808: query 'www.weithenn.org/A/IN' deniedAns:

原因在於我忘了把 LAN 網段加入 allow-query 內,因此 dns server 當然拒絕回應查詢要求啦,把 LAN 網段加入 allow-query 允許的網段並 reload named 即可。

options {
          allow-query { 192.168.1.0/24; 168.95.192.1/32; 168.95.1.1/32; };  //加入 LAN 網段
};並重新 reload named (重新讀取設定檔內容)

#/etc/rc.d/init.d/named reload
Reloading named:                                           [  OK  ]
#tail /var/log/messages
Jan 21 18:50:25 dns1 named[18861]: loading configuration from '/etc/named.conf'Q4.named[3355]: lame server resolving 'makolinks.com' (in 'makolinks.com'?): 67.18.198.174#53?
Error Meaage:

在 /var/log/messages 內發現如下訊息

Jan 28 09:54:17 ns2 named[3355]: lame server resolving 'makolinks.com' (in 'makolinks.com'?): 67.18.198.174#53
Jan 28 13:23:05 ns2 named[3355]: lame server resolving 'ns2.osdedicated.net' (in 'osdedicated.NET'?): 72.52.248.169#53
Jan 28 13:23:05 ns2 named[3355]: lame server resolving 'ns1.osdedicated.net' (in 'osdedicated.NET'?): 72.52.248.169#53Ans:

原因是當我們的 DNS 主機去向外面的 DNS 查詢某些網域的正反解析名稱時,可能因為對方 DNS 主機的設定錯誤,導致無法正確解析網域的正反解此時就會發生 lame server 解析問題,這問題跟我們的 Name Server 主機沒關系但會一直看到訊息也是很煩,若不想看到此訊息請修改 named.conf 後重新啟動 named service。

#vi /var/named/chroot/etc/named.conf
logging {                              //加入此三行 (在 rndc.key 上面)
category lame-servers { null; };
};
include "/etc/rndc.key";修改完後重新啟動 named service 後就可了。

#/etc/rc.d/init.d/named restart        //重新啟動 named serviceQ5.named[3355]: unexpected RCODE (SERVFAIL) resolving 'us.update2.toolbar.yahoo.com/A/IN': 168.95.192.1#53?
Error Meaage:

在 /var/log/messages 內發現如下訊息

Jan 28 10:54:30 ns-2 named[3355]: unexpected RCODE (SERVFAIL) resolving 'us.update2.toolbar.yahoo.com/A/IN': 168.95.192.1#53
Jan 28 10:59:36 ns-2 named[3355]: unexpected RCODE (SERVFAIL) resolving 'ts.richmedia.yahoo.com/A/IN': 168.95.192.1#53
Jan 28 11:36:26 ns-2 named[3355]: unexpected RCODE (SERVFAIL) resolving 'cindyflower.home.services.spaces.live.com/A/IN': 168.95.192.1#53
Jan 28 11:36:26 ns-2 named[3355]: unexpected RCODE (SERVFAIL) resolving 'cindyflower.home.services.spaces.live.com/A/IN': 168.95.1.1#53
Jan 28 11:40:05 ns-2 named[3355]: unexpected RCODE (SERVFAIL) resolving 'canvas415taiwan.spaces.live.com/A/IN': 168.95.1.1#53Ans:

參考[Unexpected rcode (SERVFAIL) - KhoLiX Wiki];因為我有設定代詢伺服器 (Forwarders)所以會看到最後 Name Server 主機是 Hinet Cache Server 回應的,解決方法就是你在整個 Named Server 主機的 allow-query、allow-recursion 只設給你信任的網域,而你管理的 zone 則可設 allow-query { any; };

#vi /var/named/chroot/etc/named.conf
options {                                
    allow-query { localnets; };           //設為您信任的網域
    allow-recursion { localnets; };       //設為您信任的網域
}; zone "example.com" {                     //管理的 zone 設定
    allow-query { any; };                 //回應任何 IP 的查詢要求
};修改完後重新啟動 named service 後就可了。

#/etc/rc.d/init.d/named restart        //重新啟動 named serviceQ6.named[2559]: client 127.0.0.1#32768: query (cache) 'www.asahi.com/A/IN' denied?
Error Meaage:

在 /var/log/messages 內發現如下訊息

Apr 29 15:18:10 ns-2 named[2559]: client 127.0.0.1#32768: query (cache) 'www.asahi.com/A/IN' denied
Apr 29 15:18:14 ns-2 named[2559]: client 127.0.0.1#32768: query (cache) 'www.gslb.asahi.com/A/IN' deniedAns:

這個問題的發生是因為你的 named.conf 內有設定 allow-query 但卻沒有允許 127.0.0.1 可以查詢所造成的,修改 named.conf 及 /etc/resolv.conf 把 127.0.0.1 加上即可。

#vi /var/named/chroot/etc/named.conf
allow-query { 127.0.0.1/32; };           //加上 127.0.0.1
#vi /etc/resolv.conf
nameserver 127.0.0.1                     //加上 127.0.0.1
#/etc/rc.d/init.d/named restart          //重新啟動 named 服務即可
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ][BIND problem "query (cache) denied"]

[comp.unix.solaris: Re: named: client 127.0.0.1#32768: query (cache) denied]

Q7.named[23614]: named.weithenn.org:23: test_1.weithenn.org: bad owner name (check-names)?

Error Meaage:

啟動 named 服務後在 /var/log/messages 內發現如下訊息,而機器雖然有跑起 process 及 listen port 但服務似乎有問題。

#tail /var/log/message
May  9 17:58:30 ns-3 named[23614]: named.weithenn.org:23: test_1.weithenn.org: bad owner name (check-names)
May  9 17:58:30 ns-3 named[23614]: zone weithenn.org/IN: loaded serial 2008050902且用 nslookup 查尋解析的名稱也會說因為 server 有問題所以往下一個 name server 查尋?

#nslookup
>ftp
;; Got SERVFAIL reply from 127.0.0.1, trying next server      //無法使用
;; Got SERVFAIL reply from 192.168.1.10, trying next server   //無法使用
Server:         192.168.1.11                                  //在 /etc/resolv.conf 指定的 named server
Address:        192.168.1.11#53
Name:   ftp.weithenn.org
Address: 61.60.59.58
>Ans:

原因就出在於我的 zone file 內有一筆 A Record 是有底線 (_) 所造成的,解決方式就是利用在 named.conf 內的 option 加上 check-names 參數來決定。

•warn:警告,會顯示警告訊息但 Named Server 仍可正常運作
•fail:失敗,會顯示警告訊息且 Named Server 無法正常運作
•ignore:忽略,不顯示警告訊息 Named Server 正常運作
check-names (master|slave|response) (warn|fail|ignore);所以我的解決方式為 DNS Master 設為 warn 而 DNS Slaver 則設為 ignore,因為 Slaver 的 zone 是來自 Master 所以我警告訊息只要給 Master 看就好,Slaver 就不必顯示了。

DNS Master named.conf

options {
           check-names master warn;        //警告,會顯示警告訊息但 Named Server 仍可正常運作
};DNS Slaver named.conf

options {
           check-names slave ignore;       //忽略,不顯示警告訊息 Named Server 正常運作


資料來源: http://www.weithenn.org/cgi-bin/wiki.pl?bind9-%E6%8F%90%E4%BE%9BDomain_Name%E8%88%87IP%E5%B0%8D%E6%87%89%E7%9A%84%E6%9C%8D%E5%8B%99#Heading8
Tags:

[Debian] Proftpd 架設 FTP 伺服器 不指定

Category : linux | Post on 2009/08/08 01:34 by hero | Comments:0
1   FTP 的功能與歷史
FTP (File Transfer Protocol) 也是一種很長壽的網際網路服務。最初要在 Unix 系統間跨主機傳檔,通常是依靠一個叫作 uucp (Unix-to-Unix copy) 的程式;不過 uucp 只能作單檔傳輸,而且只有 Unix 能用。所以在網際網路的早期發展階段,FTP 就已經被設計了出來,並且成為檔案主要傳輸方式。

FTP 這種應用採取主從式的架構。通常是有一個 FTP 伺服器,其中存放了要伺服的檔案,而使用者以 FTP 客戶端軟體連接上 FTP 伺服器來要求檔案,進行傳送。FTP 本身的設計就以「傳輸」檔案為主,所以基本上它與後來的 NFS 或 Samba 等檔案伺服系統不同,並不允許使用者對伺服器上的檔案進行隨機存取1。

[1] 但某些軟體仍然提供編輯 FTP 上檔案的功能,這些軟體通常是文字編輯器。

今日全球資訊網的風行,多少影響了 FTP 的使用率;有些以前用 FTP 提供下載的檔案,為了方便和網頁作整合,都改成了 HTTP。不過 FTP 仍然是一套適合網際網路檔案傳輸的協定,遇到有大量檔案要提供的時候,常常還是得使用 FTP 伺服器。

本章我們要探討如何使用 ProFTPd 這一套 FTP 伺服器軟體。過去 FTP 伺服器一直是網路服務主機的一大安全性漏洞,原因在於舊式的 FTP 伺服軟體使用作業系統內的系統工具來實作 FTP 的功能;譬如直接用主機系統內的 /bin/ls 列出檔案系統的內容。等到 ProFTPd 和 vsFTPd 此類強調安全性的 FTP 伺服軟體出現後,情況才較為改觀。

ProFTPd 的 "Pro" 代表 "Professional"。這套軟體系統的組態設定師法 Apache,所有的設定指令都標籤化,也設計有與 .htaccess 對等的目錄設定檔 .ftpaccess。另外,ProFTPd 支援匿名 FTP、虛擬主機,以及多種認證方式。ProFTPd 也和 Apache 一樣有許多額外的模組,提供了多樣化的延伸功能。

2   為使用者開啟 FTP 支援
首先我們要在 Debian 上安裝 ProFTPd:

$ apt-get install proftpd
安裝時 dpkg 會詢問要以 Inetd 或 Standalone 方式啟動;Inetd 是比較耗費系統資源,反應也比較慢的方式,所以一般會選用 Standalone 模式,讓 ProFTPd 自行管理連線。

預設的 proftpd.conf 如下 (被註解掉的部分未列出)2:

[2] 和 Apache 一樣,ProFTPd 組態檔的註解符號是 #;所有在 # 這個符號之後的設定均不作用。

ServerName                      "Debian"
ServerType                      standalone
DeferWelcome                    off
MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on
TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200
DisplayLogin                    welcome.msg
DisplayFirstChdir               .message
ListOptions                     "-l"
DenyFilter                      \*.*/
Port                            21
MaxInstances                    30
User                            nobody
Group                           nogroup
Umask                           022  022
AllowOverwrite                  on
這樣子的組態只允許在系統上有帳號的使用者登入,也就是說,將 ProFTPd 當作提供使用者的檔案窗口來使用。當使用者以自己的帳號登入後,一般會被直接送進家目錄。

讓我們來看看其中的一些基本設定 (一般來說設為 on 表示開啟設定;設為 off 表示關閉設定):

•ServerName:設定伺服器的名稱;這是一個字串。第一行設作 "Debian",我們可以自行指定喜歡的名字。
•ServerType:可以設為 inetd 與 standlone 其中之一,第 2 行這裡會是我們在 apt-get 裡所設定的啟動型態。
•DefaultServer:設定為預設伺服器;如果有建立虛擬伺服器的話,所有未被分配到虛擬伺服器內的連結,會回到被設定為預設伺服器的組態中。
•ShowSymlinks:設定符號連結 (symbolic link) 的顯示。
•DisplayLogin:指定一個當使用者登入時會顯示給客戶端的 ASCII 文字檔。可以用相對或絕對路徑來指定;使用相對路徑時會相對於初始目錄。
•DisplayFirstChdir:指定當使用者首次切換至目錄時,會顯示給客戶端的 ASCII 文字檔。
•ListOptions:指定使用者列出 FTP 目錄時的格式;以 ls 的參數來表示。
•DenyFilter:指定 FTP 指令裡禁止使用的字串,格式為常規表示式。第 13 行的設定 \*.*/ 禁止了萬用字元。
•Port:指定伺服器使用的通訊埠,21 是 FTP 的標準通訊埠。如果把 Port 設為 0,表示關閉伺服器。
•MaxInstances:指定伺服器可產生子行程的最大值。雖然它不等於,但會影響到可同時連線客戶端的最大數目。
•User, Group:指定 ProFTPd 伺服器執行所使用的帳號與群組。第 16, 17 行設為作業系統裡權限最低的 nobody, nogroup。
•Umask:指定新建檔案 (與目錄) 的權限。這個指令後可接一個或兩個 umask 參數,第一個指定檔案的 umask;第二個指定目錄的 umask。這裡的 umask 與 shell 裡的意義相同,而第 18 行將檔案與目錄的 umask 都設成了 022。
•AllowOverwrite:允許覆寫已存在的檔案。
其它沒有提到的指令此時並不是那麼重要,若有必要,我們之後會再討論。

3   命令列 FTP 客戶端
為了測試剛剛建立的 ProFTPd 伺服器,先來安裝 Debian 下的命令列客戶端程式。

我們使用 ncftp (niceftp):

$ apt-get install ncftp
以 ncftp 用自己的帳號登入伺服器,要加上 -u 參數:

$ ncftp -u username localhost
我們登入本機伺服器,故拿 localhost 當主機名稱即可。輸入指令後,伺服器會詢問我們密碼:

NcFTP 3.1.8 (Jul 27, 2004) by Mike Gleason (http://www.NcFTP.com/contact/).
Connecting to 127.0.0.1...
ProFTPD 1.2.10 Server (Debian) [127.0.0.1]
Logging in...
Password requested by 127.0.0.1 for user "username".

    Password required for username.

Password:
密碼的輸入會以 * 回應在螢幕上;如果密碼輸入正確,即可登入系統:

User username logged in.
Logged in to localhost.
ncftp /home/username >
在瀏覽 FTP 伺服器的時候,最常用的就是 ls 指令:

ncftp /home/username > ls
collect/   etc/       Mail/      OpenFOAM/  var/       work/
Desktop/   GNUstep/   mbox       tmp/       windows/
ncftp /home/username >
我們可以看到自己的家目錄。

除了 ls 之外,還有一些指令是操作 FTP 的時候會用到的:

1.cd :切換伺服器上的目錄,我們用這個指令來巡遊於伺服器端;和 Unix shell 一樣,".." 代表上一層目錄。
2.get :從伺服器下載檔案至本地。
3, put :將本地的檔案上載至伺服器

4.rm :刪除伺服器上的檔案。
5.mkdir :在伺服器上建立目錄。
6.rmdir :刪除伺服器上的目錄。
ncftp 是比較複雜的 FTP 客戶端程式,有些極簡風格的 FTP 客戶端只允許你直接用 FTP 伺服器的指令來操作,但 ncftp 則提供了比較直覺、shell-like 的指令。``ncftp`` 的指令與 bash 很類似,使用起來相當方便。

要上傳檔案的時候,我們可能會遇到一個問題:如何找到要上傳的檔案?在 ls, cd 等指令前加上 "l" 即可針對本地目錄進行操作,所以我們可以切換到檔案所在的位置,檢視檔名,再用 put 上傳。

如果我們想連線到另外的匿名 FTP 伺服器,把 ncftp 後的 -u 參數拿掉即可。

4   建立匿名的公開 FTP 服務
除了為主機上的使用者提供檔案傳輸服務之外,FTP 也常用於為廣大的外部使用者提供檔案。因為要服務的外部使用者並不會擁有主機上的帳號 (如果是完全公開的伺服器,通常我們也不想要為他們管理額外的帳號),所以會以「匿名 (anonymous)」來登入伺服器。故此,公開的 FTP 服務通常都是匿名的,而匿名伺服器多半就會公開提供檔案。

在 ProFTPd 中是以 區塊來設定匿名服務,這個區塊指令的格式為:


...

起始標籤中的 rootdir 為匿名服務所使用的根目錄位置;一般系統使用者登入時會進入該使用者的家目錄,而匿名登入時則會進入這裡所指定的目錄,並且textbf{只能}存取在這個目錄之下的檔案系統結構。我們通常會把 rootdir 設為主機系統中,一個代表著匿名帳號的使用者的家目錄;在 Debian 上預設為 ftp 這個使用者,而進行


這樣的設定,指定以 ftp 的家目錄作為匿名 FTP 的根目錄。

Debian 預設的組態檔並沒有把匿名伺服器打開,但相關的指令都寫成註解了。我們可以把這些註解打開,或是把以下我整理出來的這些設定加回去3:

[3] 我整理的這些設定完全是從 Debian 的預設組態檔抄出來的,只是經過編排。


  User  ftp
  Group nogroup
  UserAlias anonymous ftp
  DirFakeUser on ftp
  DirFakeGroup on ftp
  RequireValidShell off
  MaxClients 10
  DisplayLogin welcome.msg
  DisplayFirstChdir .message
  
    
      DenyAll
    

  

  #
  #   Umask 022 022
  #  
  #     DenyAll
  #  

  #  
  #     AllowAll
  #  

  #


這裡面有兩個設定指令已經在前面看過了:``DisplayLogin``, DisplayFirstChdir,故不再贅述。

這些指令可以分成兩組,第一組用於設定匿名伺服器本身的組態:

•User, Group:指定匿名伺服器執行時的帳號與群組身份。使用者在存取時,會套用成這裡指定的帳號與群組所具備的權限。

•UserAlias :這個指令把 這個名稱對應到 去,亦即當匿名用戶以 登入的時候,會被當成

•DirFakeUser, DirFakeGroup:這兩個指令用來隱藏開放目錄內檔案的真正擁有者與群組。如範例第 5, 6 行的設定,會把匿名伺服器內的擁有者與群組指定為 ftp:ftp,避免被外人得知系統上的使用者名稱,增加入侵者猜測系統帳號與密碼的難度。若是不想要使用這個功能,可以改下

DirFakeUser off
DirFakeGroup off
來關閉它們。

另外還有一個 DirFakeMode 指令,可以連檔案的權限都隱藏起來。

•RequireValidShell:如果設為 on,則 User 所指定的帳號就必需擁有 shell,才能進入系統。因為在底層系統中代表匿名伺服器的使用者,基於安全的原因,通常都特別不設定有效的 shell (這樣就無法登入底層系統了),所以我們在這邊要把 RequireValidShell 設為 off。

•MaxClients:設定可以同時對匿名伺服器連線的數目。作用類似的指令還有 MaxClientsPerHost, MaxClientsPerUser,分別指定一個來源主機與一個使用者可以同時連線的數目footnote{當然,對匿名伺服器來說,設定 MaxClientsPerUser 和 MaxClients 是一樣的;因為伺服器只允許 anonymous 這一個使用者的登入。}。

第二組則設定公開目錄的存取權限:

區塊:為一個或符合條件的目錄進行設定,設定的內容就放在區塊內部。第 11 到第 15 行的 指定了匿名伺服器裡的所有目錄。

區塊:限制可以使用的指令。

•DenyALL:禁止所有的連線。

這個指令通常是與 區塊並用;以第 12 到 14 行的指令來說,會將 下的所有 WRITE (寫入) 權限都關閉。

我把第 16 到 24 行的組態指令註解掉了,因為它是要用來開啟匿名上傳的設定,而且其中的指令已經都說明過了。關於這一段上傳設定,重點在於第 18 到 20 行的 READ, WRITE,和第 21 到 23 行的 STORE 關鍵字。這整段把 incoming 目錄裡匿名的 STORE (儲存,即上傳) 權限打開,而把 READ (讀取) 和 WRITE (寫入,包含覆寫) 都關起來;造成的結果是匿名使用者可以把新檔案 (及目錄) 上傳到伺服器裡的 /incoming 目錄內,但不能讀取,也不能覆寫其中的內容。

如果真的有需要,再把匿名上傳的設定打開即可;匿名上傳常常會造成管理上的問題。而僅作檔案提供之用的 FTP 伺服器,也不必讓匿名使用者上傳檔案。

5   ProFTPd 虛擬主機
ProFTPd 也可以提供虛擬的 FTP 伺服器功能,不過這部分並不像 Apache 那麼有彈性。通常有三種狀況可以用 ProFTPd 虛擬主機來完成:在同一個 IP 上用網域名稱來分隔不同的 FTP 伺服器、在同一台主機上以不同的 IP 配合不同的實體或虛擬網路介面來分隔伺服器4,以及在同一個主機上以相同的 IP 與網域名稱,用不同的通訊埠來分隔伺服器。

[4] 可以使用多張網路硬體,或是對同一個網路硬體進行 aliasing。

ProFTPd 的虛擬主機設定指令也相當簡單:把單一虛擬主機相關的指令寫在該虛擬主機的 設定區塊中即可。這三種虛擬主機的設定也可以組合運用。比較需要注意的是有一些全域的指令不能在 區塊裡使用,詳細的資訊請參考 ProFTPd 的指令參考說明。

5.1   以網域名稱分隔 FTP
如果我們希望達到像 Apache 的 name-based 虛擬主機的效果,可以這樣設定:


  ...

5.2   以 IP 分隔 FTP
和以網域分隔的設法類似,但把 domain.name 換成 IP 位址即可:


  ...

使用者將能以可對應到這個 IP 位址的網域名稱來連上虛擬主機,除非所用的網域名稱另外對應到了其它的虛擬主機。

5.3   用通訊埠區分 FTP
如果我們想在同一個 IP (或網域名稱) 的不同的通訊埠上進行 FTP 服務,可以這樣設定:


  Port 2221
  ...


  Port 2222
  ...

這樣就會把服務分別開在 xxx.xxx.xxx.xxx 這個位址的 2221 與 2222 號埠上
Tags:
一、整合 AD 2003 帳號
 1. 設定 Samba
  # vi /etc/samba/smb.conf
  [global]
  workgroup = sample <- 網域名稱
  realm = sample.com <- 完整網域名稱
  netbios name = linux-src <- 主機名稱
  server string = Linux Src Server <- 電腦描述
  display charset = Big5 <- 支援中文 ShareName
  dos charset = CP950
  unix charset = Big5
  security = ads <- AD 網域認證模式
  password server = twadc.sample.com <- 密碼主機
  encrypt passwords = yes <- 密碼加密
  wins server = 10.1.1.57 <- WINS 主機
  idmap uid = 16777000-33550000  <- 修改 GID 與 UID 的範圍及目錄
  idmap gid = 16777000-33550000  <- (Linux 從 AD 讀取的帳號)
  winbind enum users = yes
  winbind enum groups = yes
  template shell = /bin/bash <- 指定 AD 帳號的 Shell
  winbind use default domain = yes <- 是否自動套用網域名稱
  template homedir = /home/%D/%U <- %D 網域名稱,%U 帳號

 2. 設定 DNS 或 hots
  # vi /etc/resolv.conf
  nameserver 10.1.1.57
  或
  # vi /etc/hosts
  10.1.1.57 twadc.sample.com sample.com
  只要修改其中一種能查詢到 sample.com 網域即可。

 3. 修改 Kerberos
  # vi /etc/krb5.conf
  [libdefaults]
  default_realm = twadc.sample.com <- AD 主機

  [realms]
  SAMPLE.COM = { <- 改成網域
   KDC = twadc.sample.com:88 <- AD 認證主機
   admin_server = twadc.sample.com:749 <- AD 認證主機
   default_domain = sample.com <- 完整網域名稱
  }

  [domain_realm]
  .example.com = SAMPLE.COM <- 完整網域名稱
  example.com = SAMPLE.COM <- 完整網域名稱

  # vi /var/kerberos/krb5kdc/kdc.conf <- 如果沒有此檔案,則代表未安裝krb5-server
  [realms]
  SAMPLE.COM = { <- 完整網域名稱
  ................................
  }

 4. 重新啟動 samba 及 winbind
  # service smb restart
  # service winbind restart

  設定開機啟動
  # chkconfig smb on
  # chkconfig winbind on


 5. 加入 sample.com 網域
  # net ads join -U joindomain <- joindomain 為網域帳號
  joindomain's password:

 6. 設定與 DC 溝通時的使用者
  # wbinfo --set-auth-user=user(具一般使用者權限即可)
  Password:

 7. 編輯 NSS 設定檔
  # vi /etc/nsswitch.conf <- 設定認證順序
  passwd: files winbind
  shadow: files
  group: files winbind

 8. 測試連線
  # kinit administrator@SAMPLE.COM <- 網域名稱要大寫
  若密碼正確會跳回命令提示字元
  AD主機與Linux主機兩台時間不得相差超過5分鐘 <- 這個部份很容易忽略,要注意。


 9. 測試讀取 AD 帳號資訊
  # wbinfo -u
  或
  # getent passwd

 10. 設定本機 UID 與 GID 發放範圍,避免 AD 帳號與 Linux 本機帳號衝突
  # vi /etc/login.defs
  UID_MIN 500
  UID_MAX 9999 <- 改為9999

  GID_MIN 500
  GID_MAX 9999 <- 改為9999

二、整合 Samba
  # vi /etc/pam.d/samba
  #%PAM-1.0
  auth       required     pam_nologin.so
  auth       sufficient   /lib/security/pam_winbind.so <- 加入這行
  auth       required     pam_stack.so service=system-auth
  account    sufficient   /lib/security/pam_winbind.so <- 加入這行
  account    required     pam_stack.so service=system-auth
  session    required     pam_stack.so service=system-auth
  password   required     pam_stack.so service=system-auth

三、分享目錄
  # vi /etc/samba/smb.conf
  [SRC]
   comment = Linux Src <- 目錄描述
   path = /ftpdata <- 分享路徑
   valid users = sample\gavin sample\ida <- 允許的使用者,格式為 網域\帳號 
   public = yes <- 是否公開
   writable = yes <- 是否可寫入

  # service smb restart

四、開啟 ACL
  # vi /etc/fstab
  /dev/hdaX /ftpdata ext3 defaults,acl 1 2

  # mount -ro,remount /dev/hdaX <- 重新掛載
  開啟 ACL 可讓 File Server 支援 MS 的 User Security

五、設定安全性
  1. 在分享的目錄下新增子目錄,並按滑鼠右鍵,選擇「內容」。
  2. 點選「安全性」,即可看到與 Windows 下同樣的安全性設定。

  註:雖可使用 Windows 下的安全性圖形介面,設定權限,但並非百分之百完全支援。

六、啟動網路資源回收筒機制
  # vi /etc/samba/smb.conf
  [SRC]
   comment = Linux Src
   path = /ftpdata
   valid users = sample\gavin sample\ida
   public = yes
   writable = yes

   在分享目錄後,增加下面幾行
   vfs object = recycle
   recycle:keeptree = yes
   recycle:versions = yes
   recycle:repository = ../Garbage/%u

   『recycle:keeptree = yes』:刪除的資料,到了網路資源回收筒後,仍然保有其樹狀結構。
   『recycle:versions = yes』:保留相同的檔案名稱。
   『recycle:repository = ../Garbage/%u』:資源回收筒存放位置,需使用相對路徑表示。

   Garbage資料夾的權限需注意,必須讓使用者具有『rwx』權限,且共享的目錄必須設定 sticky 權限,避免資料被非擁有者刪除。
   還原時可使用 cp -p 的指令還原到原先的資料夾中。


資料參考來源:
施威銘 lunix與Windows異質平台整合

http://linux.vbird.org/somepaper/20060608-samba.pdf

[Debian] 輕鬆安裝 Apache2 mod_rewrite 不指定

Category : linux | Post on 2009/06/07 23:32 by hero | Comments:0
1.安装apache2
apt-get install apache2

2.激活mod rewrite
a2enmod rewrite

3.让apache2得进程加载新配置的rewrite模块
/etc/init.d/apache2 force-reload

4. rewrite规则文件,放在目录的.htaccess,或者if module的配置文件里面
RewriteEngine on
RewriteRule ^/articles/([0-9]+)$                /?article=$1    [PT]
分頁: 1/2 第一頁 1 2 下頁 最後頁 [ 顯示模式: 摘要 | 清單 ]