You are on page 1of 164

Linux 教育訓練

課程介紹
 第一天 Linux 入門
 上午
 認識 Linux
 Linux 版本介紹

 RedHat Linux 安裝過程

 下午
 RedHat Linux 目錄 / 設定檔 / 開機流程、檔案權
限與管理工具介紹
課程介紹
 第二天 Server 架設
 上午
 DNS 、 DHCP 、 FTP server
 實做時間

 下午
 WWW 、 MAIL 、 PROXY
 實做時間
課程介紹
 第三天 Linux 系統維護 / 安全議題
 系統管理與維護
 RedHat
Errata 、 up2date 介紹
 問題討論
認識 Linux
 什麼是 Free Software ?
 Shareware/Freeware
 不提供 Source
Code
 無法讓使用者自由更改或散播
認識 Linux
 什麼是自由軟體 (Opensource)?
 Freedom( 自由 )/Open( 開放 )
 Source Code 必須公開
 任何人都可以自由傳播、下載、使用或改寫
GNU 計畫
 1983 年 Richard Stallman( 自由軟體業的
精神教父 ) 創辦 GNU(GNU’s not Unix) 計

 開始於 1984 年,旨在發展一個 類 -Unix


且為 自由軟體 的完整作業系統

 http://www.gnu.org/
自由軟體基金會
 GNU 計畫的贊助單位
 FSF(Free Software Fundation) 提倡免費軟

 FSF 自由使用權的三個意義:
 可自由複製 GNU 的軟體
 可自由修改原始碼
 可自由散佈修改過的原始碼,但不得收取任何
版權費用
GNU Genel Public License
 大眾公有版權 / 通用公共版權
 官方翻譯:自由文件許可證
 Copyleft

 http://www.linux.org.tw/CLDP/GNU/licence
s/fdl.zh.html
 http://www.gnu.org/copyleft/gpl.html
LINUX 源起
 1991 年 8 月
芬蘭的一個學生在 comp.os.minix 新聞組
貼上了以下這段話:

「你好,所有使用 minix 的人 - 我正在為 386


( 486 ) AT 做一個免費的操作系統 ( 只是為了愛
好 ) ,不會像 GNU 那樣很大很專業。」
GNU 與 Linux
 GNU
 仍自行發展 Hurd Kernel
 開發許多以 GPL 發行的應用程式與工具程式

 Linux ( Linus’s Unix )


 由網路上熱心的朋友一起發展 Linux Kernel
 採用 GNU 發展的許多應用程式與工具程式
 應該稱作 GNU/Linux
Linux 品牌
 RedHat Linux
 SuSE Linux
 Mandrake Linux
 Caldera Linux
 Turbolinux
 Debian GNU/Linux
 Gentoo Linux
 Linpus Linux
Linux Kernel 現況與認證
 Kerenl 版本 http://www.kernel.org
 發展版本- 2.5.70
 穩定版本- 2.4.20

 Linux 認證
 RedHat RHCE
http://www.redhat.com/
 LPI Level one/two/three
http://www.lpi.org
RedHat Linux 9 安裝

請拿出書本所附光碟片

我們將開始安裝
安裝第一步
 Kickstart 安裝介紹
 光碟開機
 基本組態設定
 選擇語言
 鍵盤及滑鼠
 選擇安裝方式
分割磁碟
 使用 Diskdruid
 建立磁碟分割區
 選擇掛載點,例如 “ /” 、
“ /home” 、” /var”
 建立 swap 分割區
 檔案系統類型, ext2 、 ext3 、 msdos…
etc
 分割區大小
開機管理選項
 開機管理程式
 GRUB
 LILO
 不安裝開機程式
 開機程式安裝在哪裡 ?
 MBR
 /boot 的第一個磁區
 設定核心參數
網路組態設定
 新增網路裝置
 選擇網路卡
 DHCP 設定
 IP 位址及其它網路資訊設定
 Hostname
 Gateway
 DNS
防火牆組態設定
 使用 iptables
 高安全
 中安全
 停用
 其他設定
語系 / 時區 /root 密碼設定
 選取要使用的語系
 選取時區
 設定 root 密碼
設定認證方式
 Shadow/MD5 加密認證
 是否使用 NIS/LDAP 等其它認證方式
選取要安裝的套件
 選擇安裝套件
 套件相依性問題
開始安裝過程
 休息時間

 記得回來換片繼續安裝
xwindow 組態設定
 選擇解析度、開機時是否啟動 xwindows
 預設桌面管理員
 選擇顯示卡
 設定螢幕
最後安裝
 建立開機片
 取出安裝光碟
 重開機
Linux 開機流程
 BIOS 嘗試在開機磁碟機的第 0 磁區、第 0 磁柱載入
可供開機的磁區開機
 開機載入程式 (boot loader ,如 LILO 或 Grub) 的程式

 找出 kernel 所在位置,接著載入並執行它以啟動開機程

 一旦 kernel 載入完畢,一些基本設備也完成初始化
(initialization)
 嘗試從某個設備載入以及掛上 (mount) root filesystem
一旦 root filesystem 被載入並掛上,會看到一行訊息像:
VFS: Mounted root (ext3 filesystem) readonly
Linux 開機流程
1. 此時系統會在 root filesystem 上找到 init 程式 ( 在
/bin or /sbin) 並執行

init 讀取它的組態設定檔 (configuration file)


/etc/inittab ,找出檔中標明 sysinit 的一行,並執行被指
名的 script 。這個 sysinit script 通常類似 /etc/rc 或
/etc/init.d/boot 這兩個檔。這個 script 是一組建立基本系
統服務的 shell 指令,諸如:

 對所有磁碟執行 fsck
 載入必備的核心模組 (modules)
 啟動 swapping
 進行網路初始化
 將指定在 fstab 內的磁碟掛上
Linux 開機流程
1. 當 sysinit script 結束後,控制權回到 init
上,接著進入預設的 runlevel

 預設的 runlevel 以 initdefault 這個關鍵字被


指定在 /etc/inittab 內
runlevel 說明
0 – 關機 halt ( 不要在 initdefault 設定這個 )
1 – 單人模式 Single user mode
2 – 多人模式未含網路功能 Multiuser, without
NFS ( 與 runlevel 3 相同 , 用在沒有網路環境下
)
3 – 完整多人使用者模式 Full multiuser mode
4 – 未使用 unused
5 – xwindow 模式 X11
6 – 重開機 reboot ( 不要在 initdefault 設定這個
)
man 男人 ?
 線上查詢 man page
# man ls
# man 1 ls
# info ls

 /etc/man.conf
 whatis filename
vi
 文書處理器 vi
 管理員至少一定要會一種編輯器
 vi 的使用:
 一般模式:移動、複製、刪除、貼上
 編輯模式:插入與取代文件

 指令列模式:搜尋、自動取代、檔案存取等
vi help
 h,j,k,l 移動  / 搜尋
 yy 複製  :%s/x/y/g
 dd 刪除 自動取代
 p 貼上  :w 寫入
 o,i,a 插入  :q 離開
 R,r 取代
 :wq!
 u 回復
寫入強制離開
Linux 檔案
# touch test
# ls –al test
Linux 檔案種類
 正規檔案 ( regular file )
 第一個屬性為 [ - ]
 純文字檔 (ascii)
 二進位檔 (binary)  

 目錄 (directory) :
 第一個屬性為 [d]
 連結檔 (link) :
 第一個屬性為 [l]
 設備檔 (device) :
 區塊 (block) 設備檔,第一個屬性為 [ b ] ;
 字元 (character) 設備檔,第一個屬性為 [ c ] 。
Linux 檔案屬性
更改 Linux 檔案屬性指令
owner = rwx = 4+2+1 = 7
r=4,w=2,x=1
group = rwx = 4+2+1 = 7
# chmod 770 test others = --- = 0+0+0 = 0

u
+( 加入 ) r
g
chmod -( 除去 ) w 檔案或目錄
o
=( 設定 ) x
a
更改 Linux 檔案擁有者指令
語法:
chown [ -R ] 帳號名稱 檔案或目錄
chown [ -R ] 帳號名稱 : 群組名稱 檔案或目錄 範例:

[root@test root]# chown games test


[root@test root]# ls -l test

drw-r--r-- 1 games root 0 Jun 20 14:36 test

[root@test root]# chown –R root:root tmp


更改 Linux 檔案所屬群組
語法:
chgrp 群組名稱檔案或目錄 範例:

[root@test root]# chgrp users test


[root@test root]# ls -l

drw-r--r-- 1 root users 1 Jun 20 14:36 test


Linux 目錄結構
 /bin :常用系統程式目錄
 /boot :開機設定檔,也是預設擺放核心 vmlinuz
的地方
 /dev :擺放所有系統裝置檔案的目錄
 /etc :幾乎系統的所有設定檔案均在此,尤其
passwd, shadow
 /etc/rc.d/init.d :系統開機的時候載入服務的
scripts 的擺放地點
 /home :系統使用者的家目錄
Linux 目錄結構
 /lib : Linux 執行或編譯程式函式庫目錄
 /mnt :軟碟與光碟接預設掛載點的地方
 /proc :系統核心與執行程序的一些資訊
 /root :系統管理員的家目錄
 /usr/bin, /bin :一般執行檔擺放的地方
 /usr/sbin, /sbin :系統管理員常用指令集
 /var :擺放系統記錄檔案的地方
 /lost+fount :擺放系統不正常產生錯誤時遺失的
片段
Linux 管理工具介紹
 檔案與目錄管理
 磁碟與硬體管理
 程序與資源管理
 RPM 的管理
 帳號與身份管理
檔案與目錄管理
 目錄與路徑
 相對路徑與絕對路徑

. 代表此層目錄
.. 代表上層目錄
~ 代表自己的家目錄
~user 代表到 user 這個人的家目錄
檔案與目錄管理
 cd  rmdir
變換目錄 刪除一個裡面是空的空
cd /root 目錄
 pwd rmdir –p abc/123
 環境 變數 PATH
顯示目前的目錄
echo $PATH
 mkdir
PATH=”$PATH”:/root
建立一個新目錄
mkdir –p /root/abc/123
檔案與目錄管理
 ls [-ailS]
參數說明:
-a : 全部的檔案都列出(連同隱藏檔)
-i : 印出 inode 的值
-l : 長的列出,連同檔案大小的資料等等
-S : 以檔案大小排序
檔案與目錄管理
 cp [-drsu] [ 來源檔 ] [ 目的檔 ]
參數說明:
-d :在進行 copy 的時候,如果是 copy 到 link 檔案
,若不加任何參數,則預設情況中會將 link 到的原始
檔案 copy 到目的地,若加 -d 時,則 link 檔案可原
封不動的將 link 這個捷徑其拷貝到目的地
-r :可以進行目錄的 copy
-s :做成連結檔,而不 copy 之意!與 ln 指令相同
功能!
-u, --update :如果來源檔比較新,或者是沒有目的檔
,那麼才會進行 copy 的動作
檔案與目錄管理
 rm[-fir] [ 檔名 ]
參數說明:
-i : 提供使用者確認(這是預設值)
-r : 遞迴刪除
-f : 強力刪除
檔案與目錄管理
 mv[-u] [ 來源檔 ] [ 目的檔 ]
參數說明:
-u : 同樣的,為 update 的簡寫,當來源檔比
目的檔還新的時後才會動作
觀看檔案內容
 cat 由第一行開始顯示檔案內容
 tac 從最後一行開始顯示,可以看出 tac 是 cat
的倒著寫
 more 一頁一頁的顯示檔案內容
 less 與 more 類似,可以往前翻頁
 head 只看頭幾行
 tail 只看尾巴幾行
 nl 顯示的時候,順道輸出 行號
 od 以二進位的方式讀取檔案內容
連結檔的介紹
 連結檔的介紹: 什麼是 inode
Block 是記錄『檔案內容資料』的地區,而
inode 則是記錄『該檔案的屬性、及該檔案放
置在哪一個 Block 之內』的資訊
 ln
 hard link
不能跨 filesystem/ 不能 link 目錄
 symbolic link
 ln [-s] [ 來源檔 ] [ 目的檔 ]
檔案與目錄權限
 chown 改變檔案的擁有人
 chgrp 改變檔案的所屬群組
 chmod 改變檔案的可寫、可讀、可執行等
屬性
 umask 改變預設的建立檔案或目錄時的屬

 chattr 改變檔案的特殊屬性
 lsattr 顯示檔案的特殊屬性
搜尋檔案或目錄
 which 查看可執行檔案的位置
# which ls
 whereis 查看檔案的位置
# whereis [–b/-m] ls
 locate 配合資料庫查看檔案位置
# locate ls #updatedb
 find 尋找檔案 #
find / -name “ls”
磁碟與硬體管理
 查看硬碟或目錄的容量: df, du
 切割與格式化硬碟: fdisk, mke2fs, e2label,
mknod
 檢查硬碟壞軌與資料同步化寫入: fsck, sync
 關於軟碟開機片: mkbootdisk, fdformat
 各式磁區的掛載: mount, umount
 設定開機時即掛載的方式: /etc/fstab
 虛擬記憶體 Swap : mkswap, swapon, swapoff
 磁碟效能: hdparm
程序與資源管理
 什麼是程序?
 任何觸發系統工作的事件,系統會給予一個
process ID 來控制該事件的執行,這個 PID
就是程序
 需要注意到,程序『屬於誰?他的權限是不同
的!』而程序執行後輸出的訊息則與資料流有

程序與資源管理
 如何觀察程序?
 top
 ps
 常駐記憶體的程式 (daemon, 服務 )
 在背景下執行
 是系統正常運作所必需要的 (syslog,cron)
 是某些服務提供所必需要的 (www, mail..)
程序與資源管理
 程序的優先執行順序?
 Priority
 nice value
 nice 新的 PID
 renice 已存在的 PID
程序與資源管理
 給予程序『訊號 , signal 』
 kill -signal PID
 -1 重新讀取設定檔
 -9 無條件強制驅離記憶體

 -15 正常方式關閉該 PID


程序與資源管理
 重要的程序之一: syslog
 系統在背景下工作的各項服務所產生的『訊息
』均統一由 syslog 這個服務 (daemon) 所管

 /etc/syslog.conf
 /var/log/messages
 /var/log/secure ...
程序與資源管理
 背景與前景之工作管理
 & 與 ctrl + z
 jobs
 fg, bg, kill %number
程序與資源管理
 工作排程
 循環式工作排程:
 crontab
 /etc/crontab

 單一工作排程:
 at
Linux 套件管理
 Tarball
 為原始碼 (open source)
 大部分的 tarball 均支援跨平台
 需要額外的套件支援: make, kernel source,
gcc 等等
 升級、反安裝等較為不方便
Linux 套件管理
 RPM
 具有資料庫:容易安裝、升級、移除
 在查驗及搜尋方面極為有效率
 漏洞修補速度快速
 最大的缺點:屬性相依的問題 ( 這包含了版本
、平台等等 )
RPM 的管理
 安裝
 rpm –ivh bash.rpm
 升級
 rpm –uvh bash.rpm
 驗證
 Rpm –V bash
RPM 的管理
 移除
 rpm –e bash
 查詢
 rpm –qa bash
 重建 rpm 資料庫
 rpm --rebuilddb
帳號與身份管理
 帳號管理
 groupadd
 groupdel
 useradd
 userdel
 chsh
 chfn
 userconf
帳號與身份管理
 密碼管理與設定
 passwd
 使用者身份切換
 su
 sudo
 visudo
帳號與身份管理
 使用者查詢
 id
 finger
 groups
RedHat Linux 設定指令
 setup
 Authentication configuration :這是關於系統性安全
的設定項目
 Firewall configuration :這個是關於 ipchains 的防
火牆機制設定
 Mouse configuration :設定滑鼠的型態
 Network configuration :設定網路參數
 System services :設定系統服務啟動
 Printer configuration :設定印表機囉
 Timezone configuration :設定時區
RedHat Linux 設定檔
 /etc/sysconfig/* 裡頭的設定檔案

 系統啟動服務工具
 ntsysv
ntsysv [--level run-level]
 service
service [service name] [start|stop|restart]
 chkconfig
chkconfig [--level levels] [--list|add|del] [service name]
 init
init [0-6]
Shell
 指令的操作
 每行指令均以 Enter 為『開始執行』的依據,
不過可以 \ 延續下達
 指令可接續參數 (Options) 來達成多樣化的工

 大小寫是完全不同的
 藉由輸出訊息可瞭解問題、解決之
Shell
 變數的功能
 環境當中,一些必要指令的用途
 HOME 家目錄
 MAIL 用 mail 時取得的 mailbox

 PS1 提示字元囉!

 PATH 執行檔的搜尋路徑

 ? 上個指令的執行結果回傳值
Shell
 變數的功能
 簡化與優化指令或 scripts
 例如常使用的字串取代、
 常使用的路徑取代… .

 Shell scripts 當中的變數取代 ( 最常見 )


Shell
 進階指令操作 -- 資料流重導向
 將指令執行後,應該由螢幕輸出的的訊息導向
到裝置或檔案當中;
 # ls /home >> right 2>> error
 最常見在『背景』工作中!例如系統的一堆背
景工作紀錄 (syslogd)
Shell
進階指令操作 -- 管線命令 pipe
 將輸出的訊息繼續進行處理
Shell
 進階指令操作 -- 管線命令 pipe
# last | grep root | wc -l
 # cat /etc/passwd | cut -d ‘:’ -f1 > accout
系統關機
 關機
 shutdown –h now
 halt

 poweroff

 init 0

 重新起動
 shutdown –r now
 reboot

 init 6
討論時間
 有任何問題歡迎直接提出一起討論

 第一天課程結束

 明天講解 Server 架設與實作


網路工具
 一些網路偵錯指令
 ping, ifconfig, ifup, ifdown, netstat, route,
traceroute, host, dig, nslookup
 遠端連線使用指令
 telnet, ssh, ftp, ncftp, lftp, wget
 文字界面網頁瀏覽
 lynx, links
RedHat Linux 網路設定
 修改主機名稱與 Gateway 等設定
 /etc/sysconfig/network
 修改網路卡設定
 /etc/sysconfig/network-script/ifcfg-eth0
 修改 DNS 與 Hosts 設定
 /etc/resolv.conf
 /etc/hosts
DNS Server
 何謂 DNS?
 Domain Name Server
 如何作業
 正查
 給 domain name, 回應 ip
 反查
 給 ip, 回應 domain name
DNS Server 查詢方式
DNS Server 套件- BIND
 套件: bind-9.2.1-16, bind-utils-9.2.1-16
 服務: named
 執行檔: named
 服務埠: 53 upd, 53 tcp
 設定檔: /etc/named.conf , /var/namd/*
設定 BIND
 預設的設定檔為 /etc/named.conf
全域選項,直接宣告於 options 底下:
options {
directory “/var/named”;
fowrarders { 168.95.1.1; };
allow-query {192.100.100/24; };
allow-transfer {192.100.100/24; };
};
 Master 選項:
 zone “example.com” {
type master;
file “db.example.com”;
};
 Slave 選項:
 zone “example.com” {
type slave;
masters { 192.100.30.1; };
file “db.example.com”;
};
 Reverse lookup( 反向尋查 ) 選項:
zone “30.168.192.in-addr.arpa”{
type slave;
masters { 192.168.30.1; };
file “db.30.168.192”;
};
 Root 選項:
zone “.” {
type hint;
file “named.ca”;
};
SOA (Start of Authority)
 每個 ZONE 選項中都要有此設定

exmaple.com. IN SOA example.com. root.example.com (


2003053001 ; serial number
300 ; refresh
60 ; retry
1209600 ; expire
43200 ; minimum TTL for negative answers
)
NS (name server)
 每一個 master 及 slave DNS 都要有一個
NS 紀錄
例:
example.com. IN NS ns.redhat.com.
ns.example.com. IN A 192.168.30.1
主要紀錄的型式
 A 紀錄對映 hostname 到 IP 位址
mail.example.com. IN A 192.168.30.3
www.example.com. IN A 192.168.30.4
 CNAME 定義位址的別名
mx IN CNAME mail
www2 IN CNAME www.redhat.com.
 PTR 紀錄 IP 位址對映到 hostname
3 IN PTR mail.redhat.com.
MX 紀錄
 MX 結合 domain name 來處理其電子郵件
example.com. IN MX 5 mail.example.com
exmaple.com. IN MX 10 mail2.example.com
實做
 修改 /etc/named.conf
 設定讀取目錄 /var/named
 建立一個 root 的 zone 設定
 建立一個 example.com 的 zone 設定
 建立一個 192.168.30 的反查 zone 設定
實做
 建立 example.com.zone 檔
 設定 ns server 為 192.168.30.1
 設定 A 記錄
 設定 MX 記錄
 設定 CNAME 記錄
 建立 example.com.rev 檔
 設定 PTR 紀錄
DNS Server 啟動與停止
 /etc/init.d/named start 啟動

 tail –f /var/log/messages 查看 log 紀錄

 /etc/init.d/named stop 停止
 killall named or kill -9 PID
DNS Server 驗證
 nslookup www.example.com
 nslookup 192.168.30.3

 dig exmaple.com mx
 host www.exmaple.com
DNS Server Lab
 請建立一個以 exmaple.com 為網域且可
供正查與反查的 DNS Server
DNS Server Lab
 檢驗項目 1
# host www.example.com
www.example.com has address 192.168.30.3

 檢驗項目 2
# nslookup 192.168.30.1
1.30.168.192.in-addr.arpa name = ns.example.com.
DHCP server 種類
 DHCP 有三種方式 , 靜態 / 自動 / 動態
 靜態方式 : 手動指定用戶端固定 IP
 管理者在 DHCP Server 輸入用戶端 IP 與硬體位

 通常用在需要固定 IP 的各種伺服器主機
 自動方式 : 自動指定 IP 位址
 DHCP Server 由預定的 IP 範圍 , 自動分配給用戶
端 , 且無限期使用
 IP 範圍必需多於用戶端電腦數量
 會記錄 IP 與 MAC 位址的對應資訊 , 所以用戶端
每次開機後都分配到相同 IP
DHCP Server 種類
動態方式 : 動態分配 IP 位址
 IP 範圍少於用戶端電腦數量
 動態分配 IP 時設定租用期限 , 用戶端

電腦於租用期限到期或關機時 , 收回
IP 供其他用戶端電腦使用
DHCP 租用流程
 分兩種 , 第一種為第一次租用流程

 (1) 先在區域網路廣播找 DHCP Server


DHCP Client => DHCP DISCOVER => DHCP Server

 (2) 找到後由 DCHP Server 提供租用 IP 資訊


DHCP Server => DHCP_OFFER => DHCP Client

 (3)DHCP Client 回覆 DHCP Server 收到 IP 資訊 , 並請求認可


DHCP Client => DHCP_REQUEST => DHCP Server

 (4)DHCP Server 收到請求後 , 給予認可 , DHCP Client 啟始租用


IP
DHCP Server => DHCP_ACK => DCHP Client
DHCP 租用流程
 第二種為 , 更新租用流程 ( 在租用期達二分之一
後開始動作 )

 (1)DHCP Client 向 DHCP Server 請求延常租用位址


時間
DHCP Client => DHCP_REQUEST => DHCP Server

 (2)DHCP Server 收到後 , 回覆 DCHP Client 認可繼


續租用
DHCP Server => DHCP_ACK => DHCP Client
DHCP 租用流程
 若在這期中 DHCP Server 沒有給 DHCP
Client 任何回應 , 當 DHCP Client 達租用
期限時 , 就會停止使用 , 再回到以第一種
方式申請租用新的 IP 位址 .
DHCP Server 套件
套件:
dhcp-3.0p11-23.i386.rpm
dhcp-devel-3.0p11-23.i386.rpm

設定檔路徑:
/usr/share/doc/dhcp-3.0p11/dhcpd.conf.sample
Copy 至 /etc/dhcpd.conf

相關檔案: /etc/sysconfig/dhcpd
/var/lib/dhcp/dhcpd.leases
dhcp.conf
 整體設定 (Global) :裡面含有租約期限、還有 DNS IP
與 router 的設定
 動態 IP 設定:使用 subnet 的項目與 range 的參數來
設定要分配出去的 IP
 靜態 IP 設定:使用 host 這個項目段,配合 MAC 來設

 『 # 』為註解符號;
 除了括號那一行之外,其他的每一行後面都要以『 ; 』
做為結尾
dhcp.conf Example
option domain-name   “example.com";
# 設定每部主機的後頭領域名稱為 example.com
option domain-name-servers 168.95.1.1, 192.168.30.1;
# 設定 DNS IP

# 動態 IP 分配的設定:
subnet 192.168.30.0 netmask 255.255.255.0 {
    range 192.168.30.100 192.168.30.200;
    option broadcast-address 192.168.30.255;
    option routers 192.168.30.254;
}
dhcp.conf Example
# 靜態 IP 的設定:

host server1 {
    hardware ethernet  00:40:95:30:43:B4;
    fixed-address 192.168.30.90;
    option broadcast-address 192.168.30.255;
    option routers 192.168.30.254;
}

default-lease-time 259200;  
# 預設的租約時間,後面接的時間為秒鐘。
max-lease-time     518400;  
# 最大租約時間,最長到 518400 秒
DHCP Server 啟動 與 除錯
 /etc/init.d/dhcpd start

 tail -f /var/log/messages
DHCP Client 設定
將 Client 端的 TCP/IP 設定改為自動取得 IP
 Windows 驗證
 Ipconfig /all
 winipcfg
 Linux 驗證
 Ifconfig -a
DHCP Server Lab
 設定動態 IP 範圍
192.168.30.100~192.168.30.200
 設定一台主機名稱為 server
 固定 IP 為 192.168.30.90
 網卡 Mac
Address 為 00:40:95:30:43:B4
 廣播位址為 192.168.30.255
 路由位址為 192.168.30.254
FTP server
 vsFTPD (Very Secure FTP Daemon)
 套件: vsftpd-1.1.3-8.i386.rpm
 TCP 20 傳資料
 TCP 21 傳輸流程的控制
 兩種主要身份使用
 anonymous
 real user
vsFTPD 設定檔
 /etc/vsftpd.ftpusers
 限制登入的使用者
 /etc/hosts.deny
 限制登入的網域
 /etc/vsftpd/vsftpd.conf
 主要設定檔
vsFTPD 啟動與驗證
# /etc/init.d/vsftpd start
 啟動 vsftpd

# lftp localhost
# ncftp localhost
FTP Server Lab
 請用 vsFTPD 架設一個 FTP Server
 設定歡迎訊息 banner_file
 讓匿名的使用者可以上傳檔案
WWW Server
 套件: httpd { , -devel, -manual }
 服務名稱: httpd
 啟動的 script : httpd
 執行埠: 80/tcp (http), 443/tcp (https)
 設定檔: /etc/httpd/* , /var/www/*
 相關: redhat-config-httpd , mod_ssl ,
以及其它
WWW Server 設定檔
 設定檔位置
/etc/httpd/conf/httpd.conf
 模組位置
/etc/httpd/conf.d/*
 網頁文件預設放置目錄
/var/www/html/
httpd.conf
 指定給使用者的目錄
UserDir public_html
 MIME 型態設定
AddType application/x-httpd-php .phtml
AddType text/html .htm
 宣告 index 的頁面
DirectoryIndex index.html default.html
httpd.conf
 允許連結的設定
<Directory /var/www/html/internal>
order allow, deny
allow from .example.com
</Directory>

 使用 .htaccess 檔案
#sample authentication .htaccess file
AuthName “Jack’s home “
AuthType basic
AuthUserFile /home/jack
require user jack
Virtual Host 虛擬主機
 在同一台電腦下 , 要建立虛擬主機 , 可採用
IP/Name/Port 三種方法建立
 (1)IP Base:
使用 IP 地址將網頁請求對映到正確的頁面目錄 , 因此
每一個虛擬主機都需要一個 IP 位址
 (2)Name Base:
只有單一 IP 位址 , 但要用不同的網域名稱來呈現不同
的網頁內容時 , 就是以 Name Base 的方式來將網頁
對映到正確的頁面 , 但該方式無法使用 SSL 功能 ,
且需要支援 HTTP/1.1 的瀏覽器才可以使用 .
 (3)Port Base:
利用不同的 port 設定 , 建立起多個虛擬主機 .
SSL 連線步驟
1. Client 端 和 Web Server SSL port 連線 .(https)
2. Web Server 端將憑證資料傳給 Client 端
3. Client 端進行憑證資料的確認 , 將認可傳給 Web Server

4. Web Server 端會再跟 Client 端傳送兩次資料 , 一次是以
自己的私鑰產生的資料內容 , 另一次是 Web Server 端的
公鑰 .
5. Client 收到 Web Server 端的加密資料與公鑰後 , 將
Web Server 的公鑰產生 Symmetric Key, 並將該
Symmetric Key 傳給 Web Server 端 .
6. 兩端將以此 Symmetric Key 建立起加密通道
WWW Server 啟動與除錯
 /etc/init.d/httpd start

 tail –f /var/log/httpd/access_log
 tail –f /var/log/httpd/error_log
WWW Server Lab
 請建立一個以 Name Base 的虛擬主機
 www.example.com
 www2.example.com

分別可以看到不同的網頁
Mail Server
 MTA
 sendmail,postfix,qmail,exim
 MDA
 procmail
 MUA
 Outlook Express
 Becky
Mail Server 路由
Mail Server
 套件選擇 - Sendmail
 Sendmail 的特色:
 允許各種不同的 emial 位址路徑
 支援虛擬的 domains
及 users
 允許偽裝的使用者及機器
 提供自動重試失敗傳送郵件的重傳及其它一些
情況
Mail Server 套件- sendmail
 作業型態: System V-launched daemon
 套件: sendmail {,-cf, -doc} 、 IMAP
 服務名稱: sendmail
 執行的 script : sendmail
 服務埠: 25(smtp)
 設定檔位置: /etc/mail/sendmail.cf, /etc/aliases,
/etc/mail/
 相關: procmail 、 /var/mail/maillog 、
/var/spool/mail
m4
 以 m4 來設定 sendmail.cf
 m4 是用來幫助設定 sendmail.cf 的範本語言
 Red Hat 預設 sendmail 的設定檔是以
/etc/mail/sendmail.mc 來產生的
 Red Hat 建議以 m4 的 sendmai.mc 來開始設
定 sendmail
 完整的 README.cf 放在
/usr/share/doc/sendmail 裡
sendmail.cf
主要設定檔
 sendmail.cf
 包含 domain 的別名 (alias) 、標頭、傳送規則

 編輯此檔時請小心並仔細地閱讀說明
/etc/mail/sendmail.cf
# 開放中繼功能
# SMTP daemon options
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
127.0.0.1 改為 0.0.0.0

# 限制郵件大小
# maximum message size
O MaxMessageSize=1000000
/etc/mail/access
 RELAY
 開放中繼功能
 REJECT
 拒絕傳送
 DISCARD
 直接丟棄
 修改後記得在 /etc/mail 下執行 make
/etc/aliase
 設定帳號別名
MAILER-DAEMON: postmaster
postmaster: root
root: admin@example.com
sales: jack,john,mary

# newaliases
查詢郵件佇列與 log
# mailq

# tail –f /var/log/maillog
sendmail 啟動與測試
# /etc/init.d/sendmail start

# telnet localhost 25
mail from: root@server.example.com
rcpt to: root@example.com
data
This is a test Mail
.
quit
Mail Server Lab
 請用 sendmail 設定好一台可開放
192.168.30.1 向您的 Server 代為轉信的
功能 .
Proxy Server
 什麼是代理伺服器 ?

 Proxy
會幫 Client 端的用戶去向目的地取得
用戶端所需要的資料

 是一個代理人的角色
Proxy Server
Proxy Server 運作方式
Proxy Server 優缺點
優點
 快速的存取動作
 降低網路的負荷
 資料分流
 提供防火牆內部的電腦連上 Internet
 多層次的管道 ( 上層代理伺服器 )
缺點
 容易為 Intranet 的內部人員濫用
 需要較高超的設定技巧與除錯程序
 可能會取得舊的錯誤資料
上層 Proxy Server
 SeedNet 的代理伺服器
(http://service.seed.net.tw/dial/server.shtm
l)

 Hinet 的代理伺服器
(http://www.hinet.net/support/new_adsl04.
htm)
硬體要求與最佳硬體配置方式
 CPU 最好能夠 P III 550 以上等級
 RAM 最好能夠大於 512 MB
 Hard Disk 最好能用 SCSI 介面的
 網路卡與網路周邊最好使用 GBytes 的網
路卡
Proxy Server 套件- squid
 安裝 Proxy 套件 – squid-2.5.STABLE1-
2.i386.rpm
 目錄位置: /etc/squid
 設定檔: /etc/squid/squid.conf
 紀錄檔: /var/log/squid/access.log

/var/log/squid/cache.log
/var/log/squid/store.log
squid.conf
http_port 3128
icp_port 3130
reference_age 1 month
cache_dir ufs /var/spool/squid 100 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
pid_filename /var/run/squid.pid
squid.conf
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching
web server
#auth_param basic credentialsttl 2 hours
http_access allow all
cache_mgr root
cache_effective_user squid
cache_effective_group squid
squid 設定解說
http_port 3128 以瀏覽器連接到本 proxy server 時的
port
cache_mem 8 MB 設定 squid 可用的記憶體空間
cache_dir ufs /var/spool/squid 100 16 256
設定快取目錄和快取可以使用的硬碟空間 ,100 表示
100MB;16 表示第一層子目錄最多有 16 個 ;256 表示每個
第一層子目錄下的子目錄最多可以有 256 子目錄
cache_access_log /var/log/squid/access.log
快取記錄檔的名稱和所在目錄 , 負責記錄快取的所有行為
cache_log /var/spool/squid/cache.log
快取儲存記錄檔的名稱及所在目錄
squid 設定解說
cache_store_log /var/log/squid/store.log
設定 store.log 的存放位置

store.log 、 cache.log 、 access.log 要定時備份並刪除 ,


以免佔磁碟空間

reference_age 1 month
設定快取的資料保存時間
cache_mgr root
squid 出問題時要通知的管理者
acl 的用法
<acl> <acl 名稱 > <acl 類型 > < 設定的內容 >
acl 類型
 以來源端: src,srcdomain
 以目地端: dst,dstdomain
 以正規表式法: url_regex [-i] ^http://

urlpath_regex [-i] \.gif$


設定的內容
 IP or Domain or String

acl example dstdomain .com


http_access 用法
 設定允許存取 squid Server 的列表
以 acl 的定義來做管制
http_access allow example
# 設定只允許 example 的 acl 訂義存取
http_access deny all
# 如果要開放的話 , 改成 allow all
cache_peer 用法
<cache_peer> < 主機名稱 > < 類別 > <http_port> <icp_port> < 其他參
數>
類別: parent( 上層 ),sibling( 同一層 )
http_port/icp_port : 3128/3130
其他參數:
proxy-only,weight=n,no-query,default,no-netdb-
exchange,no-digest
到處向其它 proxy server 請求會消耗太多網路資源,所以
請勿設太多 parent 和 sibling server.
cache_peer proxy.hinet.net parent 3128 3130 proxy-only
cache_peer_access 用法
<cache_peer_access> < 上層 Proxy> <allow|deny> <acl 名稱 >

cache_peer_access proxy.hinet.net allow example


不要進行 cache 的設定值
只要網址列出 cgi 字樣都不做 cache

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
與時間相關的設定值
<refresh_pattern> <regex> < 最小時間 > < 百分比 > < 最大時間
>
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
與時間相關的設定值
connect_timeout 2 minutes
# 連線的 timeout 時間
peer_connect_timeout 30 seconds
# 連線到上層 proxy 的 timeout 時間
request_timeout 5 minutes
# 連上後 , 要求的 timeout 時間
persistent_request_timeout 1 minutes
# 連上後 , 連續要求 timeout 時間
額外的功能參數
 與 FTP 有關的設定項目,主要是針對被動式連

ftp_user Squid@
ftp_passive on

 主要與 DNS 的設定值有關,如果在高負載的


Proxy 環境下,可以考慮將 dns_children 提高
到 20 左右,這個值最大為 32
dns_timeout 1 minutes
hosts_file /etc/hosts
transparent proxy
 設定 squid.conf
httpd_accel_host proxy.example.com
httpd_accel_port 80
httpd_access_with_proxy on
httpd_accel_uses_host_header on
 設定 NAT 主機的 port map
iptables -t nat -A PREROUTING -i eth0 -p tcp -s
192.168.30.0/24 --dport 80 -j REDIRECT --to-
ports 3128
啟動 squid server
 /etc/init.d/squid start

 tail –f /var/log/squid/access.log
Proxy Client 端設定
 在 Browser 的設定選項中找出代理伺服器
,給予設定
末端資料分析 pwebstat
 http://
martin.gleeson.com/pwebstats/installation.htm

 可使用該軟體來做 log 分析
Proxy Server Lab
 兩個人為一組,設定一台簡易的 Proxy
Server

 使用 client 做 Internet 連線,並查看


Proxy Server 是否有代為抓取資料
討論時間
 安裝 / 設定 / 調校
 觀察紀錄檔

 有任何問題歡迎提問
 第二天課程結束
 明天將講解系統維護與管理 / 網路安全 / 線
上套件更新
系統維護與管理
 定時備份資料
 檢查系統紀錄檔
 調校系統狀態
 注意系統安全
備份資料
 確定備份資料的來源與目地
 使用 tar 搭配 gzip 或 cpio 來完成備份的
工作
 運用 script 來將資料做備份與紀錄
網路安全
 Cracker 常見的入侵 技術:
 使用工具程式入侵你的主機
 蠕蟲或木馬程式 ( Trojan horse )
 DoS 攻擊法 ( Denial of Service )
 IP 欺騙
 Port scan
網路安全
 主機維護的幾個 重要事項
 關閉幾個不安全的服務
 升級幾個可能有問題的套件
 架設好最起碼的安全防護 -- 防火牆—
 iptables
 http://projectfiles.com/firewall 套件
網路安全
 移除不必要的服務
 使用以下工具檢查 port
 netstat
 nmap
 使用 ssh 做主機與主機的連線
 ssh
 putty
線上套件更新
 RedHat 套件更新
 up2date
 中央研究院 RedHat update Mirror
ftp://linux.sinica.edu.tw/redhat/updates
討論與分享時間

歡迎提出在 Linux 整合上的問題



Linux 相關議題

一起討論

You might also like