1、环境介绍

这是我CentOS的版本,CentOS7.1,主备都为该版本:

[root@localhost ~]# cat /etc/redhat-release 

CentOS Linux release 7.1.1503 (Core) 

[root@localhost ~]# cat /proc/version 

Linux version 3.10.0-229.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Fri Mar 6 11:36:42 UTC 2015


2、修改主机名并修改host

[root@localhost ~]# hostnamectl set-hostname Open×××01

[root@localhost ~]# vi /etc/hosts

127.0.0.1 node-01在127后面添加node-01


3、利用root登录系统,然后安装EPEL源

注:Extra Packages for Enterprise Linux (EPEL)

直译就是【企业版 Linux 附加软件包(以下简称 EPEL)】是一个由特别兴趣小组创建、维护并管理的,

针对 红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS、 Scientific Linux)的一个高质量附加软件包项目


[root@open***01 ~]# yum install epel-release


进行上面的源安装后,才可以直接使用yum 安装 Open×××、EasyRSA

[root@open***01 ~]# yum install open*** -y

[root@open***01 ~]# yum install easy-rsa -y


4、生成密钥和证书

 4.1 建立需要用的密钥及证书目录:mkdir -p /etc/open***/easy-rsa/2.0/

 4.2 将密钥和证书生成脚本复制到上面的目录中:cp -rf /usr/share/easy-rsa/2.0/* /etc/open***/easy-rsa/2.0/

 4.3 编辑脚本中的默认值。以后生成证书时将作为默认信息:vi /etc/open***/easy-rsa/2.0/vars

 作以下修改:

export KEY_COUNTRY="CN"

export KEY_PROVINCE="GuangDong"

export KEY_CITY="Shenzhen"

export KEY_ORG="Shenzhen Meten Education Technology Co.,Ltd."

export KEY_EMAIL="admin@meten.com"

export KEY_OU="IT Dept"

 4.4 cp /etc/open***/easy-rsa/2.0/openssl-1.0.0.cnf /etc/open***/easy-rsa/2.0/openssl.cnf

 

 4.5 source /etc/open***/easy-rsa/2.0/vars

 

 (会有提示:NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/open***/easy-rsa/2.0/keys)

 4.6 /etc/open***/easy-rsa/2.0/clean-all

 注:下面这个命令在第一次安装时可以运行,以后在添加完客户端后慎用,因为这个命令会清除所有已经生成的证书密钥,和上面的提示对应


 4.7 生成服务器端ca证书: /etc/open***/easy-rsa/2.0/build-ca

 注:由于之前编辑过缺省的配置文件,这里一路回车即可


 4.8 /etc/open***/easy-rsa/2.0/build-key-server open***.meten.com

 生成服务器的密钥和证书,其他选项默认,只填写以下两项,密码和公司名称:

 A challenge password []:``11qq

 An optional company name []:meten


 4.9 生成Diffie-Hellman密钥交换文件,用于增强open***安全性(生成时间较长)

 /etc/open***/easy-rsa/2.0/build-dh


 4.10 完成了服务器密钥和证书生成过程,将他们到复制到特定位置备用

 mkdir -p /etc/open***-meten

 cp dh2048.pem ca.crt open***.meten.com.crt open***.meten.com.key open***.meten.com.csr /etc/open***-meten

 

5、配置Open*** Server

 5.1 首先拷贝安装路径下的范例配置文件:

     [root@open***01 ~]# cp /usr/share/doc/open***-*/sample/sample-config-files/server.conf  /etc/open***

 

 5.2 创建日志目录:

     mkdir -p /var/log/open***/

 

 5.3 编辑配置文件:

     [root@open***01 ~]# vi /etc/open***/server.conf

--------------------------------/etc/open***/server.conf--------------------------------

#注:可按照默认模板配置,本例为自定义配置文件:

#--------------------------

# 设置监听IP,默认是监听所有IP

;local a.b.c.d

# 设置监听端口,必须要对应的在防火墙里面打开

port 8083

# 设置用TCP还是UDP协议?

;proto tcp

proto tcp

# 设置创建tun的路由IP通道,还是创建tap的以太网通道

# 路由IP容易控制,所以推荐使用它;但如果如IPX等必须

# 使用第二层才能通过的通讯,则可以用tap方式,tap也

# 就是以太网桥接

;dev tap

dev tun

# Windows需要给网卡一个名称,这里设置,linux不需要

;dev-node MyTap

# 这里是重点,必须指定SSL/TLS root certificate (ca),

# certificate(cert), and private key (key)

# ca文件是服务端和客户端都必须使用的,但不需要ca.key

# 服务端和客户端指定各自的.crt和.key

# 请注意路径,可以使用以配置文件开始为根的相对路径,

# 也可以使用绝对路径

# 请小心存放.key密钥文件

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

cert /etc/open***/easy-rsa/2.0/keys/open***.meten.com.crt

key /etc/open***/easy-rsa/2.0/keys/open***.meten.com.key

# This file should be kept secret

 

# 指定Diffie hellman parameters.

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

 

# 配置×××使用的网段,Open×××会自动提供基于该网段的DHCP

# 服务,但不能和任何一方的局域网段重复,保证唯一

server 172.21.128.0 255.255.255.0

 

# 维持一个客户端和virtual IP的对应表,以方便客户端重新

# 连接可以获得同样的IP

ifconfig-pool-persist ipp.txt


# 配置为以太网桥模式,但需要使用系统的桥接功能

# 这里不需要使用

;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

 

# 为客户端创建对应的路由,以另其通达公司网内部服务器

# 但记住,公司网内部服务器也需要有可用路由返回到客户端

;push "route 192.168.20.0 255.255.255.0"

push "route 172.21.128.0 255.255.255.0"

 

# 为特定的客户端指定IP或指定路由,该路由通常是客户端后面的

# 内网网段,而不是服务端连接的网段

# ccd是/etc/open***下的目录,其中建有希望限制的客户端Common

# Name为文件名的文件,并通过下面的命令写入固定IP地址

# 例如Common Name为client1,则在/etc/open***/ccd/client1写有:

# ifconfig-push 10.9.0.1 10.9.0.2

;client-config-dir ccd

;route 192.168.40.128 255.255.255.248

 

# 为可以对不同的客户端设置防火墙等权限

# 可以让其自动运行对应脚本,可参考man

;learn-address ./script

 

# 若客户端希望所有的流量都通过×××传输,则可以使用该语句

# 其会自动改变客户端的网关为×××服务器,推荐关闭

# 一旦设置,请小心服务端的DHCP设置问题

;push "redirect-gateway def1 bypass-dhcp"

;push "redirect-gateway"

 

# 用Open×××的DHCP功能为客户端提供指定的DNS、WINS等

;push "dhcp-option WINS 10.8.0.1"

push "dhcp-option DNS 172.21.3.2"


 

# 默认客户端之间是不能直接通讯的,除非把下面的语句注释掉

client-to-client

 

# 如果您希望有相同Common Name的客户端都可以登陆

# 也可以注释下面的语句,推荐每个客户端都使用不用的Common Name

# 常用于测试

;duplicate-cn

 

# 设置服务端检测的间隔和超时时间

keepalive 10 120

 

# 下面是一些对安全性增强的措施

# For extra security beyond that provided

# by SSL/TLS, create an "HMAC firewall"

# to help block DoS attacks and UDP port flooding.

#

# Generate with:

# open*** --genkey --secret ta.key

#

# The server and each client must have

# a copy of this key.

# The second parameter should be 0

# on the server and 1 on the clients.

;tls-auth ta.key 0 # This file is secret

 

# Select a cryptographic cipher.

# This config item must be copied to

# the client config file as well.

;cipher BF-CBC # Blowfish (default)

;cipher AES-128-CBC # AES

;cipher DES-EDE3-CBC # Triple-DES

 

# 使用lzo压缩的通讯,服务端和客户端都必须配置

comp-lzo

 

# 设置最大用户数

;max-clients 100

 

# 让Open×××以nobody用户和组来运行(安全)

;user nobody

;group nobody

 

# The persist options will try to avoid

# accessing certain resources on restart

# that may no longer be accessible because

# of the privilege downgrade.

persist-key

persist-tun

 

# 输出短日志,每分钟刷新一次,以显示当前的客户端

status /var/log/open***/open***-status.log

 

# 缺省日志会记录在系统日志中,但也可以导向到其他地方

# 建议调试的使用先不要设置,调试完成后再定义

log /var/log/open***/open***.log

log-append /var/log/open***/open***.log

 

# 设置日志的级别

#

# 0 is silent, except for fatal errors

# 4 is reasonable for general usage

# 5 and 6 can help to debug connection problems

# 9 is extremely verbose

verb 3

 

# Silence repeating messages. At most 20

# sequential messages of the same message

# category will be output to the log.

;mute 20

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



6、防火墙及网络设置

CentOS7环境下,默认是使用FireWallD服务,即使你修改了iptables,重启又被初始化了,需要再次手动systemctl restart  iptables.service才能使设置的iptables生效,

由于FireWallD暂时还没有熟悉使用方法且不知道他比iptables到底有哪些优势,保险起见,还是换回原先的iptables

 6.1、关闭firewall:

     [root@node-01 ~]# systemctl stop firewalld.service

     #停止firewall

     [root@node-01 ~]# systemctl disable firewalld.service 或 systemctl mask firewalld.service

     #禁止firewall开机启动


 6.2、安装iptables防火墙

      [root@node-01 ~]# yum install iptables-services -y

      [root@node-01 ~]# systemctl enable iptables

 #设置firewall开机启动


 6.3、设置策略以保证路由能转发到Open×××的子网及开放×××端口

      iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

      iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8083 -j ACCEPT

      iptables-save > /etc/sysconfig/iptables


 6.4、开启系统的IP包转发

      vi /etc/sysctl.conf

      在文件顶部添加下面的行:

      net.ipv4.ip_forward = 1

      使ipv4转发起作用,需要重新启动网络服务:

      systemctl restart network.service


 6.5、同步网络时间-虚拟化服务器一定要开机同步

      ntpdate asia.pool.ntp.org


7、Open×××的自启动配置

在配置Open×××的自启动时,先关闭selinux

A、vi /etc/selinux/config

B、设置 SELINUX=disabled 保存

C、执行  setenforce 0

如果只想临时关闭,直接输入:setenforce 0

[root@open***01 ~]# vi /usr/lib/systemd/system/open***.service


--------------------open***.service-----------------------------------

[Unit]

Description=Open××× 2.3.10

Documentation=https://community.open***.net/open***/wiki/Open***23ManPage

After=network.target


[Service]

Type=forking

ExecStart=/usr/sbin/open*** --daemon --config /etc/open***/server.conf

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPID

PrivateTmp=true


[Install]

WantedBy=multi-user.target

---------------------------End-----------------------------------------

开机自启动设置如下:

[root@open***01 ~]# systemctl enable open***.service

ln -s '/usr/lib/systemd/system/open***.service' '/etc/systemd/system/multi-user.target.wants/open***.service'



--------------------------------------open***-auth-ldap--------------------------------------------------------------------

由于CentOS7.1无法安装open***-auth-ldap插件,因此以下步骤是在CentOS6.6内实现的:

[root@localhost ~]# yum install open***-auth-ldap

[root@localhost ~]# vi /etc/open***/server.conf

加下以下配置节在最后:

plugin /usr/lib64/open***/plugin/lib/open***-auth-ldap.so /etc/open***/auth/ldap.conf

client-cert-not-required

username-as-common-name

script-security 3


[root@localhost ~]# vi /etc/open***/auth/ldap.conf


<LDAP>

        # LDAP server URL

        URL             ldap://172.21.21.21

        BindDN                  "CN=open***,CN=Users,DC=meten,DC=com"

        Password                VVVVYouki

        Timeout         15

        TLSEnable       no

        FollowReferrals yes

</LDAP>


<Authorization>

        BaseDN          "ou=Meten,dc=meten,dc=com"

        # User Search Filter

        #SearchFilter   "(&(uid=%u)(accountStatus=active))"

        SearchFilter    "(sAMAccountName=%u)"

        # Require Group Membership

        RequireGroup    false

        # Add non-group members to a PF table (disabled)

        #PFTable        ips_***_users

        <Group>

                BaseDN          "ou=Meten,dc=meten,dc=com"

                SearchFilter    "(|(OU=业务BU)(OU=产品BU)(OU=区域公司)(OU=总部))"

                MemberAttribute uniqueMember


#               SearchFilter    "(|(cn=developers)(cn=artists))"

#               MemberAttribute uniqueMember

                # Add group members to a PF table (disabled)

                #PFTable        ips_***_eng

        </Group>

</Authorization>

--------------------------------------End-----------------------------------------



创建&注销用户:

一、创建用户

1.    SSH登陆服务器

2.    cd /etc/open***/easy-rsa/easy-rsa/2.0

3.    生效一堆系统变量

source./vars

4.    生成用户证书,为统一命名,必须和OA用户名一致

./build-keyYouki

5.    cd /etc/open***/easy-rsa/easy-rsa/2.0/keys

6.    传送ftp文件

lftp ***cer:'!!22qq'@172.21.4.14:2100

put Youki.crt

put Youki.csr

put Youki.key

7.    连同以下文件,放到一个目录

服务器证书:ca.crtinternalssl.meten.com 

用户证书:用户.crt,用户.csr,用户.key

配置文件:client.o***

客户端程序 

8.    在自己电脑上用写字板或notepad++打开client.o***,以下内容修改为实际用户路径与证书名(Windows下记得路径用双反斜线)

ca D:\\Open×××\\config\\ca.crt

cert D:\\Open×××\\config\\Youki.crt

key D:\\Open×××\\config\\Youki.key

9.    将以上文件打包发给用户,由当地IT完成用户端部署


二、注销用户

1.    SSH登陆服务器

2.    cd /etc/open***/easy-rsa/easy-rsa/2.0

3.    生效一堆系统变量

source ./vars

4.    吊销用户证书,必须和证书名一致,注意要有以下提示

./revoke-full Youki

5.    确认吊销列表文件更新成功

ll /etc/open***/easy-rsa/easy-rsa/2.0/keys/crl.pem

6.    吊销列表文件copy到相应目录,覆盖原有文件

cp /etc/open***/easy-rsa/easy-rsa/2.0/keys/crl.pem /etc/open***/