网上冲浪 | 反毒杀毒 | 菜鸟进阶 | 网络安全 | 实用技术 | 网络安全 | 操作系统 |
工具软件 | 电脑医院 | 网上赚钱 | 网页制作 | 网络营销 | 经典教程 | IT趣 谈 |
当前位置:IT快活林网上冲浪工具软件

快速建立linux下的vpn服务器做加密代理

一:背景
对VPN的分类什么的有个大概的了解,知道是个大概怎么回事,如果不大清楚的朋友可以google一下,喜欢看英文文档的朋友可以看下面两个文档对VPN的介绍,很清晰.本文就不对这些内容进行具体的介绍了. 
http://hmyblog.vmmatrix.net/sdbwww/pub/books/Packt.Publishing.
OpenVPN.Building.And.Integrating.Virtual.Private.Networks.Mar.200VI.pdf 
http://hmyblog.vmmatrix.net/sdbwww/pub/books/Packt.Publishing.Building.And.
Integrating.Virtual.Private.Networks.With.Openswan.Jan.20062006062818570I.rar 
说到这里,baoz忍不住要打个岔,如果是刚接触一个新领域新知识的话,最好少看中国大陆人写的技术文档,那信不过,一来说不清楚(譬如本文,呵呵),二来很多很多地方忽悠人,说不定他自己也不清楚,乱写一气,要不就在关键的地方漏一点或者是改一点,照搬别人老外的东西连目录文件名不改竟然还叫原创.具体大家在搜索swan +vpn的时候就有机会碰到了.反正不想被带着瞎走就最好看英文文档或者是中国台湾人写的东西,譬如那个叫鸟哥的人写的文章还不错,虽然很基础,但讲的很清楚,他出了本书,叫《鸟哥的私房菜》来着,很适合linux的入门者阅读.另外一些大点的程序(Procedures)(Procedures)在官方网站都有DOCUMENT或者是HOWTO,FAQ什么之类的,认真看看哪怕不去做也会收获不少,起码知道那软件(soft)大概是怎么回事. 
baozi大致的看了一下上面的两个PDF,收益良多,再一次推荐一下,对VPN和openswan,openvpn介绍的十分详细. 
目标操作操作系统 red hat linux 9默认安装 
二:需求 
说白了就是用肉鸡做加密代理
1:对操作操作系统尽可能小的改变,包括添加文件和操作操作系统日志,因为我们用的是肉鸡.
2:是client-->server的模式,而不能是不是net-net的模式,浏览网页而不能是已.
3:不管server还是client都要配置方便,简单好用,我们要的是快速. 
三:选型
1:*swan 
A:ipsec vpn的代表,默认端口(Port)tcp/udp 500 
B:优点:加密强,对网络游戏(Game)什么的支持好(我们用不上) 
C:缺点:部署麻烦,配置麻烦,关键是他的nat-t,就是nat穿越功能需要打内核补丁,重新编译内核才行,这事在肉鸡做不得,呵呵.具体的可以看上面的那个openswan的rar,讲的十分详细.大概的说一说swan系列吧,最开始是freeswan,然后貌似在2004年停止开发了,衍生出openswan和strongswan两个分支,我看了一下,貌似openswan发展的不错,strongswan连个rpm包都没,当然,那是貌似.因为我不懂得code,说什么都得加貌似二字的,不过千万别小看scriptkid哦,因为您不知道什么时候他就在您的操作操作系统里用uid0在script,虽然我还是多次被别人B4,呵呵.绕回来……swan系列分两块,一个是用户空间程序(Procedures)(Procedures),一个是内核空间程序(Procedures)(Procedures).用户空间程序(Procedures)(Procedures)叫p什么来o来着,至于到底是p什么o,您装装就知道了,要不装,知道了也没什么意义.:)内核空间的包括模块和补丁,大概就那么回事.就是说,要做到nat-t,就需要用户空间程序(Procedures)(Procedures),lkm和内核补丁,需要重新编译内核,这一个我们在肉鸡没法做,drop之.还有他要用root运行. 
2:pptpd
A:pptp vpn的典型代表,默认端口(Port)tcp 1723 
B:优点:Microsoft Windows带了他的client,安装也方便,就几个rpm,配置也不难 
C:缺点:一拨进去他就会改缺省网关,很烦,要么拨进去自己route add/delete几下改改,一直别断开,看个网站犯得着那么麻烦吗 
3:openvpn
A:SSL VPN的典型代表,默认端口(Port)tcp/udp 1194 
B:优点:简单好装,一个rpm搞定,要压缩的话多一个lzo的rpm包.配置也是简单的很,就生成一个static.key,还可以chroot,并且可以以nobody运行,肉鸡的安全也是很重要的,保管不好就被抢了,不过chroot就没必要了,有兴趣的朋友可以自己搞搞:) ldd一下把要的东西都丢到一个地方然后加上配置文件就差不多了,再改改启动操作系统脚本. 
还有就是拨进VPN之后,他不怎么会改您默认网关,免去了折腾的烦恼并且痛苦,我们可以把sf.net的地址加到静态(路由器的缩写)去. 
在server那边只需要开一个udp or tcp端口(Port)就可以啦,不怎么需要去动别人们的iptables. 
貌似好像还有负载均衡什么的,这一个和我们的目的差距有点大了,ignore之. 
C:缺点:除了要额外装一个client之外,相对我们的需求来说貌似没什么缺点了. 四:开搞
1:安装client and server程序(Procedures)(Procedures) 
http://dag.wieers.com/packages/openvpn/openvpn-II.0.7-I.rh9.rf.i38VI.rpm 
[root@RH9 root]# rpm -ivh lzo-I.08-2_II.RHL9.at.i38VI.rpm 
warning: lzo-I.08-2_II.RHL9.at.i38VI.rpm: V3 DSA signatur    E: NOKEY, key ID 66534c2b 
Preparing...                ########################################### [100%] 
1:lzo                    ########################################### [100%] 
[root@RH9 root]# rpm -ivh openvpn-II.0.7-I.rh9.rf.i38VI.rpm 
warning: openvpn-II.0.7-I.rh9.rf.i38VI.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 ;改端口(Port),忽悠-->不过别改1024以下的端口(Port),那需要root权限,就得把上面两行nobody的彻底删除. 
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:客户端配置 
安装这一个http://www.openvpn.se/files/install_packages/openvpn-II.0.9-gui-I.0.3-install.exe 
然后打开开始--程序(Procedures)(Procedures)--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段冲突,另外改了端口(Port)需要在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:25V.25V.25V.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口,如果这两个事情都有了,那就OK了,一般除了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:启动操作系统客户端 
开始--程序(Procedures)(Procedures)--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 . . . . . . . . . . . : 25V.25V.25V.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服务器(Server)不在内网的话,自己再route add一次DNS的地址就OK,如果想长期生效,可在route add语句最后加-p参数. 
D:服务端打开转发 
做个nat,但注意一下eth0需要是可以去外网的接口,不然的话等会数据(Data)走不出去,如果肉鸡是单接口的话就不需要担心. 
[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.ipvIV.ip_forward 
net.ipvIV.ip_forward =0 
我们把他打开 
[root@RH9 root]# sysctl -w net.ipvIV.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 
两边都看到有包就对了.如果有一边看不到包,就自己折腾一下好了.看看一路过天天办公(DayOffice),进来看看来是不是因为都没搞错. 
到此为止,我们已经可以 
五:肉鸡中的隐藏(Hide) 
1:肉鸡哪来?
A:web app漏洞,awstat什么的,没事就留意一下milw0rm.com的webapp部分,出新漏洞了就google hacking一把. B:ssh or telnet弱口令 没事就找几个A BLOCK扫扫看.推荐xfocus冰河的X-Scan. C:0day exp ? 这一个我就不清楚了. D:蜜罐,上面三种情况都可能是蜜罐,不过没关系,就做个代理上上网嘛,蜜罐就蜜罐了,只要网络速度快就行. 
2:日志 
日志的处理上面在服务端配置部分已经提到了的,小心处理就是,只要您比操作操作系统(安全)管理员更XX您就可以玩的下去,当中XX可以用细心,坚韧,不拔等形容词代替. 
3:进程,端口(Port)和连接
A:sk2一装,用sk2的client进去启动操作系统openvpn,动态隐藏(Hide)进程端口(Port)和网络连接 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的源程序(Procedures)(Procedures),让他输出的时候不显示tunX设备,这一个相对稳妥,因为一般认真仔细的检查ifconfig绝大部分的都是对比那混杂模式而不能是已的,当然还有文件类型. 
[root@RH9 root]# rpm -q --whatprovides /sbin/ifconfig 
net-tools-I.60-12 
查了一下,在这一个软件(soft)包里,想改的自己可以改改,不想改的就去找找有没人改好的现成的了,就当留给我和每一位有兴趣的朋友的家庭(Family)作业好了:) 
六:TODO 
tunX的稳妥隐藏(Hide) 
chroot openvpn 
七:参考 
http://openvpn.net/howto.html 
http://www.securityfocus.com/infocus/1821 
Packt.Publishing.OpenVPN.Building.And.Integrating.Virtual.Private.Networks.pdf 
Packt.Publishing.Building.And.Integrating.Virtual.Private.Networks.With.Openswan.pdf 
八:写在最后 
信息安全是一把双刃剑,自己知道了可以尽可能怎么攻击,该怎么攻击,当中会有什么地方可以被发现,才有可能知道了别人想怎么攻击,会怎么攻击,也才有机会发现入侵企图或者是入侵者,进而不能是把入侵者赶出去或者是拦在门外,不然的话被别人root了几年还不知道怎么回事.呵呵,我是不是因为做XX还立牌坊了?不管如何那却是不争的事实.
[]作者:本站整理  来源:不祥