使用ldap客户端创建zimbra ldap用户的格式

命令如下 ldif cat << EOF | ldapadd -x -W -H ldap://:389 -D "uid=zimbra,cn=admins,cn=zimbra" dn: uid=jak1,ou=people,dc=mail,dc=xxxxx2021,dc=com zimbraAccountStatus: active displayName: jak1 givenName: jak1 sn: jak1 zimbraMailStatus: enabled objectClass: inetOrgPerson objectClass: zimbraAccount objectClass: amavisAccount zimbraId: e2214a66-3ga2-4241-9223-44f222ce0522 zimbraCreateTimestamp: 20191102062818.876Z zimbraMailHost: mail.xxxx2021.com zimbraMailTransport: lmtp:mail.xxxx2021.com:7025 zimbraMailDeliveryAddress: scott8@mail.xxxx2021.com mail: jak1@mail.xxxx2021.com cn: jak1 uid: jak1 userPassword:: e1NTSEE1MTJ9ZzBzZGlXRlBjbDQxa2xmZ200YXc1ZkJzSGQzVXNBdVBydUlKRnZ LTExYby9HWXBoUkNTMzZYMEx5VnpCZUJPMGJNTCtTV2IwSnhkaHdudTViR0c1bTJabFVhU3R1N1J3 EOF zimbraAccountStatus 为账户设置中的状态 zimbraId 唯一的值 givenName 姓 displayName 显示名字 bash 1 ldapsearch -LLL -w 99tJFkhVfn -H ldap://172.31.110.115:389 -D "uid=zimbra,cn=admins,cn=zimbra"|less

 ·  · 

Kubernetes包管理 - Helm

什么是 Helm Helm 是一个用于管理 Kubernetes 应用程序的包管理工具。它允许您定义、安装和升级 Kubernetes 应用程序,以简化应用程序部署和管理的过程。 在 Kubernetes 中,应用程序被打包为一个或多个称为 “Charts” 的 Helm 资源。一个 Chart 是一个预定义的目录结构,包含了用于部署应用程序的 Kubernetes 资源清单模板。Chart 可以包含 Deployment、Service、ConfigMap、Ingress 等 Kubernetes 资源的定义。 使用 Helm,您可以将应用程序打包为一个 Chart,并使用 Helm 客户端来安装和管理 Chart。这使得应用程序的部署过程更加简单、可重复和可扩展。您可以根据需要部署多个实例,轻松地进行升级和回滚操作,并使用 Helm 提供的值覆盖机制来自定义每个实例的配置。 最重要的是,Helm 支持使用 Helm 仓库来共享和发布 Charts。Helm 仓库是一个集中存储 Charts 的地方,供用户从中搜索和安装 Charts。Helm 仓库可以是公共的,也可以是私有的,您可以自己搭建私有仓库来管理自己的 Charts。 Helm 所作的事情 Helm 管理名为 chart 的Kubernetes包的工具。故 Helm 可以做以下的事情: 创建一个新的 chart 将 chart 打包成归档 (tgz) 文件 与存储 chart 的仓库进行交互 在现有的 Kubernetes 集群中安装和卸载 chart 管理与Helm一起安装的 chart 的发布周期 Helm中的术语 chart:类似于rpm包,deb包,包含Kubernetes资源所需要的必要信息。 repo:chart仓库,类似于yum的仓库,chart仓库是一个简单的HTTP服务。 values:提供了自定义信息用来覆盖模板中的默认值。 release :chart安装后的版本记录。 Helm 与 YAML 资源清单比有什么优势? 模板化和参数化: Helm 使用 Go 的模板引擎来创建 Kubernetes 资源清单。这使得您可以在 Chart 中使用模板来定义资源配置的部分内容,例如标签、名称、端口等。同时,Helm 还支持使用参数化的值,允许您根据不同的环境或需求来自定义 Chart 的配置。这样一来,您可以根据需要生成不同的 Kubernetes 资源清单,而无需手动编辑每个清单文件。 可重用性: Helm 提供了一种将应用程序打包为 Chart 的方式,可以将 Chart 存储在 Helm 仓库中进行共享和重用。这样,您可以使用其他人创建的 Charts 来快速部署常见的应用程序,避免从头开始编写和管理 Kubernetes 资源清单。同时,您也可以将自己的应用程序打包为 Chart,方便自己和团队在不同环境中部署和管理。 版本管理和升级: 使用 Helm,您可以对已安装的 Chart 进行版本管理和升级。当应用程序的配置或代码发生变化时,您可以通过升级 Chart 来自动应用这些更改,而无需手动修改和重新部署 Kubernetes 资源清单。Helm 还提供了回滚功能,允许您在升级出现问题时快速回退到之前的版本。 依赖管理: Helm 允许您在 Chart 中定义和管理依赖关系。这意味着您可以在部署应用程序时自动解析和安装它所依赖的其他 Charts。这样,您可以轻松地管理应用程序所需的其他资源,减少手动处理依赖关系的工作。 部署的一致性和标准化: Helm 提供了一种标准的部署方式,使得不同团队或开发者之间可以使用相同的工具和流程来管理应用程序的部署。这样可以确保在不同环境中的一致性,并降低由于不同部署方式导致的错误和配置差异。 可管理的 Charts: Helm Charts 是可管理的,您可以在 Chart 中定义预先配置的模板、默认值、钩子和配置验证。这使得管理应用程序的配置和部署过程更加灵活和可控。 社区支持和生态系统: Helm 是一个活跃的开源项目,拥有庞大的用户社区和丰富的生态系统。这意味着您可以轻松地找到文档、示例、教程和问题解答,并从社区中获取支持和贡献。 可扩展性和插件支持: Helm 提供了插件机制,允许您扩展 Helm 的功能。您可以使用插件来添加自定义的命令、功能和工作流程,以满足特定需求或自动化常见的任务。 可视化界面和用户友好性: Helm 可以与各种第三方工具和平台集成,提供可视化界面和用户友好的操作方式。这使得非技术人员或不熟悉命令行的开发人员也能够方便地部署和管理应用程序。 安装helm Helm 安装主要官方提供了几种安装方式...

 ·  · 

ch4 OpenVPN的统一身份认证方案及实现方法

OpenVPN 2.0与更高版本允许OpenVPN服务器从客户端安全地获取用户名和密码,并将该信息用作认证基础。 方法1:通过本地证书密钥认证。 默认不配置,openvpn即使用证书进行身份认证。 (1)编辑主服务器配置文件/etc/openldap/slapd.conf,取消如下行的注释: 方法2:本地文件认证 在使用身份验证时,需要将 auth-user-pass 指令添加到客户端配置文件中,设置后OpenVPN客户端向用户索要用户名/密码,并将其通过安全的TLS通道传递给服务器进行验证。 服务端配置文件需要增加配置指令 auth-user-pass-verify auth-pam.pl via-file 使用脚本插件。auth-pam.pl 在源码包 sample/sample-script 路径下。 text 1 plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login 生产环境下官方推荐使用 openvpn-auth-pam 插件进行验证,相比于 auth-pam.pl,openvpn-auth-pam 插件具有多个优点: openvpn-auth-pam 使用拆分权限执行模型来提高安全性。 C编译的插件比脚本运行速度更快。 OpenVPN可以通过虚拟内存(而不是通过文件或环境)将用户名/密码传递给插件,这对于服务器上的本地安全性更好。 获取openvpn-auth-pam插件 openvpn-auth-pam插件在openvpn代码目录src/plugins/auth-pam 下,运行 make && make install 进行安装,会自动复制到openvpn安装好的 lib/openvpn/plugins 目录下。 开启密码认证 默认情况下, 在服务器上使用 auth-user-pass-verify 或用户名/密码 插件 将启用双重身份验证,要求客户端证书和用户名/密码身份验证都必须成功,才能对客户端进行身份验证。可以选择关闭客户端证书认证。 text 1 2 client-cert-not-required username-as-common-name # 用户名作为通用名称 开启后需要在客户端注释 cert 和 key的配置 方法3:数据库认证 法2:利用的脚本程序(shell,php等)本地文件去读数据库。 法1:用pam_mysql 方法:4:ldap统一用户认证 openvpn-auth-ldap 利用第一个文件认证的思路,去LDAP查询,还可以和本地文件比较。如 ldap认证原理图 配置openvpn服务端通过ldap进行身份验证 配置OpenVPN基 LDAP的身份验证,需要安装用于LDAP身份验证的OpenVPN插件。openvpn-auth-ldap,它通过LDAP为OpenVPN实现身份认证。 CentOS中 openvpn-auth-ldap 插件在EPEL中 ubuntu与Centos都可以通过对应的包管理工具进行插件安装。...

 ·  · 

ch3 OpenVPN的高可用配置

方案1:在Vpn 客户端使用多个配置文件实现(由用户选择拨号)类 方案1:需求分析与操作过程讲解。 基本说明: 生产场景中比较规范的做法是让所有的VPN SERVER尽可能共享同一套 server,ca证书或者连接同一个认证系统(即使是跨机房)。这样只需要一份客户端认证和文件和多份指定不同vpn client的配置文件即可实现vpn的负载均衡了。 总结结论: 1)该负载均衡方案操作简单,不引入多余服务(后面的方案都会引入服务),因此不会增加多余的单点故障,当用户连接的vpn不能使用时,用户就可以人工选择拨号其他的VPN服务器。 2)如果使用者为公司内部工作人员,此种方案是值得推荐的。老男孩老师推荐。 3)从广义上讲这是在用户端实现的负载均衡方案,类似早期的华军下载站一样,由用户选择下载站点,而不是用什么智能DNS等复杂的业务模式。 缺点:当一个vpnserver不能使用时,不能自动连上别的vpn server。 方案2:通过在客户端配置文件实现负载均衡(客户端文件里随机连接服务器) 提示:同方案1,所有VPN SERVER 需要共享同一套 server,ca证书。openvpn 服务器一套keys的多份拷贝方式式。 text 1 2 3 4 remote 10.0.0.28 52115 remote 10.0.0.552115 remote-random resolv-retry 20 implementing-a-load-balancing-failover-configuration 总结结论: 1)该负载均衡方案操作简单,不引入多余服务(后面的方案都会引入服务),因此不会增加多余的单点故障,,当用户连接的vpn不能使用时,电脑可以重新再次自动拨号连接VPN服务器。 2)如果使用者为公司内部工作人员,此种方案是值得推荐的。-老男孩老师推荐。如果是使用者为外部人员,那么这个方案依然是可以的。 3)本方案是比较标准的在VPN用户端,由客户端配置参数实现的负载均衡的方案,是非常值得推荐的方案。 4)和方案1对比,方案2的配置更简单,仅需一个配置文件多个remote参数,拨号时客户端会随机自动选择拨号,方案1则需要手动选择不同的配置文件拨号。当正在连接的VPN服务端右机时,那么此时方案2不需要人工干预,客户端的VPN会自动判断并且自动重新连接其他的可用vpn服务器。. 方案3:通过域名加DNS轮询的方式实现负载均衡(由DNS自动分配vpn) 总结结论: 1)通过dns轮询实现VPN负载均衡方案操作比较复杂,引入了DNS服务,因此增加了单点故障及维护成本,当用户连接的vpn不能使用时,用户也需要重新人工再次拨号。 2)如果使用者为公司内部工作人员,此种方案是不推荐的。如果是外部的用户可以考虑用这种方式,但是复杂度比方案1大了很多(如果存在DNS服务器加配置还可以)。 3)当机房多,配置文件多时,无需用户选择服务器,只需拨号即可。如果多个VPN在一个机房还好一些,如果多个VPN服务器不在一个机房,还需要通过IPSEC进行连接。 总之,此法很麻烦,中小型公司老男孩老师极不推荐。 4)DNS轮询会遭遇到客户端DNS缓存问题,从而导致服务切换失效。。 one-network-interface-on-a-public-network

 ·  · 

ch2 从零开始安装OpenVPN

OpenVPN安装环境需求 设备 IP 笔记本或PC (adsl上网) 10.0.0.0/24 办公室(DHCP) OpenVPN Server双网卡 eth0:10.0.0.4/24(外网) eth1:192.168.100.4(内网) IDC机房内部局域网服务器 192.168.100.0/24 IDC机房内网服务器无外网IP,又希望ADSL上网笔记本(运维人员),在不同的网络能够直接访问 实现需求:在远端通过VPN客户端(笔记本)拨号到VPN,然后在笔记本电脑上可以直接访问vpnserver所在局域网内的多个servers,进行维护管理 环境 VPN-Server eth0:10.0.0.4(外网IP)。GW:10.0.0.1, dns:10.0.0.1。 eth1:172.0.0.1(内网IP)。GW:不配 提示:检查是否可以ping通client eth0 IP。 App client Server:ethO:172.0.0.2。GW:路由器。提示:检查是否可以ping通VPN-Server eth1 IP。 OpenVPN 解决方案图解 部署OpenVPN Server Reference download lzo installing-openvpn openvpn offical releases openvpn github 安装前准备 openvpn支持的平台: Linux kernel 2.6+ OpenBSD 5.1+ Mac OS X Darwin 10.5+ FreeBSD 7.4+ Windows (WinXP and higher) 下载地址: openvpn-releases openvpn github 安装openvpn的依赖项: 0.9.8版或更高版本的OpenSSL库,对于加密是必需的 PolarSSL库,是加密的替代版本1.1或更高版本 LZO实时压缩库,连接压缩所需 bash 1 yum install openssl-devel lzo-devel pam-devel -y bash 1 2 3 4 5 6 ....

 ·  ·