最近更新日期:2003/09/20
PART I 、架站前進修篇:
第一章、架站之前所需的技能分析 基本的技能需要有: 由於配備相同,所以排除硬體的問題,不過,考慮到 IDE 排線與 partition 的代號,以及 /etc/fstab 的對應,所以應該是由於 IDE 插槽放置錯誤所致(Linux 系統下,每個 IDE 插槽對應的 partition 名稱皆不相同喔!)。此外,上次不正常關機也可能造成硬碟損害而無法開機成功! 在 /etc/default/useradd 這個檔案裡面會規範使用者的預設家目錄以及預設家目錄的內容,一般來說,使用者預設家目錄在 /home ,至於家目錄內的檔案則複製來源在 /etc/skel 裡面。 Quota 目前僅能針對整個 partition 進行限額配置,如果該特定目錄是一個 partition 那就可以進行 quota 設定,否則無法針對特定目錄!此外, Quota 除了特定目錄以及需要 ext2, ext3 等磁碟格式才支援之外,也需要核心的支援喔! 如果是執行檔可以使用 which command 來搜尋,如果是檔案,就必須要使用 locate vbird.document 或 whereis vbird.document 或 find / -name vbird.document 。如果要找到一天內更動過的檔案,可以使用 find 配合參數,如:『 find / -ctime 1』。 由於附檔名是 .tar.gz 或者是 .tgz 的檔案,所以可以認定該檔案為一個 Tarball 的檔案。至於檔名的配置方面,httpd 為套件名稱,2.0.52 則通常為該套件的版本名稱了!那如何安裝?由於該檔案為 httpd 這個套件,且格式為 Tarball ,所以您必須要: 如前面幾個題目所說的,因為是原始碼,所以還需要編譯程式來將該原始碼編譯成為可以在您的 Linux 系統上面跑的 binary 檔案,在 Linux 上頭預設的編譯程式就是 gcc 這個編譯器(compiler)。如果您在安裝 Linux 的時候,使用 Linux Installer 預設的套件選擇,那通常會沒有安裝 gcc 以及 make 等套件,此時,請拿出您的原版光碟,以 mount 指令掛載後,使用 RPM 將一個一個相關的套件安裝即可(過程會蠻複雜的!)^_^ 如果要捉出程序(process)的話,可以使用 ps -aux 或者是直接輸入 top 來查詢 process 的 ID (PID),找到 PID 號碼後,再以 kill -9 PID 來刪除該程序即可。 無法編輯某個檔案,可以先使用 file 這個指令來查詢一下該檔案的格式,例如想察看 /etc/shadow 的格式,可以下達:『file /etc/shadow』,如果是文字檔,卻還是無法編輯,那麼最可能發生的原因就是『權限』的問題了。可以使用 ls -l filename 察看檔案權限,再以 chmod 或 chown 來修訂該檔案的權限。此外,該檔案也可能含有隱藏屬性,可以使用 lsattr filename 查閱,再以 chattr 來修訂隱藏屬性。 在 Linux 系統下,使用者與群組其實都是以『ID(數字)』的格式來設定的,所以使用者與群組其實都是 UID 或 GID (User ID 與 Group ID),Linux 對於檔案權限也都是使用 UID/GID 來分辨。不過人類習慣使用文字來記憶,所以才會有 /etc/passwd 與 /etc/group 來轉譯 ID 與 User 及 Group 之間,這也才會發生為何在 Internet 上面捉下來的 Tarball 解開之後,往往會有檔案擁有人與群組為數字的型態,因為您 Linux 系統上面的 /etc/passwd 與 /etc/group 沒有相關的對應文字說。至於 UID 的等級主要有兩種,分別是超級管理員(root),其 UID 為 0,其他非為 0 的 UID 基本上身份是相同的!不過 Linux 通常會將小於 500 的 UID 保留給系統使用。 放置在 /etc/passwd 與 /etc/shadow 當中。當然還有 /etc/login.defs 喔! 能力需求相當高,如了(1)作業系統的基礎知識(不論是 Linux/Unix/MAC/MS);(2)網路基礎的知識;(3)個別 Internet Services 的運作知識之外,還需要(4)身心保持在備戰狀態,以及(5)具有相當高程度的道德感、責任感與使命感。 如果是 stand alone 的服務,可以經由 /etc/rc.d/init.d/* 裡面的檔案,如 /etc/rc.d/init.d/syslog start; 如果是 Super daemon 的服務,就必須(1)先到 /etc/xinetd.d 或者是 /etc/inetd.conf 修改相關檔案或參數;(2)以 /etc/rc.d/init.d/xinetd restart 來啟動。 因為 cron 是一個 stand alone 的服務,所以可以使用 /etc/rc.d/init.d/cron stop 來關閉;如果還是無法正常關閉,可以使用 ps -aux | grep cron 捉出該程序的 PID ,然後以 kill -9 PID 來關閉。 可以直接在 /etc/rc.d/rc[run-level].d 裡面加入 S 開頭的檔案,不過,更簡單的作法是直接將該程式寫入 /etc/rc.d/rc.local ,不過,請注意該程式必須要具有可執行的權限,且 rc.local 也必須要是可執行喔! 第二章、簡易網路基礎架構 OSI 網路七層協定主要又分為兩大部分,網路層與使用者應用層兩部份。至於每一層的相關功能請參考本章節的表一所示。 由於電子訊號的基本單位為 bits ,所以一般 ISP 提供的傳輸速度單位均為 bits/second ,並非我們常用的檔案計數單位 Bytes ! 在網路媒體上面,資料要傳輸時,必須知道下一個節點的位址才能順利傳送,這個節點的位址如網路卡的硬體位址就是 MAC 了。硬體位址是在網路卡出廠時就已經銲死在上面了(某些筆記型電腦的 MAC 則可以經由特殊軟體修改),而軟體位址,則是我們常說的 IP ,這兩個並不相同喔!其中,MAC 與 IP 互相的對應則是以 ARP Table 來進行轉譯的! 物理廣播主要與網路媒體有關,在同一個網路媒體上面同一時間僅能有一部主機來使用這個網路共享媒體,而要判斷目前有沒有其他主機在使用這個網路媒體時,就是利用Physical Broadcast 咯! 至於邏輯廣播呢?呵呵!就是在查詢到底網域上面有沒有我們這部主機想要連接的相關協定或者同一網域內的其他主機了!他則主要與 MAC, ARP 以及軟體位址(通稱的 IP)有關啦! 當兩部主機同時在一個網路媒體上面進行資料傳輸時,兩個資料封包就會發生碰撞的情況,這就是封包碰撞了。在網路媒體流量很高、網路媒體的連線長度過長都會容易發生資料封包碰撞的情況。 ARP Tables 主要在對應 IP 與 MAC ,當主機要將資料封包送出到下個節點時,必須要知道下個節點的 MAC 才能傳送,而如果不知道 MAC 時,就得需要使用邏輯廣播來查詢 IP 與 MAC 的對應才行。不過,當您的主機內部的 ARP table 已經記錄了 IP 對應的 MAC 之後,那麼該資料封包則可以立即傳送到下個節點去,而不需要再次的進行邏輯廣播了。要知道目前的 arp table 內有多少紀錄,可以使用 『 arp -a 』來查詢。 Netmask 可以有效的增加網路的效率,這是因為 Netmask 可以定義出一個網域的大小,那麼 broadcast 的時間就可以降低很多!一般來說,我們如果要將一個大網域再細分為小網域,也需要藉由 Netmask 來進行 subnet 的切割。 因為共有 28 個 bits 是不可動的,所以 Netmask 位址的最後一個數字為 11110000,也就是 (128+64+32+16=240) ,所以: Network:192.168.0.0 Netmask:255.255.255.240 Broadcast:192.168.0.15 IP:由 192.168.0.1 ~ 192.168.0.14 共 14 個可用 IP 喔! 因為是 29 個 bits 不可動,所以最後一個 Netmask 的位址為: 11111000 也就是 (128+64+32+16+8=248),所以: Network:192.168.0.128 Netmask:255.255.255.248 Broadcast:192.168.0.135 IP:由 192.168.0.129 ~ 192.168.0.134 共 6 個可用的 IP 喔! 既然要分為四個網域,也就是還需要藉助 Netmask 的兩個 bits (2的2次方為4啊!),所以 Netmask 會變成 255.255.255.192 ,每個子網域會有 256/4=64 個 IP ,而必須要扣除 Network 與 Broadcast ,所以每個子網域會有 62 個可用 IP 喔!因此,四個子網域的表示方法為: 192.168.100.0/26, 192.168.100.64/26, 192.168.100.128/26, 192.168.100.192/26。 路由資訊的觀察可以下達 route 來直接察看!或者是下達 route -n 亦可! SYN 代表該封包為該系列連線的第一個封包,亦即是主動連線的意思; ACK 則代表該封包為確認封包,亦即是回應封包! 使用 TCP 封包才會有三向交握。TCP 封包的三向交握是一個確認封包正確性的重要步驟,通過 SYN, SYN/ACK, ACK 三個封包的確認無誤後,才能夠建立連線。至於 UDP 封包則沒有三向交握喔! 第三章、區域網路架構簡介 因為只有 20 個員工,事實上,人員並不多,所以並不需要在內部加設 router 來隔開不同的網域。不過,由於想要管理員工的上網功能,因此最好以第三章圖三的架構,以一部主機內含兩塊網路卡隔開 Intranet 與 Internet 兩個網段,便於管理;至於對外連線的頻寬方面,如果 Linux 主機需要進行網路服務的功能,那麼最好能夠有 512/512 的頻寬,因為可能會有 Client 端下載的問題,至於如果單純的僅下載時(公司沒有額外的網路服務),可以考慮使用 T1/384 之類的頻寬,比較省錢;而在內部網域設定上,如同本章節使用的網域 192.168.0.0/24 來設定即可,如果公司內部尚有移動裝置(NoteBook),則可以在 Linux 上加裝 DHCP (參考十六章)伺服器。 如果私有網域內的流量較大,那麼網路媒體需要選擇 Switch 而不要使用 Hub !另外,整體包括網路線也都需要使用能夠負載 10/100 Mbps 的流量才好。 第四章、連上 Internet 網路卡能不能被捉到可以使用『 dmesg|grep eth 』來判斷,有沒有驅動則可以使用 lsmod 看看模組有沒有載入核心!最後,以 ifconfig eth0 192.168.0.10 測試看看!
ONBOOT=yes BOOTPROTO=static IPADDR=192.168.100.100 NETMASK=255.255.255.0 NETWORK=192.168.100.0 BROADCAST=192.168.100.255 Linux 主機名稱在 /etc/sysconfig/network 這個檔案裡面的『HOSTNAME=主機名稱』來設定,先以 vi 來修改,改完後可以使用 /etc/rc.d/init.d/network restart 或者直接 reboot 啟動主機名稱! 以主機名稱尋找 IP 的方法, /etc/resolv.conf 內填寫 DNS 主機名稱,至於 /etc/hosts 則直接填寫主機名稱對應的 IP 即可! 因為撥接是使用 PPP (點對點)協定,所以撥接成功後會多出一個 ppp0 的介面,此外,系統原本即有 eth0 及 lo 這兩個介面,所以共有三個介面。 請愛用 rp-pppoe ,官方網站: http://www.roaringpenguin.com/pppoe/ 因為撥接成功了,表示物理對外連線沒有問題,那麼可能的問題應該是發生在 Gateway 上面了!確認的方法請使用 route -n 查閱路由資訊,然後修訂 /etc/sysconfig/network-scripts/ifcfg-eth0 吧!
第五章、Linux 常用網路指令介紹 以手動的方法為:『route add -net 192.l68.100.0 netmask 255.255.255.0 dev eth0』即可! 使用 traceroute 尋找到底那個環節出問題:『traceroute tw.yahoo.com』即可! 以 root 的身份進行『netstat -anp |more』查出該連線的 PID,然後以『 kill -9 PID 』踢掉該連線。 方法很多,可以利用 host green.ev.ncku.edu.tw 或 dig green.ev.ncku.edu.tw 或 nslookup green.ev.ncku.edu.tw 等方法找出! 請利用『ping -c 3 -M do -s MTU yourIP 』找出您的 IP 的 MTU 數值。 要瀏覽可以使用 lynx ,至於要下載則使用 wget 這個軟體。如果想要在終端機上面看到中文,還可以安裝 JCMME 。 利用 telnet bbs.sayya.org 即可連接上,同樣的,要看到中文,還是得安裝 JCMME 。 PART II、主機的簡易防火措施篇
第七章、限制 Linux 對外連線的埠口 如果僅想單純瞭解正在 LISTEN 當中的埠口,可以使用『netstat -tul』,如果還想知道有多少連線已經建立,可以使用『netstat -an』來察看。 利用『ps -aux』,或者是 top 來察看均可。 正在 LISTEN 當中的埠口均是由某些服務(daemons)所啟動的,所以要啟動埠口就得啟用某個服務,要瞭解某個埠口是由那個 daemon 所啟動的,就利用 netstat -tulp 來查閱。 三向交握為較為可靠的封包傳輸的一種確認方式,因此只有 TCP 封包才能具有三向交握。他利用(1) client 對 Server 主動連線時帶有的 SYN 標誌,(2)Server 回應時的 SYN/ACK 及(3)最終 Client 確認的 ACK 標誌來確認封包的可靠性。更詳細說明請參考第二章 TCP 與三向交握。 Linux 系統的服務有獨立啟動(stand alone)及超級服務員(super daemon)兩種啟動的方式。掛在 super daemon 底下的服務可以經由 super daemon 的控管,以加強一些安全功能,不過由於還要經過 super daemon 的管理,所以服務的連接速度上會比 stand alone 慢一點。詳細的說明請參考『鳥哥的 Linux 私房菜 -- 基礎學習篇』第二十一章『認識系統服務』內的相關說明吧! 各個 daemons 的啟動與關閉的 scripts 是放置在 /etc/rc.d/init.d 裡面,至於 super daemon 的控管參數檔案則在 /etc/xinetd.d 裡面! 請參考本章節的作法!利用 ntsysv 或者 chkconfig 等功能加上 reboot ,或者 netstat 配合 kill 的方式! 第八章、Linux 網路套件升級 這題請參考本章節的內容,選擇 APT 或者是其他 Linux distributions 網站提供的線上升級方式來進行您的套件升級。 第九章、多 IP 與 Router 的架設 因為 192.168.100.0/25 的 netmask 為 255.255.255.128 ,所以可以這樣做:『ifconfig eth0 192.168.100.2 netmask 255.255.255.128 up 』這樣即可!如果尚須其他的參數,則需要以檔案形式來下達,如 vi /etc/sysconfig/network-scripts/ifcfg-eth0,並修改為:
ONBOOT=yes BOOTPROTO=static IPADDR=192.168.100.2 NETMASK=255.255.255.128 NETWORK=192.168.100.0 BROADCAST=192.168.100.127 ifconfig eth0:1 192.168.200.2 up route -n 即可查閱!注意到 0.0.0.0 那個目標(default gateway)。 直接以『echo "1" > /proc/sys/net/ipv4/ip_forward 』即可! 我的佈線如同下圖所示: 每個 Router 都具有兩個介面,且四個 Router 的右邊介面都在同一個網段內!那麼 Router 1 怎麼跟 Router 2 的內部網域進行溝通?利用:『route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.5.2』即可! 使用第五章Linux 常用網路指令當中提到的 traceroute 來查詢! 第十章、認識網路安全 可以使用 top, sar, free, ps -aux, uptime, last 等功能去查詢系統的相關資訊喔! 因為 SUID 是 4000 這個權限的模樣,所以我可以這樣做: find / -perm +4000 利用最簡易的 MD5 編碼來測試一下,例如『 md5sum 套件名稱』,再比對與原始套件釋出的 MD5 數據是否相同!? 密碼的設定規則在 /etc/login.defs 裡面!至於密碼檔案在 /etc/shadow 內! 找出問題、重新安裝、漏洞修補、資料還原!請參考本章最後面的『修補工 0240network-secure-1.php#repaire 作』內容! 第十一章、簡易 Firewall 架設 防火牆不是萬靈丹,他還是可能被病毒或者是木馬程式所入侵的!此外,如果您的主機本身就已經提供了多個網路服務,則當該網路服務的套件有漏洞時,防火牆仍然無法克服該服務的漏洞的!因此仍然需要持續的進行主機的監視工作! 因為防火牆僅是抵擋某些不受歡迎的封包,如果您有開放 WWW 的服務時,則要求您主機 port 80 的封包將可直接進入您的主機,萬一 WWW 套件有漏洞時,那麼就可能被入侵了!所以套件的更新很重要! 利用 uname -r 可以查得! filter 為預設的 Table,裡頭預設的鏈有: 當封包的所有屬性都不在防火牆的規則當中時,那麼這個封包能否順利的通過防火牆,則以 Policy 作為這個封包的最終動作了! 既然沒有對 Internet 提供任何服務,那麼(1)請將所有的對外埠口先關閉吧!(2)防火牆規則當中,最重要的是 INPUT 的 Policy 一定要 DROP ,然後將『 iptables -A INPUT -m state --state RELATED -j ACCEPT 』即可! iptables -A INPUT -p tcp -s 192.168.1.50 --dport 21:23 -j DROP 因為 ping 能否回應用的是 icmp 的 type 8 (請參考第二章 網路基礎 內的 ICMP 相關內容),所以我可以這樣做: iptables -I INPUT -p icmp --icmp-type 8 -j DROP 因為只有 TCP 封包才會具有 SYN 的標誌, UDP 並沒有 SYN 的標誌啊!所以上面的指令是錯誤的! 因為 DNS 的來源是 port 53 ,因此要接受來自 port 53 的封包就成為了: iptables -A INPUT -p udp --sport 53 -j ACCEPT iptables -A INPUT -p tcp --sport 53 -j ACCEPT 先要清除規則後,才能夠將 iptables 移除!不過,我們主要將規則清除即可! iptables -F; iptables -X; iptables -Z iptables -t nat -F; iptables -t nat -X; iptables -t nat -Z 請利用 iptables-save 以及 iptables-restore 這兩個指令,配合命令重導向即可! 第十二章、申請合法的主機名稱 這個檔案是早期用在進行主機名稱與 IP 的解析的,目前比較常用在內部網域的名稱解析上,可以加快內部網域的反查喔! 如果想要合法授權,就需要向上層 DNS 主機『註冊』才行!而且還要上層 DNS 主機管理員願意將領域名稱的解析權限授權給您啊! 因為我們的 Client 撥接時,得到的 IP 都不是固定的,所以無法以 DNS 系統進行固定 IP 對應主機名稱的工作!此時就需要動態 DNS 系統了!以 DNS 主機提供的動態更新主機名稱對應 IP 的機制,可以讓我們的不同 IP 對應到同一個主機名稱吶! 因為我是以 ADSL 上網撥接,所以 IP 是不固定的,此時需要申請動態 DNS 主機的主機名稱,例如 adsldns.org 以及 no-ip.org 等等! PART III、各類伺服器架設篇:
第十三章、簡易 Telnet 與 SSH 主機設定 因為 Telnet 除了使用『明碼』傳送資料外,本身 telnet 就是很容易被入侵的一個伺服器,所以當然也就比較危險了。至於 ssh 其實也不是很安全的!由台灣電腦危機處理小組的文件可以明顯的發現 openssl + openssh 也是常常有漏洞在發佈!不過,比起 telnet 來說,確實是稍微安全一些! 利用 key pair 來達到加密的機制:Server 提供 Public Key 給 Client 端演算 Private key ,以提供封包傳送時的加密、解密! SSH 設定檔檔名為 sshd_config ,通常放置在 /etc/ssh/sshd_config 內;如果不想讓 root 登入,可以修改 sshd_config 內的參數成為:『PermitRootLogin no 』,並重新啟動 ssh 來設定!如果要讓 badbird 使用者無法登入,同樣在 sshd_config 裡面設定為:『DenyUsers badbird』即可! telnet 與 ssh 的埠口分別是:23 與 22!請參考 /etc/services 喔! 無法登入的原因可能有很多,最好先查詢一下 /var/log/messages 裡面的錯誤訊息來判斷,當然,還有其他可能的原因為: 最好不要對 Internet 開放您的 SSH 服務,因為 SSH 的加密函式庫使用的是 openssl ,一般 Linux distribution 使用的 SSH 則是 openssh ,這兩個套件事實上仍有不少的漏洞被發佈過,因此,最好不要對 Internet 開放,畢竟 SSH 對於主機的使用權限是很高的! 第十四章、簡易 NAT 伺服器 NAT 主機的最大用途在於『封包偽裝』,可以做為內部 Client 主機對外的連線之用(類似 IP 分享器),當然,也可以做為區域內主機 (DMZ) 的設定!至於其運作原理則主要以 iptables 的過濾機制有關,利用 iptables 來將通過的封包進行 Source IP 或 destination IP 的偽裝! 兩邊的 LAN 並沒有互相物理連接,此外,微型電腦為本來的 Linux 主機,而新增一部 Linux 主機則是『伺服器』那一部! 第十五章、簡易 NFS 伺服器設定 主要的設定檔為 /etc/exports 而至於其設定的內容項目在每一行當中則為: 要查閱 /var/lib/nfs/xtab 這個檔案才行! 透過使用 exportfs ,可以加上 -a 或者是 -rv 這兩個參數來重新掛載!如 exportfs -rv 那自然就是 mount 啦!還有卸載是 umount 喔! 可以在 /etc/exports 當中的參數項目,設定『 root_squash 』來控制壓縮 root 的身份喔! 可能由於您掛載進來的 NFS Server 的 partition 當中具有 SUID 的檔案屬性,而您不小心使用了該執行檔,因此就可能會發生系統被破壞的問題了! 可以將掛載進來的 NFS 目錄的 SUID 功能取消!例如: mount -t nfs -o nosuid,ro server:/directory /your/directory 第十六章、簡易 DHCP 伺服器設定 DHCP 主機的主要用途就是在於自動分配網路參數給 Client 端的電腦,以降低網域當中可能發生的 IP 衝突問題,以及減少網管人員到處檢查錯誤的傷腦筋! 主要的兩種分配模式分別為 Dynamic IP 與 Static IP , Static IP 透過 MAC 的比對,至於 Dynamic IP 則是直接取用網域中尚未被使用到的 IP 來進行 Client 端的分配。 DHCP 主要利用網路卡的硬體位址,亦即俗稱的『網路卡卡號』,也就是 MAC 來進行 Client 端的比對的,至於主動取得 Client 端的方式,可以透過 ping 以及 arp 來獲得。 這個檔案主要記錄了 Client 端連上 Server 端的紀錄資料,他會被 DHCP 主機用來判定與 Client 端的租約行為喔! 就是最重要的 /var/log/messages 這個檔案啦(預設狀況下!) 第十七章、簡易 DNS 伺服器設定 最主要的功能其實在於 Hostname 對應 IP 的查詢,可以讓我們人類以電腦主機名稱連上 Internet ,而不必背誦 IP 哩! 在 Unix Like 系統當中,使用 BIND 這個套件做為 DNS 的架設,至於 daemon 則是使用 named 這個 daemon ! 這個檔案的『格式』為『 <IP> <主機名稱> <主機別名(aliase)>』,而,這個檔案裡面放置了至少一行,也就是: 127.0.0.1 localhost localhost.localdomain 另外,也可以將經常連接的主機 IP 與 HOSTNAME 的對應給他寫進來! DNS 主機主要分為: master, slave 與 cache-only 三種類型!在 master 當中,master 主機裡面即有設定 DNS 資料檔案,例如在 /var/named 裡面的正反解檔案。至於 slave 的 DNS 主機則主要在進行 master 主機的資料備份,同時也提供 Internet 上面的查詢功能。使用 master/slave 的最大優點在於「單點維護」的能力!利用修改 master 即可讓 slave 的資料同時更新,減少人力的浪費。至於 cache-only 僅進行快取的紀錄,本身並無資料庫檔案! 正解檔在設定 hostname 對應到 IP 的紀錄,主要的紀錄有 A, NS, SOA, MX, CNAME 等等; 反解檔主要設定 IP 對應到 Hostname 的紀錄,主要的紀錄為 SOA, NS 與 PTR 等。 內部迴圈則是 localhost 與 127.0.0.1 的對應啦! 這個檔案主要是由 rs.internic.net 所下載下來的,主要記錄了 root (.) 這個 zone 的 IP !可以讓我們的 DNS Server 在找不到資料庫時,可以到這個 root 去查詢資料! /etc/nsswitch.conf :可以用來設定查詢主機名稱的順序!例如先查詢 /etc/hosts 再查詢 DNS 系統; /etc/hosts :最早的名稱解析器; /etc/resolv.conf:這就是 DNS 系統的 resolver (解析器)了。 nslookup :可以用來收集一部主機的相關資訊; dig:可以用來收集詳細的主機資訊; whois :可以用來收集詳盡的 DNS 主機資訊。 host 則較為簡單喔! 在 /var/log/messages 當中。 第十八章、簡易 WWW 伺服器設定 這個名詞代表了 Linux + Apache + MySQL + PHP 這個 WWW 伺服器的組成! Apache 的設定檔檔名為 httpd.conf ,不過,由於 httpd.conf 內容參數可以使用『 include "額外設定檔名"』,所以也可能具有其他的額外設定檔喔! 設定主網頁的參數為:DocumentRoot 喔!後面接的是主網頁放置的『目錄』! 其實不論是 RPM 還是 Tarball 都是使用 apachectl 這個檔案來啟動 apache 的,不過 RPM 已經將該檔案整合到 /etc/rc.d/init.d/httpd 裡面去而已! 這是正常的,主要由 httpd.conf 裡面設定的底下兩個參數: 同樣察看 httpd.conf 裡面的 User 與 Group 這兩個設定值! 這是由於在 httpd.conf 裡面,針對該目錄的設定參數『 Options 』當中,設定了 Indexes 這個設定值,導致當找不到主頁時(通常是 index.html),就會將該目錄下的所有檔案秀出來!解決的方法就是拿到 Options 裡面的 Indexes 設定值即可! 可以用來取代 httpd.conf 裡面的設定參數!創造屬於使用者自己的 Apache 風格! 第十九章、簡易 SAMBA 伺服器設定 使用的檔名為 smb.conf ,通常會放置在 /etc/samba/smb.conf 裡面,不過,最好可以使用 rpm -qc packagename 來查詢! 當我們修改完 smb.conf 之後,記得要以 testparm 來進行 samba 的確認! 利用 smbclient 即可:『smbclient -L NetBiosName -U username 』! 在 Linux 系統上面,將 Windows 的網路上的芳鄰,或者是 Linux 的 SAMBA 所提供分享的資源掛載到自己的系統下! 由於 Samba 使用者的資訊必須要存在於 /etc/passwd 裡面,既然無法新增,應該先確認 badbird 這個使用者已經存在於 Linux 系統當中了!如果還是無法新增,則需要查閱 smb.conf 的設定,看看是否 /etc/samba/smbpasswd 這個密碼檔案不存在?! 第二十章、簡易 Mail Server 架設 -- Sendmail 設定 MX recode 可以可以讓 mail server 經由 MX 以及 A ( address ) 這個記錄來進行 mail gateway 與 mail route 的功能!能夠達到的作用相當的多! Sendmail 的設定檔為 sendmail.cf ,這個檔案通常放置在 /etc/sendmail.cf 或者 /etc/mail/sendmail.cf !您可以手動的編輯這個檔案,不過不建議如此,取得代之的,可以使用 m4 這個程式來進行 macro 的動作,進一步的完成 sendmail.cf 的修改!至於使用 m4 時,需要先建立 m4 scripts ,再以 m4 轉換才能形成 sendmail.cf 喔! Mailling list 就是將使用者寄給一個帳號郵件時,該帳號會主動的將該郵件傳送到所有的用戶去!有點類似目前的電子報!在 sendmail 底下,我們可以透過 aliases (需配合 newaliases) 以及 ~/.forward 來達成喔! 使用 mailq 即可知道目前郵件佇列的內容,而郵件佇列雖然可以透過 sendmail.cf 來修改,不過,預設情況下,都是以 /var/spool/mqueue 為郵件佇列目錄。 可以修改 /etc/mail/local-host-names 來達成! 所謂的 Open Relay 就是,不論發信端來自何處,您的 Open Relay 的主機均可以幫發信端將信件發送出去,這個稱為 Open Relay 。如果您的 mail server 具有 open relay 的情況,那麼很容易遭受到垃圾郵件的填充,不但造成網路頻寬的耗損,也容易讓您的主機被列入黑名單當中! 第二十一章、簡易 Mail Server 架設 -- Postfix 設定 一般而言, SASL 1.5 適用於 postfix 1.xx 版本,至於 SASL 2.x 版則適用於 postfix 2.xx 版。由於 SASL 2.x 主要使用 saslauthd 這個 daemon 來做為身份認證的方式,而 SASL 1.5 則使用的是 pam 與 pwcheck 這兩個機制,兩個版本的認證機制並不相同。所以使用 Postfix 來設定 SMTP 的身份認證時,請務必記得版本的差異! 需要在 main.cf 裡面修改的變數主要有: 利用 postconf -n 可以察看『目前 main.cf 裡面設定的參數』,而如果要看所有的參數,則直接使用 postconf 即可! 啟用的方式可以在 main.cf 裡面啟用這個設定值: header_checks = regexp:/完整路徑/檔名 body_checks = regexp:/完整路徑/檔名 至於檔案內容可以這樣做:(註:因為要查閱的是標頭,所以需要 header_checks 後面所接的檔名吶!) /^Subject.*your\ account/ REJECT 第二十二章、簡易 FTP Server 架設 -- Wu FTP 設定 需建立兩種連線,分別是 command 與 data transfer 的連線,就是命令通道與資料傳輸通道。一般來說,就是 port 21(ftp) 與 port 20(ftp-data)。 主動式連線的時候, command 連線是由 client 端主動連接到主機端,但是 ftp-data 則是由主機端主動的連線到 client 端。至於被動式連線的時候,則不論 command 還是 ftp-data 的連線,主機端都是 Listen 客戶端的要求的! 有很多的方法,在設定上面有這些方法: 是在 /etc/services 裡面規範的,此外,正規的 ports 在 command 是 21 而 data 是 20 。 /etc/ftpaccess log transfer 可以將使用者進行資料傳輸的時候,將傳輸的檔案大小、內容等等記錄到 /var/log/xferlog 裡面去! 我們知道 FTP 有主動與被動連線兩種方式,如果 FTP 主機允許被動連線,那麼 Client 端連線時,主機端將會隨機取大於 1024 的 port 來進行 data transfer ,為了避免隨機取 port 的問題,所以 passive ports 可以指定固定的幾個小範圍的 ports ,比較安全。 /etc/ftpusers!(其實是利用 pam 模組來達成的功能!) 資料的傳輸有 ASCII 與 Binary 兩種方式,在進行 ascii 傳送方式時,被傳送的檔案將會以文字模式來進行傳送的行為,因此,檔案的屬性會被修改過,可能造成執行檔最後卻無法執行等的問題!一般來說,ASCII 通常僅用在文字檔案與一些原始碼檔案的傳送。 第二十三章、簡易 FTP Server 架設 -- Pro FTPD 因為無法使用 telnet/SSH ,這表示他可能不具有正常的 shell ,因此您可以將該使用者在 /etc/passwd 裡面,最後一個 shell 參數改成 /bin/false ,然後在 proftpd.conf 裡面設定『RequireValidShell off』即可! 這是由於 proftpd 預設使用 GMT 時間,因此,您必須要重新設定 proftpd ,使得時間使用 localtime 才成!修改 proftpd.conf 裡面的參數成為:『TimesGMT off』 最先應該查詢是否被防火牆擋住了(同時觀察 Server/Client 端); 克服防火牆問題後,再查詢 FTP port 是否有啟動; 再檢閱 /var/log/messages 裡面的錯誤訊息, 最後據以修訂 proftpd.conf 的設定參數! 第二十五章、簡易 Proxy Server 架設 這不但由於 Proxy 可以透過上層 Proxy 達到分流的功能,使得網路傳輸更具效率之外,還由於 Proxy 會將資料快取(cache)在自己的硬碟內,以方便下次的查詢,因此對於區域網路的瀏覽速度是有幫助的! 最主要還是在於找出問題,所以需要由 suqid 的登錄檔查詢起,當然,硬碟的優劣以及 squid 所取得 PID 的 owner 與 group 都是需要注意的! Proxy 伺服器的功能在於代理來自 client 的上網需求,並向目地端主機送出 client 端的要求,以協助 client 端取得所需要的瀏覽網頁。此外,並可將網頁資料進行 cache 的功能。 由於 Proxy 伺服器通常架設之後,會讓網域僅有一個 Proxy 主機的出口,亦即單點對外的伺服器,可以強化網路的管理! 第二十六章、簡易 Network Information Service, NIS Server 架設 當您有多部具有相同帳號的 Linux 主機時,即可利用 NIS 所提供的服務,來利用一部 NIS 主機掌控所有的 linux 主機的登入時所需查閱的帳號與密碼驗證。流程如下: NIS master/client 的特色為: 因為 NIS 是 RPC Server 的一種,所以必須要啟動 portmap 這個 daemon 才行! 網域名稱可以直接手動下達『 nisdomainname bird 』也可以寫入 /etc/sysconfig/network 裡面『NISDOMAIN=bird』; IP 與 主機名稱 需要寫入在 /etc/hosts 裡面。 該檔案的功能很多,在 DNS 方面,可以用來決定正、反解的順序,至於密碼則可以用來判斷何者為先!如果需要先查本機再查 NIS 的密碼時,需要的參數: passwd: files nis nisplus shadow: files nis nisplus /usr/lib/yp/ypinit -m network/netmask:192.168.1.0/255.255.255.0 NIS server : 192.168.1.100 (hostname: server.nis.test ) NIS cient: 192.168.1.200 (hostname: client1.nis.test ) NIS domain name: nis.test 利用上面的參數來設定 NIS 架構,請一步一步的寫下你的設定。 請自行參考本章節內容設定! 請參考:http://www.linux-nis.org/nis-howto/HOWTO/index.html 第二十七章、簡易 NTP 伺服器設定 由於地球是圓的,所以同一時間點上,在地球共可分為 24 個時區,其中,我們以歐洲的格林威治時間為一個對照的依據,這個即是 GMT 時間。台灣時間比 GMT 時間快了 8 小時。至於 UTC 時間則是由原子鐘所計算的時間,這個時間是相當的準確的,主要仍以格林威治時間為時區! 所有的時區檔案放置於:/usr/share/zoneinfo 底下!至於系統時區的設定檔則在 /etc/sysconfig/clock 與 /etc/localtime 喔! 將 /usr/share/zoneinfo/Asia/Taipei 這個檔案複製成為 /etc/localtime 即可! 在 /etc/ntp.conf 這個檔案當中,至於上層 time server 的設定參數為 server 啊!那個 driftfile 則是用來做為『時間差額』的計算的!該參數後面接的是一個完整路徑的檔名,該檔案裡面的數值單位為百萬分之一(ppm)。 可以用來追蹤上層 time server 的連線時間與目前時間! 必須利用 hwclock 這個程式來寫入,利用 hwclock -w 寫入 BIOS 。 最簡單的方法即是使用『 ntpdate time.servers.ip; hwclock -w 』即可! 2003/0919:完成到 Part II (簡易主機防火措施篇) 的習題咯! 2003/09/20:完成了 Part III 的習題咯!真開心!大家作作看吧! |
|||