暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux安全(一)——OpenVPN学习

爱可可的人生记录仪 2019-10-01
1695
祝福祖国生日快乐!

虚拟专用网络(Virtual Private Network)是架设在公网设施上,建立私有和安全的连接,为通信提供安全保护的技术。当然,对个人而言,它还有一个更有用的好处,就不在此赘述了。


VPN部署技术主要有3类

点对点的隧道协议(PPTP): 两个隧道,TCP连接隧道,GRE传输隧道

互联网协议安全(IPSec): 基于IP,加密认证每个IP数据包,技术成熟,配置复杂,典型代表strongSwan和FreeS/WAN。

安全接口层/安全传输层协议(SSL/TLS): 使用证书进行认证,使用非对称算法对数据加密。通过对tun/tap设备实现用户态程序和内核的交互。典型代表OpenVPN。


OpenVPN的特性

对任何网络通过一个UDP或者TCP端口连建立隧道

可架构集群系统,支持上千用户连接

使用openSSL库的任意加密算法,可以选择静态密码或者证书公私钥加密

可以对数据流实时压缩

支持NAT,也提供windows和mac的GUI工具等等

支持对端DHCP

配置简单,学习成本低


点对点的OpenVPN部署

需求:远程数据库的备份等

client(121.22.17.88)<——>Internet<——> server(88.22.17.18) 

1.安装

server和client同时执行:

    # lzo库用户压缩,openssl用于加密
    yum install -y lzo lzo-devel openssl openssl-devel
    # 需要epel扩展
    yum install -y openvpn

    2.在server端生成静态密码keke.key,并把该文件传给client(也可以复制key的内容,但注意600权限)

      openvpn --genkey --secret keke.key


      ll keke.key
      -rw------- 1 root root 637 Oct  1 12:35 keke.key

      3.创建隧道

      server

        openvpn --remote 121.22.17.88 --dev tun0 --ifconfig 10.10.10.1 10.10.10.2 --secret keke.key --daemon

        client

          openvpn --remote 88.22.17.18 --dev tun0 --ifconfig 10.10.10.2 10.10.10.1 --secret keke.key --daemon

          --ifconfig,指定隧道本端和对端ip地址,注意顺序

          --daemon,指定使用daemon进程模式

          5.验证

          client

            #可以ping通,可以ssh过去说明成功了
            ping 10.10.10.1
            ssh 10.10.10.1
            #openvpn默认会使用udp的1194端口,注意开启
            ss -tunlp
            udp   UNCONN   0   0   *:1194    *:*   users:(("openvpn",10386,5))
            #日志信息在/var/log/messages,可以分析排错

            6.流程

            tun和tap是linux的虚拟网络设备,tun可以理解为点对点的设备,tap可理解为Ethernet设备,tun工作流程如上图所示,接收过程箭头反过来。


            远程访问虚拟专用网络部署

            1. 在服务器生成CA证书,服务器证书,客户端证书(方法不唯一)

              yum install easy-rsa -y
              cp vars.example etc/openvpn/easy-rsa/vars
              cp -r /usr/share/easy-rsa/3.0.6/* /etc/openvpn/easy-rsa/
              cp /usr/share/doc/openvpn-2.4.7/sample/sample-config-files/server.conf /etc/openvpn/
              cat >> /etc/openvpn/easy-rsa/vars <<EOF
              export KEY_COUNTRY="CN"
              export KEY_PROVINCE="js"
              export KEY_CITY="hah"
              export KEY_ORG="ha"
              export KEY_EMAIL="haha@keke.cn"
              export KEY_OU="I see you"
              EOF
               source ./vars
              ./easyrsa init-pki
              ./easyrsa build-ca
              ./easyrsa gen-req vpnserver
              ./easyrsa sign server vpnserver
              ./easyrsa gen-req vpnclient
              ./easyrsa sign client vpnclient
              ./easyrsa gen-dh
              openvpn --genkey --secret ta.key
               #证书生成过程中,会填写一个common name字段,建议不要乱写

              2.服务端配置openvpn

                cat /etc/openvpn/server.conf
                port 1194
                proto udp
                dev tun
                #证书文件的位置按实际
                ca /etc/openvpn/easy-rsa/pki/ca.crt
                cert /etc/openvpn/easy-rsa/pki/vpnserver.crt
                key /etc/openvpn/easy-rsa/pki/vpnserver.key 
                dh /etc/openvpn/easy-rsa/pki/dh.pem
                server 10.10.10.0 255.255.255.0 #分配给客户端的隧道ip池
                push "route 172.16.88.0 255.255.255.0"  #允许客户端访问内网     
                route 192.168.0.0 255.255.255.0  #配置服务器增加一条到客户端网络的路由
                client-to-client
                keepalive 10 120
                comp-lzo #启用压缩
                max-clients 100
                user nobody
                group nobody
                persist-key #收到SIGUSR1时不重新读取key文件
                persist-tun #收到SIGUSR1时不关闭tun虚拟网口
                status /var/log/openvpn-status.log #指定状态日志位置
                log-append /var/log/openvpn.log
                verb 4

                启用iptables转发(此步骤当需要直接访问后端服务器时才需要)

                  echo 1 >/proc/sys/net/ipv4/ip_forward
                  #tun0本质还是网卡,所以要配置转发支持
                  iptables -A FORWARD -i tun0 -j ACCEPT
                  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
                  iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
                  #同时在后端服务器增加一条路由
                  route add -net 192.168.0.0/24 gw 172.16.88.2

                  启动

                    openvpn --daemon --config etc/openvpn/server.conf

                    3.客户端配置(一般为windows)

                    下载地址:https://files02.tchspt.com/storage2/temp/openvpn-install-2.4.7-I606-Win10.exe

                    安装就不说了,把需要的证书文件及配置文件vpnclient.ovpn放入config即可,配置文件内容如下。

                      client
                      proto udp
                      dev tun
                      remote 22.22.22.22 1194 #按实际地址修改
                      nobind
                      ca ca.crt
                      cert vpnclient.crt
                      key vpnclient.key
                      ns-cert-type server
                      keepalive 10 120
                      comp-lzo
                      max-clients 100
                      persist-key
                      persist-tun
                      verb 4
                      log-append /var/log/openvpn.log

                      最后启动连接就行了,如果有问题(应该不会有),请查看日志。




                      部分内容来自网络,如有侵权请联系作者删除。



                      文章转载自爱可可的人生记录仪,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论