|
 
|
1#
发表于 2009-9-4 00:06
| 只看该作者
[其它] openvpn 的配置(包括用mysql认证)
一、是建立 PKI (public key infrastructure). 切換到 /usr/share/doc/openvpn/examples/easy-rsa 目錄,執行:執行:設定環境變數
root@debian:~# . ./vars
以下東西產生出來會放到 ./keys/ 目錄下,可修改 vars 來改變位置
二、
root@debian:~# ./clean-all
root@debian:~# ./build-ca
會產生
ca.crt
ca.key
三、建立給 server 用的 certificate & key
root@debian:~# ./build-key-server server
當中問到 “Common Name” 設成 “server” 會產生
01.pem
server.crt
server.csr
server.key
四、產生給多個 client 用的 certificates & keys
當中問到 “Common Name” 設成 “client1″,以此類推
root@debian:~# ./build-key client1
產生
client1.crt
client1.csr
client1.key
root@debian:~# ./build-key client2
root@debian:~# ./build-key client3
(可只产生一个clinet)
root@debian:~# ./build-dh
root@debian:~# openvpn –genkey –secret ta.key
五、接著將 key 利用加密通道拷貝到 server 及 client 機器上(和配置文件放在同一个目录里)
两端都需要ca.crt 客户端需要 client.crt client.csr clinet.key ca.crt ta.key 其他的server端都要用
六、server端修改/etc/openvpn/server.conf 可從 /usr/share/doc/openvpn/examples/sample-config-files/ 拿来当范本
local 192.168.1.*#(服务端IP)
port 1194 #(端口)
proto tcp #(协议)
dev tun#(设备 应该是一个网卡)
tls-server
ca ca.crt
cert server.crt
key server.key
tls-auth ta.key 0
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
上面几个文件要写清全路径
push “redirect-gateway” # 自動將 client 的 default gateway 設成經由 VPN server 出去
keepalive 10 120 # 保持連線,每 10 秒 ping 一次,若是 120 秒未收到封包,即認定 client 斷線
comp-lzo
max-clients 10 # 最多同時只能有十個 client
user nobody
group nogroup # vpn daemon 執行時的身份(在非 Windows 平台中使用)
persist-key
persist-tun
status /etc/openvpn/easy-rsa/keys/openvpn-status.log
verb 3
# 以下二行是將 vpn server 內部的虛擬 ip 機器開放給 client 使用
push “route 192.168.10.0 255.255.255.0″
push “route 192.168.20.0 255.255.255.0″ (我没用这个功能)
七、 linux clinet端上修改 client.conf
client
dev tun
proto tcp
remote server-ip 1194
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 3
服务端打开转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
现在说说Debian下OpenVpn 实现用户名密码验证
1.数据库部分:
1.1:安装mysql(自己google)
1.2:新建vpn数据库+添加表等
以管理员身份登录数据库:
mysql> create database vpn;
创建数据库vpn。
mysql> GRANT ALL ON vpn.* TO vpn@localhost IDENTIFIED BY ‘vpn123′;
授权localhost上的用户vpn(密码vpn123)有对数据库vpn的所有操作权限。
mysql> flush privileges;
更新sql数据库的权限设置。
mysql> use vpn;
使用刚创建的的vpn数据库。
mysql> CREATE TABLE vpnuser (
-> name char(20) NOT NULL,
-> password char(128) default NULL,
-> active int(10) NOT NULL DEFAULT 1,
-> PRIMARY KEY (name)
-> );
mysql> insert into vpnuser (name,password) values(’soai’,password(’soai’));
命令解释:
#创建vpn用户,对vpn这个database有所有操作权限,密码为vpn123
#active不为1,无权使用VPN
2.配置pam_mysql模块 (我在做的时候发现没有这个模块,debian 下这个模块的包名叫libpam-mysql)
创建/etc/pam.d/openvpn文件,文件内容如下:
auth sufficient pam_mysql.so user=vpn passwd=vpn123 host=localhost db=vpn \
table=vpnuser usercolumn=name passwdcolumn=password \
where=active=1 sqllog=0 crypt=2
account required pam_mysql.so user=vpn passwd=vpn123 host=localhost db=vpn \
table=vpnuser usercolumn=name passwdcolumn=password \
where=active=1 sqllog=0 crypt=2
3.配置server.conf在原基础上添加一下内容
3.1现在把openvpn-auth-pam.so拷贝到当前目录下..
cp /usr/lib/openvpn/openvpn-auth-pam.so /etc/openvpn/
3.2在server.conf中添加如下内容:
plugin ./openvpn-auth-pam.so openvpn #说明使用的插件,openvpn为插件的参数,使用pam的servicesname
client-cert-not-required #不请求客户的CA证书,使用User/Pass验证
username-as-common-name #使用客户提供的UserName作为Common Name
#client-to-client #如果让Client之间可以相互看见,去掉本行的注释掉,否则Client之间无法相互访问
#duplicate-cn #是否允许一个User同时登录多次,去掉本行注释后可以使用同一个用户名登录多次
4.现在需要把客户端client.ovpn修改一下:
原来是CA验证..现在不需要了..
把cert **.crt 和 key **.key 注释掉(我这没注释掉也一样用。。)
添加auth-user-pass
OK
现在可以了!~
http://hi.baidu.com/kechen_linux ... d4adcb7d1e7110.html |
|