centos7部署openvpn+ad认证

根据网上各位大神的文档参考结合整理出,此部署方式为我工作单位实际生产使用环境。具体的域名参数等需要使用者自己修改。

大家要是觉得写得有用不妨关注下我,粉丝不多有空可以交流下。看到消息我会回复。

1、安装EPEL仓库:可以通过两种方法安装EPEL仓库,使用YUM命令或手动安装。

使用YUM命令安装:

yum install -y epel-release

2、清理YUM缓存并生成新的缓存:安装EPEL仓库后,需要更新yum缓存以识别新安装的仓库。

     yum clean all

     yum makecache

3、安装openvpn 证书 ad插件

     yum install openvpn easy-rsa openvpn-auth-ldap -y

4、将 easy-rsa 脚本从 /usr/share/easy-rsa 复制到 /etc/openvpn 目录以用于您的 VPN 实例:

     cp -r /usr/share/easy-rsa /etc/openvpn

5、切换到新的easy-rsa目录开始设置(你的版本可能不是3.0.8)

      cd /etc/openvpn/easy-rsa/3.0.8

这些命令将构建一个目录, /etc/openvpn/easy-rsa/3.0.8/pki其中包含您最终需要的所有文件。

6、准备生成证书用的CSR相关配置

cat <<EOF > /etc/openvpn/easy-rsa/vars

#公司信息,根据情况自定义

set_var EASYRSA_REQ_COUNTRY "CN"

set_var EASYRSA_REQ_PROVINCE "ShangHai"

set_var EASYRSA_REQ_CITY "Shang Hai"

set_var EASYRSA_REQ_ORG "test"

set_var EASYRSA_REQ_EMAIL "test@163.com"

set_var EASYRSA_REQ_OU "test Organizational Unit"

#证书有效期 10年

set_var EASYRSA_CA_EXPIRE 3650

set_var EASYRSA_CERT_EXPIRE 3650

EOF

7、创建Easy-RSA的工作目录并初始化PKI:

cd /etc/openvpn/easy-rsa/ ./easyrsa init-pki

8、生成CA证书:

创建并签发一个CA(证书颁发机构)证书:

./easyrsa build-ca nopass

这里的nopass参数表示在生成证书时不设置密码。

9、生成DH参数:

生成Diffie-Hellman参数,这是OpenVPN加密通信所需的:

./easyrsa gen-dh

10、生成服务器证书和密钥:

生成服务器证书和密钥,同样使用nopass避免设置密码:

./easyrsa gen-req server nopass

./easyrsa sign-req server server

11、生成客户端证书和密钥:

为客户端生成证书和密钥,您可以为每个客户端重复此步骤,并为每个证书指定一个唯一的名称:

./easyrsa gen-req client1 nopass

./easyrsa sign-req client client1

12、生成TLS认证密钥:

为了增加安全性,您可以生成一个TLS认证密钥:

openvpn --genkey --secret ta.key

13、生成CRL(证书撤销列表):

如果需要,可以生成CRL以便将来可以撤销证书:

./easyrsa gen-crl

14、复制证书和密钥到OpenVPN配置目录:

将生成的证书和密钥复制到OpenVPN的配置目录:

cp pki/ca.crt /etc/openvpn/

cp pki/issued/server.crt /etc/openvpn/

cp pki/private/server.key /etc/openvpn/

cp ta.key /etc/openvpn/

cp pki/dh.pem /etc/openvpn/

15、配置server.conf

[root@localhost openvpn]# cat server.conf

port 1194   #监听端口

proto tcp   #监听协议

dev tun     #采用隧道

ca ca.crt   #ca证书路劲

cert server.crt    #服务器证书路劲

key server.key  #服务器秘钥

dh dh.pem    #秘钥交换协议文件

server 10.248.0.0 255.255.254.0   #给客户端分配的地址,注意:不能和vpn服务器的内部地址相同

ifconfig-pool-persist ipp.txt    #访问记录

push "route 10.8.0.0 255.255.0.0"    #允许客户端访问的地址网段

#push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 10.8.10.1"   #DHCP分配的DNS

push "dhcp-option DNS 223.6.6.6"

keepalive 10 120   #活动时间,10秒ping一次,120秒如果未收到响应视为断线

#cipher AES-256-CBC

max-clients 1024   #允许最大连接数

#user nobody     #用户

#group nobody    #用户组

persist-key

persist-tun

status openvpn-status.log

log         openvpn.log

verb 5

plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so  "/etc/openvpn/auth/ldap.conf cn=%u"

client-cert-not-required

#verify-client-cert

username-as-common-name

16、配置ldap.conf

[root@localhost openvpn]# cat auth/ldap.conf

<LDAP>

    # LDAP server URL

    #更改为AD服务器的ip

    URL     ldap://10.8.10.12:389

    # Bind DN (If your LDAP server doesn't support anonymous binds)

    # BindDN        uid=Manager,ou=People,dc=example,dc=com

    #更改为域管理的dn,可以通过ldapsearch进行查询,-h的ip替换为服务器ip,-d换为管理员的dn,-b为基础的查询dn,*为所有

    #ldapsearch -LLL -x -h 172.16.76.238 -D "administrator@xx.com" -W -b "dc=xx,dc=com" "*"

    BindDN      "CN=ldap,OU=App,DC=test,DC=com"

    # Bind Password

    # Password  SecretPassword

    #域管理员的密码

    Password    v0CZ123456

    # Network timeout (in seconds)

    Timeout     15

    # Enable Start TLS

    TLSEnable   no

    # Follow LDAP Referrals (anonymously)

    #FollowReferrals yes

    # TLS CA Certificate File

    #TLSCACertFile  ca.crt

    # TLS CA Certificate Directory

    #TLSCACertDir   /etc/ssl/certs

    # Client Certificate and key

    # If TLS client authentication is required

    #TLSCertFile    /usr/local/etc/ssl/client-cert.pem

    #TLSKeyFile /usr/local/etc/ssl/client-key.pem

    # Cipher Suite

    # The defaults are usually fine here

    # TLSCipherSuite    ALL:!ADH:@STRENGTH

</LDAP>

<Authorization>

    # Base DN

    #查询认证的基础dn

    BaseDN      "OU=上海总部,DC=test,DC=com"

    # User Search Filter

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

    #其中sAMAccountName=%u的意思是把sAMAccountName的字段取值为用户名,后面“memberof=CN=myvpn,DC=xx,DC=com”指向要认证的vpn用户组,这样任何用户使用vpn,只要加入这个组就好了

    #SearchFilter    "(&(sAMAccountName=%u)(memberof=CN=myvpn,OU=IXMSOFTLDAP,DC=ixmsoft,DC=com)"

    SearchFilter    "(&(sAMAccountName=%u))"

    # Require Group Membership

    RequireGroup    false

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

    #PFTable    ips_vpn_users

    <Group>

        #BaseDN     "ou=Groups,dc=example,dc=com"

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

        #MemberAttribute    uniqueMember

        # Add group members to a PF table (disabled)

        #PFTable    ips_vpn_eng

        BaseDN      "OU=上海总部,DC=test,DC=com"

        SearchFilter    "(|(cn=openvpn))"

        MemberAttribute     "member"

    </Group>

</Authorization>

17、配置路由和NAT规则:

开启IP转发:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

sysctl -p

18、启动openvpn服务,需要先创建nohup.out文件,文件内容空白即可

先创建openvpn.log  openvpn-status.log nohup.out 三个文件以防报错

nohup /usr/sbin/openvpn --cd /etc/openvpn/ --config server.conf &

19、下载ca.crt 文件到本地客户端使用,路径为 /etc/openvpn/ca.crt

20、客户端配置文件

client

dev tun

proto tcp 

remote 10.8.100.139 1194 

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

auth-user-pass

#static-challenge "Enter Google Authenticator Token" 1

#comp-lzo 

reneg-sec 0

verb 5

21、配置iptables,需要先安装iptables

yum install -y iptables-services

    systemctl start iptables

    systemctl enable iptables

    systemctl status iptables

[root@localhost openvpn]# cat /etc/sysconfig/iptables

# Generated by iptables-save v1.4.21 on Mon Apr 22 17:38:03 2024

*filter

:INPUT DROP [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [60:4914]

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

-I INPUT 1 -i ens192 -p udp --dport 1194 -j ACCEPT

-I INPUT 1 -i ens192 -p tcp --dport 1194 -j ACCEPT

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -o tun0 -j ACCEPT

-A FORWARD -m state --state NEW -o tun+ -j ACCEPT

COMMIT

# Completed on Mon Apr 22 17:38:03 2024

# Generated by iptables-save v1.4.21 on Mon Apr 22 17:38:03 2024

*nat

:PREROUTING ACCEPT [184:18930]

:INPUT ACCEPT [19:4656]

:OUTPUT ACCEPT [15:941]

:POSTROUTING ACCEPT [119:10061]

-A POSTROUTING -s 10.248.0.0/23 -d 0.0.0.0/0 -o ens192 -j MASQUERADE

-A POSTROUTING -j MASQUERADE

COMMIT

# Completed on Mon Apr 22 17:38:03 2024

*filter

:INPUT ACCEPT [396:29660]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [217:27524]

-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

-A FORWARD -i tun0 -j ACCEPT

COMMIT

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 安装OpenVPN 首先,安装OpenVPN及其依赖包: ``` yum install -y epel-release yum install -y openvpn easy-rsa ``` 2. 生成证书 创建一个目录用于存储证书: ``` mkdir /etc/openvpn/easy-rsa cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/ ``` 编辑文件 `/etc/openvpn/easy-rsa/vars`,修改以下变量: ``` export KEY_COUNTRY="CN" export KEY_PROVINCE="Beijing" export KEY_CITY="Beijing" export KEY_ORG="My Company" export KEY_EMAIL="admin@example.com" export KEY_OU="My Unit" ``` 切换到 `/etc/openvpn/easy-rsa/` 目录,执行以下命令: ``` ./easyrsa init-pki ./easyrsa build-ca ./easyrsa gen-dh ./easyrsa gen-req server nopass ./easyrsa sign-req server server ./easyrsa gen-req client nopass ./easyrsa sign-req client client ``` 以上命令中,第一行初始化PKI(public key infrastructure)目录,第二行生成CA(Certificate Authority)证书,第三行生成DH(Diffie-Hellman)参数,第四行生成服务器证书请求,第五行签署服务器证书请求,第六行生成客户端证书请求,第七行签署客户端证书请求。 3. 配置OpenVPN 创建配置文件 `/etc/openvpn/server.conf`,并添加以下内容: ``` port 1194 proto udp dev tun ca /etc/openvpn/easy-rsa/pki/ca.crt cert /etc/openvpn/easy-rsa/pki/issued/server.crt key /etc/openvpn/easy-rsa/pki/private/server.key dh /etc/openvpn/easy-rsa/pki/dh.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" keepalive 10 120 cipher AES-256-CBC user nobody group nobody persist-key persist-tun status openvpn-status.log verb 3 ``` 以上配置文件中,`port` 指定OpenVPN监听的端口号,`proto` 指定使用的协议(UDP或TCP),`dev` 指定使用的虚拟网络设备,`ca`、`cert`、`key`、`dh` 分别指定证书和私钥文件的路径,`server` 指定虚拟IP地址池,`ifconfig-pool-persist` 指定分配的IP地址和客户端名称的持久化存储文件,`push` 指令用于将服务端配置推送给客户端,`keepalive` 指定心跳包的时间间隔和重试次数,`cipher` 指定加密算法,`user`、`group` 指定OpenVPN进程的运行用户和组,`persist-key`、`persist-tun` 分别指定持久化存储密钥和虚拟网络设备,`status` 指定状态日志文件,`verb` 指定日志输出级别。 4. 启动OpenVPN 启动OpenVPN服务: ``` systemctl start openvpn@server ``` 查看服务状态: ``` systemctl status openvpn@server ``` 如果服务正常运行,可以通过以下命令查看OpenVPN服务器的IP地址: ``` ip addr show tun0 ``` 5. 客户端配置 在客户端电脑上安装OpenVPN客户端,下载证书和配置文件: ``` scp root@<server_ip>:/etc/openvpn/easy-rsa/pki/ca.crt <destination_folder> scp root@<server_ip>:/etc/openvpn/easy-rsa/pki/issued/client.crt <destination_folder> scp root@<server_ip>:/etc/openvpn/easy-rsa/pki/private/client.key <destination_folder> scp root@<server_ip>:/etc/openvpn/client.ovpn <destination_folder> ``` 编辑文件 `client.ovpn`,将以下内容替换为实际值: ``` remote <server_ip> 1194 proto udp dev tun nobind persist-key persist-tun ca ca.crt cert client.crt key client.key cipher AES-256-CBC ``` 将 `ca.crt`、`client.crt` 和 `client.key` 移动到OpenVPN客户端的配置目录,例如 `/etc/openvpn/client/`。 启动OpenVPN客户端: ``` openvpn --config /etc/openvpn/client/client.ovpn ``` 如果连接成功,可以通过以下命令查看客户端的IP地址: ``` ip addr show tun0 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值