FreeBSD 6.0 與 jail

因為要惡搞一些東西,不方便在現有的系統上跑,於是就跑去弄個 jail 出來用。比起 FreeBSD 4.x 需要自己寫一些 shell script 丟到 /usr/local/etc/rc.d/ 下,6.0 下的 jail 已經整合到系統內了,所以不太需要在自己寫 shell script。

而且 6.x 的 jail 也修掉不少 bug,像是 dmesg 偶而會出不來 (喂喂),reboot 不會理你 (喂喂)... 另外 df 也只會看到 /,不會看到其他的 slice 了。

要生出 jail 的環境,先是:

make buildworld
make installworld DESTDIR=/da1/jail0
make distribution DESTDIR=/da1/jail0

然後改 /da1/jail0/etc/master.passwd,把自己加進去,用 pwd_mkdb -d /da1/jail0/etc /da1/jail0/etc/master.passwd 重新編過一次,記得把家目錄開好 :p

然後是 /etc/rc.conf

ifconfig_fxp1_alias0="inet 192.168.113.10/24"
jail_enable="YES"
jail_list="testbase"
jail_testbase_devfs_enable="YES"
jail_testbase_devfs_ruleset="devfsrules_jail"
jail_testbase_exec="/bin/sh /etc/rc"
jail_testbase_hostname="testbase"
jail_testbase_ip="192.168.113.10"
jail_testbase_rootdir="/da1/jail0"
pf_enable="YES"

接下來弄 pf 的設定,所以去改 /etc/pf.conf

nat on fxp0 from 192.168.113.0/24 to any -> (fxp0)
nat on fxp1 from 192.168.113.0/24 to any -> (fxp0)

接下來把 jail 裡面的東西設一設,像是 resolv.conf

最後用系統給的 jail 就可以啟動了:

/etc/rc.d/jail start

第一次跑起來應該會卡在 ssh 產生金鑰的地方,所以就去喝個飲料之類的 :p (也可以自己先在 host 產生好,不過我這邊懶得講了,請自己去 /etc/rc.d/sshd 翻,需要三組金鑰)

弄完以後就可以 ssh 進去玩了,如果要跟 host 共用 ports directory,可以用 mount_nullfs 以 read-only 掛上來 (security issue),然後修改 /etc/make.conf,把本來會寫入的部分都改到 /tmp 下:

DISTDIR=        /tmp/distfiles
WRKDIRPREFIX=   /tmp/WRKDIR

這樣應該就沒什麼大問題了 :D

反監控 E-mail

前陣子美國的新聞媒體報導了 Bush 政府要求 NSA 大規模監控了所有的通訊資料。

剛剛在 Is the NSA Reading Your E-Mail? 這篇裡面看到了 Richard M Smith 提供反監控的想法:在信裡面提到一個別人不會 access 到的網頁,看 server log 是不是有被存取到。

(然後我又想到 了...)

vim 與 cwTeX 配合

F8 比較慢 (cwtex + latex + latex + dvips + ps2pdf),F9 比較快 (cwtex + pdflatex + pdflatex)。跑兩次 latex 的目的在 的 manual 裡面有提到原因。

這是 vimrc 的部分:

" TeX
function MakeTeX()
    let textfilename = expand("%:p:r")
    execute "silent !cwtex " . textfilename
    execute "silent !pdflatex " . textfilename
    execute "silent !pdflatex " . textfilename 
endfunction

function MakeTeX2()
    let textfilename = expand("%:p:r")
    execute "silent !cwtex " . textfilename
    execute "silent !latex " . textfilename
    execute "silent !latex " . textfilename
    execute "silent !dvips " . textfilename
    execute "silent !ps2pdf " . textfilename . ".ps"
endfunction

function LanuchPDF()
    let textfilename = expand("%:p:r")
    execute "silent !start C:\\\\Program\\ Files\\\\Foxit\\ Reader\\\\Foxit\\ Reader.exe " . textfilename . ".pdf"
endfunction

au BufNewFile,BufRead *.ctx setf tex
map <F8> :call MakeTeX2()<CR>:call LanuchPDF()<CR>
map <F9> :call MakeTeX()<CR>:call LanuchPDF()<CR>

Google 對 XSS 的應對

自從 提到 Javascript 的邪惡之處後 (尤其是 ,Cross Site Scripting),我跟 Blake 學長就把 給裝起來了... 另外一方面,看到一些東西就比較常去思考要怎麼惡搞 :p

在防禦 XSS 這方面,就可以看出 有想到不少細節在做:

  • Blogger.com (Control Panel) 與 Blogspot.com (Template)。
  • Google 的頁庫存檔會使用 IP address 而不是用 "www.google.com"。

很明顯的,無名小站自訂 CSS 的地方...

無名小站沒禮貌的 Bot

看 awstats 統計記錄的時候發現從 mail.wretch.cc 來的連線量超大,而且超頻繁,去翻 log 發現原來是個沒禮貌的 bot:(列出最後幾筆)

203.133.33.2 - - [25/Dec/2005:00:13:50 -0800] "GET /feed/ HTTP/1.0" 200 21656 "-" "wcpan fetcher"
203.133.33.2 - - [25/Dec/2005:00:14:35 -0800] "GET /feed/ HTTP/1.0" 200 21656 "-" "wcpan fetcher"
203.133.33.2 - - [25/Dec/2005:00:18:57 -0800] "GET /feed/ HTTP/1.0" 200 21656 "-" "wcpan fetcher"
203.133.33.2 - - [25/Dec/2005:00:19:42 -0800] "GET /feed/ HTTP/1.0" 200 21656 "-" "wcpan fetcher"
203.133.33.2 - - [25/Dec/2005:00:24:24 -0800] "GET /feed/ HTTP/1.0" 200 21656 "-" "wcpan fetcher"

不支援 Last-Modified 浪費我的頻寬,然後次數又超頻繁,用 .htaccess 擋掉:

#
order allow,deny
deny from 203.133.33.
allow from all

Update:據說修好了,先改回來...