2009-10-25

在Ubuntu上架VPN服務:PPTPD設定

其實這個任務在暑假老師就已經交給我,只是那個時候為了將實驗室伺服器的服務從windows環境移到Linux環境就已經花了不少時間,在最後處理VPN時又出了些問題,試過百百種方法都沒辦法而作罷了,想說之後有時間再弄。正巧最近茂伯資格考結束後老師又提及了這個東西,所以在茂伯的助力之下幫我搞定了,算是了了一樁心事!:D

當初遇到的問題是雖然區網外部可以登入伺服器,卻無法瀏覽區網內的資源。最後茂伯搞定後才知道有些地方是我弄錯以及網路上所寫的有些不完全正確,另外iptable也是問題之一。知道問題點就好辦啦!綜合了幾個網站的筆記,終於連線部份都可以正常連線了。將幾個比較需要注意的的地方筆記下來!

對於pptpd主要共有三個設定檔要設定:
/etc/pptpd.conf
  • localip 參數為本機伺服器的IP位址(設成網域名稱也可)。
  • remoteip 參數為本機伺服器要發給登入使用者的IP,例如:192.168.10.20-30表示登入的使用者會取得此範圍的其中一個IP,換句話說可以有10個使用者同時上線。必須為本機網段合法IP,所謂合法即是尚未使用的可使用IP。

/etc/ppp/pptpd-options
  • name 為本機伺服器的名稱驗證用,必須與chap-secrets中的第二個欄位相同。
  • ms-dns 連線時的DNS位址,可以有兩個以上。

/etc/ppp/chap-secrets
  • 第一欄,設定登入帳號。
  • 第二欄,伺服器名稱。必須與pptpd-options的name相同;若設為 *,與name不同也無妨。
  • 第三欄,設定登入的密碼。
  • 第四欄,要配給此帳號的IP位址。可指定為pptpd.conf中remoteip範圍內的其中一個IP;若設為 *,則表示由系統隨意配置remoteip範圍中的一個。

完成以上設定並連線後,可能會發生除了可以瀏覽伺服器的資源外,無法透過伺服器連線到其他(包含與伺服器相同網域或區網外)的資源。所以為了讓使用者的封包出去,必須修改/etc/sysctl.conf,找到下面這行取消註釋:
net.ipv4.ip_forward=1 #啟動IPv4封包的轉送
利用以下指令讓新的設定生效:
$ sudo sysctl -p

另外,安裝iptable並且加入規則:
$ sudo apt-get install iptables
$ sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 47 -j ACCEPT
$ sudo iptables -A INPUT -p gre -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth0 -j
 MASQUERADE

$ sudo iptables -A FORWARD -s 192.168.0.0/16 -p tcp -m tcp --tcp-flags
 SYN,RST SYN -j TCPMSS --set-mss 1200


#上述192.168.0.0/16參數視網路環境而定。

為防止iptables的規則在下次重啟時被清除:
$ sudo iptables-save > /etc/iptables-rules
修改/etc/network/interfaces,在eth0的設定最後(在auto eth0前面)面加入:
pre-up iptables-restore < /etc/iptables-rules

--
Ubuntu 9.04
--
參考/相關網址:
1.linux流浪貓 - pptpd iptables配置
2.2008CNL03
3.Jamyy's Weblog: PPTP VPN實作
4.機娘調教日誌 << http404error
5.IT台灣郎: CentOS v5.2安裝PPTP Server
6.花兒開了 - 單網卡 Ubuntu 服務器打造 PPTP Server
Read rest of entry

2009-07-12

php網頁遭到植入eval(base64_decode())的批次清除方式

事情發生在前幾天,偶然的狀況下想去修改一下當初一進實驗室所搞的系統。赫然發現php網頁原始碼最上面多了一行詭異的程式碼,心裡還想是不是自己寫上去的,畢竟自從系統上線後到現在也有半年沒去碰了。直到我修改了第二個php網頁,也看到有相同的程式碼。說實在的,就連在網頁管理上沒有什麼經驗的我,也已經可以確定那個一定是被惡意植入,一定不是我寫的。

Google大神告訴了我那的確是被木馬所植入,於是乎看到base64_decode函式之後,馬上尋找解碼的網站並且將代碼複製進去,結果大致看起來跟moodle教學論壇有關係。馬上聯想到前些時候系上網管告知我們實驗室的moodle系統一直隨意發送認證通知信之類的不正常行為,我想大概跟這個脫離不了關係了。

查了一下網路上能夠的解決方式不外乎就是刪掉那一行並且找出木馬之類的,而之前學長有提到要將我們的Webserver移到Linux系統上,所以那個木馬就不管他了,直接把所有php檔清乾淨就好!:D

開啟空白檔案,輸入以下bash script:

#!/bin/bash

find . -name '*.php*' |
(
while read -r file; do
sed "/eval(base64_decode('LOADS_OF_CHARACTER'));/d" "$file" > "temp" && mv "temp" "$file"
done
)

註:其中LOADS_OF_CHARACTER就是那一長串代碼。


存成 *.sh 檔後,在要清除的php相同目錄下執行即可。

這支bash script的作用其實只是將所有php網頁中有"eval(base64_decode('LOADS_OF_CHARACTER'));"這行移除掉這樣而已,不過還頗方便的:)

--
Ubuntu 9.04
--
參考/相關網址:
 1.Yahoo!ANSWERS - How do I recursively find and remove parts of PHP files?
Read rest of entry

2009-07-11

SSH跳板連線設定

在Linux系統下,有遠端操作的需求時,通常使用的方法就是透過SSH連線(桌面的話大概就是用VNC)。若SSH安裝好後沒有經過特別的設定,基本上只要電腦是暴露在網際網路上,任何人就可以一直try帳號密碼(沒有其他安全措施保護的前提下)。所以如果在網路環境中已經擁有一台有提供安全防護機制以及可供個人登錄SSH服務的主機時,我們就可以藉由這台主機作為跳板進行連線,這樣就可以多了一層保護。

例如說,現在我實驗室的桌機開了SSH連線,再沒有任何的設定時,區網(非私有網域)內外都可以嘗試對我的桌機進行SSH連線。由於系上有提供一台可供每個學生登錄的MailServer,該Server有提供一些安全防護的機制,所以我規劃了以下的連線策略:實驗室內的網段可以直接SSH連線至我的主機,而其他網域的SSH連線必須先經由該MailServer再連線進來。設定方法如下(範例):

設定allow的規則
$ sudo vi /etc/hosts.allow
加入下列幾行:
sshd:140.1xx.xxx.xxx/255.255.255.224  #允許實驗室網段對本機進行sshd程序的連線
sshd:140.1xx.yyy.yyy            #允許MailServer對本機進行sshd程序的連線
vsftpd:ALL                   #允許所有對本機進行vsftpd程序的連線


設定deny的規則
$ sudo vi /etc/hosts.deny
加入下列一行:
ALL:ALL  #除了allow定義之外的所有程序所有連線均禁止。

--
Ubuntu 9.04
--
參考書目/資料來源:
 育嘉大大
Read rest of entry

2009-06-22

用Wine安裝Windows Live Messenger (or MSN)

雖然在Linux上有不少的MSN第三方客戶端(ex:emeseneaMSN、…),但是每一套都不是很完美。像是emesene在操作介面上不管是聯絡人瀏覽介面、對話介面等等都是最接近原本MSN的模式,用起來非常快就可以適應,但是缺點就是它在檔案傳輸的部份實在有問題,往往無法接收或傳送檔案,以及表情圖示的傳輸也不穩定;而aMSN對我來說,介面實在不是很好看,雖然有提供不少預設的細節設定,但是始終無法調配出我所喜愛的介面。不過aMSN在檔案的傳輸上比emesene好很多,傳送接收幾乎沒問題,只是速度似乎有比較慢?!且它好像會造成gcin輸入軟體有時後會不正常的樣子。就是因為都美中不足,所以想在Linux上測試一下裝上windows的MSN會不會表現的比Linux上的第三方客戶端好。

基本上主要是利用參考網址中的第一個完成,過程在網址中已經說明的非常清楚,所以就用中文再筆記一下!

原作者所測試的環境
 1.乾淨的configuration (沒有其他的應用程式或遊戲已經安裝的情況下)
 2.Linux的版本:Ubuntu 8.04
 3.Windows在Wine中的模擬:Windows 2000
 4.Wine版本:1.1.14

利用WineTricks安裝Windows元件
首先,先下載"WineTricks"。執行並且安裝下列Windows redistributables:
corefontsflashgeckogdiplusmsls31msxml3riched20riched30tahoma

找到MSN Source檔
不要用線上的MSN安裝檔(也就是一般我們在MSN.com下載的wlsetup-custom.exe)!至已經有安裝MSN的Windows系統,在下列路徑中Program files/Common Files/WindowsLiveInstaller/MsiSource會有類似這樣檔名的檔案:Install_{508CE775-4BA4-4748-82DF-FE28DA9F03B0}.msi,將它複製到Linux系統上。

安裝MSN
利用以下指令執行:
$ msiexec /i Install_{508CE775-4BA4-4748-82DF-FE28DA9F03B0}.msi

相關設定
安裝完畢後,執行Wine的Configure Wine應用程式增加程式設定(A)…,選擇以下路徑:.wine/drive_c/Program Files/Windows Live/Messenger至"Windows 2000",按OK。

啟動MSN
利用以下指令:
$ wineboot

以上都OK之後,就會看到如同在windows下所使用的MSN了!我是在Ubuntu9.04下測試可以執行。不過MSN的啟動以及操作上都非常的不順暢,會鈍鈍的!不曉得是不是因為畢竟還是模擬的關係?以及中文的編碼似乎也有問題,自己的狀態如果是中文的就會變成亂碼…這部份可能有待研究。因為以上因素,所以最後連檔案傳送也懶得測試了…囧。

--
Ubuntu 9.04
--
參考/相關網址:
 1.MSN Messenger 2008 and 2009 on Linux with Wine
 2.Ubuntu正體中文站 - wine自動安裝函式庫的好工具 -- winetricks
Read rest of entry

2009-04-29

解決Flash裡中文顯示亂碼的問題

通常Ubuntu一灌好,如過沒做修正,像是在firefox中看yahoo首頁的flash廣告或是youtube影片的某些標題中文字會變成一個個的格子或問號,這時候按照以下步驟修正一下就可以了!

開啟終端機並輸入以下指令:
$ sudo gedit /etc/fonts/conf.avail/49-sansserif.conf
將最後一段的 sans-serifsans-serif 改成自己要的字體名稱或是將中間的橫線拿掉(變成 sans serif )即可。

--
Ubuntu 9.04
--
參考/相關網址:
 1.鳥毅的Blog: Ubuntu上flash中文亂碼解決法
Read rest of entry

解決Compiz特效開啟造成Java程式或applet無法顯示

最近為了開啟學長在規劃分散式防火牆C/S架構時所畫的連線流程圖,所以去接觸了Visual Paradigm for UML這個鬼東西。在安裝完畢後,要去開啟它的時候原本一開始要選擇workspace的對話盒整個變成白色一塊,無法進行任何操作。後來上網查了一下才發現,原來是視窗特效所造成Java程式或applet在顯示上有問題,每次要使用時都要先關閉特效頗為麻煩,所以見興大大告訴了我用以下的方法就可以解決了!:D

開啟終端機並輸入以下指令:
$ sudo gedit ~/.profile
在最下面加入這一行:
export AWT_TOOLKIT="MToolkit"

做完以上步驟儲存離開就可以囉!

註:JRE/JDK 1.6.1(update1)應該已經修正這個問題。

--
Ubuntu 9.04
--
參考書目/資料來源:
 見興大大
Read rest of entry
 

My Favorite Stuff

Akon - We Don't Care
(Official Music Video)

Official AKON Website
About AKON(from Wiki)

My Links

Blogger
Others

Blog Statistics