Centos配置OpenVPN+OpenLDAP认证

news2024/12/24 2:36:21

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 15
    TLSEnable 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}" ]]; then
  echo "查询到用户对应的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 ); then
  echo "找到了用户 ${common_name},执行操作"
  cp /etc/openvpn/rules/chanpin /etc/openvpn/ccd/${common_name}
fi
 
if ( ldapsearch -x -LLL -b 'ou=财务,ou=users,dc=ss,dc=com' -H ldap://192.168.9.999 "uid=${common_name}" | grep -c dn ); then
  echo "找到了用户 ${common_name},执行操作"
  cp /etc/openvpn/rules/caiwu /etc/openvpn/ccd/${common_name}
fi
 
......
 
exit 1
fi

chmod +x /etc/openvpn/connect.sh

七、测试

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/518334.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工作两年了,不想做客服,转行学数据分析改变未来!

不想做客服&#xff0c;转行学数据分析改变未来&#xff01; 从今年开年以来&#xff0c;已经接触了很多转行人群的课程咨询&#xff0c;其中比较有代表性的原职业就是客服&#xff0c;听到对职业的抱怨大多是&#xff1a;工作辛苦&#xff0c;待遇又低&#xff0c;又没前途&am…

基于WiFi的CSI数据做呼吸频率检测-python版

一、概述 本Demo无需机器学习模型&#xff0c;Demo功能涉及的理论主要参考了硕士学位论文《基于WiFi的人体行为感知技术研究》&#xff0c;作者是南京邮电大学的朱XX&#xff0c;本人用python复现了论文中呼吸频率检测的功能。Demo实现呼吸速率检测的主要过程为&#xff1a; …

15-721 chapter12 查询计划

查询模型 查询模型就是定义如何支持服务端多个并发服务&#xff0c;这里我们引入了worker的抽象概念&#xff0c;可以是线程也可以是进程&#xff0c;就是支持客户端请求并且返回结果的。 进程模型 进程池模型 不利于cache,并且进程之间的通信依赖于tcp&#xff0c;shared me…

外贸独立站必备神器AB斗篷

做独立站仿品的都知道&#xff0c;如果需要在FB、Google等平台上打广告&#xff0c;必须先上正品才能通过审核&#xff0c;而且就算通过了审核&#xff0c;后期平台也会不定期地去检查。所以当平台的审核爬虫来&#xff0c;商家必须先跳到正品网页规避审核&#xff0c;当买家过…

FE_Vue学习笔记 - 模板语法[插值 指令] 数据绑定[v-bind v-model] 数据代理 事件

尝试 Vue.js 最简单的方法是使用 Hello World 例子&#xff0c;你可以在浏览器新标签页中打开它&#xff0c;跟着例子学习一些基础用法&#xff0c;或者你也可以创建一个 .html 文件&#xff0c;然后通过如下方式引入 Vue&#xff1a; <!-- 开发环境版本&#xff0c;包含了…

Java-Redis缓存穿透,击穿,雪崩和布隆算法

Java-Redis缓存穿透&#xff0c;击穿&#xff0c;雪崩和布隆算法 1.缓存穿透概念:2.如何解决缓存穿透:3.什么是缓存击穿?4.什么是缓存雪崩?5.导致缓存雪崩的原因:6.缓存穿透&#xff0c;缓存击穿&#xff0c;缓存雪崩的区别: 1.缓存穿透概念: 当一个用户想要查询数据时&…

一文解析Menu Governor

在现代操作系统中&#xff0c;往往很多时候并不需要去执行cpu密集型的任务&#xff0c;而每当这个时候&#xff0c;如果去持续的执行循环去等待新的任务发过来&#xff0c;那需要消耗巨大的能量。所以设计人员设计出一种空闲状态以此CPU进入低功耗模式。在Linux系统中&#xff…

智能运维的集中告警平台实战思路 —— 紧耦合还是宽融合?

作者&#xff1a;擎创科技产品总监 Daniel 本文是节选&#xff0c;如感兴趣可留言一起探讨。 &#xff08; 我们在确定一个产品的思路和方向时&#xff0c;经常面临截然不同的选择。如同此文探讨的集中告警平台是否应跟集中监控平台紧绑定或松融合&#xff0c;具体的实战案例…

[译] Dart 3 发布了

[译] Dart 3 发布了 原文 https://medium.com/dartlang/announcing-dart-3-53f065a10635 https://ducafecat.com/blog/dart-3 来自 Google I/O 2023 的问候。今天&#xff0c;我们在 Mountain View 现场宣布 Dart 3——迄今为止最大的 Dart 发布&#xff01;Dart 3 包含三个主要…

Springboot +Flowable,各种历史信息如何查询(一)

一.简介 正在执行的流程信息是保存在以 ACT_RU_ 为前缀的表中&#xff0c;执行完毕的流程信息则保存在以 ACT_HI_ 为前缀的表中&#xff0c;也就是流程历史信息表。 假设有一个流程&#xff0c;流程图如下&#xff1a; 当这个流程执行完毕后&#xff0c;以 ACT_RU_ 为前缀的…

小黑子—多媒体技术与运用基础知识三:数字图形图像处理技术

多媒体技术与运用3.0 多媒体系列第三章1. 颜色科学1.1 颜色的性质1.1.1 颜色的物理性质1.1.2颜色三特性1.1.3三原色与三补色 1.2 颜色空间1.2.1 与设备无关的颜色空间1.2.1 与设备相关的颜色空间 1.3 常见的多媒体系统颜色空间1.3.1 RGB颜色空间1.3.2 CMYK颜色模型1.3.3 HSB颜色…

什么是模型鲁棒性和泛化能力

目录 1、鲁棒性 2、泛化能力 1、鲁棒性 定义&#xff1a;在统计学领域和机器学习领域&#xff0c;对异常值也能保持稳定、可靠的性质&#xff0c;称为鲁棒性。比如说&#xff0c;计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下&#xff0c;能否不死机、不崩溃&a…

17 KVM虚拟机配置-XML配置文件示例

文章目录 17 KVM虚拟机配置-XML配置文件示例17.1 概述17.2 示例一17.3 示例二 17 KVM虚拟机配置-XML配置文件示例 17.1 概述 本节给出一个基本的AArch64虚拟机和一个x86_64虚拟机的XML配置文件示例&#xff0c;供参考。 17.2 示例一 一个包含基本元素的AArch64架构虚拟机的…

Psychophysiology:降维独立成分分析(rdICA)对ERP测量的影响

导读 独立成分分析(ICA)是一种有效且普遍使用的EEG信号处理工具。为了减少计算时间&#xff0c;许多分析管道在ICA之前降低了EEG维数。Artoni及其同事(2018)的研究中就详细地描述了这种降维ICA(rdICA)对独立成分的偶极性和可靠性的有害影响。虽然ICA对于那些直接分析独立成分感…

【网络安全】记一次网站站点渗透

前言 遇到一个站&#xff0c;后端是 Node.js 写的&#xff0c;对于这种类型的站点&#xff0c;一般比较难 getshell&#xff0c;但也实现了最终的目标&#xff0c;拿到后台权限 信息搜集 先进行常规的信息搜集&#xff0c;子域名扫描、端口扫描、目录扫描等 这个站后端脚本语…

如何实现文件共享,文件共享的设置方法-镭速

文件共享是指在计算机网络中&#xff0c;多个用户可以通过共享相同的文件或目录来实现数据交换和协作工作。这种方式可以使多个用户在不同地点的计算机上访问并编辑同一个文件&#xff0c;从而实现更加高效和便捷的合作。 实现文件共享是计算机网络中常见的需求&#xff0c;可以…

关于在 MySQL 排序中使用索引这件事!

文章目录 1. 排序的两种方式2. 索引排序2.1 案例一2.2 案例二2.3 案例三2.4 案例四2.5 案例五2.6 案例六2.7 案例七2.8 案例八 3. 其他情况3.1 多表联查3.2 order by null 4. 小结 前面跟小伙伴们分享的索引相关的内容&#xff0c;基本上都是在 where 子句中使用索引&#xff0…

java环境变量 的配置与详解

笔者这学期开始学习java课程&#xff0c;学习java开发首先需要配置java运行环境变量。虽然上课老师也讲了如何配置java环境变量&#xff0c;可是笔者的同学还是有好多都不会配置&#xff0c;所以笔者最近配置了特别多次java环境变量。如下笔者详细解释从JDK安装到环境变量的装配…

rsync本地或远程备份

这里写自定义目录标题 rsync作用rsync用法scp /cp/rsync区别ssh无密码登陆原理远程备份案例远程备份脚本脚本1&#xff1a;脚本2 本地备份常用参数 rsync作用 实现本地或远程 全量备份 增量备份 rsync用法 rsync -avz 本机文件夹 远程主机用户名IP:远程主机文件夹 scp /cp/…

发电厂能源管理远程监控解决方案

发电厂能源管理远程监控解决方案 项目背景 在我国经济快速发展的同时&#xff0c;对用电的要求也越来越高。为了节约能源和降低成本&#xff0c;国家正在积极推动发电厂的技术改造。发电厂作为发电企业的核心&#xff0c;其耗能状况关系到整个国家的经济发展。为进一步加强对电…