| 关键词: 肉鸡 root openvpn client 一个 server 配置 ifconfig 如果 端口 |
一、背景 对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了几年还不知道怎么回事。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|