歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

用Linux建立肉雞來做加密代理!

一、背景

對VPN的分類什麼的有個大概的了解,知道是個大概怎麼回事,如果不大清楚的朋友可以Google一下。本文就不對這些內容進行具體的介紹了。

目標系統:Red Hat Linux 9默認安裝。

二、需求

說白了就是用肉雞做加密代理。

1:對系統盡可能小的改變,包括添加文件和系統日志,因為我們用的是肉雞。

2:是client-->server的模式,而不是net-net的模式,浏覽網頁而已。

3:無論server還是client都要配置方便,簡單好用,我們要的是快速。

三、選型

1:*swan

A:ipsec vpn的代表,默認端口tcp/udp 500。

B:優點:加密強,對網絡游戲什麼的支持好(我們用不上)。

C:缺點:部署麻煩,配置麻煩,關鍵是他的nat-t,就是nat穿越功能需要打內核補丁,重新編譯內核才行,這事在肉雞做不得。大概的說說swan系列吧,最開始是freeswan,然後大概在2004年停止開發,衍生出openswan和strongswan兩個分支,openswan發展的不錯,strongswan連個rpm包都沒。swan系列分兩塊,一個是用戶空間程序,一個是內核空間程序。內核空間的包括模塊和補丁,大概就那麼回事。就是說,要做到nat-t,就需要用戶空間程序,lkm和內核補丁,需要重新編譯內核,這個我們在肉雞沒法做。還有他要用root運行。

2:pptpd

A:pptp vpn的典型代表,默認端口tcp 1723。

B:優點:Windows帶了他的client,安裝也方便,就幾個rpm,配置也不難。

C:缺點:一撥進去他就會改缺省網關,很煩,要麼撥進去自己route add/delete幾下改改,一直別斷開,看個網站犯得著那麼麻煩嗎。

3:openvpn

A:SSL VPN的典型代表,默認端口tcp/udp 1194。

B:優點:簡單好裝,一個rpm搞定,要壓縮的話多一個lzo的rpm包。配置也是簡單的很,就生成一個static.key,還可以chroot,並且可以以nobody運行,肉雞的安全也是很重要的,保管不好就被搶了,不過chroot就沒必要了,有興趣的朋友可以自己搞搞。一下把要的東西都丟到一個地方然後加上配置文件就差不多了,再改改啟動腳本。

還有就是撥進VPN之後,他不會改你默認網關,免去了折騰的煩惱,我們可以把sf.net的地址加到靜態路由去。

在server那邊只需要開一個udp or tcp端口就可以了,不怎麼需要去動別人的iptables。

C:缺點:除了要額外裝一個client之外,相對我們的需求來說基本沒什麼缺點了。

四、開始

1:安裝client and server程序

[root@RH9 root]# rpm -ivh lzo-1.08-2_2.RHL9.at.i386.rpm warning: lzo-1.08-2_2.RHL9.at.i386.rpm: V3 DSA signatur E: NOKEY, key ID 66534c2b Preparing... ########################################### [100%] 1:lzo ########################################### [100%] [root@RH9 root]# rpm -ivh openvpn-2.0.7-1.rh9.rf.i386.rpm warning: openvpn-2.0.7-1.rh9.rf.i386.rpm: V3 DSA signatur E: NOKEY, key ID 6b8d79e6 Preparing... ########################################### [100%] 1:openvpn ########################################### [100%]

2:服務端配置

[root@RH9 root]# cat > /etc/openvpn/server.conf dev tun ifconfig 10.8.0.1 10.8.0.2 secret static.key ; user nobody ; group nobody port 3389 ; comp-lzo ; ;keep alive keepalive 10 60 ; ping-timer-rem persist-tun persist-key ;no-log ; verb 0 status /dev/null log /dev/null log-append /dev/null



server配置完畢。

3:客戶端配置

安裝openvpn-2.0.9-gui-1.0.3-install.exe,然後打開“開始”--“程序”--“openvpn”--“Generate a static OpenVPN key”,這會在C:\Program Files\OpenVPN\config下生成一個叫key.txt的文件,把他重命名為static.key。

然後把這個文件復制到linux肉雞的/etc/openvpn/static.key去,最後在C:\Program Files\OpenVPN\config目錄下創建一個叫client.ovpn的文件,內容如下

remote 肉雞的IP dev tun ifconfig 10.8.0.2 10.8.0.1 secret static.key port 3389 verb 3 comp-lzo keepalive 10 60 ping-timer-rem persist-tun persist-key
client配置完畢。

注意,無論是服務端還是客戶端的IP,都不要和系統有的IP段沖突,另外改了端口需要在client and server都改一致。

4:啟動並連接

A:啟動服務端

[root@RH9 root]# /etc/init.d/openvpn start Starting openvpn: [ OK ]
這個時候理論上會發現多了一個接口,等會我們要收拾這個口子。

[root@RH9 root]# ifconfig tun0 tun0 Link encap:Point-to-Point Protocol inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) [root@RH9 root]# netstat -an   grep 3389 udp 0 0 0.0.0.0:3389 0.0.0.0:*
這個時候理論上會起了一個3389的udp口,如果這兩個事情都有了,那就好了,一般除了RP有WT之外,這裡基本都不怎麼可能出現錯誤。

如果有錯誤的話,就把上面的

verb 0 status /dev/null log /dev/null log-append /dev/null
改成

verb 9 status /usr/lib/0 log /usr/lib/1 log-append /usr/lib/1

然後重新啟動openvpn服務並查看日志,注意,這個時候messages會有日志,調試完畢記得刪除/usr/lib/0 /usr/lib/1。

B:啟動客戶端

“開始”--“程序”--“openvpn”--“OpenVPN GUI”,連接服務端,點右下角紅色的圖標--connect。圖標變綠,就是成功連接並分配到地址了,注意讓你的防火牆通過。如果沒變綠色,從那個圖標那view log,如果發現不到問題,就把client的配置文件的verb設置為9,重新連接,再看日志,再google。

C:檢查連接:

在client裡看到有這麼個信息

Ethernet adapter 本地連接 4: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 10.8.0.2 Subnet Mask . . . . . . . . . . . : 255.255.255.252 Default Gateway . . . . . . . . . : C:\>ping 10.8.0.1 Pinging 10.8.0.1 with 32 bytes of data: Reply from 10.8.0.1: bytes=32 time=7ms TTL=64

連接沒有問題,這個時候就根據個人的喜好,是改默認網關還是只根據目的地址route add一下了,如果肉雞速度快的話改默認網關吧。

C:\>route delete 0.0.0.0 C:\>route add 0.0.0.0 mask 0.0.0.0 10.8.0.1 -->注意,是vpn server的tun0的地址。
如果DNS服務器不在內網的話,自己再route add一次DNS的地址就OK,如果想長期生效,可在route add語句最後加-p參數。

D:服務端打開轉發

做個nat,但注意一下eth0需要是可以去外網的接口,否則等會數據走不出去,如果肉雞是單接口的話就不需要擔心。

[root@RH9 root]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE


再看看轉發開了沒

[root@RH9 root]# sysctl -a   grep net.ipv4.ip_forward net.ipv4.ip_forward = 0
我們把他打開

[root@RH9 root]# sysctl -w net.ipv4.ip_forward=1

5:找錯

VPN一般出問題就只有三個地方,client的防火牆,server的防火牆,和轉發開關是否打開,所以我們在服務端抓抓包就完全可以找到出問題的地方。ipsec pptp都可以這麼找錯。

A:在server的tun0口抓一切包,以檢測client-->server是否連通,當然,一定是連通的,否則那圖標就不會是綠色了。

[root@RH9 root]# tcpdump -n -i tun0 tcpdump: listening on tun0

B:在server的eth0口抓目標地址包,以檢測轉發是否有問題。

[root@RH9 root]# tcpdump -n -i eth0 dst host baoz.net tcpdump: listening on eth0

C:

這個時候我們telnet一下baoz.net看看

C:\>telnet baoz.net
兩邊都看到有包就對了。如果有一邊看不到包,就自己折騰一下好了。看看一路過來是不是都沒搞錯。

五、肉雞中的隱藏

1:肉雞哪來?

A:web app漏洞,awstat什麼的,沒事就留意一下milw0rm.com的webapp部分,出新漏洞了就google hacking一把。

B:ssh or telnet弱口令,沒事就找幾個A BLOCK掃掃看。推薦xfocus冰河的X-Scan。

C:0day eXP ? 這個我就不清楚了。

D:蜜罐,上面三種情況都可能是蜜罐,不過沒關系,就做個代理上上網嘛,蜜罐就蜜罐了,只要網速快就行。

2:日志

日志的處理上面在服務端配置部分已經提到了的,小心處理就是。

3:進程、端口和連接

A:sk2一裝,用sk2的client進去啟動openvpn,動態隱藏進程端口和網絡連接。

B:adore,大概要改改才行,不過我暫時沒這個需求,sk2已經很不錯了。

C:shv5,最近抓到的一個rootkit,替換ELF文件的,很容易被查出來,沒啥意思,他的特征是默認有個/usr/lib/libsh目錄。

4:ifconfig

這個是最關鍵的也是最麻煩的,因為一般的人都會ifconfig敲著玩玩的,一不小心就會被發現多了個tun0。呵呵,我想了想辦法有兩:

A:使用awk or sed腳本替換/sbin/ifconfig,過濾掉tun0相關的輸出,但這個比較容易被chkrootkit這樣的東西發現,不過即使被人家用chkrootkit發現了也挺光榮的,至少用chkrootkit的人還稍微比較專業點,總比被人家ifconfig發現了好。

B:修改ifconfig的源程序,讓他輸出的時候不顯示tunX設備,這個相對穩妥,因為一般檢查ifconfig都是對比那混雜模式而已的,當然還有文件類型。

[root@RH9 root]# rpm -q --whatprovides /sbin/ifconfig net-tools-1.60-12
查了一下,在這個軟件包裡,想改的自己可以改改,不想改的就去找找有沒人改好的現成的了,就當留給我和各位有興趣的朋友的家庭作業好了。

六、寫在最後

信息安全是一把雙刃劍,自己知道了可以盡可能怎麼攻擊,該怎麼攻擊,其中會有什麼地方可以被發現,才有可能知道了人家想怎麼攻擊,會怎麼攻擊,也才有機會發現入侵企圖或入侵者,進而把入侵者趕出去或攔在門外,否則被人家root了幾年還不知道怎麼回事。



Copyright © Linux教程網 All Rights Reserved