-
5
.
配置
Open××× windows
客户端
a)安装 open***-2.0.9-gui-1.0.3-install.exe
编辑安装目录config 文件中的 client.o*** 文件
内容如下:
client
dev tun
proto udp
remote 192.168.80.129 2194
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3
;redirect-gateway def1
tls-auth ta.key 1
安照配置文件 cp 相应的 .key .crt .pem 文件到 config 文件夹
运行open*** 客户端,并从windows客户机ping 公司局域网pc 172.18.2.202
再 tracert 和 pathping 一下,确认数据流向
OK 实验成功
- 6 . 再做一个小测试 吊销客户端证书
root@localhost ~]# cd Scripts/open***-2.0.9/easy-rsa/
[root@localhost easy-rsa]# ./revoke-full client1 吊销client1的证书
这条命令执行完成之后, 会在 keys 目录下面, 生成一个 crl.pem 文件,这个文件中包含了吊销证书的名单。 成功注销某个证书之后,可以打开 keys/index.txt 文件,可以看到被注销的证书前面,已标记为R.
- a . 复制 easy-rsa 目录下 keys 目录中的 crl.pem 到 /usr/local/etc/keys 目录中
- b . 确保 server.conf 中包含这样一句
crl-verify /usr/local/etc/keys/crl.pem
-
c
.
重新启动
open***
。并测试
Client 连接失败 测试成功
7.使用 tap 设备的路由模式
把服务器和客户端配置文件中 dev tun 改为 dev tap 即可
关于使用tap 和 tun 设备的区别,见附录 tun 和 tap 区别。
-
(二) 搭建
Open××× Server
桥接模式
还是(一)的网络环境
目的:客户端还是连接到公司局域网中,但出于一些目的必须使用桥接模式。
如客户端要获得公司局域网ip,某些应用只能使用桥接模式,节省ip。
不管什么原因,反正就是必须使用桥接模式
Open××× Server 基本设定:连接方式采用桥接,认证方式采用证书认证,虚拟设备使用tap
-
1
.
将
Open×××
服务器的
LAN
网卡和虚拟网卡桥接
关闭Open××× 服务 killall open***
-
a
)
确认你已经安装了
bridge-utils
软件包。
可以 vi /root/install.log 或rpm –qa ,没有安装可以去安装光盘找或者直接yum安装
- b ) 编辑下面的 bridge-start 脚本。依照你要桥接的物理以太网接口设置 br, tap, eth, eth_ip,eth_netmask 和 eth_broadcast 参数。确保使用的接口是私有的且它连接的局域网由防火墙保护其到 internet 的连接。可以使用 ifconfig 命令获得要填入 bridege-start 参数的网络接口的信息
- c ) 这个脚本可以从
- d ) http://open***.net/index.php/documentation/miscellaneous/ethernet-bridging.html#linuxscript 获得,或者 open*** 的模版文件目录中也有
- e ) 运行 bridge-start 脚本。它将创建一个永久( 服务器重起前 )的 tap0 接口并将它和活跃的以太网接口桥接。
- f ) 把这个脚本也加入到 /etc/rc.local
- a ) 在 “(一)”步骤地服务器配置文件基础上
- i. 更改 dev tun 为 dev tap0
- ii. 注释 server 开头的行
- iii. 添加如下行
- iv. 网桥 ip 分给 *** 客户端的 ip 范围 server-bridge 172.18.2.30 255.255.255.0 172.18.2.128 172.18.2.254
- v. push "route 172.18.2.0 255.255.255.0" 这句也可以注释掉,当然只要知道这句是 push 一条路由给 *** client 就可以灵活掌握。
- vi.
vi /etc/sysconfig/iptables
添加如下几条
-A RH-Firewall-1-INPUT -i tap0 -j ACCEPT
-A RH-Firewall-1-INPUT -i br0 -j ACCEPT
那条 NAT 的规则也可以去掉。
开启open***
/usr/local/sbin/open*** --daemon --config /usr/local/etc/server.conf
从 winxp client 连接到服务器
测试 ok ipconfig /all tracert pathping
Open××× 服务器启动和停止
运行 bridge-start 运行 open*** 停止 open*** 运行 bridge-stop
Ok Open××× 桥接设置完毕
-
(三) 搭建
Open××× Server
路由模式
+
口令认证
+ MYSQL
还是(一)的网络环境
目的:客户端还是连接到公司局域网中,但为了用户管理方便,认证数据从mysql 数据库中提取。
Open××× Server 基本设定:连接方式采用路由,认证方式采用mysql认证,虚拟设备使用tun
- 1 . 首先检查 pam-devel 包是否安装,否则从系统盘安装改软件包
- a) rpm –qa | grep pam
rpm –qa | grep msql
mysql-5.0.45-7.el5
mysql-devel-5.0.45-7.el5
mysql-server-5.0.45-7.el5
注:从系统盘安装改软件包时有一系列的依赖问题,我晕
可以把系统盘设置为yum源,使用yum安装这样依赖问题就会自动解决
3.我们安装pam_mysql使用MySQL数据库存储用户数据,其它数据库可以找相应的PAM验证模块(我是在cu下载的 pam_mysql-0.7RC1.tar.gz)
[root@localhost ~]# gzip -cd pam_mysql-0.7RC1.tar.gz | tar xvf –
[root@localhost ~]# cd pam_mysql-0.7RC1
[root@localhost pam_mysql-0.7RC1]# ./configure
[root@localhost pam_mysql-0.7RC1]# make
[root@localhost pam_mysql-0.7RC1]# cp .libs/pam_mysql.so /lib/security/
4 . 配置 mysql 数据库 和 pamServer mysqld start
使用 chkconfig 命令让 mysql 数据库,开机自启动
配置数据库
以管理员身份登录数据库:
mysql>; create database ***;
mysql>; GRANT ALL ON ***.* TO ***@localhost IDENTIFIED BY '***123';
mysql>; flush privileges;
mysql>; use ***;
mysql>; CREATE TABLE ***user (
->; name char(20) NOT NULL,
->; password char(128) default NULL,
->; active int(10) NOT NULL DEFAULT 1,
->; PRIMARY KEY (name)
->; );
mysql>; insert into ***user (name,password) values('elm',‘elm’);
#创建***用户,对***这个database有所有操作权限,密码为***123
#active不为1,无权使用×××
#增加用户 用户名:elm 密码:elm
配置pam_mysql模块
创建/etc/pam.d/open***文件,文件内容如下:
===================CUT Here================
auth sufficient pam_mysql.so user=*** passwd=***123 host=localhost db=*** \
table=***user usercolumn=name passwdcolumn=password \
where=active=1 sqllog=0 crypt=0
account required pam_mysql.so user=*** passwd=***123 host=localhost db=*** \
table=***user usercolumn=name passwdcolumn=password \
where=active=1 sqllog=0 crypt=0
==================Cut Here=================
crypt(0) -- Used to decide to use MySQL's PASSWORD() function or crypt()
0 = No encryption. Passwords in database in plaintext. NOT recommended!
1 = Use crypt
2 = Use MySQL PASSWORD() function
下面可以测试pam_mysql是否工作正常,先检查saslauthd是否安装:
[root@localhost pam_mysql-0.7RC1]# rpm -qa | grep sasl
cyrus-sasl-plain-2.1.22-4
cyrus-sasl-devel-2.1.22-4
cyrus-sasl-2.1.22-4
cyrus-sasl-lib-2.1.22-4
有cyrus-sasl-2.1.22-4应该就可以了,如果没有请安装相应的软件包,不安装也行,可以通过其它方法测试
[root@*** ~]# saslauthd -a pam
把这句加入到 /etc/rc.local 记得写全路径 用 whereis 或 locate 找
[root@*** ~]# testsaslauthd -u elm -p elm -s open***
0: OK "Success."
恭喜,pam_mysql工作正常了,下面可以开始配置Open×××服务器了。
这里我第一次测试时失败了
编辑 /etc/pam.d/open***
两句最后都加上
verbose=1 详细日志
[root@localhost pam_mysql-0.7RC1]# ls -ltr /var/log
看哪个日志文件被更新了
再开两个窗口监视这两个文件
[root@localhost pam_mysql-0.7RC1]# tail –f /var/log/messages
[root@localhost pam_mysql-0.7RC1]# tail -f /var/log/secure
重新 做一次 saslauthd 的启动 和 testsaslauthd
日志也没有看到明显错误
最后才记起来
Mysql 的 password 函数因为mysql 的加密函数和pam_mysql-0.7RC1 的加密函数不相同。
crypt (plain)
The method to encrypt the user's password:
0 (or "plain") = No encryption. Passwords stored in plaintext.
HIGHLY DISCOURAGED.
1 (or "Y") = Use crypt(3) function.
2 (or "mysql") = Use MySQL PASSWORD() function. It is possible
that the encryption function used by PAM-MySQL
is different from that of the MySQL server, as
PAM-MySQL uses the function defined in MySQL's
C-client API instead of using PASSWORD() SQL function
in the query.
3 (or "md5") = Use plain hex MD5.
4 (or "sha1") = Use plain hex SHA1.
于是 把crypt 设置为0 ,新建一个密码不加密的帐户。再测试就通过了
5 . 生成 open***-auth-pam.so
[root@localhost etc]# cd /root/Scripts/open***-2.0.9/plugin/auth-pam/
[root@localhost auth-pam]# make
[root@localhost auth-pam]# cp open***-auth-pam.so /usr/local/etc/lib/
6.配置服务器配置文件, 在(一)的基础上
添加如下几行:
#说明使用的插件,open***为插件的参数,使用pam的servicesname
plugin /usr/local/etc/lib/open***-auth-pam.so open***
#不请求客户的CA证书,使用User/Pass验证
client-cert-not-required
#使用客户提供的UserName作为Common Name
username-as-common-name
7.配置客户端配置文件
注释掉
;cert client1.crt
;key client1.key
增加
#询问用户名和密码
auth-user-pass
使用客户端连接服务器 测试 ok
转载于:https://blog.51cto.com/dadloveu/448611