Centos配置OpenVPN+OpenLDAP认证

  • 一、安装openvpn-auth-ldap插件
  • 二、配置ldap.conf文件
  • 三、配置openvpn中的server.conf文件
  • 四、配置客户端client.ovpn文件
  • 五、开启路由转发功能
  • 六、脚本编辑
  • 七、测试

Centos搭建OpenVPN的环境有很多资料,自行查询配置

一、安装openvpn-auth-ldap插件

yum -y install epel-release
yum -y install openvpn-auth-ldap
cp /etc/openvpn/auth/ldap.conf /etc/openvpn/auth/ldap.conf.bak

二、配置ldap.conf文件

vim /etc/openvpn/auth/ldap.conf
修改如下内容:

<LDAP>URL ldap://192.168.9.999:389     # 自己的ldap服务器地址Timeout 15TLSEnable no
</LDAP><Authorization>BaseDN "ou=users,dc=ss,dc=com"      # 这里的dc是你ldap服务器中设置的域名等SearchFilter "(uid=%u)"RequireGroup false<Group>BaseDN "dc=ss,dc=com"SearchFilter "(|(cn=developers)(cn=artists))"MemberAttribute uniqueMember</Group>
</Authorization>

三、配置openvpn中的server.conf文件

vim /etc/openvpn/server.conf
修改如下内容:

duplicate-cn                                   # 定义openvpn一个证书在同一时刻是否允许多个客户端接入,默认没有启用
server 10.1.0.0 255.255.240.0                  # 设置vpn给予的ip地址范围在10.1.0.0/20网段内(涵盖10.1.0.0-10.1.0.15网段)
;push "route 192.168.1.0 255.255.255.0"        # 注释掉原先定义的推送路由(后面会给每个用户设置他们的访问权限等)
;push "route 192.168.9.0 255.255.255.0"
client-config-dir ccd                          # 开启配置文件夹功能,用于配置用户/组能使用vpn拿到的虚拟ip地址和访问的网段# 新增如下:(openldap 认证配置项)
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so "/etc/openvpn/auth/ldap.conf"
client-cert-not-required
script-security 3
username-as-common-name
client-connect connect.sh                      # 有新连接 连接时执行脚本(后面会根据该脚本给每个用户设置他们的访问权限等)

四、配置客户端client.ovpn文件

修改如下内容:

# 注释如下证书
;cert client.crt
;key client.key# 新增验证方式
ns-cert-type server
auth-user-pass

五、开启路由转发功能

yum -y install iptables-services
systemctl enable iptables --now
iptables -t nat -A POSTROUTING -s 10.1.0.0/20 -o eth0 -j MASQUERADE     # 添加iptables规则,确保服务器可以转发数据包到外网
iptables-save > /etc/sysconfig/iptables                                 # 永久保存
iptables -t nat -L                                                      # 查看iptables路由转发信息# 下面是清除iptables nat表规则的命令
iptables -t nat -F

六、脚本编辑

公司的ldap组织架构如图所示:

脚本设计思路:

  1. blacklist组是离职的,所以只在users中查找对应的用户uid
  2. 当客户端输入用户名密码,ldap会先识别用户名密码输入是否正确
  3. 查询ccd目录下是否有同用户名一样的common_name文件存在?若存在,则openvpn会从该目录下调用与用户名相同名称的策略
    若不存在,则用ldapsearch查询在某个组里面是否有该用户存在。若有该用户,则拷贝该组的访问策略并重命名到指定的ccd目录下,下次可直接调用
mkdir /etc/openvpn/ccd             # 用于客户端输入用户名密码后,调用哪个配置文件(下面的脚本会让其拷贝rules中组的配置信息)
mkdir /etc/openvpn/rules           # 用于配置存放ldap用户对应组能使用openvpn的哪个虚拟ip地址、访问哪些网段

设置caiwu组的成员分配到10.1.4.5和10.1.4.9两个虚拟ip地址使用(若有组内有多个成员,则需要给足虚拟ip地址)
虚拟ip地址需要遵循特定规则,详细见:https://blog.csdn.net/dl_wdp/article/details/119324734、https://blog.csdn.net/qdwyj/article/details/108151198
设置caiwu组的成员连接vpn后,可以访问内网中的1、4网段

vim /etc/openvpn/rules/caiwu

ifconfig-push 10.1.4.5 10.1.4.6
ifconfig-push 10.1.4.9 10.1.4.10
push "route 192.168.1.0 255.255.255.0"
push "route 192.168.4.0 255.255.255.0"

要想执行ldapsearch查询,需要安装openldap-clients才行:yum install openldap-clients
测试是否能正常访问到ldap,获取ldap信息:ldapsearch -x -b 'dc=ss,dc=com' -H ldap://192.168.9.999

vim /etc/openvpn/connect.sh

#!/bin/bash
if [[ ! -f "/etc/openvpn/ccd/${common_name}" ]]; thenecho "查询到用户对应的common_name文件未在ccd目录中存在,拒绝访问!"if ( ldapsearch -x -LLL -b 'ou=产品,ou=users,dc=ss,dc=com' -H ldap://192.168.9.999 "uid=${common_name}" | grep -c dn ); thenecho "找到了用户 ${common_name},执行操作"cp /etc/openvpn/rules/chanpin /etc/openvpn/ccd/${common_name}
fiif ( ldapsearch -x -LLL -b 'ou=财务,ou=users,dc=ss,dc=com' -H ldap://192.168.9.999 "uid=${common_name}" | grep -c dn ); thenecho "找到了用户 ${common_name},执行操作"cp /etc/openvpn/rules/caiwu /etc/openvpn/ccd/${common_name}
fi......exit 1
fi

chmod +x /etc/openvpn/connect.sh

七、测试

直接用户名、密码登录即可。rules目录中的规则根据业务实际情况去自定义。

Centos配置OpenVPN+OpenLDAP认证相关推荐

  1. CentOS 6 使用 OpenLDAP 认证

    为什么80%的码农都做不了架构师?>>>    OpenLDAP 简介 OpenLDAP 简介网上一大堆这里就不做介绍,可参考:http://baike.baidu.com/view ...

  2. openvpn集成openldap认证

    一.安装插件 yum -y install openvpn-auth-ldap 二.配置openvpn的server.conf local 0.0.0.0 port 1194 proto tcp de ...

  3. LDAP落地实战(三):GitLab集成OpenLDAP认证

    上一篇文章介绍了svn集成OpenLDAP认证,版本控制除了svn外,git目前也被越来越多的开发者所喜爱,本文将介绍GitLab如何集成openldap实现账号认证 GitLab集成OpenLDAP ...

  4. centos 配置证书_如何在CentOS 8上设置和配置证书颁发机构(CA)

    centos 配置证书 介绍 (Introduction) A Certificate Authority (CA) is an entity responsible for issuing digi ...

  5. Centos配置Jenkins实现Android自动打包并上传到蒲公英

    本篇文章来自 徐永红  的投稿,给大家讲解Centos配置Jenkins实现Android自动打包并上传到蒲公英,希望对大家有所帮助. 徐永红 的博客地址: https://xuyonghong.cn ...

  6. Kafka 如何给集群配置Scram账户认证

    前言 很早之前的一篇博客[Kafka+ Centos7服务器集群详细安装教程] 详细的说了下一个真正的集群应该如何搭建Kafka环境,由于当时的需求只是能够使用Kafka服务,因此并没有做别的什么配置 ...

  7. linux 防火墙设置ftp端口,CentOS 配置防火墙操作实例(启、停、开、闭端口)CentOS Linux-FTP/对外开放端口(接口)TomCat相关...

    CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service   iptables status 停止 ...

  8. openldap 认证

    openldap openldap openldap简介 openldap基础配置与操作 安装openldap 配置openldap 全局配置文件 数据库配置文件 建立安全连接 证书配置相关参数 启动 ...

  9. 关于虚拟机纯命令行centos解决web上网认证的解决方案

    关于虚拟机纯命令行centos解决web上网认证的解决方案 虚拟机版本:CentOS Linux release 7.1.1503 (Core) 在我们学校,有校园网的存在,导致我在配置虚拟机的时候遇 ...

最新文章

  1. mysql没有err文件_xampp中的mysql启动时无法产生err文件
  2. js基础--获取浏览器当前页面的滚动条高度的兼容写法
  3. Android设置窗体Activity背景透明
  4. fiddler抓包 https
  5. 2017.4.17------软件测试的艺术+整理以前的摘记
  6. 【Linux】第一章 整合 JDK 和 MariaDB(附 Linux 基本命令)
  7. Git bash的中文化支持
  8. java7 32位官方下载_【java7】64位+32位官方下载
  9. java进度条_Java实现进度条开发过程
  10. Python实现端口扫描
  11. Xlookup、Vlookup请走开,万能的Wlookup函数来了!
  12. FA-RPN: Floating Region Proposals for Face Detection(论文阅读笔记)
  13. 【MobileViT】
  14. 【产品经理学习笔记 | 巨详细】2.规划阶段——2.1需求收集:用户访谈和问卷调查方式
  15. PANDA 下载及安装
  16. 深入分析Android中Activity的onStop和onDestroy()回调延时及延时10s的问题
  17. 7-5 盲盒包装流水线
  18. 金大侠眼光果然犀利:《笑傲江湖》只值一块钱 (转)
  19. android打包aab并安装到手机
  20. php获取打开网页文件名,php取得当前访问url文件名的几种方法

热门文章

  1. 计算机毕业设计-基于Java的GUI实现贪吃蛇小游戏
  2. ghost2003镜像失败,显示PC DOS 7.1,系统无法正常启动
  3. TransparentBlt的使用
  4. 独立站建站需要考虑的关键功能有哪些
  5. 7-24 病毒变种 (10 分)解法超简单
  6. 2计算机一级上机题,计算机等级考试一级上机Word题
  7. 上海开放大学大学英语计分作业三答案(仅供参考)
  8. VUE项目兼容IE11 遇见的问题 SyntaxError: strict 模式下不允许一个属性有多个定义;ie11下载excel文件需要用navigator.msSaveBlob
  9. 宝宝专业智力测试软件,如何在家里给宝宝测智商
  10. 微信退款工具(小程序)