VPN

来源:互联网 发布:星际争霸2精彩知乎 编辑:程序博客网 时间:2024/04/26 13:36
作者:yuehuiw

小弟是个新手,水平比较低,第一次发文章,有不妥之处请各位多多指教!此文基本上是我个人的原创,同时也参考了很多相关的文章,在此对那些作者表示感谢!

本文是根据我公司的实际应用情况写的,但是稍加修改即可应用到很多地方,系统运行的两个月来,证明还是安全可靠稳定的,呵...


我公司在北京,但是主要设备都在南京电信的一个主要IDC里,那边有我们的两个PIX525UR(做了故障切换),上面做了严格的访问控制,因此,为了方便公司里的移动,出差及在家的员工办公,才有了做VPN系统的想法.好使具有相应权限的使用者从个人PC通过支持MPPE128的加密隧道连接至公司的VPN Server,再通过VPN Server将数据转发到南京IDC的我公司应用网络,其间的连接也是基于IPSEC的安全VPN隧道.由此可以保证我公司的所有应用需求的安全性和便捷性.

1.硬件资源:服务器一台
PIX 525UR防火墙一台
2.软件资源:Mandrake 9.2
kernelmod
pptpd
Super-freeswan
iptables
公网ip地址

注:我在测试了几种LINUX(包括Redhat,SuSE,Mandrake,Astaro)后,感觉Mandrake是最简单,最稳妥的平台.


下面就是安装过程:
1.操作系统安装:
安装过程无特殊要求,在选择安装组件的时候除开发工具外其它一概不选,主要是出于安全性考虑.


2.安装kernelmod:
tar zxvf kernelmod-0.7.1.tar.gz
cd /kernelmod
./ kernelmod.sh



3.安装pptpd:
①升级ppp
rpm –Uvh ppp-2.4.2-0.1b3.i386.rpm
②安装pptpd
rpm –ivh pptpd-1.1.4-1b4.fr.i386.rpm

4.安装Super-freeswan:
rpm –ivh super-freeswan-1.99.8-8.2.100mdk.i586.rpm

5.升级iptables
rpm –Uvh iptables-1.2.8-12.i386.rpm

呵...至此,全部的安装过程就完成了,简单吧,
注:以上软件都可以在rpmfind.net找到!


下面是最主要的配置过程:

1.操作系统的配置:
①升级openssh
②关闭不需要的服务(sendmail isdn …)
③编辑/etc/sysctl.conf
net.ipv4.ip_forward = 0=>1
net.ipv4.conf.default.rp_filter = 1=>0

2.Pix配置文件(VPN部分):
access-list inside_outbound_nat0_acl permit ip "南京IP段" 255.255.255.0 "公司VPN用户的IP段" 255.255.255.0
access-list outside_cryptomap_20 permit ip "南京IP段" 255.255.255.0 "公司VPN用户的IP段" 255.255.255.0
nat (inside) 0 access-list inside_outbound_nat0_acl
sysopt connection permit-ipsec
crypto ipsec transform-set ESP-3DES-MD5 esp-3des esp-md5-hmac
crypto map outside_map 20 ipsec-isakmp
crypto map outside_map 20 match address outside_cryptomap_20
crypto map outside_map 20 set peer "VPN服务器的IP"
crypto map outside_map 20 set transform-set ESP-3DES-MD5
crypto map outside_map interface outside
isakmp enable outside
isakmp key "密码" address "VPN服务器的IP" netmask 255.255.255.255 no-xauth no-config-mode
isakmp identity address
isakmp policy 20 authentication pre-share
isakmp policy 20 encryption 3des
isakmp policy 20 hash md5
isakmp policy 20 group 2
isakmp policy 20 lifetime 28800



3.PPtP配置
①/etc/pptpd.conf
speed 115200
option /etc/ppp/options
localip "公司VPN用户的网关(例如10.0.1.1)"
remoteip "公司VPN用户的IP段(例如10.0.1.200-250)"

②/etc/ppp/chap-secrets
“用户名” "VPN服务器的IP" “密码” 10.0.1.20X (200<X<250)

③/etc/ppp/options
lock
name "VPN服务器的IP"
mtu 1490
mru 1490
proxyarp
auth
-chap
-mschap
+mschap-v2
require-mppe
ipcp-accept-local
ipcp-accept-remote
lcp-echo-failure 3
lcp-echo-interval 5
ms-dns X.X.X.X
deflate 0



4.Super-freeswan配置
①/etc/freeswan/ipsec.conf

# basic configuration
config setup
# THIS SETTING MUST BE CORRECT or almost nothing will work;
# %defaultroute is okay for most simple cases.
interfaces="ipsec0=eth0"
# Debug-logging controls: "none" for (almost) none, "all" for lots.
klipsdebug=none
plutodebug=none
# Use auto= parameters in conn descriptions to control startup actions.
plutoload=%search
plutostart=%search
# Close down old connection when new one using same ID shows up.
uniqueids=yes
nat_traversal=yes

# defaults for subsequent connection descriptions
# (these defaults will soon go away)
conn %default
keyingtries=0
disablearrivalcheck=no
authby=rsasig
#leftrsasigkey=%dnsondemand
#rightrsasigkey=%dnsondemand

conn pix
left="VPN服务器的IP"
leftnexthop="VPN服务器的网关"
leftsubnet="公司VPN用户的IP段(例如10.0.1.0/32)"
right="南京PIX525UR的IP"
rightnexthop=%direct
rightsubnet="南京IP段"
authby=secret
pfs=no
auto=start

②/etc/freeswan/ipsec.secrets
"VPN服务器的IP" "南京PIX525UR的IP": PSK "密码"

5.iptables配置(样本),用以限制公司VPN用户的访问权限:
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.201/32 -d "南京IP段" -j MASQUERADE

service iptables save

注:1.添加用户名及修改密码 /etc/ppp/chap-secrets
2.用户权限设定 编辑修改iptables规则
3. 如果公司路由器上有access-list,则添加
permit 47 any host 219.238.213.244
4. 校验IPsec服务是否启动成功
ipsec verify


三种VPN解决方案的优点
摘要
根据VPN的服务类型,可以将VPN分为Access VPN、Intranet VPN和Extranet VPN三类。(2004-09-05 23:08:28)

By lanf, 出处:http://tech.ccidnet.com/pub/article/c1084_a150950_p1.html

作者:Adai At 赛迪网-中国计算机用户
根据VPN的服务类型,可以将VPN分为Access VPN、Intranet VPN和Extranet VPN三类。 

Access VPN
◎ 减少用于相关的调制解调器和终端服务设备的资金及费用,简化企业网络结构;
◎ 实现本地拨号接入VPN的功能来取代长途接入或800电话接入,减少企业在长话费上的支出;
◎ 简便地对加入网络的新用户进行控制和调动,提高了网络的扩展能力;
◎ 远端验证拨入用户服务,企业可以自主的控制认证信息;
◎ 节省了企业在自主维护拨号接入方面的人员和设备的投入。

  Intranet VPN
◎ 减少企业租用运营商WAN带宽的费用;
◎ 能使用灵活的拓扑结构,包括全网状连接;
◎ 可以减小网络业务提供的周期;
◎ 通过设备供应商WAN的连接冗余,提高网络的可用性。

  Extranet VPN
◎ 能容易地对外部网进行部署和管理;
◎ 外部网的连接可以使用与部署内部网和远端访问VPN相同的架构和协议进行部署。


利用openvpn+linux快速建立企业VPN
摘要
利用openvpn+linux快速建立企业VPN按照配置过程(2004-08-17 09:08:01)

By lanf, 出处:http://www.linuxbyte.net/view.php?skin=art&ID=3636

作者:yanyp

利用openvpn+linux快速建立企业VPN
openvpn介绍http://openvpn.sourceforge.net/ ,不多说了.
openvpn可工作于两种模式:
一种是IP遂道路由模式,主要应用于点对点
一种是基于以太网的遂道桥模式, 应用于点对多点,有多个分支机构
本文介绍的配置实例是第一种
拓扑图:
局域网1: OFFICE主机装redhat9.0 两块网卡
eth1接公网 61.131.58.x ,
eth0接 内网192.168.1.56
vpn 10.1.0.1
A主机 192.168.1.222
局域网2:
HOME主机装redhat9.0两块网卡
eth0 接公网 218.85.158.244
eth1 接内网 192.168.0.235
vpn 10.1.0.2
B主机 192.168.0.45

环境:redhat9.0+lzo+openssl+openvpn
openssl用来进行加密,lzo用来进行数据压缩
下载地址 http://prdownloads.sourceforge.net/openvpn/openvpn-2.0_beta7.tar.gz
http://www.oberhumer.com/opensource/lzo/download/lzo-1.08.tar.gz

先检查openssl是否已安装
rpm –qa | grep openssl
没有请先装openssl, openssl如何安装就不介绍了
我将openvpn-2.0.beta7.tar.gz和lzo-1.08.tar.gz下载到/home
#cd /home
#tar zxvf lzo-1.08.tar.gz
#cd lzo-1.08.
#./comfigure
#make
#make install
#tar zxvf openvpn-2.0_beta7.tar.gz
#cd openvpn-2.0_beta7
#./configure --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib
#make
#make install
#mkdir /etc/openvpn
#cd /etc/openvpn
#openvpn --genkey --secret static.key
将static.key从office主机复制到home主机的/etc/openvpn目录中
office#scp static.key root@218.85.158.244:/etc/openvpn
office#cd /home/openvpn-2.0_beta7/sample-config-files
office#cp static-office.conf /etc/openvpn
office#cp firewall.sh /etc/openvpn
office#cp openvpn-startup.sh /etc/openvpn
office#cp office.up /etc/openvpn
修改static-office.conf ,firewall.sh ,openvpn-startup.sh,office.up
我们先来看office主机的这几个配置文件
static-office.conf配置如下:
dev tun0
remote 218.85.158.244 #为对端的公网ip
ifconfig 10.1.0.1 10.1.0.2 #为本端和对端的vpn ip地址
secret /etc/openvpn/static.key #密钥
port 5000
comp-lzo
ping 15
ping 15
ping-restart 45
ping-timer-rem
persist-tun
persist-key
verb 3

office主机的firewall.sh脚本如下:
#!/bin/bash
PRIVATE=192.168.1.0/24
LOOP=127.0.0.1

iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -F

iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i eth1 -s $LOOP -j DROP
iptables -A FORWARD -i eth1 -s $LOOP -j DROP
iptables -A INPUT -i eth1 -d $LOOP -j DROP
iptables -A FORWARD -i eth1 -d $LOOP -j DROP

iptables -A FORWARD -p tcp --sport 137:139 -o eth1 -j DROP
iptables -A FORWARD -p udp --sport 137:139 -o eth1 -j DROP
iptables -A OUTPUT -p tcp --sport 137:139 -o eth1 -j DROP
iptables -A OUTPUT -p udp --sport 137:139 -o eth1 -j DROP

iptables -A FORWARD -s ! $PRIVATE -i eth0 -j DROP


iptables -A INPUT -s $LOOP -j ACCEPT
iptables -A INPUT -d $LOOP -j ACCEPT

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

iptables -A INPUT -p tcp --dport http -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT

iptables -A INPUT -p udp --dport 5000 -j ACCEPT #openvpn默认使用udp 5000端口

iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT #这两句很重要
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT

iptables -A INPUT -i eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT

iptables -A OUTPUT -m state --state NEW -o eth1 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state NEW -o eth1 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -s $PRIVATE -o eth1 -j MASQUERADE

office.up脚本配置如下:
#!/bin/bash
route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.1.0.2 #此处是对端的vpn ip地址
openvpn-startup.sh脚本配置如下:
#!/bin/bash
dir=/etc/openvpn
$dir/firewall.sh
modprobe tun
echo 1 > /proc/sys/net/ipv4/ip_forward
openvpn --config /etc/openvpn/static-office.conf


home主机的4个配置文件
static-home.conf如下
dev tun0
remote 61.131.58.194
ifconfig 10.1.0.2 10.1.0.1
secret /etc/openvpn/static.key
port 5000
comp-lzo
ping 15
ping 15
ping-restart 45
ping-timer-rem
persist-tun
persist-key
verb 3

firewall.sh如下
#!/bin/bash
PRIVATE=192.168.0.0/24
LOOP=127.0.0.1
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -F

iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i eth0 -s $LOOP -j DROP
iptables -A FORWARD -i eth0 -s $LOOP -j DROP
iptables -A INPUT -i eth0 -d $LOOP -j DROP
iptables -A FORWARD -i eth0 -d $LOOP -j DROP

iptables -A FORWARD -p tcp --sport 137:139 -o eth0 -j DROP
iptables -A FORWARD -p udp --sport 137:139 -o eth0 -j DROP
iptables -A OUTPUT -p tcp --sport 137:139 -o eth0 -j DROP
iptables -A OUTPUT -p udp --sport 137:139 -o eth0 -j DROP

iptables -A FORWARD -s ! $PRIVATE -i eth1 -j DROP

iptables -A INPUT -s $LOOP -j ACCEPT
iptables -A INPUT -d $LOOP -j ACCEPT

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

iptables -A INPUT -p tcp --dport http -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT

iptables -A INPUT -p udp --dport 5000 -j ACCEPT

iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT

iptables -A INPUT -i eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT

iptables -A OUTPUT -m state --state NEW -o eth0 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state NEW -o eth0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -s $PRIVATE -o eth0 -j MASQUERADE

home.up脚本如下:
#!/bin/bash
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.1.0.1
openvpn-startup.sh脚本如下:
#!/bin/bash
dir=/etc/openvpn
$dir/firewall.sh
modprobe tun
echo 1 > /proc/sys/net/ipv4/ip_forward
openvpn --config /etc/openvpn/static-home.conf
最后需要注意的是在office和home主机的/etc/modules.conf都要加上一行:
alias char-major-10-200 tun
在office主机上
office#cd /etc/openvpn
office#./openvpn-startup.sh
office#./office.up
在home主机上
home#cd /etc/openvpn
home#./openvpn-startup.sh
home#./home.up
A主机的default gateway设为192.168.1.56
B主机的default gateway设为192.168.0.235
在A主机上ping 192.168.0.45
在home主机上用tcpdump监听
home#tcpdump -i tun0
应该有echo request和echo reply
不行的话,在home#ping 10.1.0.1看两个vpn网关是否通
http://openvpn.sourceforge.net 上还有howto,faq,examples可参考
欢迎与我交流,
QQ:35907960
Mail:yanypunix@yahoo.com.cn

原创粉丝点击