2011-01-25

在 apache 中隱藏你的 server 資訊

一般我們安裝完 apache httpd 後,預設錯誤頁面會將 server 的版本資訊顯示出來,這樣是非常危險的,如果剛好那個版本有漏洞就容易遭到駭客入侵。 那如何把這些資訊隱藏呢,只要調整 httpd 的一個設定即可,在 httpd.conf 中把 ServerTokens 的值改為 Prod: ServerTokens Prod 以下是在 httpd.conf 中的設定值,及 Apache 在 header 的回應 ServerTokens Full Server: Apache/2.2.15 (Unix) mod_ssl/2.2.15 OpenSSL/1.0.0a DAV/2 ServerTokens OS Server: Apache/2.2.15 (Unix) ServerTokens Minor Server: Apache/2.2 ServerTokens Minimal Server: Apache/2.2.15 ServerTokens Major Server: Apache/2 ServerTokens Prod Server: Apache 所以設定成 ServerTokens Prod 應該是比較好的選擇 參考資料 http://www.backup.idv.tw/viewtopic.php?t=821

2011-01-17

Java 程式如何透過 Proxy 連線

最近因為一些工作上的需要,連線上網都需要穿透公司防火牆的限制。目前是使用 ssh tunnel 的方式加上 proxycap (windows) 或 proxychains (Linux) 穿透,但是 proxycap 或 proxychains 無法應用在 java 程式上,因此找了一下 java 程式使用 proxy 的方法:
  1. Http Proxy: 在 java 執行參數加上 -Dhttp.proxyHost=proxyServer -Dhttp.proxyPort=proxyPort 或是程式中加上: System.setProperty("http.proxyHost", "proxyServer"); System.setPropery("http.proxyPort", "proxyPort");
  2. Socks Proxy: 在 java 執行參數加上 -DsocksProxyHost=proxyServer -DsocksProxyPort=proxyPort 或是程式中加上: System.setProperty("socksProxyHost", "proxyServer"); System.setPropery("socksProxyPort", "proxyPort");
紅字的部份就替換為真正的 proxy server 。 Postgres JDBC 連線亦可透過同樣的方法處理。 針對 proxy 需要認證的部份,可參考: http://www.rgagnon.com/javadetails/java-0085.html 參考: http://download.oracle.com/javase/1.4.2/docs/guide/net/properties.html http://efreedom.com/Question/1-3433737/Java-Proxies-Connection-Postgres

2011-01-10

VirtualBox 4.0: VERR_SUPLIB_OWNER_NOT_ROOT error

最近把 VirtualBox 升級到 4.0 ,結果發現原來可以跑的 Windows XP VM 不能跑了,一執行就產生 VERR_SUPLIB_OWNER_NOT_ROOT 的錯誤,上網查了一下,原來是 virtualbox 安裝目錄的權限需要是 root 擁有,解決方式如下:
  1. 找到 vm 裡的 VBox.log ,查看裡面詳細 log: pdmR3LoadR0U: pszName="VMMR0.r0" rc=VERR_SUPLIB_OWNER_NOT_ROOT szErr="The owner is not root: '/usr/lib'"
  2. log 裡看到 /usr/lib 的目錄擁有者不是 root ,把此目錄改為 root 擁有: chown root /usr/lib
  3. 修改完成後即可啟動 vm 了。