Archive for the ‘網路’ Category
安裝 Apache
網路上有很多種不同的 server,其中 Apache 是最受歡迎也是使用最久的 server 之一。現在 Netcraft 的 survey 顯示 Apache 佔了市場的 47%,接下來才是 IIS、nginx、lighttpd。
Apache 因為使用廣泛、歷史悠久,主要的優點包含:
- 功能完整
- 穩定
- 支援度高
但比起 nginx、lighttpd 這兩個後起之秀,效能沒有那麼好。
現在仍然有許多網站使用 Apache,如 Wikipedia、W3C、ISC、Google(據說是用改版的 Apache)。
Apache 除了靜態網頁之外,還可以配合 PHP 與 MySQL 做動態網頁。
灌 Apache 其實很簡單,只要下:
# cd /usr/ports/www/apache22 && make install clean
模組很多,基本上用預設就好,不過可以不選 DAV、DAV_FS、CERN_META、IMAGEMAP(若要用 Subversion 要留 DAV、DAV_FS)。
接下來把 apache22_enable="YES" 加入 /etc/rc.conf 就可以啟動 Apache 了:# /usr/local/etc/rc.d/apache22 start。
除了 script 以外,還有 apachectl 可以使用。
測試設定檔有沒有問題:
# apachectl configtest
啟動 Apache:
# apachectl start
停止 Apache:
# apachectl stop
重新啟動 Apache:
# apachectl restart
重新啟動 Apache:
# apachectl graceful
restart 與 graceful 的差別在於 graceful 會先等現有的連線結束後才重新啟動。通常建議用 # apachectl graceful。若 Apache 沒有啟動,restart 與 graceful 都會啟動 Apache。
Apache 的設定檔位於 /usr/local/etc/apache22/httpd.conf(Includes/ 和 extra 裡面也有一些設定)。
詳細設定之後在打。
HiNet DNS 伺服器不正常?
大概是暑假的時候發現 HiNet 的 DNS 伺服器(dns.hinet.net)有點奇怪。有某些網路正解會 freeze 住,不知道原因。換其他 DNS 伺服器就沒問題。
這兩個就會 freeze:
# dig @dns.hinet.net www.over-yonder.net # dig @dns.hinet.net www.cinepaint.org
www.undeadly.org 正解也有點問題。
正常的應該像這樣:
# dig www.over-yonder.net ; <> DiG 9.4.3-P2 <> www.over-yonder.net ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33885 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.over-yonder.net. IN A ;; ANSWER SECTION: www.over-yonder.net. 390 IN A 75.65.60.123 ;; AUTHORITY SECTION: over-yonder.net. 390 IN NS ns.silohost.com. over-yonder.net. 390 IN NS ns2.silohost.com. ;; ADDITIONAL SECTION: ns.silohost.com. 169590 IN A 66.20.47.5 ns2.silohost.com. 169590 IN A 66.20.47.2 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sat Nov 14 14:19:12 2009 ;; MSG SIZE rcvd: 132
試了幾次都沒辦法解決,所以現在都沒在用 dns.hinet.net(168.95.1.1)了。反正學校有 ns1、ns2,家裡直接用 BIND 在 localhost 架一個 caching 的 DNS 伺服器。
更新:和 buganini 學長做了一些測試,發現應該是 timeout 所造成的。從某些地方連到上面的 DNS 伺服器 latency 比較高,因此 query 的時候可能會有 timeout,不過還不完全確定。已經寄信去問了。
更改 MySQL 使用者的密碼
我印象中第一次在 FreeBSD 上灌 MySQL 的時候應該是高一吧。那時候不知道怎麼用 mysql 改 root 的密碼,因為國中都用 phpMyAdmin,對 SQL 一無所知。
自從暑假用 MySQL 當作 mail server 的 backend,就開始學 SQL 了。一直用 phpMyAdmin 不是辦法。當然,最重要的指令就是更改 root 的密碼了。
安裝、啟動 MySQL 之後,進入命令列:
# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 80 Server version: 5.1.40-log FreeBSD port: mysql-server-5.1.40 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
第一次看到這個就傻眼了,因為不知道該做什麼。其實很簡單,只要執行:
mysql> UPDATE mysql.user SET password = PASSWORD('newpass') WHERE user = 'root'; mysql> FLUSH PRIVILEGES;
就可以更換 root 的密碼了(記得把「newpass」改成自己的密碼)。
UPDATE 是更新 mysql 資料庫裡的 user table。SET 是設定,PASSWORD 是 MySQL 內建的 hash function,用來加密密碼。後面的 WHERE 限制更改使用者為 root 的密碼。最後 FLUSH PRIVILEGES 會告訴 server 重新載入權限的資訊。
OpenSSH
熟悉 BSD、Unix、Linux 的人應該都聽過 SSH 這個協定。SSH 主要用途是遠端登入,不過也可以做 port forwarding、tunneling(通常用來鑽防火牆)、SOCKS 或用來傳檔案。SSH 之所以會出現是要取代 telnet 等程式,因為 telnet 連線未經過加密,容易被竊聽。
這篇會提到怎麼架 OpenSSH 和一些常用的指令。
大部分的 BSD、Unix、Linux 作業系統上都有 SSH 的程式,其中使用最廣泛的應該是 OpenSSH。OpenSSH 是由 OpenBSD 的開發者開發。
OpenSSH 是 OpenBSD 的一個部分,而開發的時候會釋出一個「portable」的版本,可以移植到其他作業系統。目前 FreeBSD 7.2 的 base 包含 OpenSSH 5.1p1。
阻擋 SSH brute force
架好 FreeBSD 或 Linux 之後,常常見到的一個現象就是 SSH 持續的遭受攻擊。在 security run output 會看到這樣的訊息:
ns.hs.ntnu.edu.tw login failures: Oct 30 02:25:01 ns sshd[12801]: Invalid user master from 140.124.62.197 Oct 30 07:13:22 ns sshd[14529]: Invalid user globus from 213.99.38.3 Oct 30 07:13:31 ns sshd[14535]: Invalid user condor from 213.99.38.3 Oct 30 07:13:32 ns sshd[14534]: Invalid user cadi from 213.99.38.3 Oct 30 07:26:44 ns sshd[14591]: Invalid user simoni from 124.193.106.107
看到就覺得很煩,因為每天都有,而且若不阻檔的話,可能會有數千比,系統也有機會遭到入侵。
為了阻擋 SSH brute force,我在 FreeBSD 上裝了 security/sshguard-pf,sshguard 的好處是他可以判別很多種紀錄檔,也支援許多種防火牆。另外,也可以調整多久時間內登入失敗幾次,還有要擋掉多久。
目前可以判讀這些軟體的紀錄檔:
支援的防火牆包含:
在 FreeBSD 上設定 lagg
PuTTY 設定
雖然在家裡已經改用 FreeBSD 當 desktop,terminal 都用 ROXTerm,但學校還是會碰到 Windows,所以 SSH 都是靠 PuTTY。把一些常用的設定紀錄下來。
通常用的設定是將 Window/Appearance 底下把字體設成「細明體」、大小設為「18」,然後選 ClearType。細明體是為了中文,字體大小是因為我長時間盯著螢幕,字大一點眼睛比較不會累。最後 ClearType 會讓字變得好看一點。
接下來就把 Window/Translation 的編碼設成 UTF-8。Big5 已經沒在用了。
Connection/Data 裡設一下 username,以後登入就不用每次打了。
另外,要鑽防火牆的話 Connection/Proxy 或 Connection/SSH/Tunnels 要改一下。Connection/SSH/X11 有用到再啟動。
設完別忘了 save 就好了。
PuTTY Tray 也可以試試看。
星期一就要段考了,最近考試好多。今天社課展示了一下 screen、Vim、mutt、ZFS 的功能。
整天盯著電腦螢幕的心得
暑假又過完了,明天要開學考。這次暑假學了不少(不過也很雜),只是整天盯著電腦螢幕眼睛很累。幸好現在近視已經不會加深了。
先談 FreeBSD 以外的好了。之前花了幾天看 LaTeX,因為感覺很有趣,可以印出各種數學式子。他最大的功能其實是排版,可以用來弄文章、書之類然後轉成 PDF、PS 等格式。網路上有一本叫 The Not So Short Introduction to LaTeX2e,我幾乎都是看這本學的(此書的作者同時也是 RRDtool 與 MRTG 的作者)。裡面寫的還不錯,很多重點都有涵蓋到。
在 FreeBSD 用 LaTeX 感覺比 Windows 方便多了。用 Ports 安裝不用在下載 MiKTeX 之類的軟體。至於編輯器目前是用 Texmaker。會看 LaTeX 的原因也是因為想整理出一本 FreeBSD 的文件,不過沒做到。現在大概要等學測、指考考完了。
暑假幾乎都在忙郵件伺服器和防火牆。暑假也因此買了 The Book of Postfix 與 The Book of PF。防火牆已經架好了,也放上主幹,只是規則沒有完全寫好。這次還是用 FreeBSD 架,雖然又 pfSense 之類的方案,但沒有用。其實比想像中簡單。系統準備好之後在 kernel 中加入 PF、ALTQ 的選項以及 device if_bridge。之後 /etc/pf.conf 寫一寫就好了。除了過濾的規則之外,最大的變化應該是將 states、src-nodes、frags、table-entries 調大。 其實到目前為止還沒看過這些超過預設值(最多有過 7000 多個 states),但還是調大一點比較安全。
放上骨幹之後就加了一些軟體可以除錯、看流量、產生圖形。最基本當然有 pfctl、pflog、tcpdump。額外裝了 sysutils/pftop、net-mgmt/iftop、net/nload 來作為即時觀測。圖形則是加了 net-mgmt/mrtg、sysutils/pfstat。MRTG 純粹只有流量,但 pfstat 有關於 PF 的資料。至於實際紀錄總流量則是使用 net-mgmt/bandwidthd。
架設郵件伺服器困難度則是防火牆的好幾倍。用 Postfix、Dovecot 設定還算淺顯易懂(幸好不用看 Sendmail 的設定檔)。最麻煩的是要建立各種防止垃圾信件的方法,光是這個就不知道花了幾天的時間。最基本的是從 SMTP 連線中強迫 client 遵守 RFC,如:必須 helo/ehlo hostname、使用 FQDN 等。接下來就檢查 SPF,因為這樣可以避免有人偽裝成 server 亂發垃圾信件(像某某 IP 假冒 Gmail)。現在我也在學校的 domain 上加了「v=spf1 ip4:140.122.126.2 ip4:140.122.126.3 ~all」。還可以用 pcre 過濾 header 和 body,不過現在規則完全是空的。
剩下的方式都比較耗時間或系統資源。建立連線時,用 DNSBL 可以查詢該 IP 是否有不良紀錄,若有的話可以結束連線,不接收任何信件。主要的黑名單有 CBL、Spamhaus、SORBS、Spamcop、NJABL。其中 CBL 與 Spamhaus 擋掉最多,SORBS 與 Spamcop 其次而 NJABL 幾乎沒有(統計數字的時候我有調整使用順序)。其實 DNSBL 不會太耗資源、時間,因為只是用 DNS lookup。Greylisting 據說可以退掉不少 spam。用的方式是第一次收到信件會退信,標為 temporary failure。根據 RFC,temporary failure 的時候 MTA 必須再試著寄信。第二次收到信才會收下。電子郵件會被紀錄,這樣以後就不用再被退信了。當然有些可以列入 whitelist 中。整體而言第一次發 email 會被 delay 大約 5 到 20 分鐘,很少超過半小時。因為平常發 spam 他不會勤勞到寄第二次,所以可以退掉一些垃圾信件。
最後(應該說是不耗 CPU 資源中的最後一個方式),Postfix 有 address sender verification。這個功能會檢查 sender 的 email 是否可以收信,若可以的話才會把信件收下。為了省時間只有一些 domain 才會被 verify,驗證完之後也會將 email 存入資料庫,以後就不必再檢查。這也是一個有效的方式,不過通常會 delay 10 秒左右。
現在只剩下過濾信件內容了。主要用 SpamAssassin 過濾內容,然後用 ClamAV 掃毒。另一個方案是 amavisd-new,整合了 SpamAssassin 和其他軟體。
對了,我差點忘了 OpenBSD 的 spamd。這個是跟 PF 整合的軟體,可以 tarpit 和 greylist。不過既然已經有 mail/postgrey 做 greylisting,沒有必要再弄一次,目前主要用途是 tarpitting。用了 uatraps 和 nixspam 這兩個黑名單來檔 spammers。這個 IP 數量也相當驚人,目前 uatraps 有接近 700000 個 IP。若 IP 有被列入黑名單,PF 會將連線交給 spamd,一次只發送 1 byte,跟 block 掉他差不多。
Spam 到此差不多了。剩下的幾乎是 Dovecot 設定、建立 SQL 帳號之類。SQL 其實很簡單(之前以為很難)。Dovecot 改的設定比 Postfix 少很多,幾乎用預設就可以了。主要的差別應該是使用者從 SQL 讀取,PAM 可以註解掉。目前只剩 LDA、quota、sieve、trash 一些 plugin 沒弄好。
比較擔心的是現在我用的這台硬碟空間非常小,可能要移到別台上面。
The Book of Postfix 感覺還不錯,各方面講的都很詳細。特別是有幾章特別分析 Postfix 內部如何運作。我覺得這個很重要。其他像設定的部分,則是先講理論、原理,然後下一張才是實做。這與其他電腦書差異較大,但也因此而能夠徹底理解所有的設定。書裡的例子都十分完整,包括 SQL、SASL、TLS。最後還有一章特別寫用 LDAP 架設郵件伺服器。
講缺點的話當然還是有。最大的應該是我用的軟體跟他不太一樣。SASL、IMAP 我都是用 Dovecot,因為設定淺顯易懂,功能也很強大,有內建的 SASL 也十分方便。書則是用 Cyrus、Courier IMAP。另外一點是書有點舊,某些設定已改變了,不過這倒不用太擔心。只要設定前有參考 postconf 的 man page,上面都有列出舊版本與現在版本的設定。最後一個缺點是有一些錯誤(看 errata 感覺有點多)。不過整體而言,我覺得是一本非常好的電腦書,若要架設郵件伺服器可已參考看看。
The Book of PF 好像沒有那麼好,可已當做 PF FAQ 還有 man pages 的輔助,但沒有辦法取代他們。
暑假也花了不少時間在 FreeBSD Forums 上面。有很多問題幾乎都會有人回答,也有很多資料可以參考。
基礎郵件伺服器架設
說實話,我覺得這篇打的非常爛,很多地方都沒寫清楚,也漏掉很多東西。我決定改天重打後再用 PDF。Formatting 有點奇怪,不是我的錯…WordPress 害的。這篇先作廢。
Firefox 3.5
Mozilla Firefox 3.5 自從 7 月 1 日更新完到現在已經用了一星期了。整體而言,介面並沒有太大的改變,但感覺好很多。
官方網站上有標示 SunSpider JavaScript Benchmark 的解果。JavaScript 明顯比 前面的版本快許多。原因是這次多了 SpiderMonkey 這個 JavaScript engine。網路上有看到一些人寫 Gmail 等網站確實有變快,不過我沒留意。
另一個新的功能是 HTML 5 的支援。多了一些像 footer、audio 和 video 的標籤。HTML 5 裡 center、font(等 font 等很久了,IE 害人不淺)也消失了。CSS 3 的支援也比較齊全了。不過 HTML 5 和 CSS 3 都還沒正式釋出。目前 CSS 支援最差的應該還是 IE(至少 IE 6 是這樣,IE 7 以後我就沒再用了)。
這次的 Extensions 幾乎都沒有問題,升級後仍然可以使用。之前從 Firefox 1 升級到 Firefox 3 和 Firefox 2 升級到 Firefox 3 的時候卻有一大堆無法使用,等了一段時間後才全部支援。目前主要是 YSlow 無法使用,已跳槽到 Google Page Speed。
這次最明顯的改變應該是 Plurk 在 FreeBSD 上變得超順。以前捲軸會一直 lag,現在不會了。
昨天用 Firefox 時,居然沒辦法用 Java。之前 Firefox 3 有裝過,但升級後消失了。最後找來找去找到 /usr/local/lib/firefox3/plugins/。把 libjavaplugin_oji.so symlink 進去就好了。
Flash 也莫名其妙的變順,之前在 YouTube 上看影片,只要碰到時間軸就當了。我是有將 /etc/make.conf 裡的 OVERRIDE_LINUX_BASE_PORT=f10 註解掉,換回預設的 emulators/linux_base-fc4。應該是這個原因。
說道瀏覽器,Opera 也是個不錯的選擇。功能完整,且很小。適合重編 kernel 和 world 的時候使用。每次更新電腦會當半天。印象中 xbddc 學長是用 Opera。
最近家裡和學校電腦 FreeBSD 上也大動干戈,從 ports-mgmt/portupgrade 換成 ports-mgmt/portmaster。主要原因是聽說 portmaster 比較快,還有不必安裝 Ruby。但事實上 portupgrade 也有一些優點,因為會使用快取,某些時候比較快,而 portmaster 則不需要任何額外的 ports,安裝快許多。
QEMU 和 VirtualBox 都裝了。VirtualBox 已經灌了 FreeBSD(用來試 ZFS)和 Untangle,QEMU 則還沒動過。改天來試一下 Windows。
昨天和 Alex 談起電腦時,發覺變化速度真十分快速。現在不斷的推陳出新,且間隔不斷縮小。不久前 PHP 5.3.0 也剛出來。
上午去天瓏書局看書,下午有去了一次。暑假來好好研究一下資訊這一科。


