十一月 30, 2007
» System Security Overview @ NCCU

2007/12/3 即將在 政大應數 分享一個 Talk,
議題是關於 Linux System Security。

我規劃中理想的 Linux System Security 可分以下幾個流程進行:

nccu-se-0.jpg

System Security Overview

User Authorization / su、sudo
PAM 認證機制 / SSHD 安全性設定

chroot / xen / vserver
Tripwire 系統稽核查驗

Network Service Security (APACHE. MAIL. FTP…)
Tcp_wrapper、iptables firewall

系統紀錄管理與監控、自我偵測掃描、攻擊
system log / Testing & Monitoring

完善的備份策略
System Backup (network backup)

.
12/3 的 Talk 只會基礎的談論 System Security Overview,
並整理一些『最快速的系統安全實作 Topic』讓大家參考。

在 System Security Overview 之後的五個主題,
則是更繁雜且深入的內容,留在未來再分享討論吧!

完整投影片 PDF 下載:System Security Overview @ NCCU
課堂中使用的相關檔案下載:NCCU_961203_Files.zip

八月 16, 2007
» Linux Administration Course

根據前一篇 My Linux Hand Book (branch) ,我將更詳細的內容記載在
網頁上,底下是我在 OSSF::自由軟體鑄造場 工作時所完成的教材資料,
有興趣不妨參考、修改取用。

.
Linux Administration Course

.
背景資訊:

課程的內容與規劃,依照下列三部份來循序漸進: 1. 初學入門 2. 系統管理
3. 網路伺服器架設與管理。預期的目標是,讓學員從初學入門以至於具備
從無到有,自己建立、管理、維護 Linux Server 的能力。以 GNU/Linux
為基礎,整理出一份適合大學生以及研究生,入門 UNIX-Like 的教材。
此教材曾在政治大學應用數學系—暑期研習課程中採用。最近一次完整的
使用紀錄是在法鼓佛教研修學院開設一學期的 Linux Admin 課程。

.
教材大綱:

此份教材內容,主要遵照下列課程大綱來設計。

* 政治大學應數系-暑期研習課程:
o http://yenjinc.info/wp-content/uploads/2006/07/Outline.pdf
o http://yenjinc.info/wp-content/uploads/2006/07/Courses.pdf

* 法鼓佛教研修學院-課程綱要:
o http://yenjinc.info/chibs/Courses.pdf

.
參考資源

此份教材內容的設計,主要參考下列資源。

* Linux 書籍
o 柏青哥的 SUSE Linux 10 (上奇科技)
o Unix/Linux 作業系統原理與管理實務 (學貫)
o LPI Linux Certification in a Nutshell, 2/e. 2006 (O’Reilly)
o Linux Cookbook. 2004 (O’Reilly)

* Linux 網路資源
o http://linux.vbird.org/
o http://kalug.linux.org.tw/~lloyd/LLoyd_Hand_Book/book/book1.html
o 其他更多資源,列表在每週課程檔案的第二頁裡

.
已經完成的電子檔

此份教材的電子檔案,目前分散在以下位置。

* 政治大學應數系-暑期研習課程:
o 第一版:http://yenjinc.info/wp-content/uploads/2006/10/old.pdf
o 第二版:http://yenjinc.info/wp-content/uploads/2007/01/my-linux-hand-book.pdf

* 法鼓佛教研修學院:
o 每週的上課講義與實作內容:http://yenjinc.info/chibs/

.
法鼓佛教研修學院上課記錄
(2007.2/28 ~ 2007.6/27)

* 3/07. Linux 簡介與取得、系統裝置名稱與分割區概念、系統安裝
o — http://yenjinc.info/chibs/960307.pdf

* 3/21. Linux 入門、系統遊走檢視、檔案目錄管理
o — http://yenjinc.info/chibs/960321.pdf

* 3/28. 檔案檢視工具與 vi 編輯器
o — http://yenjinc.info/chibs/960328.pdf

* 4/04. bash 入門篇 (變數、別名、通配字元、歷史清單、設定檔案…)
o — http://yenjinc.info/chibs/960404.pdf

* 4/11. bash 進階篇 (導向、管線與過濾器程式…)
o — http://yenjinc.info/chibs/960411.pdf
o — http://yenjinc.info/chibs/960411Sed.txt

* 4/18. 檔案的打包、壓縮、尋找、萬用字元、正規表示式
o — http://yenjinc.info/chibs/960418.pdf
o — http://yenjinc.info/chibs/960411Sed.txt

* 4/25. 使用者與群組管理、檔案系統權限管理
o — http://yenjinc.info/chibs/960425.pdf
o — http://yenjinc.info/chibs/960425_PIC.tgz

* 5/02. 工作與行程管理、工作排程、套件管理程式與 TarBall 管理
o — http://yenjinc.info/chibs/960502.pdf
o — http://yenjinc.info/chibs/960502_PIC.tgz
o — http://yenjinc.info/chibs/960502TarBall_Plone.txt

* 5/09. 檔案磁碟系統管理 (磁碟分割,檔案系統建立、掛載,備份、救援…)
o — http://yenjinc.info/chibs/960509.pdf
o — http://yenjinc.info/chibs/960509_ppt.pdf
o — http://yenjinc.info/chibs/960509_scripts.txt
o — http://yenjinc.info/chibs/960523_ppt.pdf

* 5/16. 系統開機、運作流程管理、LILO/GRUB 開機管理程式、編譯核心、系統紀錄檢視
o — http://yenjinc.info/chibs/960516.pdf
o — http://yenjinc.info/chibs/960516lpi201.pdf
o — http://yenjinc.info/chibs/960516lpi202.pdf

* 5/23. Linux 系統管理實務 I
o — (4/25—5/16 課程內容複習、案例探討、實作練習、討論…)
o — http://yenjinc.info/chibs/960523_ppt.pdf

* 5/30. Linux 系統管理實務 II
o — (4/25—5/16 課程內容複習、案例探討、實作練習、討論…)
o — http://yenjinc.info/chibs/960530-example1.txt
o — http://yenjinc.info/chibs/960530-example2.txt

* 6/06. Linux 伺服器架設 I (基本網路工具、基礎網路服務、架設、實務應用…)
o — http://yenjinc.info/chibs/960606_ppt.pdf
o — http://yenjinc.info/chibs/960606-pam_tally.txt
o — http://yenjinc.info/chibs/960606-iptables.txt

* 6/13. Linux 伺服器架設 II (SECURITY、HTTP、FTP、MAIL、DNS、SAMBA、NAT、DHCP…)
o — http://yenjinc.info/chibs/960613_Server.txt
o — http://yenjinc.info/chibs/960613_other_urls.txt

* 6/20. Linux 桌面環境應用 (生活應用、課程討論、總檢討、意見反應…)
o — (6/06—6/13 課程內容複習、案例探討、實作練習、討論…)

.
政治大學應數系 暑期研習課程
(2006.7/28 ~ 2006.8/11)

* 完整上課教材 (第一版)
o — http://yenjinc.info/wp-content/uploads/2006/10/old.pdf

* 完整上課教材 (第二版)
o — http://yenjinc.info/wp-content/uploads/2007/01/my-linux-hand-book.pdf

.
原始檔案下載

* 所有教材之完整原始檔案下載
o http://yenjinc.info/UNIX_Administration.rar

.

» My Linux Hand Book (branch)

政大應數系 以及 法鼓山中華佛學研究所 使用的 Linux 教學資料,
統一放至 rt.openfoundry.org

Linux Administration Course [*註一]
http://rt.openfoundry.org/Foundry/Project/?Queue=807

以上這份文件將不再正式維護,未來我會採用『另外的方式』,
將累積下來的資料,重新改版為『最精簡』而且可符合『小班制課堂』
(類似補習班的每堂授課那種模式) 直接上場採用的版本。

至於實際的執行方式,目前我還在規劃中,若朋友們有什麼想法或意見
歡迎提供給我。

[註一]:過去相關的文章可參考:
—My Linux Hand Book
—Chibs Linux class files

五月 21, 2007
» Rsync over SSH with No Password (Crontab)

這裡我將簡單紀錄,最基礎的異地同步備份方法:

—如何使用 rsync + ssh + crontab 製作 mirror Files。

因為示範的關係,所以採用一般 User 來進行,
實際狀況下,如果採用 root 進行 ssh 遠端同步時,

必須修改:/etc/ssh/sshd_config。

並設定:
PermitRootLogin no
PermitRootLogin forced-commands-only

另外也必須注意,備份檔案的相關權限問題。

########################################
rsync + ssh 基本同步化
########################################

$ sudo apt-get install rsync ssh

$ man rsync
-a, --archive (archive mode)
-v, --verbose (increase verbosity)
-z, --compress (compress file data)
-e, --rsh=COMMAND (specify rsh replacement)
--rsync-path=PATH (specify path to rsync on the remote machine)

透過 ssh 將 yenjinc.info 的 ~/backup,備份至本地端 /backup。

$ rsync -avz -e ssh yenjinc@yenjinc.info:~/backup/ /backup/
yenjinc@yenjinc.info’s password: ←(輸入密碼)

如果需要 mirror 遠端與本地端的資料,請加上 --delete 選項。

$ rsync -avz -e ssh --delete yenjinc@yenjinc.info:~/backup/ /backup/
yenjinc@yenjinc.info’s password: ←(輸入密碼)

以上僅適合一般同步作業,因為 ssh 必須提示輸入密碼才能進行同步化,
如果放在 Crontab 的話,會因為沒有辦法 key in password 而整個 hang 在那。

########################################
產生 ssh 公開金鑰與私密金鑰
########################################

rsync 會利用 ssh 登入到遠端主機,需要帳號與密碼。
若要在 crontab 中不需要輸入密碼就登入,必須製作 public / private keys。

$ ssh-keygen -t dsa -b 1024 -f yenjinc.info-key ←(file name 可自訂)
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): ←(不需輸入,直接按 Enter)
Enter same passphrase again: ←(不需輸入,直接按 Enter)
Your identification has been saved in yenjinc.info-key.
Your public key has been saved in yenjinc.info-key.pub.
The key fingerprint is:
41:29:60:49:40:c3:a0:8f:2f:74:4e:40:64:a5:42:db Denny@PowerBook-G4.local
(公開金鑰與私密金鑰製作完成)

這時候目錄下會產生兩個檔案:
yenjinc.info-key
yenjinc.info-key.pub ←(必須放置到遠端的主機裡)

必須將 yenjinc.info-key.pub 放到遠端 ~/.ssh/authorized_keys 裡。

$ scp yenjinc.info-key.pub yenjinc@yenjinc.info:~/.ssh/
yenjinc@yenjinc.info’s password: ←(輸入密碼)
yenjinc.info-key.pub 100% 614 0.6KB/s 00:00

登入到遠端的主機,把 pub key 加入 authorized_keys 中。

$ ssh yenjinc@yenjinc.info
yenjinc@yenjinc.info’s password: ←(輸入密碼)

yenjinc@~$ cd .ssh/
yenjinc@~/.ssh$ cat yenjinc.info-key.pub >> authorized_keys
yenjinc@~/.ssh$ chmod 600 authorized_keys

完成之後,離開遠端主機,並且測試一下,是否已經可以不需密碼即 ssh login。

$ ssh -i yenjinc.info-key yenjinc@yenjinc.info ←(使用 -i 指定剛才的私密金鑰)
yenjinc@~$ ←(順利完成!不需密碼即可登入。)

########################################
rsync + ssh + No Password 基本同步化。
########################################

接著下來,即可利用 Rsync 透過 SSH 來同步本地與遠端的資料,而不需輸入密碼。
不用密碼的好處是,可以把 rsync 同步備份指令,寫在 Crontab 下自動執行。

透過 ssh 將 yenjinc.info 的 ~/backup,備份至本地端 /backup。

$ rsync -avz -e “ssh -i yenjinc.info-key” yenjinc@yenjinc.info:~/backup/ /backup/
←(順利完成!不需密碼,即可將遠端資料備份過來。)

如果需要 mirror 遠端與本地端的資料,請加上 --delete 選項。

$ rsync -avz -e “ssh -i yenjinc.info-key” --delete yenjinc@yenjinc.info:~/backup/ /backup/
←(順利完成!不需密碼,即可將將遠端的資料製作一份 mirror 到本地端。)

########################################
rsync + ssh + No Password + Crontab 基本同步化。
########################################

基本上,如果上面那一個步驟已經順利成功的話,在加上 Crontab 就不會出錯了。
只要將剛才那串指令,加到 crontab 指令中就行啦!

以下的 Script 是在我的 OSX + Fink 的環境,若是 Linux 則需要另做修改。

#!/bin/bash
RSYNC=/sw/bin/rsync
SSH=/usr/bin/ssh
KEY=/Users/Denny/yenjinc.info-key
USER=yenjinc
HOST=yenjinc.info
REMOTE_DIR=/home/yenjinc/backup/
LOCAL_DIR=/Users/Denny/backup/

# rsync+ssh+crontab command
$RSYNC -avz -e “$SSH -i $KEY” --delete $USER@$HOST:$REMOTE_DIR $LOCAL_DIR

將以上 script 內容,儲存為 /Users/Denny/crontab-file。
完成後,即可設定 Crontab。

$ crontab -e
*/2 * * * * /Users/Denny/crontab-file

大功告成,每兩分鐘就執行異地同步備份一次。

########################################
後記 (備註):
########################################

以上所有內容,僅是基本的 rsync+ssh+crontab 示範與練習。
如果是 Server 的環境,詳細的內容就更為繁複啦!

若想延伸閱讀,可參考以下。

在 Google 敲入:rsync ssh crontab 等相關 keyword 可以找到更多哦!

三月 6, 2007
» Chibs Linux class files

法鼓山中華佛學研究所 的 Linux 課程已經開跑囉!

每週的講課資料都會放在這裡:
http://yenjinc.info/chibs/

上述的每週資料僅是彙整大綱,詳細的內容與練習
會在課堂中在與大家分享、討論。

最後還是很感謝 法鼓山中華佛學研究所 的朋友們,
能讓我有機會可帶領大家一同學習、分享 Linux。

謝謝你們! :-)

二月 23, 2007
» My Linux Hand Book

藉由 政大 UNIX 研習 而產生的 HandBook
已經在做『第二版』增訂囉!

『第一版』的內容已不會在更新了 (連結與檔案 不會刪除),
新的增訂內容與修正,會直接併入『第二版』中。

以下為『第二版』的文件內容:
最後更新時間:2007/02/23 AM2:10 (隨時更新)

—My Linux HandBook

一月 3, 2007
» UNIX Administration Course (chibs)

今年度即將在 法鼓山中華佛學研究所 擔任一學期的 Linux 課程講師,
這是繼 政大 Unix 研習課程 後,新的一個完整學期的課程規劃。

以下是暫定 UNIX 系統實務 十八週 授課大綱。
實際進度以課堂上課狀況之進度為主。

—Linux Administration Course (課程綱要)

十一月 13, 2006
» pam_tally - login counter (tallying) module

If you wanted to lock out users who failed at entering their passwords
correctly after 『three』 attempts, you could use the pam_tally module
in the 『/etc/pam.d/common-auth』 configuration file by adding
two lines like this:

auth required pam_tally.so no_magic_root
account required pam_tally.so deny=3 no_magic_root

Then you need to create 『/var/log/faillog』 and set it to read/write only by root:

# touch /var/log/faillog
# chmod 600 /var/log/faillog

You can type 『pam_tally --help』 as root to learn about its usage.
To reset the tally for a user and unlock his account, type
pam_tally --user username --reset』.

Examples:

cyj@PBG4:~$ cat /etc/pam.d/common-auth
#
auth required pam_unix.so nullok_secure
auth required pam_tally.so no_magic_root
account required pam_tally.so deny=3 no_magic_root

Debian GNU/Linux 3.1 PBG4 tty1

PBG4 login: cyj
Password:
Login incorrect

PBG4 login: cyj
Password:
Login incorrect

PBG4 login: cyj
Password:

Authentication failure

PBG4 login: root
Password:

PBG4:~# pam_tally --user cyj
User cyj (1000) has 3

PBG4:~# pam_tally --user cyj --reset=0
User cyj (1000) had 3

PBG4:~# pam_tally --user cyj
User cyj (1000) has 0

PBG4:~# logout

PBG4 login: cyj
Password:

cyj@PBG4:~$

See Also:
http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html
http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-pam_tally.html

十月 21, 2006
» Unix-like Tutorial (light-weight handbook)

『千呼萬喚始出來!』

這句話,用來形容這一份『Unix-like 基礎入門講義』
的誕生,是再貼切不過的啦!

這份手冊的內容,是將先前『政大 Unix-like 系統研習』
的講義內容,經過重新排版、重新撰寫的改良版本。

這一份入門手冊一直都還在初稿當中,接下來我會將它
當作是自己的『授課教材』繼續讓它的內容更加豐富與
完整。

我期望著,總有一天,我要拿著自己的 Linux 授課教材
來帶領新手進入 UNIX 的領域,我就更有決心來把它寫
的更好!(雖然現在已經有太多優良的教材了,我就像是
在重複發明輪胎一般。)

也許是秉持著對於 Linux / Unix-like 系統的興趣,以及
想帶領更多朋友也一同學習的熱忱,我會利用工作、課業
閒暇之餘,讓它更加的完美。

完成了這一份 Unix-like 系統基礎入門之後,接下來我也有
同樣的想法,想製作有關於 Python、Plone 基礎入門的手冊
,讓更多的朋友除了認識我最喜愛的 Linux 以外,連帶我
其他的興趣 Python、Plone 也統統帶給大家吧! :-)

—Unix-like Tutorial (lightweight handbook)

七月 29, 2006
» Unix-like Tutorial Outline

這連續五天的 Unix-like 系統研習,總課程大綱已經出來啦!

由於每天只有兩個小時,而且礙於環境限制,所以也無法直接安裝
Linux 來練習,所以就直接透過遠端 SSH 登入其中一台已經裝好
Debian GNU/Linux 的主機,來作後續五天的課程教學與練習。

總體來說,雖然課程大綱已經敲定,但實際上課的內容,都還是以
同學能跟的上的進度還有內容為主,輕鬆愉快的學習,大家學的會
比較重要。

後來真正上課時,自己發現上課講的內容,比講義寫的還多,因為
講義只算是上課指令用法的總結,很多相關的背景知識 (Background)
都需要講解給同學聽,基礎理論知識了解後,再來敲指令,這樣學起來
比較有成效。

對了,還有大部分的時間都交給同學來進行練習,大家反應都不錯,
有疑惑都會發問,透過彼此討論交流後,可以激起另外的火花,進而學
到更多原本不是排在上課中的內容。

當然啦!我也超感謝大家的熱情捧場,才讓小弟有這個機會可以來帶領
大家一起來學習 Unix-like 系統,謝啦!政大應數系的各位朋友們! :-D

—Unix-like Tutorial Outline

九月 28, 2005
» X40 Backup Code

為了應急,替我的小黑 X40,隨手寫的 Full Backup
Script,僅自家用,先記錄下來 (有空在改)。

#!/bin/bash
mntpoint=”/mnt/backup”
hddstate=`mount $mntpoint 2> /dev/null && sudo chown cyj.cyj $mntpoint && df|grep sda5|sed ‘s/ \+/ /g’|cut -d” ” -f1`
declare -i freespace=`test -z $hddstate || df|grep sda5|sed ‘s/ \+/ /g’|cut -d” ” -f4`
bktime=`date +%F-%H%M`

backup_now() {
echo -e “\nBackup starting now!\n==================================>”
`mkdir -p $mntpoint/FullBK/$bktime`
bkpath=”$mntpoint/FullBK/$bktime”
bkpath2=”$mntpoint/FullBK/other”
`sudo cp -a /mydocs /EIO_Binders/ /bin/ /boot/ /dev/ /etc/ /home/ /lib/ /root/ /sbin/ /usr/ /var/ $bkpath2/* $bkpath`
`sleep 5;umount $mntpoint`
}

freespace_lt_10g() {
if !([ -z $hddstate ]) ; then
echo -e “\nIt’s too less freespace to backup!.. removing old backup files!\n==================================>”
oldfiles=`ls -l $mntpoint/FullBK/|head -2|tail -1|sed ‘s/ \+/ /g’|cut -d” ” -f8`
`sudo rm -rf $mntpoint/FullBK/$oldfiles;sleep 5`
backup_now
fi
}

freespace_gt_10g() {
if !([ -z $hddstate ]) ; then
backup_now
fi
}

if !([ -z $hddstate ]) ; then
if [ "$freespace" -lt "10240000" ];then
freespace_lt_10g
else
freespace_gt_10g
fi
echo -e “\nok! well done!\n<==================================\n”
else
echo -e “\nno usb_hdd interface found.\n<==================================\n”
fi

biggo.com.tw

A Django site.