Linux 教育訓練
課程介紹
第一天 Linux 入門
上午
認識Linux
Linux 版本介紹
RedHat Linux安裝過程
下午
RedHat Linux 目錄 / 設定檔 / 開機流程、檔案權限
與管理工具介紹
課程介紹
第二天 Server 架設
上午
DNS、DHCP、FTP server
實做時間
下午
WWW、MAIL、PROXY
實做時間
課程介紹
第三天 Linux 系統維護 / 安全議題
系統管理與維護
Errata 、up2date介紹
RedHat
問題討論
認識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 開機流程
1. BIOS 嘗試在開機磁碟機的第 0 磁區、第 0 磁柱載入可供
開機的磁區開機
2. 開機載入程式 (boot loader ,如 LILO或Grub)的程式碼
3. 找出 kernel 所在位置,接著載入並執行它以啟動開機程
序
4. 一旦 kernel 載入完畢,一些基本設備也完成初始化
(initialization)
5. 嘗試從某個設備載入以及掛上 (mount) root filesystem
一旦 root filesystem 被載入並掛上,會看到一行訊息像:
VFS: Mounted root (ext3 filesystem) readonly
Linux 開機流程
6. 此時系統會在 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 開機流程
7. 當 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 目錄
rmdir –p abc/123
pwd
環境變數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
允許連結的設定
order allow, deny
allow from .example.com
使用 .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
什麼是代理伺服器?
會幫 Client 端的用戶去向目的地取得用
Proxy
戶端所需要的資料
是一個代理人的角色
Proxy Server
Proxy Server 運作方式
Proxy Server 優缺點
優點
快速的存取動作
降低網路的負荷
資料分流
提供防火牆內部的電腦連上 Internet
多層次的管道 ( 上層代理伺服器 )
缺點
容易為 Intranet 的內部人員濫用
需要較高超的設定技巧與除錯程序
可能會取得舊的錯誤資料
上層Proxy Server
SeedNet 的代理伺服器
(http://service.seed.net.tw/dial/server.shtml)
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類型
以來源端: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 用法
類別: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.hinet.net allow example
不要進行cache的設定值
只要網址列出 cgi 字樣都不做 cache
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
與時間相關的設定值
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/install
ation.html
可使用該軟體來做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相關議題
一起討論