這是我第一次安裝debian系統,為免日後再裝時裝不起來,故安裝過程中勤作筆記記錄於此。第一次安裝過程花了好幾個禮拜,第二次安裝有了這份筆
記後一
兩天內就裝起來了,本文使用 debian 4.0 R4a 系統安裝,若你使用的版本與我相同,那就絕不會有安裝設定上的差異。
內容簡介:使用 debian 4.0 R4a
i386版安裝,設定內容含:debian、ssh、3.vim、4.環
境設定、5.設
定語系、6.samba、7.改
固定IP、8.apache、9.awstats、10.mysql、11.phpmyadmin、12.vsftp、13.加
帳號、 14.iptables、15.ADSL、16.域
名更新、17.mrtg、18,cacti、19.apache
目錄加密碼保護、20.NAT、21.DHCP、22.apache
加掛cache和proxy功能、23.IP
更
換記錄、24.rsync、25.DNS
設定、26.檢
查硬碟壞
軌、27.系
統備援、28.斷
線重連、29.apache
啟用ssl連線、30.NFS
設定、31.網
路校時、32.安
裝公鑰、33.監
控網路流
量、34.Xshell、35.apache
頻寬限制、36.解
rar檔、37.mysql
問題、38.傳
真伺服器、39.列
印伺服器、40.關
閉服務。
vim 的用法請參照鳥哥的教學 vi文書處理,vim為vi的
進化版,所以操作方法上大同小異。
以下內容,紅字
部份皆為指令或是您需要修改的內容
,藍字部份則為設定檔內容。
1.安裝設定
安裝 debian
4.0 R4a 版
(下載點
<=== 請選擇 debian-40r4a-i386-CD-1.iso 下載燒成光碟即可,它會隨著版本更新而移掉舊版本)
安裝過程中在選擇軟體時,只要選擇「web網頁伺服器、標準系統」這兩項即可
別安裝SQL伺服器,那是PostgreSQL,不是我們要的MySQL
也別安裝檔案伺服器,那不是vsftpd
底下是我的硬碟分割參考
/dev/sda1 /boot 100mb (EXT3格式)
/dev/sda5 swap 1.5G
/dev/sda6 /tmp 650mb (XFS格式)
/dev/sda7 / 157.8G (XFS格式)
設定時間,日期
date -s 2008/06/06
<===改日期
date -s 08:55:30
<===改時間
先改日期,再改時分秒。
安裝指令
apt-get install -y ssh
改ssh 的 port 位
vim /etc/ssh/sshd_config
底下是 sshd_config 內容介紹
Port 22 (←改這兒)
在安全上的考量 通常會把port 改成我們想要的port
底下選項請先尋找有沒有這行,沒有的話,再自行加入此行,避免同一個選項在不同地方做了不同設定,會使你怎麼設都不成功
PermitRootLogin=no
↑permitRootLogin 改成NO 意思是指 讓人家不能利用root的身分用ssh登入 因為root權限很大
LoginGraceTime 30 #密碼輸入時限為 30 秒
TCPKeepAlive yes
#↑確定使用者是否仍在線,在測得無回應後馬上切斷連線。
底下幾行可能沒有,要自行增加
Allowusers
user1 user2
#
↑此仍設定只允許哪些帳號登入,若要開放很多人登入,只有少數不行登入,使用以下設法
#DenyUsers 使用者1 使用者2
#DenyGroups
群組名
MaxAuthTries 5
#最多只能輸入 6 次密碼
#廢除密碼登錄, 強迫使用 RSA 驗證
RSAAuthentication
yes
PubkeyAuthentication yes
AuthorizedKeysFile
.ssh/authorized_keys
PasswordAuthentication no
限制某 IP ssh 連線進來(配合 tcp wrapper來使用)
vim /etc/hosts.allow
#只允許底下這2個IP用ssh連入
sshd:140.128.1.123 192.168.0.150
vim /etc/hosts.deny
#擋掉所有的ssh連線(除了我在
hosts.allow裡開放的IP)
sshd:all
這樣一來,只有 140.128.1.123 和
192.168.0.150 這2個 IP 才可以用 ssh 連上來了。
debina 或 ubuntu 所附的 vim 為精簡版的,所以不能顯示顏色,需安裝完整版
apt-get install -y vim
然後編輯vim 的設定檔
vim /etc/vim/vimrc
"syntax on
"set background=dark
↑把前面的"號拿掉
set ignorecase
"↑設定搜尋時英文不分大小寫
set hlsearch
"↑將搜尋到的字加hilight
highlight Search
term=reverse ctermbg=4 ctermfg=7
"↑將搜尋到的字由土黃色變成深藍色
vim /etc/profile (寫在這裡是對所有的使用者生效)
在最後加上以下內容(主要是改提示符號、設定別名和中文語系輸出)
---------------------profile內容------------------------------------------
-
# Some more alias to avoid
making mistakes:
alias rm='rm -iv'
alias del='rm -iv'
alias
cp='cp -iv'
alias mv='mv -iv'
# Added aliases
alias
cls='clear'
alias ls='ls --color=auto -F'
alias dir='ls -alh
--color=auto -F'
alias ll='ls -alh --color=auto -F'
#alias
ftp="ncftp"
#alias lo="exit"
alias md="mkdir"
alias
rd="rmdir"
# Added for Chinese supported
#export LC_ALL=zh_TW.Big5
#export LANG=zh_TW.Big5
#建議設成
UTF8
export LC_ALL=zh_TW.UTF-8
export LANG=zh_TW.UTF-8
---------------------profile內容------------------------------------------
-
若要讓 root 也能看到中文的介面訊息
vim
/root/.profile
將底下這兩行前面標註起來
#LANG=C
#LANGUAGE=C
指令:
dpkg-reconfigure locales
這樣會跳出一個文字選單,裡面記得至少要選擇
en_US.UTF-8 UTF-8
zh_CN.GBK GBK
zh_CN.GB2312
zh_CN.UTF-8 UTF-8
zh_TW BIG5
zh_TW.UTF-8 UTF-8
(用空白鍵選擇、Tab 鍵切換到 OK、Default Locale 建議選 zh_TW.UTF-8 UTF-8)。
設完後重開機,便能顯現中文
6.samba
設定
安裝
apt-get install -y samba
設定檔
vim /etc/samba/smb.conf
smb.conf 設定檔參考
↑此設定檔可直接copy使用,需修改的地方有...(特別註意紅字地方)
---------------smb.conf內容--------------------
interfaces = eth0, lo
#↑網卡請一定要設定正確,否則smb無法啟動,若你不是eth0 而是 eth1 請改正確
[share]
path
/mnt/share
#請改成你要分享的路徑
recycle:repository
= /mnt/trashbox
#網路資源回收筒的路徑,請改成你的設定
[recycle]
path = /mnt/trashbox
#這裡即是設定回收筒的路徑,在 share
分享資料夾內刪除的檔案都會丟到這裡來,故請你自己定期刪除裡面的東西吧
---------------smb.conf內容--------------------
欲分享其它資料夾,請參照其內容設定吧
相關指令:
/etc/init.d/samba
reload|restart|start
檢查 smb.conf 語法是否正確,指令 testparm
看samba狀態
↓此指令在debian版不能用,須改用 smbstatus
指令
/etc/init.d/samba status
smbclient -L ip 列出分享資料夾
註:samba裝完後,必須自己手動下指令加每個帳號才能使用
webmin 裡帳號同步的功能似乎不能使用
加個虛擬帳號 guest
vim /etc/passwd
#↓加入此行
guest:x:1001:100:guest:/etc/samba:/bin/false
加帳號到samba裡
smbpasswd -a guest
#之後連按兩個enter,密碼設為空白
若要加其它帳號,請下指令
smbpasswd
-a username
改密碼
smbpasswd
username
7. 固定ip後
vim /etc/network/interfaces
-------------interfaces內容-----------------
auto lo
iface
lo inet loopback
#auto eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address
192.168.0.1
network 192.168.0.0
netmask 255.255.255.0
broadcast
192.168.0.255
gateway
192.168.0.254
-------------interfaces內容-----------------
設定DNS
若未設定DNS,就只能以IP的方式連線,不能使用熟知的Domain Name如 forum.liferec.com 連線,相當不方便。
修改 /etc/resolv.conf 檔案內容:
#168.95.1.1是HiNet提供的DNS,這是HiNet最大方的地方,並不限制HiNet的客戶才能使用。
nameserver 168.95.1.1
單網卡多個 IP 設定 (直接在網卡後,加上 “:n“)
------------------------------------------
auto eth0
iface eth0 inet static
address 192.168.0.1
network
192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway
192.168.0.254
dns-nameservers 168.95.1.1
auto eth0:0
iface eth0:0
inet static
address 192.168.0.50
network 192.168.0.0
netmask
255.255.255.0
gateway 192.168.0.254
auto eth0:1
iface
eth0:1 inet static
address 192.168.0.49
network 192.168.0.0
netmask 255.255.255.0
gateway 192.168.0.254
auto eth0:2
iface eth0:2 inet static
address 192.168.0.48
network
192.168.0.0
netmask 255.255.255.0
gateway 192.168.0.254
auto eth0:3
iface eth0:3 inet static
address 192.168.0.47
network 192.168.0.0
netmask 255.255.255.0
gateway 192.168.0.254
auto eth0:4
iface eth0:4 inet static
address 192.168.0.46
network 192.168.0.0
netmask 255.255.255.0
gateway 192.168.0.254
------------------------------------------
●將硬碟移機後,網卡 eth0 或 eth1 不見了?
首先用 ifocnfig -a 看你的系統內有幾張網卡,記下該網卡的
mac address
編輯以下檔案
vim /etc/udev/rules.d/z25_persistent-net.rules
(有可能不是一模一樣的檔名↑,它也有可能是 70-persistent-net.rules 這樣的檔名,只要記住關鍵字 net 去試試即可)
------------------------該檔大概內容如下----------------------------
# PCI device 0x14e4:0x1659
(tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="00:1a:92:19:63:ab", ATTR{type}=="1", KERNEL=="eth*",
NAME="eth0"
# PCI device 0x14e4:0x1659 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="00:1a:92:19:63:ac", ATTR{type}=="1", KERNEL=="eth*",
NAME="eth1"
----------------------------------------------------------------------
此檔內你會看見有一堆 SUBSYSTEM =="net",.......NAME="ethX"
此處的 "ethX" 那個 X
數字可能是任意數
找到你實際網卡所對映的 mac address
例如,我的機器上所找到的該網卡,被編到 eth5 去了
SUBSYSTEM =="net",.......NAME="eth5"
將此 eth5 改成 eth0
之後,其它沒用的網卡編號全刪掉或 mark 起來,重開機即ok
8.apache設定
編輯設定檔內容
vim /etc/apache2/apache2.conf
apache2.conf
<===設定檔參考
此設定檔,設了80~84port的虛擬站台,和
awstats、server-info、server-status
若無特殊需求,你可copy全部內容貼上
apache2.conf,就可以用了。
啟動、停止、重啟 apache 等指令
/etc/init.d/apache2 start | stop | restart
apache
設定檔測試指令 (apache 設定檔的語法若寫錯,會使apache無法啟動,可用此指令測試)
apache2ctl configtest
/etc/rc.d/init.d/httpd start | stop | restart
↑以上是在Fedora
Core3的指令,debian不適用
開機就啟動的設定在
/etc/default/apache2
預設是開機啟動 (NO_START=0),不想開機啟動請改成 1
debian 裝好的 apache 版本為
2.2.3-4+etch5
apache2.conf說明與註意事項:
(1).不是使用傳統的 httpd.conf
而以 /etc/apache2/apache2.conf 取代之。
(2).Listen 80 port位的設定也不同於一般版本的設定
在apache2.conf 此檔內有一行 Include /etc/apache2/ports.conf
請 vim /etc/apache2/ports.conf 加入你要監聽的port 位
(3).VirtualHost設定,以往在win32平台上,我只設了這行
NameVirtualHost *:80
↑而其它port的服務81,82,83,84的服務就可正常運行
但現在卻要如此設定↓
NameVirtualHost *:80
NameVirtualHost
*:81
NameVirtualHost *:82
NameVirtualHost *:83
NameVirtualHost
*:84
其它port的服務81,82,83,84的服務才可正常運行
(4).改了預設的使用者與群組
User www
Group
users
然後在 passwd 內新增此一帳號
vim
/etc/passwd #加入底下這行,106數字請勿重覆
www:x:106:100:www:/var/www:/bin/false
註:此設定是便於users群組共用與管理,此設定會影嚮日後安裝與apache相關軟體的設定,如cacti,mrtg,你在這兒改了群組,在安裝這兩
樣東西時,就要多道手續去改群組,否則cacti,mrtg等無法正常運作,本文會提及它們的設定。
apache log檔的設定↓
vim /etc/logrotate.d/apache2
此檔內,設定每週替換一次log檔,保留30個,預設輪替後是有壓縮的
※壓縮後的log檔是不能能讓awstats正常分析,故需將 compress 字眼的選項的設定刪去
欲看 apache
狀態,apache2.conf 大約在684~713行這兒
啟用該功能,把每行前面的#拿掉後,重啟apache即可
<IfModule mod_status.c>
<IfModule mod_info.c>
http://IP/server-info
http://IP/server-status
apache 系統裝起來後,即內含 php 功能,不需另外安裝,現暫且記下php安裝指令,待日後備用
apt-get install libapache2-mod-php5
php5-cli
php5-common php5-cgi
9.apache
內的 awstats 設定
awstats是
一詳實的apache
log檔分析程式,分析你網站的流量等相關記錄,多國語言版
安裝方法分兩種,一種是使用 debian 包好的安裝包,這會比較簡單容易,另一種安裝方法是到 awstats 的官網去下載主程式回來安裝。
底下就先介紹到 awstats 官網下載主程式回來安裝的方法。
安裝方法1:官網安裝
a.安裝指令
wget
http://prdownloads.sourceforge.net/awstats/awstats-6.8.tar.gz
tar zxvf
awstats-6.8.tar.gz
mv awstats-6.8 awstats
↑將目錄名稱改成好看些
b.然後把 awstats
搬到你要放的路徑去,本文的設定範例是放在 /var/www/84/awstats
mv
awstats /var/www/84/awstats
ps:鳥哥說 awstats/wwwroot
這目錄需要建密碼保護 .htaccess,待設定
c.使
用 awstats_configure.pl 重新設定路徑
需在此路徑
/var/www/84/awstats 底下執行這指令,它才不會抓錯路徑
cd
/var/www/84/awstats
/var/www/84/awstats/tools/awstats_configure.pl
-----------------↓awstats_configure.pl
設定內容↓-----------------------
Warning: AWStats standard directory on
Linux OS is '/usr/local/awstats'
.......
Do you want to continue
setup from this NON standard directory [yN] ?
這兩行是問你 awstats
不是安裝在標準的路徑,問你是否繼續,請按y 之後enter
Enter full config file path of your Web
server.
請輸入你的apache 設定檔的完整路徑
/etc/apache2/apache2.conf
↑若你跟我用一樣的版本,請輸入上面的路徑
Do you want me to build a new AWStats
config/profile
file (required if first install) [y/N] ? y
問你要不要開始建立網站分析的設定檔,y 啦!
Your
web site, virtual server or profile name:
輸
入你站台的名字,例如 www.xxx.com 之類的,我取名為
80port,別自找麻煩用中文命名呀!
Directory path to store config file(s)
(Enter for default):
問你awstats的設定檔要存放在哪,按 enter
用預設的就行了。
它會放在 /etc/awstats 底下
接下來還會有些文字提示,按兩次 enter 就可以了。
-----------------↑awstats_configure.pl 設定內容↑-----------------------
設定完後,它會在/etc/awstats/ 底下產生一些檔案
awstats.你站
台的名字.conf
若有設虛擬站台的,請自行增加,或是重跑一次 awstats_configure.pl
cp /etc/awstats/awstats.80port.conf /etc/awstats/awstats.81port.conf
cp /etc/awstats/awstats.80port.conf /etc/awstats/awstats.82port.conf
cp /etc/awstats/awstats.80port.conf /etc/awstats/awstats.83port.conf
d.修改awstats.xxxxx.conf的內容
vim /etc/awstats/awstats.你站台的名字.conf
vim
/etc/awstats/awstats.80port.conf
...
....若有設虛擬站台的,請自行增加編輯
vim /etc/awstats/awstats.83port.conf
vim
/etc/awstats/awstats.84port.conf
找出這行,把log檔指到正確的路徑
LogFile="
※此log檔路徑乃對應著你 apache2.conf 內的log檔名稱設定,所以底下內容不要照抄,依你的設定填入
LogFile="/var/www/84/awstats/tools/logresolvemerge.pl
/var/log/apache2/80port_access*.*|"
#↑此為80port多個log檔設法
LogFile="/var/www/84/awstats/tools/logresolvemerge.pl
/var/log/apache2/84port_access*.*|"
底下設定需檢查,若不同,請改成與下面相同
DirData="/var/www/84/awstats/wwwroot/cgi-bin"
DirIcons="/awstatsicons"
EnableLockForUpdate=1
#這是指AWStats進行更新時是否鎖定檔案,避免有兩人以上同時從web更新而引起故障,log檔出錯可能會使apache起不來。
PurgeLogFile=1
#awstats分析後,是否自動刪除 apache 的 log 檔,此功能挺好用的,但我尚未測試過。
查看awstats的網址
http://IP/awstats/awstats.pl?config=80port
e.更新awstats的log檔
請下指令
/var/www/84/awstats/wwwroot/cgi-bin/awstats.pl
-update
-config=80port
#↑此為更新我80port log
/var/www/84/awstats/wwwroot/cgi-bin/awstats.pl -update -config=你站台的名字
#↑此為更新你另名取的站台名字的 log
f.設定定期更新 awstats
要寫在crontab內的更新指令不太一樣
vim /etc/crontab
加入底下這行
/var/www/84/awstats/tools/awstats_updateall.pl
now
-awstatsprog=/var/www/84/awstats/wwwroot/cgi-bin/awstats.pl
#↑此為更新awstats所有的log檔指令,請寫在
crontab 檔內
註意:此寫法只是簡單更新
awstats的寫法,但日後會有apache log
越來越大的問題,所以我們要一併解決這兩個問題
故我寫了個 script 名為 apache_log_rotate.sh
內容為分析log後刪除,並重啟apache
vim
/home/backup/apache_log_rotate.sh
ps:若你的
home底下若沒有backup這目錄,請先建一個目錄吧,否則會出錯 mkdir
/home/backup
貼上以下內容
----------------------apache_log_rotate.sh
內容--------------------------------
#!/bin/bash
#apache log 經 awstats 分析後,刪除
/var/www/84/AWStats/tools/awstats_updateall.pl now
-awstatsprog=/var/www/84/AWStats/wwwroot/cgi-bin/awstats.pl
#更新所有web
log for awstats
/etc/init.d/apache2 stop
#停止 apache2
rm -f
/var/log/apache2/8?port_access.*
rm -f
/var/log/apache2/8?port_error.*
rm -f /var/log/apache2/error.*
#刪除已被 awstats 分析過後的 log 檔cd
#/etc/init.d/apache2 start
/etc/init.d/apache2 restart
#重啟 apache 服務,自動產生新的log檔,啟動2次是避免啟動失敗
date >>/tmp/log_rotate.txt
echo "apache log 分析與輪替完成"
>>/tmp/log_rotate.txt
----------------------apache_log_rotate.sh
內容--------------------------------
改成可執行權限
chmod 775 /home/backup/apache_log_rotate.sh
編輯
crontab 內容設定 apache_log_rotate.sh 於每週1上午4時10分執行
並於
/tmp/log_rotate.txt 內設定記錄,待觀察是否有正常執行
vim /etc/crontab 加入底下這兩行
10 4 * *
1 root /home/backup/apache_log_rotate.sh
> /dev/null 2>&1
#↑ apache log
分析,並清除,於每週1上午4時10分執行
安裝方法2:deb包安裝
請下指令安裝
aptitude install awstats
裝完之後,它的設定檔會在此 /etc/awstats/
複製一份 awstats.conf 然後修改其內容
cp
/etc/awstats/awstats.conf
/etc/awstats.你的站台.conf
vim /etc/awstats.你的站台.conf
底下為需要修改的內容,請找到相對位置更改成適合你的設定
------------------awstats.你的站台.conf-------------------
LogFile="/var/log/apache2/access.log"
LogFormat=1
#↑這地方的LogFormat與你的 apache 設定有關
combined
SiteDomain="你的站台"
DirData="/var/lib/awstats"
#此即放awstats分析後資料的地方
AllowToUpdateStatsFromBrowser=0
#是否允許從網頁更新log檔
EnableLockForUpdate=0
#awstats
更新時是否要鎖住log檔不讓寫入,這是為避免
awstats在更新資料時,log還有人寫入而造成log檔損壞,主要是為了避免從有2人同時從網頁更新。
PurgeLogFile=1
#awstats更新完後,自動幫你清log檔
ArchiveLogRecords=0
#awstats
清掉的log需不需要幫你備份,可設日期變數,但無法
指定路徑
SkipHosts="127.0.0.1
REGEX[^192\.168\.] REGEX[^10\.]"
#略過內網的流量不計算
------------------awstats.你的站台.conf-------------------
mv
/etc/awstats/awstats.conf /etc/awstats/awstats.conf.bak
這樣awstats在計算時,就不會把預設的設定檔的內容給吃進去
寫到這兒才發現 debian 的安裝包裡,並不會去自動的幫你的apache設定檔內產生 awstats 的相關參數,全都要自己來,並沒有比較輕鬆,所以建議直接用官網安裝
+_+ 哎...步驟太繁瑣了,不想寫了,網路上有許多人都寫好了,看參考資料吧!
10.mysql
設定
安裝指令
apt-get install -y
mysql-server
apt-get
install -y php5-mysql
ps:這裡安裝完後,要reboot,否則無法正常運作
↑若phpmyadmin不能存取mysql時,必需安裝此指令
Php5 默認已經不支持 Mysql,為了打開支持,要修改
vim
/etc/php5/apache2/php.ini
找到這行將前面的;拿掉
extension=mysql.so
默認安裝的 Mysql,其 root 用戶沒有密碼,實在危險,我們為他加一個密碼。
請下指令:
mysqladmin -uroot password 'xxxxxxxx'
其中xxxxxxxx就是你的密碼。
或是用此指令重設 mysql 的密碼
mysql_secure_installation
設定檔位於 /etc/mysql/my.cnf
註意:從win32系統copy資料庫檔案到linux下需改檔案權限並重開機後,才能正常使用
chown and chgrp 都改成
mysql
參考資料:
mysql基本指令
mysql -h host -u user -p
show
databases;
use 資料庫名
SHOW TABLES;
select * from 欄位;
範例:
mysql -h 127.0.0.1 -u root -p
之後請輸入 root 的密碼後,就進入 mysql
指令模式了,請輸入以下指令
GRANT SELECT ON `syscp` . * TO
'syscp_read'@'localhost';
此指令的用意為 建一帳號 syscp_read
並給予 select syscp 這個資料庫的權限
SET PASSWORD FOR
'syscp_read'@'localhost' =
PASSWORD( '123456' );
此指令的用意為 設定 syscp_read 此帳號的密碼為 123456
quit
離開 mysql 指令模式
11.phpmyadmin設定
下載指令
wget
http://nchc.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-3.0.0-all-languages.tar.gz
若以上連結失效自行到官網下載新版3.0 all-languages.tar.gz 多國語語版
http://www.phpmyadmin.net/home_page/downloads.php
解壓縮
tar zxvf
phpMyAdmin-3.0.0-all-languages.tar.gz
改目錄名稱成另一個較安全的名字
mv phpMyAdmin-3.0.0-all-languages phpmyxxx
改權限
chmod 755 phpmyxxx/*.php -R
然後搬到網頁的目錄底下,如 /var/www/84/
mv phpmyxxx
/var/www/84
cd
/var/www/84/phpmyxxx
接下來要做個設定檔(預設沒有)
cp config.sample.inc.php config.inc.php
vim /var/www/84/phpmyxxx/config.inc.php
(1).↓找到底下這行 'qwertyuiuyyr' ←這裡自己設一個亂數密碼
$cfg['blowfish_secret'] = 'xxjfd;kljhxx'
// 自己設一個亂數密碼
(2).將此行的 cookie 改成 http
$cfg['Servers'][$i]['auth_type'] = 'http';
註:/var/www/84/phpmyxxx/ 此目錄待設密碼保護在apache內
參考文件,錯誤訊息: 無法讀取 mcrypt 模組,請檢查 PHP 設定 *
http://itblog.blogdns.net/index.php?load=read&id=27
12.FTP 設定
安裝指令
apt-get install -y vsftpd
啟動、停止、重啟、重載入...等指令
/etc/init.d/vsftpd
start|stop|restart|reload
設定檔在此
vim
/etc/vsftpd.conf
請加入或更改成底下設定:
================================
anonymous_enable=NO //禁止使用匿名登入
local_enable=YES //允許本機帳號登入
write_enable=YES //允許使用者寫入
listen=YES //要自己加入此行
listen_port=38 //改 port 38 ←vsftp.conf 內找不到這樣的設定,所以我們要自己加入這行
chroot_local_user=YES //讓使用者無法往上進入目錄
pasv_enable=YES
//啟用被動式連線,要自己加入此行
pasv_min_port=3100 //要自己加入此行
pasv_max_port=3300 //定義被動式連線的 port 範圍
local_umask=002 //這樣的上傳檔案權限設為
664,才能從網頁被讀取
================================
PS:↑此設定內容可能不適合 debian 5.0 的 vsftpd 會使其無法啟動,需另外再研究5.0的設定。
補充說明:
local_umask=002
※註意:↑此設定會將上傳的檔案權限設為
664。但是若上傳目錄則會自動設為775。
請不要更改目錄的權限,若有改動到,也請將目錄權限設回775,否則的話無法透過網頁讀取該目錄下的檔案。
其它補充:
禁止ftp登入帳號,看此檔內容
/etc/pam.d/vsftpd
sense=deny file=/etc/ftpusers
onerr=succeed
↓此檔設定著不能登入ftp的帳號
/etc/ftpusers
設定 SSL 登入
apt-get install openssl
openssl req -new -x509 -nodes -newkey rsa:1024 -out /etc/ssl/certs/vsftpd.pem -keyout /etc/ssl/certs/vsftpd.pem
↑建立SSL key,其它指令參考,產生20年的SSL加密文件↓
openssl req -new -x509 -days
7305 -nodes -out vsftpd.pem -keyout
vsftpd.pem
vim /etc/vsftpd.conf
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
#↑預設已有這行了,請確認其路徑和檔案是否存在,此檔即ssl的加密文件
ssl_enable=YES
經以上設定後,重啟 vsftpd 後,就只能用 ssl 的方式來登入了,以前的連線方式不能再登入。
連線方式用Filezilla,參考下圖設定:
手動加帳號指令
useradd -g 100 -c test -m -p test test
指令說明
useradd -g gid的設定, -c 帳號說明 -d 指定家目錄 -s /bin/bash -p 密碼 帳號名稱
例:
useradd 帳號 -g 100 -c 帳號說明 -d /home/user1 -s /bin/bash
-g 100 為 users 群組
-m 自動建家目錄
-M 不自動建家目錄
-G 指定使用者所屬的附加群組
-p 後面接密碼,但是這個參數好像無效,得另外為其設密碼
將/bin/sh 或/bin/bash 改為 /sbin/nologin
就可以禁止登入了
14.iptables
設定
我寫了個script
vim
/home/backup/iptables.sh
-------------------iptables.sh
內容----------------------------
#!/bin/sh
#我的防火牆設定
iptables -P INPUT DROP
iptables -A
INPUT -p icmp --icmp-type echo-request -j ACCEPT
#允許 ping 回應
#iptables -A INPUT -i ! lo -s 127.0.0.1/8 -j DROP
#封包若不是從 lo
這張網卡進入,但來源是 127.0.0.1/8 的ip,則丟棄此封包
#iptables -A OUPUT -i ! lo -d
127.0.0.1/8 -j DROP
#封包若不是輸出至 lo 這張網卡,但目地是 127.0.0.1/8 的ip,則丟棄此封包
#以上2行是避免入侵者假造 127.0.0.1/8 網段的封包以嘗試突破防火牆
iptables -A INPUT -i lo -j
ACCEPT
# 127.0.0.1 本地端回應全接受
iptables -A INPUT -i eth0 -m state
--state RELATED,ESTABLISHED -j ACCEPT
#針對 eth0 這張網卡,設定我主動發出去的回應都予放行
iptables -A INPUT -i ppp0 -m state --state RELATED,ESTABLISHED -j
ACCEPT
#針對 ppp0 (撥號連線)這張網卡,設定我主動發出去的回應都予放行
iptables -A INPUT -i
eth0 -s 192.168.0.0/16 -j ACCEPT
# 192.168.0.1~255 這個網段全放行
iptables -A INPUT -i ppp0 -p tcp --dport 80:84 -j ACCEPT
#↑此為設定80prot到84port開放
iptables -A INPUT -i ppp0 -p tcp --dport 22 -j
ACCEPT
#↑此為設定 ssh port 打洞
iptables -A INPUT -i ppp0 -p tcp
--dport 38 -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --dport
3100:3300 -j ACCEPT
# ↑此為設定ftp:38 和被動式連線的port位範圍
# ↓隱形掃瞄攻擊防範
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A
FORWARD -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp
--tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A FORWARD -p tcp
--tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A INPUT -p tcp
--tcp-flags SYN,RST SYN,RST -j DROP
iptables -A FORWARD -p tcp
--tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -p tcp
--tcp-flags FIN,RST FIN,RST -j DROP
iptables -A FORWARD -p tcp
--tcp-flags FIN,RST FIN,RST -j DROP
iptables -A INPUT -p tcp
--tcp-flags ACK,FIN FIN -j DROP
iptables -A FORWARD -p tcp
--tcp-flags ACK,FIN FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags
ACK,URG URG -j DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG
URG -j DROP
# ↓因為有些 Hacker/Cracker 會利用 IPv6 的漏洞攻擊主機,所以封閉幾個重要的 PORT
/sbin/ip6tables -F
/sbin/ip6tables -A INPUT -p tcp --dport 21:23 -j
DROP
/sbin/ip6tables -A INPUT -p tcp --dport 139 -j DROP
/sbin/ip6tables -A INPUT -p tcp --dport 445 -j DROP
/sbin/ip6tables
-A INPUT -p udp --dport 137:138 -j DROP
/usr/bin/pon dsl-provider
#↑啟動防火牆後連線ADSL
-------------------iptables.sh
內容----------------------------
ADSL連線設定請見後面
改可執行權限
chmod 755 /home/backup/iptables.sh
設定開機啟動防火牆,請下指令
ln -s
/home/backup/iptables.sh
/etc/init.d/iptables.sh
update-rc.d iptables.sh defaults 50
↓此行指令是設定 run level,有下上面那行指令即可...我有點忘了,不太確定,都下也沒關係
update-rc.d iptables.sh start 50 2 3 4 .
要移除在開機時啟動防火牆請下此指令
update-rc.d -f
iptables.sh remove
註:我試過用rcconf 來管理開機啟動好像會有些問題
在rcconf 曾試著把 iptables.sh 設定為不啟動
重開後,在 rcconf 內就再也看不到 iptables.sh了
想再次啟動也不行了,最後只好下移除開機啟動 iptables.sh 的指令,
重新設定之後,再也不敢用 rcconf 了
參考文件:
==========================================
Debian 設定 開機啟動
Debian 跟 Redhat 有點小小的不同..
主要的是開機的時後, Redhat 有 rc.local 可以設定..
Debian 沒有 rc.local. 所以設定的時後.. 有兩種方法.
1. 設定 /etc/init.d/rcS
2.
update-rc.d -n nat start 93 2 3 4 . (cd /etc/init.d/)
建議是用第二種方法.. 還能夠用 rcconf 來管理.
Service 號碼資料檔案位置:
代碼:
vim /var/lib/rcconf/services
如何新增一個自己的
/etc/rc.d script ?
Linux 下的 run level 有共七個,分別為:
*
run level 0 關機
* run level 1 單一使用者模式
* run level 2
多使用者模式(沒有NFS)
* run level 3 多使用者模式
* run level 4 保留
* run level 5 X11
* run level 6 重開機
==========================================
15.設定
ADSL,開機自動連線
安裝指令
apt-get
install -y pppoeconf
執行 pppoeconf
設定連線
hinet連線的帳密如下格式
838538@hinet.net
xxxxxxx
設定時請註意,當它問你開機要不要自動連線時,請選擇NO
Would
you like to start the connection at boot time?
↑選NO,否則網路連線會有問題,連外OK,但連進來就不行,不曉得什麼原因。
設好連線後,設定檔預設在此
/etc/ppp/peers/dsl-provide
聽說預設斷線之後會自動重撥,但是還是把此參考資料記在此好了
參考資料:
Debian
Linux:
ADSL PPPoE 自動重撥 Script
16.設定域名更新
a. Dyndns 域名設
定
安裝指令:
apt-get install ddclient
(在 debian 4 安裝的 ddclient 是 3.6.7 版,並不支援 ssl 加密更新,得安裝新版的 3.7.0以上 才能使用
ssl 更新)
欲重新設定指令
dpkg-reconfigure ddclient
(但這只能更新同一帳號內的域名,不同帳號不能如此做)
進設定畫面它就會問你的帳號密碼和域名,若你有兩個域名請用,逗號分隔
最後還會問你使用哪一個裝置,這句話的意思是指你要監聽哪張網卡的IP。
設定檔的內容在此
vim /etc/ddclinet.conf
# Basic configuration file for ddclient
# /etc/ddclient.conf
pid=/var/run/ddclient.pid
use=if, if=ppp0
login=帳號
password=密碼
protocol=dyndns2
server=members.dyndns.org
你的域名1,你的域名2
註意紅字的部份是否正確。若不需ssl加密更新的話這樣設定就可以了。
若要啟用 ssl 加密更新的話,得加裝此套件 libio-socket-ssl-perl。 (使用 ssl 加密更新,目前我不會暫時放棄! )
apt-get install libio-socket-ssl-perl
安裝新版的 ddclient 目前是 3.8.4 版本
wget http://ftp.tw.debian.org/debian/pool/main/d/ddclient/ddclient_3.8.0-4_all.deb
dpkg -i ddclient_3.8.0-4_all.deb
dpkg-reconfigure ddclient
會問你幾個問題:
1.動態 DNS 服務提供者→www.dyndns.com
2.帳號
3.密碼
4.Find public IP using checkip.dyndns.com?→是
5.Selection method for
updated names:→問你有哪些域名要更新,請選 From
list
6.Run ddclient on PPP connect?→是
7.ddclient 以 daemon 模式啟動?→是
8.Interval between ddclient
runs:→問你 IP 檢查時間,用預設的 300
秒即可
9.Host names to keep updated:→勾選你要更新的域名
檢查是否啟動了
ps -u |grep ddclient
/etc/init.d/ddclient start | stop
/usr/sbin/ddclient -daemon=0 -debug -verbose -noquiet
ddclient執行一次,輸出詳細的log到console上
若是不同帳密的更新得用其它方法做↓
wget -q --delete-after http://帳號:密碼@members.dyndns.org/nic/update?hostname=要更新的域名
中文字的部份,請填入你的資料,欲使用 https
更新域名的寫法如下↓
wget -q --no-check-certificate --secure-protocol=auto
--delete-after
https://帳號:密碼@members.dyndns.org/nic/update?hostname=要更新的域名
設定上線後,更新域名
vim /etc/ppp/ip-up
加入以下內容,底下這是dyndns域名更新
wget -q --delete-after http://帳號:密碼@members.dyndns.org/nic/update?hostname=要更新的域名
參考文章
b.TWNIC
域名設定
下載
dyndn-1.3.1.tgz
解壓縮後....
dyndn //為主要執行檔
dyndn_setup //設定域名和密碼
Makefile
//似乎不起作用,需自己設定啟動執行
正常用tarball裝的話,無法正常執行!
但是我在/etc/ppp/ip-up檔案最後加入
代碼:
/usr/bin/dyndn
若 dyndn
會莫名的停止,請參考文章:
在
Debian
使用TWNIC的dyndn
============================================
#
# !/bin/sh
#
if (
/bin/ping -c3 168.95.1.1 > /dev/null ); then
ETH0_IP=`/sbin/ifconfig eth0 | grep "inet" | cut -c 21-38 |awk '{ print
$1 }'`
HOST_IP=`host shyur.idv.tw |awk ' { print $4 }'`
if [
"$HOST_IP" != "$ETH0_IP" ]; then
echo " The Dyndn ready to start! "
/usr/bin/dyndn
fi
fi
============================================
c. no-ip 域名設定
apt-get install no-ip
設定
no-ip -C
然後依提示訊息填入你的帳密即可
註:別用no-ip網頁下載的程式來設定,那會有些難度
參考文章:
使用noip2 安裝到debian 上
http://www.kurobox.org/bbs/index.php?showtopic=502
17.mrtg 設定
apt-get install snmp snmpd
cp /etc/snmp/snmpd.conf
/etc/snmp/snmpd.conf.bak
編輯 snmpd.conf
echo rocommunity public >>
/etc/snmp/snmpd.conf
vim /etc/snmp/snmpd.conf 找到相對的位置,改成如下設定
========snmpd.conf的內容============
# sec.name source community
# com2sec paranoid default public
com2sec readonly default public
#com2sec readwrite default private
========snmpd.conf的內容============
重跑snmp
/etc/init.d/snmpd restart
下這個指令測試一下,有跳出很多很多行,而沒有error 就是正確的
snmpwalk
-c public -v 1 localhost
接著裝
apt-get install mrtg mrtg-contrib
下指令,差生mrtg.cfg
cfgmaker
--global "WorkDir: /var/www/84/xmrtg" --global "Refresh: 600" --global
"Interval: 5" --global "WriteExpires: Yes" --global "Language: big5"
--global "options[_]: bits" --ifdesc=descr --ifref=descr
public@localhost > /etc/mrtg.cfg
↑註意: 1.WorkDir:
可以改成其它位置
或者下此指令,差別在 WorkDir 位置不同而己
cfgmaker --global
"WorkDir: /var/www/mrtg"
--global "Refresh: 600" --global "Interval: 5" --global "WriteExpires:
Yes" --global "Language: big5" --global "options[_]: bits"
--ifdesc=descr --ifref=descr public@127.0.0.1 > /etc/mrtg.cfg
編輯 vim /etc/mrtg.cfg
若你有設不同的
WorkDir,
請註意下面,第二行要加# ,才能使你自訂的位置生效
# for Debian
#WorkDir: /var/www/mrtg
指令
mrtg /etc/mrtg.cfg
執行三次,前兩次執行會出現 rateup 的警告,不用理。
首頁生成
indexmaker --columns=1
--output=/var/www/84/xmrtg/index.html --title='Traffic Info'
/etc/mrtg.cfg
設定mrtg 每5分記錄一次流量
vim /etc/crontab
*/5 * * * * root /usr/bin/mrtg
/etc/mrtg.cfg > /dev/null 2>&1
#如果上述指令執行有問題,或不能更新圖表,請改用下面的指令
*/5
* * * * root env LANG=C
/usr/bin/mrtg /etc/mrtg.cfg
註:mrtg安裝完後,會自動的在你的系統內的增加排程,這是我之後才發現的,如果你做了以上的 crontab 設定,那麼請移除它自動幫你加的排程。
指令:
rm /etc/cron.d/mrtg
參考文章
http://www.debianhelp.co.uk/mrtg.htm
MRTG for Debian Linux
4.0 r1
http://blog.roga.tw/2007/09/07/494/
http://moto.debian.org.tw/viewtopic.php?t=7195
http://bbs.cm.nsysu.edu.tw/viewthread.php?tid=33&extra=page%3D1
18.cacti 設定
由於安裝設定內容太多,所以另外寫一篇文章
請參閱 ===>debian
4.0 安裝 cacti
19.apache 目錄加密碼保護
a.編輯 apache2.conf 設定檔
vim /etc/apache2/apache2.conf
加入底下內容
#底下為受密碼保護的目錄
<Directory
"/awstats">
AllowOverride AuthConfig
Order
allow,deny
Allow
from all
</Directory>
<Directory "/cacti">
AllowOverride AuthConfig
Order
allow,deny
Allow
from all
</Directory>
檢查apache2.conf設定檔內是否還有對同一目錄的設定,若有請把它加#號,否則密碼保護無法設定成功。
例如: /awstats
是對應到 /var/www/84/awstats/wwwroot 這目錄,但這目錄也有針對它的設定必須將其取消
否則密碼保護不會設定成功。
#<Directory "/var/www/84/awstats/wwwroot">
# Options None
# AllowOverride None
# Order allow,deny
# Allow from all
#</Directory>
設完之後重啟 apache
/etc/init.d/apache2 restart
b.建密碼檔
建一密碼檔名為apache.passwd 存放在
/home/backup
htpasswd -c
/home/backup/apache.passwd user1
接著輸入密碼 xxxxxxxx
在密碼檔內建第二個使用者 (不加 -c 參數了)
htpasswd /home/backup/apache.passwd user2
註:user1和user2為你自訂的使用者帳號,xxxxx為你自訂的密碼
改變檔案屬性
chown www /home/backup/apache.passwd
chgrp users
/home/backup/apache.passwd
c.在要被保護的目錄下建.htaccess檔
先進到你要密碼保護的目錄底下
cd
/var/www/84/awstats/wwwroot/
vim .htaccess
=====加入以下內容==================
AuthName
"This is Private
directory"
Authtype Basic
AuthUserFile /home/backup/apache.passwd
require user user1 user2
#require:後面接可以使用的帳號。
#如果要讓該密碼檔內的使用者都能夠登入,就改成『require valid-user』即可
===================================
改變檔案屬性
chown www .htaccess
chgrp users .htaccess
然後再把此檔copy到你要密碼保護
的
另一個目錄底下去
cp .htaccess /usr/share/cacti/site
除了加密碼保護以外,我們也可以用鎖定IP的方式來增加安全性
例如:我有一站台目錄是指向 /var/www/syscp 這站台很重要,不能讓別人隨便進來,除了密碼保護外可能還不夠,那麼我們就可以鎖定只有哪些 IP 可以訪問這個站台。
vim
/etc/apache2/sites-enabled/000-default
-----------------------------------------------
<Directory /var/www/syscp>
Options
Indexes FollowSymLinks MultiViews
AllowOverride None
Order deny,allow
deny from all
allow from 192.168.0.0/24
220.130.30.39
</Directory>
------------------------------------------------
以上設定為鎖定 syscp
後台管理頁面,只允許192.168.0.0這個網段和這個 220.130.30.39 IP可以登入
註意: 這兩行的上下順序若是相反的
deny from all
allow
from 192.168.0.0/24 220.130.30.39
變成底下這樣 (deny 在最後一行)
allow from 192.168.0.0/24
220.130.30.39
deny from all
這樣就等於是將整個關閉網站了,沒有任何人可以訪問了,因為 deny 在最後才被套用。
20.架NAT
server
NAT 的設定透過 iptables 就能設定
若你在第14步驟時設定了iptables,那麼只要再加下底下內容即可
vim
/home/backup/iptables.sh
加入底下的內容
==================================================================
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P
OUTPUT ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
#將ip_forward的值由0改為1,表示啟動封包轉送的功能,讓你的 Linux 具有 router 的能力
iptables -t
nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j
MASQUERADE
#來自192.168.0.0/24 這網段的封包全轉到 ppp0 這張網卡去
==================================================================
需註意或更改的地方只有紅字的部份,若你的網段不是 192.168.0.0
或你的對外連網的網卡不是 ppp0 這張網卡,請調整參數
其它的教學可能會提到要清除規則,因為每次重開機iptables所設的規則都會自動的被清除了
所以 iptables.sh
設定檔內可以不用加底下這幾行指令了
清除 NAT table 的規則吧!
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
補充說明:
鳥哥說:「如果你的 public IP 取得的方式是撥接或 cable modem 時,你的設定檔
/etc/sysconfig/network, ifcfg-eth0, ifcfg-eth1 等檔案,千萬不要設定 GATEWAY 啦!」
所以
vim /etc/network/interfaces
把裡面的gateway 給標註掉
#gateway
192.168.0.1
21.架
DHCP server
apt-get install -y dhcp
vim /etc/dhcpd.conf
ps: 在 ubuntu 9.04 底下可能要下這樣的指令才行,底下有綠字的部份為 ubuntu 用
sudo apt-get install
dhcp3-server
sudo cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.bak
sudo vim /etc/dhcp3/dhcpd.conf
ubuntu 9.04 的設定檔可能與底下藍字的內容有些不同,可將底下列出來這部份綠字的內容全清掉,直接貼上以下藍字的內容。有問題
可自己恢復
dhcpd.conf.bak 檔
========= ubuntu 的
/etc/dhcp3/dhcpd.conf
====================
option domain-name "example.org";
option
domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
=============清掉以上內容==============================
加入底下內容
=======================dhcpd.conf內容==========================
subnet 192.168.0.0 netmask
255.255.255.0 {
range 192.168.0.3 192.168.0.100;
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option
domain-name-servers 168.95.1.1,
139.175.10.20;
option domain-name "vic";
default-lease-time 604800;
max-lease-time 259200;
}
# 第一行 定義了此網段和遮罩範圍
# 第二行 range 為此網段IP發配的範圍
# 第三行 option
routers 應為NAT主機的IP
# 第四行 遮罩重複設了,故少此行應也沒關係
# 第五行
broadcast-address 應設為同網段的最後一個IP
# 第六行 可設定多部 DNS 主機,不過必須要以逗號『 ,
』分隔開才行。
# 第七行 域名,沒有的話就隨便設也沒關係
# 第八行 default-lease-time 604800;
單位為秒,此為7天
# 第九行 max-lease-time 259200;最大租用期限,此為30天
# 以上是 DNS 的
IP 設定,這個設定值會修改用戶端的 /etc/resolv.conf 檔案內容!
#底下開始是靜態IP的設定,s1可隨便填,第二行為MAC位址,第三行為固定IP
#host s1 {
#
hardware
ethernet xx:xx:01:41:xx:xx;
#
fixed-address 192.168.0.100;
}
authoritative;
#↑這個選項,英文有寫它的說明,我大概的說一下功能,就是如果你這個網段內只有你這一個 dhcp
server的話,那請把前面的#號拿掉,讓它當此網段的主 dhcp server,否則 log 檔內,老是會記錄錯誤訊息
=======================dhcpd.conf內容==========================
啟動、停止指令
/etc/init.d/dhcp start | stop
sudo /etc/init.d/dhcp3-server
restart
※設定dhcp 所監聽的網卡
若你不只一張網卡,那麼你可能要設定由哪一張網卡來分配IP
vim /etc/default/dhcp
INTERFACES=" "
在兩個"中間填入你網卡代號。
PS:但是我測過此參數,加了此參數之後,好像 dhcp server 就不能正常啟動,可能是新版不支援此參數吧。
觀察 dhcp server ip 發送狀態
grep dhcpd
/var/log/messages
參考設定資料: dhcpd.txt、dhcp server設定(英文)、dhcp server設定(中文)
加掛 cache 功能
說明:此功能有助於增進 apache 效能
cd
/etc/apache2/mods-enabled/
ln -s ../mods-available/mem_cache.conf
mem_cache.conf
ln
-s ../mods-available/mem_cache.load
mem_cache.load
#ln
-s ../mods-available/disk_cache.load
disk_cache.load
#ln
-s ../mods-available/disk_cache.conf
disk_cache.conf
ln
-s ../mods-available/cache.load cache.load
註:倒數第二、三行可能不需要,所以前先標註 # 號
vim
/etc/apache2/mods-enabled/mem_cache.conf
<IfModule
mod_mem_cache.c>
CacheEnable mem /
MCacheSize 20480
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 65536
# Enable caching of streamed responses up
to 64KB:
MCacheMaxStreamingBuffer 65536
</IfModule>
(MCacheMaxStreamingBuffer must be less than or equal to
MCacheMaxObjectSize. Resetting MCacheMaxStreamingBuffer to
MCacheMaxObjectSize.)
ps:也許可用 下指令 a2enmod mem_cache 來啟動, 而關閉module指令則為 a2dismod mem_cache
加載proxy功能
說明:此功能即把你的網站當成一個代理,
如按以下的設定設好後,開啟網址:http://你的域名/Stream-Live.htm
則你的server就會跑去 NTDTV
抓資料來播放。
NTDTV在線收看功能
cd
/etc/apache2/mods-enabled/
ln -s ../mods-available/proxy.load proxy.load
ln -s
../mods-available/proxy_connect.load
proxy_connect.load
ln -s ../mods-available/proxy_http.load
proxy_http.load
ln
-s ../mods-available/proxy.conf proxy.conf
vim proxy.conf
將 Deny from all 前標 #
號,並在其下一行加上這行文字 Allow from all
vim /etc/apache2/apache2.conf
在最後加入這兩行
ProxyPass
/Stream-Live.htm
http://httplive.ntdtvcast.com/Stream-Live
ProxyPassReverse
/Stream-Live.htm
http://httplive.ntdtvcast.com/Stream-Live
vim /etc/ppp/ip-up
最後加入這些內容
----------------------------
#
底下3行為IP更換記錄
IP1=`/sbin/ifconfig ppp0 | grep "inet" | cut -c 21-38
|awk '{ print $1
}'`
date1=`date +%Y/%m/%d,%T`
echo IP更換:$IP1 於$date1
>>/tmp/pppoe.log
----------------------------
vim /etc/ppp/ip-down
最後加入這些內容
------------------------
date1=`date
+%Y/%m/%d,%T`
echo ADSL斷線.... 於$date1 >>/tmp/pppoe.log
------------------------
IP更換記錄檔寫於 /tmp/pppoe.log
檔內,重開機後此檔就會消失重建
24.設定rsync
安裝
apt-get install rsync
vim /etc/default/rsync
底下這行:
RSYNC_ENABLE=ture
#要當server就改成 TRUE , 當 client 送檔案就改成 false
以下設定 僅為 rsync client端,完整的 rsync 設定教學→ 請見此頁 ←請點我。
自己做一個密碼檔,裡面填上密碼
vim /etc/rsync.client.passwd
xxxxxxx
改檔案屬性,擁有者和群組都必須是root
chmod 600 /etc/rsync.client.passwd
vim /home/backup/file-sync.sh
========================================
#!/bin/sh
rsync --port=可改其它port位 -rv --exclude-from=/home/backup/rsync_exclude.txt --size-only --progress --delete --password-file=/etc/rsync.client.passwd 帳號@域名::web /var/www
chown www /var/www -R
chgrp users /var/www -R
========================================
↑說明:rsync 後面帶了一大堆的參數,詳細說明請參閱 rsync 說明
設定例外檔檔案 (即不要更新的檔案)
說明:Stream-live.htm 和 Stream-Live.htm 這兩個檔名即為不要更新的檔名,寫入 rsync_exclude.txt 檔內
echo "Stream-live.htm" > /home/backup/rsync_exclude.txt
echo "Stream-Live.htm" >> /home/backup/rsync_exclude.txt
chmod 755 /home/backup/file-sync.sh
再將此檔 file-sync.sh 加入排程內定時執行即可
安裝
apt-get install bind9
vim /etc/bind/named.conf.options
==========加入在 options 下================
version "ooxx";
allow-query { any; };
allow-recursion { any; };
forwarders { 168.95.1.1; 139.175.10.20; };
===========================================
vim /etc/bind/named.conf
==============================
zone "lemon.cx" {
type master;
file "/etc/bind/named.lemon.cx";
allow-query { any; };
};
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/named.192.168.0";
allow-query { any; };
};
==============================
更新 root 網域資料
cd /etc/bind/
wget ftp://rs.internic.net/domain/named.root
mv db.root db.root.bak
mv named.root db.root
==============================
vim /etc/bind/named.lemon.cx
------------------------------
$TTL 86400
@ IN SOA lemon.cx. admin.lemon.cx. ( 2006102001 28800 14400 720000 86400 )
@ IN NS main
@ IN A 192.168.0.52
@ IN MX 10 main
main IN A 192.168.0.52
www IN CNAME main
ftp IN CNAME main
forum IN CNAME main
admin IN CNAME main
mail IN CNAME main
-----------------------------
vim /etc/bind/named.192.168.0
-----------------------------
$TTL 86400
@ IN SOA lemon.cx. admin.lemon.cx. ( 2006102001 28800 14400 720000 86400 )
; 本領域的 DNS 伺服器的主機名稱與 IP 的對應
@ IN NS main.lemon.cx.
52 IN PTR main.lemon.cx.
-----------------------------
/etc/init.d/bind9 restart
-----------------------------
若DNS不能正常啟動,請檢查語法是否有錯
cd /etc/bind
named-checkzone lemon.cx named.lemon.cx
named-checkzone vic.com.tw named.vic.com.tw
named-checkzone 192.168.0 named.192.168.0
named-checkconf /var/named/chroot/etc/named.conf
--------------------------------------------------
檢查是否 LISTEN Port 53 (named)、953 (rndc)
netstat -tnl
若無法啟動,查 log 檔
可從 DNS Server 上看到如下訊息 (zone transfer denied)
tail /var/log/messages
可以用 dd 去掃
dd if=/dev/xxx of=/dev/null
如果沒有任何錯誤訊息,就沒有壞軌了喔。
使用 rsync 做 mirror 功能
a.兩顆硬碟分割區請切成一樣大小,不要用 LVM 分割 (因為我不會用,所以沒在 LVM 上試成過)
我的切法就是 sda1 掛到 / , sda2 為 swap 就這樣
第一顆硬碟 代號為 sda | |
sda1 | 掛載到 / |
sda2 | swap |
第二顆硬碟 代號為 sdb |
|
sdb1 | 掛載到 / |
sdb2 | swap |
看硬碟分區指令 fdisk -l
切割硬碟指令 fdisk /dev/sdb 切割完後記得先重開機,再格式化硬碟
df -h 看磁碟機掛載情況
du -s -h /etc 看單一資料夾的大小
b.掛載第二顆硬碟 sdb
mkdir /mnt/sdb1
mount /dev/sdb1 /mnt/sdb1
設定開機自動掛載 sdb
vim /etc/fstab
加入底下這行
/dev/sdb1 /mnt/sdb1 ext3 errors=remount-ro 0 1
c.安裝 rsync
apt-get install -y rsync
備份指令,請自行將此指令加入排程去
rsync -aHDSt --delete --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/mnt/* /* /mnt/sdb1
ps:少加了參數 D 可能會造成 apache 啟動錯誤
參數說明:
-a, --archive 權限保存模式
-H, --hard-links 保留硬式連結
-D, --devices 保留device資訊(root only)
-S, --sparse 嘗試去處理稀疏的檔案,讓這些檔案在目的端佔去較少的磁碟空間.
-t, --times 保留時間點
-v , --verbose 複雜的輸出訊息,若要在背景執行請拿掉此參數
-x, --one-file-system 不要跨越檔案系統分界(只在一個檔案系統處理)
-u, --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且文件時間晚於要備份的文件。(不覆蓋更新的文件)
--exclude=PATTER 符合PATTERN(規則表示式)樣式的檔案不進行傳送
d.mbr 備份
dd if=/dev/sda of=/dev/sdb bs=512 count=1
我們知道整顆硬盤的 MBR 為 512 bytes,就是放在硬盤的第一個 sector ,因此,我可以利用這個方式來將 MBR 內的所有資料都紀錄下來。
↑若此備份不成功的話,請用 debian 光碟開機,進救援模式,重新安裝 grup 即可。(debian 5.0 光碟進救援模式後,它會先偵測網路環境,偵測不成功也沒關係,到後面會有個選項, "重新安裝 GRUP 開機程式" 選它後會問你要裝在哪,若你是第一顆SATA硬碟,請輸入 /dev/sda 即可)
grub安裝指 令參考
grub-install /dev/sda
做到這裡,該備份的都已經備份了,可以關機,抽換被備份的那顆硬碟,看它自己能不能開機獨立作業。
若 swap 沒啟用,可下此指令
mkswap /dev/sda2
swapon /dev/sda2
vim /home/backup/online.sh
====================online.sh內容===========================
#!/bin/bash
ppp0=`ifconfig |grep ppp0|awk '{print $1}'`
ppp1=`ifconfig |grep ppp1|awk '{print $1}'`
#檢查 ppp1 這張網卡是否存在,若存在則執行斷線指令
if [ "$ppp1" == "ppp1" ] ;then
#echo -e "重覆撥號了,將執行斷線指令"
poff -a
fi
#檢查 ppp0 是否存在,不存在則執行撥號指令
if [ "$ppp0" == "ppp0" ] ;then
#echo -e "已連線了,離開程式"
exit
else
#若不存在則執行連線動作
#echo -e "執行撥號程式"
pon
fi
====================online.sh內容===========================
chmod 755 /home/backup/online.sh
vim /etc/crontab
*/5 * * * * root /home/backup/online.sh > /dev/null 2>&1
#↑每隔5分鐘檢查一次連線狀況,斷線自動重連
以下指令基於 debian 5,0 (lenny) 版環境測試成功。
啟用 ssl 模組
a2enmod ssl
啟用 ssl 虛擬站台
a2ensite default-ssl
安裝 ssl 套件
apt-get install openssl ssl-cert
重啟 apache
/etc/init.d/apache2 restart
sudo apt-get install nfs-common nfs-kernel-server
vim /etc/exports
/mnt/iso *(ro,sync)
啟動 nfs server 指令
sudo /etc/init.d/nfs-kernel-server start
檢查
showmount -e localhost
成功的話應該可以看到這樣的訊息:
Export list for localhost:
/mnt/iso *
apt-get install ntpdate
vim /etc/cron.d/ntpclient
-------------------------------------------------------------------
# Set PATH, otherwise restart-scripts won't find start-stop-daemon
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#本排程為網路校時,定於每日凌晨六點
#本程式由以下指令安裝
# apt-get install ntpdate
* 6 * * * root (/usr/sbin/ntpdate time.nist.gov ; /sbin/hwclock -w) > /dev/null
-------------------------------------------------------------------
我們在做 apt-get 安裝時,經常會遇到沒有某某公鑰的提示,導致無法繼續安裝,以下是解法
apt-key adv --recv-keys --keyserver subkeys.pgp.net 9AA38DCD55BE302B
輸入以上指令即可安裝公鑰,記得將後面那串 藍字 的部份取代為你所欠缺的公鑰
apt-get install vnstat
vnstat -u -i eth0
↑指定你要監控的網卡
過5分鐘後,就可用 vnstat 指令來看流量監控
vnstat 參數說明:
-h : 24hr 的流量統計
-d : 一個月每天的流量統計
-m : 一年每月的流量統計
-t : Top 10 的流量統計
-w : 過去七天與上週跟本週的流量總計
官網、參考網址1、參 考網址2、參考網址 3、參考網 址4、參考網址5
安裝網頁圖型顯示
wget http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.4.1.tar.gz
tar zxvf vnstat_php_frontend-1.4.1.tar.gz
cd vnstat_php_frontend-1.4.1
vim config.php
找到這兩行
$vnstat_bin = '';
$data_dir = './dumps';
改成這樣
$vnstat_bin = '/usr/bin/vnstat';
$data_dir = '/var/lib/vnstat/';
還有把沒用到的網卡給刪了,只留下你用到的那個
$iface_list = array('eth0', 'eth1', 'sixxs');
$iface_title['eth0'] = 'Internal';
$iface_title['eth1'] = 'Internet';
$iface_title['sixxs'] = 'SixXS IPv6';
改成這樣↓
$iface_list = array('eth0');
$iface_title['eth0'] = 'Internal';
#$iface_title['eth1'] = 'Internet';
#$iface_title['sixxs'] = 'SixXS IPv6';
若要讓IE能直接看到流量表,則需改成底下這樣(預設是 svg 出圖, IE 不支援 svg)
// graphics format to use: svg or png
$graph_format='png';
最後用網址 http://你的IP/vnstat_php_fronted-1.4.1 去看即可
SElinux 設定部份
vnstat 有兩個動作模式,在 audit.log 裡可以查到
確認 audit2why < /var/log/audit/audit.log 這裡面有 vnstat 的 [lock] 和 [read] 的模式被紀錄了之後,我們就可安裝 vnstat 的 module
audit2allow -a -M vnstat
semodule -i vnstat.pp
一般用來連 ssh 的工具除了 putty、pietty之外,還有一個工具可 以試試就是 Xshell, Xshell中文介紹
Xshell 裝完後,有一些小設定要改一下,參照下圖改即可
使用 pietyy 有個好處,就是可直接拉了檔案往該視窗裡丟,就能上傳檔案了。
Xshell 也有這個功能,但在 debian 的系統就得先裝個套件才能使這功能生效。 ( centOS 已有內建)
apt-get install -y lrzsz
裝完這個套件後,上傳檔案就很方便了。
要拉檔案出來也很方便哦,下這樣的指令後
sz 檔名
它就會問你要檔案要存在哪兒
安裝和啟用頻寬限制模組
apt-get install libapache2-mod-bw
a2enmod bw
vim /etc/apache2/sites-available/default
然後在你的虛擬站台裡加入以下參數
-------------------------------------------------
<VirtualHost *:80>
DocumentRoot "/home/movie"
ServerName xxx.com
#頻寬限制
BandWidthModule On
ForceBandWidthModule On
Bandwidth all 102400
#102400 ==>100K 限制
#MaxConnection all 10
#限制連線數 10
<Directory /home/abc>
Options....
...etc
</Directory>
</VirtualHost>
-------------------------------------------------
改完後記得重啟 apache
用 7zip 就能解rar檔了,所以我們不安裝 unrar,而直接裝 7zip來解
apt-get install p7zip-full
用法
7z x filename.7z
有時候登入系統可能會收到這樣的通知信
To: root@d3.vic
From: root <root@d3.vic>
Date: Sat, 29 Aug 2009 22:35:15 +0800
upload.pw_activity
error : Table upgrade required. Please do "REPAIR TABLE `pw_activity`" to fix it!
upload.pw_actmember
error : Table upgrade required. Please do "REPAIR TABLE `pw_actmember`" to fix it!
upload.pw_administrators
error : Table upgrade required. Please do "REPAIR TABLE `pw_administrators`" to fix it!
upload.pw_adminlog
error : Table upgrade required. Please do "REPAIR TABLE `pw_adminlog`" to fix it!
upload.pw_advert
error : Table upgrade required. Please do "REPAIR TABLE `pw_advert`" to fix it!
upload.pw_announce
error : Table upgrade required. Please do "REPAIR TABLE `pw_announce`" to fix it!
upload.pw_argument
error : Table upgrade required. Please do "REPAIR TABLE `pw_argument`" to fix it!
upload.pw_attachs
warning : 1 client is using or hasn't closed the table properly
upload.pw_bbsinfo
error : Table upgrade required. Please do "REPAIR TABLE `pw_bbsinfo`" to fix it!
upload.pw_cache
註: 如果都是 MyISAM 格式, 可用 myisamchk 直接做,
例:
1. cd /var/lib/mysql/資料庫名稱
2. myisamchk --quick --check-only-changed --sort-index --analyze *.MYI
參考資料:
- MySQL Reference Manual :: OPTIMIZE TABLE Syntax
- MySQL Reference Manual :: REPAIR TABLE Syntax
- myisamchk — MyISAM Table-Maintenance Utility
使 用 PHP 對所有 MySQL Database 做 Optimize / Repair 的動作
註: 2009/09/03 下此指令 myisamchk 可能會有問題,使資料庫錯亂
所以目前我的解法是用 phpmyadmin 進後台去選擇所有的 Table 後,選擇修復資料表即可。
38.傳真伺服器
在linux底下我們的傳真伺服器將採用 hylafax 因設定步驟太多,所以另外寫成一個頁面。
詳細的 hylafax設定教學 ←請點我
39.列印伺服器
以下設定環境基於 ubuntu 9.04 64bit
vim /etc/samba/smb.conf
#以下3行是針對printer設定
printcap name = cups
load printers = yes
printing = cups
[printers]
comment = All Printers
path = /var/spool/samba
browseable = yes
writable = yes
guest ok = yes
public = yes
printable = yes
#share modes = no
locking = no
# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
vim /etc/cups/cups.conf
<Location />
Order Deny,Allow
Deny From All
Allow From 192.168.1.0/24
</Location><Location /admin>
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 192.168.1.0/24
</Location>Browsing On
BrowseProtocols cups
BrowseOrder Deny,Allow
Deny From All
BrowseAllow From @LOCAL
Listen 0.0.0.0:631
然後用網址 http://yourIP:631 即可登入管理
參 考資料1, 參考資料 2
40.關閉服務
有時候我們安裝了某些服務,基於安全理由,不想讓它在開機時就自動啟動,想要自己手動啟用,可以這樣做
先安裝套件
apt-get install sysvconfig
指令語法範例
service samba stop
service samba start
service samba restart
參 考資料
留言列表