一、      网络环境如下


1Open××× Server

外网卡eth1配置

IP121.12.x.y

MASK:255.255.255.128

GateWay:121.12.x.1

LAN eth0卡配置

IP192.168.38.87

MASK:255.255.255.0

DNS:192.168.38.1

远程拨号DHCP池:

172.16.0.0  -172.16.0.127

掩码:255.255.255.128

2.内网三层交接口IP192.168.38.254

二、网络配置注意点

 1.  Open××× Server内网卡上配置反向路由(eth0为内网口,eth1为外网口

vi/etc/sysconfig/network-scripts/route-eth0

添加如下内容:192.168.0.0/16 via 192.168.38.254

 2.  ××× Server防火墙配置(eth0为内网口,eth1为外网口

#开放外网口UDP 1194Open×××

iptables -I INPUT -i eth1 -p udp --dport 1194 -j ACCEPT

#内网口全部接受

iptables -I INPUT -i eth0 -j ACCEPT

#影响所有有出主动出去的返回包

iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#默认策略拒绝所有

iptables -A INPUT -j DROP

iptables -I OUTPUT -o eth1 -p udp --sport 1194 -j ACCEPT

iptables -I OUTPUT -o eth0 -j ACCEPT

iptables -A OUTPUT -j DROP

#接受外网口ping(允许ping入)

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

#允许ping

iptables -I OUTPUT -p icmp -m icmp--icmp-type echo-reply -j ACCEPT

iptables -I OUTPUT -p icmp --icmp-type echo-request -j ACCEPT

保存配置/sbin/iptables-save

说明:配置外网卡开放了udp端口1194;内网卡全开放同时开启了ping

3在三层交换机配置路由

  iproute 172.16.0.0 255.255.255.128 192.168.38.87

三、服务器软件安装

1.建议停用SELinux 及开启IP转发

vi /etc/selinux/config

修改前:SELINUX=enforcing

修改后:SELINUX=disabled           

开启系统的路由功能    echo "1" >/proc/sys/net/ipv4/ip_forward

然后重启服务器

2. Googele authenticator安装

准备打包的软件环境

yum -y install git gcc \

        libtool autoconf \

        automake pam-devel \

        rpm-build qrencode-libs;

抓取源代码,打包

git clone https://github.com/google/google-authenticator-libpam.git

cd google-authenticator-libpam

./bootstrap.sh

./configure

make dist

cp google-authenticator-*.tar.gz~/rpmbuild/SOURCES/

上面这一步如果提示~/rpmbuild目录不存在,则先把下一步执行一次然后再试

下面这一步会确保有~/rpmbuild目录

rpmbuild -ba contrib/rpm.spec

# 成功以后,编好的rpm包路径在:

/root/rpmbuild/RPMS/x86_64/google-authenticator-1.03-1.el6.x86_64.rpm

进入 cd /root/rpmbuild/RPMS/x86_64/

安装:rpm -ivh google-authenticator-1.03-1.el6.x86_64.rpm

3. Open×××安装

准备打包的软件环境

正常yum是没有open***easy_rsa的安装包,需要另外添加yum安装源:epel

rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

yum -y install open*** \

        pam_ldap \

        open***-auth-ldap \

        pamtester \

                   lzo \

openssl \

zlib;

4. 证书配置

mkdir/etc/open***/easy-rsa

cp/usr/share/easy-rsa/2.0/* /etc/open***/easy-rsa/

vi/etc/open***/easy-rsa/vars修改vars中的以下信息,并保存

内容如下:

export KEY_COUNTRY="CN"

export KEY_PROVINCE="GD"

export KEY_CITY="ZS"

export KEY_ORG="NEO"

export KEY_EMAIL="[email protected]"

exportKEY_OU=“NEO”

进入cd /etc/open***/easy-rsa/

source ./vars初始化

./clean-all清理证书(此步骤第一次可以省去)

./build-ca创建根证书   keys下生成ca.crt   ca.key

./build-key-serverNEO创建服务器端证书   keys下生成neo.crt  neo.csr neo.key

./build-keyNEO-client创建客户端证书  keys下生成neo-client.crt  neo-client.csr  neo-client.key

./build-dh生成diffiehellman参数   keys下生成dh2048.pem

四、服务器软件配置

1.用户认证配置

vi/etc/pam_ldap.conf

内容如下:

host 192.168.38.1 192.168.38.8

base dc=nccn,dc=int

uri ldap://192.168.38.1/

binddncn=ldapuser,ou=Special,ou=ZS,ou=NEOUsers,dc=nccn,dc=int

bindpw ldapuser账号密码

pam_login_attributesAMAccountName

2.Open×××配置

vi /etc/open***/server.conf

内容如下:

port 1194

proto udp

dev tun

ca /etc/open***/easy-rsa/keys/ca.crt

cert /etc/open***/easy-rsa/keys/neo.crt

key /etc/open***/easy-rsa/keys/neo.key

dh /etc/open***/easy-rsa/keys/dh2048.pem

server 172.16.0.0 255.255.255.128

ifconfig-pool-persist ipp.txt

push "route 192.168.0.0 255.255.0.0"

push "dhcp-option DNS 192.168.38.1"

client-to-client

#keepalive 10 120

comp-lzo

max-clients 100

log /etc/open***/open***.log

log-append /etc/open***/open***.log

client-cert-not-required

username-as-common-name

plugin/usr/lib64/open***/plugins/open***-plugin-auth-pam.so /etc/pam.d/open***

vi/etc/pam.d/open***

内容如下:

auth    required    pam_google_authenticator.so nullokforward_pass debug

auth    required    pam_ldap.so use_first_pass debug

account    required   pam_unix.so

第一行的 forward_pass 参数使得一次读入系统密码(ldap,也就是 AD 密码) google authenticator 的密码,然后把系统密码扔给后续的pam(也就是带有 use_first_pass 参数的pam模块)处理

第二行的 use_first_pass 上面已有讲到(前两行都带 debug 参数完全是调试的需要,生产环境可以不用)

第三行是必须的,否则 open*** 登录不上

3. 添加×××服务为自启动

chkconfig --add open***

chkconfig open*** on

service open*** start

五、××× Client配置

1. Googele authenicator以及用户初始化:

useradd ldapuser

su ldapuser

google-authenticator    全部回答”Y”

Open***+AD+Google authenticator 安装、配置_第1张图片

Open***+AD+Google authenticator 安装、配置_第2张图片

2. 安装手机端

使用app商店查找Googeleauthenicator,进行安装

    在手机客户端扫码或者输入账号名和此账号的   secretkey 

Open***+AD+Google authenticator 安装、配置_第3张图片

完成后,每隔36000就会生成一个新6位码:

Open***+AD+Google authenticator 安装、配置_第4张图片

3. 验证是否成功

pamtester open*** ldapuser authenticate

wKioL1nCHuygfJFpAAAXIBL53r0371.png-wh_50

4. 电脑端Open××× Client配置

Open×××服务器上的 /etc/open***/easy-rsa/keys/位置下载ca.crtwindows

同时在windows下生成一个叫client.o***的配置文件,内容如下:

client

dev tun

proto udp

remote 121.12.x.y 1194

ca ca.crt

verb 3

auth-user-pass

comp-lzo

在Windows OPEN×××客户端(此软件安装略)上,点“+”号

Open***+AD+Google authenticator 安装、配置_第5张图片

导入client.o***文件

Open***+AD+Google authenticator 安装、配置_第6张图片

即可进行测试拨号

Open***+AD+Google authenticator 安装、配置_第7张图片

下面成功显示

Open***+AD+Google authenticator 安装、配置_第8张图片

查看一下系统IP

Open***+AD+Google authenticator 安装、配置_第9张图片

查看网络路由表:

Open***+AD+Google authenticator 安装、配置_第10张图片

上面表示×××拨号成功


后续

编写一脚本自动建×××账号和发邮件给××× 用户

修改/etc/nail.rc (/etc/mail.rc)

Set [email protected] smtp=mail.maildomain.com set smtp-auth-user=notice smtp-auth-password=password set smtp-auth=login

说明:

 from是发送的邮件地址

 smtp是发生的外部smtp服务器的地址

 smtp-auth-user是外部smtp服务器认证的用户名

 smtp-auth-password是外部smtp服务器认证的用户密码

 smtp-auth是邮件认证的方式

 

vi ***useradd

内容(其中:Open××× Client Setting Manual.pdf是Open×××用户端操作手册):

----------------------

#!/bin/bash

        echo "please input open***username:"

        read a

if test-e /home/$a

then echo "this *** user is exist!"

else

        useradd $a

        su -c \

        "google-authenticator -t -f -d -w17 -r 3 -R 30 -q" \

        $a

        echo "Below is $a 's new secretkey:" >gs-temp

        echo "  " >>gs-temp

        head -1 /home/$a/.google_authenticator>>gs-temp

        echo "   ">>gs-temp

        echo "1. Please follow the p_w_upload Manual to do!" >>gs-temp

        echo "2. Any question, please call IT NO.xxxx !" >>gs-temp

        mail -s "Google_authenticatorKey" -a Open×××\ Client\ Setting\ Manual.pdf [email protected]

fi

------------------------------

chmod755 ***useradd    (chmod ***useradd 为可执行文件)