open×××+Mysql+PAM构建强大的***系统


本次为新的生产环境部署系统而采用了这个方案,陆续会将实际的生产架构整理出来.由于涉及到公司的各种敏感信息,已经将IP做了替换中途可能有出入 敬请谅解。等我找时间画图出来一并奉上。

如果有根本上的问题,请大家指正。


本次为了测试使用了如下的软件版本:

epel-release-6-8.noarch.rpm

lzo-2.03.tar.gz

open***-2.2.2.tar.gz

open***-2.0.7.tar.gz

open***-2.2.1-install.exe



1 安装epel第三方源:

1
2
wget http://mirror.neu.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm


2 安装各种依赖关系:

1
yum -y installgcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers


3 安装

1
2
yum installpam_krb5 pam_mysql pam pam-devel
yum installmysql mysql-server mysql-devel mysql-libs



4 安装lzo:

1
2
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
cdlzo-2.03 && ./configure&& make&& makeinstall


5 添加路径:

1
2
3
4
5
6
7
8
9
cat>>/etc/ld.so.conf<<EOF
/lib
/lib64
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
EOF
ldconfig


6 安装open***:

1
2
3
4
5
6
7
8
tar-zxvf open***-2.2.2.tar.gz
cdopen***-2.2.2/
./configure--prefix=/usr/local/open***&& make&& makeinstall
mkdir-p /etc/open***
cd/root/open***-2.2.2
cp-R easy-rsa /etc/open***
cd/etc/open***/easy-rsa/2.0/
cpvars vars_bak


7 修改vars的内容信息:

1
2
3
4
5
6
7
vim vars
###最下面修改内容:
exportKEY_COUNTRY="CN"
exportKEY_PROVINCE="BJ"
exportKEY_CITY="beijing"
exportKEY_ORG="beijingidc"
exportKEY_EMAIL="你的邮箱地址"


8 生成服务器和客户端需要的key文件:

1
2
3
4
5
6
source./vars
./clean-all
./build-caca
./build-key-serverserver
./build-dh
/usr/local/open***/sbin/open***--genkey --secret keys/ta.key


9 创建mysql用于***的账号存放:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
##启动mysql:
service mysqld restart
###创建数据验证信息:
mysql> create database ***;
Query OK, 1row affected (0.00sec)
mysql> GRANT ALL ON ***.* TO ***@localhost IDENTIFIED BY '***123';
Query OK, 0rows affected (0.00sec)
mysql> flush privileges;
Query OK, 0rows affected (0.00sec)
mysql> use***;
Database changed
mysql> CREATE TABLE ***user (
-> name char(20) NOT NULL,
-> password char(128defaultNULL,
-> active int(10) NOT NULL DEFAULT 1,
-> PRIMARY KEY (name)
-> );
Query OK, 0rows affected (0.30sec)
mysql> insert into ***user (name,password) values('user1',password('123456'));
Query OK, 1row affected (0.02sec)


10 创建pam用于验证:

1
2
3
4
5
6
7
8
###创建pam验证配置文件:
vim /etc/pam.d/open***
auth sufficient pam_mysql.so user=*** passwd=***123 host=localhost db=*** table=***user usercolumn=name passwdcolumn=password where=active=1 sqllog=0 crypt=2
account required pam_mysql.so user=*** passwd=***123 host=localhost db=*** table=***user usercolumn=name passwdcolumn=password where=active=1 sqllog=0 crypt=2
#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


11 测试pam和mysql的连接:

1
2
yum installcyrus-sasl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-lib cyrus-sasl-gssapi
/etc/init.d/saslauthdrestart


12 open*** 2.0以上验证会出问题,需要编译低版本的模块:

1
2
3
4
5
6
7
wget http://down1.chinaunix.net/distfiles/open***-2.0.7.tar.gz
tar-zxvf open***-2.0.7.tar.gz
cdopen***-2.0.7/
./configure
cdplugin/auth-pam/
make
cpopen***-auth-pam.so /etc/open***/


13 测试连接:

1
2
3
###显示如下内容即为正常:
[root@localhost 2.0]# testsaslauthd -u user1 -p 123456 -s open***
0: OK "Success."


14 创建并修改open***的配置文件:

1
cp/opt/src/open***-2.2.2/sample-config-files/server.conf /etc/open***/


15 配置文件的内容如下(取出了所有的注释部分)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
vim server.conf
###内容如下:
port 1194
proto udp
dev tun
ca /etc/open***/easy-rsa/2.0/keys/ca.crt
cert /etc/open***/easy-rsa/2.0/keys/server.crt
key /etc/open***/easy-rsa/2.0/keys/server.key
dh /etc/open***/easy-rsa/2.0/keys/dh1024.pem
tls-auth /etc/open***/easy-rsa/2.0/keys/ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 10.8.0.1"
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status open***-status.log
log open***.log
verb 3
client-cert-not-required
username-as-common-name
plugin ./open***-auth-pam.so /usr/local/open***/sbin/open***


16 开启内核路由转发:

1
2
3
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0改成 net.ipv4.ip_forward = 1
sysctl -p


17 设置防火墙的端口转发:

1
2
3
###iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 服务器的ip
iptables -t nat -A POSTROUTING -s 10.8.0.0/24-o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.8.0.0/24-j SNAT --to-source192.168.80.151


18 保存并重启iptables:

1
2
service iptables save
service iptables restart


19 创建启动脚本:

1
cp-f /root/open***-2.2.2/sample-scripts/open***.init /etc/init.d/open***



1
2
3
4
5
6
vim /etc/init.d/open***
###编译安装的需要将第69行改成:
open***_locations="/usr/local/open***/sbin/open*** /usr/sbin/open*** /usr/local/sbin/open***"
chkconfig --add open***
chkconfig open*** on
/etc/init.d/open***start


------------------至此服务端配置完成---------------

下载open***客户端:

1
http://swupdate.open***.org/community/releases/open***-2.2.1-install.exe


客户端的安装配置:



在服务端操作将ca.crt ca.key ta.key 拷贝到客户端的conf目录下面:

C:\Program Files (x86)\Open×××\config


新建文件以.o*** 为结尾,并输入以下内容(remote服务器外网网卡地址):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
client
dev tun
proto udp
remote 192.168.80.151 1194 ##服务端的IP
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-auth ta.key 1
ns-cert-typeserver
comp-lzo
verb 5
auth-user-pass


拨号-->输入mysql里面添加的用户名:user1 123456 -->OK


右下角出现的2个小电脑 变成绿色的 即表示连接到open***服务器上,在本地cmd执行ipconfig

查看是否得到了open*** 设置的网段地址。

本文出自 “振兴的空间” 博客,请务必保留此出处http://renzhenxing.blog.51cto.com/728846/1341147