ืืจื’ื•ืŸ ืขื‘ื•ื“ื” ืžืจื—ื•ืง ืฉืœ ืืจื’ื•ืŸ SMB ื‘-OpenVPN

ื”ืฆื”ืจืช ื”ื‘ืขื™ื”

ื”ืžืืžืจ ืžืชืืจ ืืช ืืจื’ื•ืŸ ื”ื’ื™ืฉื” ืžืจื—ื•ืง ืœืขื•ื‘ื“ื™ื ื‘ืžื•ืฆืจื™ ืงื•ื“ ืคืชื•ื— ื•ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื• ื”ืŸ ืœื‘ื ื™ื™ืช ืžืขืจื›ืช ืื•ื˜ื•ื ื•ืžื™ืช ืœื—ืœื•ื˜ื™ืŸ, ื•ื”ืŸ ื™ื•ืขื™ืœ ืœื”ืจื—ื‘ื” ื›ืืฉืจ ื™ืฉ ืžื—ืกื•ืจ ื‘ืจื™ืฉื™ื•ื ื•ืช ื‘ืžืขืจื›ืช ื”ืžืกื—ืจื™ืช ื”ืงื™ื™ืžืช ืื• ื”ื‘ื™ืฆื•ืขื™ื ืฉืœื” ืื™ื ื ืžืกืคืงื™ื.

ืžื˜ืจืช ื”ืžืืžืจ ื”ื™ื ืœื™ื™ืฉื ืžืขืจื›ืช ืฉืœืžื” ืœืžืชืŸ ื’ื™ืฉื” ืžืจื—ื•ืง ืœืืจื’ื•ืŸ, ืฉื”ื™ื ืžืขื˜ ื™ื•ืชืจ ืž"ื”ืชืงื ืช OpenVPN ืชื•ืš 10 ื“ืงื•ืช."

ื›ืชื•ืฆืื” ืžื›ืš, ื ืงื‘ืœ ืžืขืจื›ืช ืฉื‘ื” ืชืขื•ื“ื•ืช ื•(ืื•ืคืฆื™ื•ื ืœื™) ื”-Active Directory ืฉืœ ื”ืืจื’ื•ืŸ ื™ืฉืžืฉื• ืœืื™ืžื•ืช ืžืฉืชืžืฉื™ื. ื–ึถื”. ื ืงื‘ืœ ืžืขืจื›ืช ืขื ืฉื ื™ ื’ื•ืจืžื™ ืื™ืžื•ืช - ืžื” ืฉื™ืฉ ืœื™ (ืชืขื•ื“ื”) ื•ืžื” ืฉืื ื™ ื™ื•ื“ืข (ืกื™ืกืžื”).

ืกื™ืžืŸ ืœื›ืš ืฉืžืฉืชืžืฉ ืจืฉืื™ ืœื”ืชื—ื‘ืจ ื”ื•ื ื”ื—ื‘ืจื•ืช ืฉืœื• ื‘ืงื‘ื•ืฆืช myVPNUsr. ืจืฉื•ืช ื”ืื™ืฉื•ืจื™ื ืชืฉืžืฉ ื‘ืžืฆื‘ ืœื ืžืงื•ื•ืŸ.

ืขืœื•ืช ื”ื˜ืžืขืช ื”ืคืชืจื•ืŸ ื”ื™ื ืžืฉืื‘ื™ ื—ื•ืžืจื” ืงื˜ื ื™ื ื‘ืœื‘ื“ ื•ืฉืขืช ืขื‘ื•ื“ื” ืฉืœ ืžื ื”ืœ ื”ืžืขืจื›ืช.

ื ืฉืชืžืฉ ื‘ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ืขื OpenVPN ื•-Easy-RSA ื’ืจืกื” 3 ื‘-CetntOS 7, ืืฉืจ ืžื•ืงืฆื™ื 100 vCPUs ื•-4 GiB RAM ืœื›ืœ 4 ื—ื™ื‘ื•ืจื™ื.

ื‘ื“ื•ื’ืžื”, ื”ืจืฉืช ืฉืœ ื”ืืจื’ื•ืŸ ืฉืœื ื• ื”ื™ื 172.16.0.0/16, ืฉื‘ื” ืฉืจืช ื”-VPN ืขื ื”ื›ืชื•ื‘ืช 172.16.19.123 ื ืžืฆื ื‘ืงื˜ืข 172.16.19.0/24, ืฉืจืชื™ DNS 172.16.16.16 ื•- 172.16.17.17 ื•-subnet 172.16.20.0. .23/XNUMX ืžื•ืงืฆื” ืขื‘ื•ืจ ืœืงื•ื—ื•ืช VPN.

ื›ื“ื™ ืœื”ืชื—ื‘ืจ ืžื‘ื—ื•ืฅ, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื—ื™ื‘ื•ืจ ื“ืจืš ื™ืฆื™ืื” 1194/udp, ื•ื ื•ืฆืจ A-record gw.abc.ru ื‘-DNS ืขื‘ื•ืจ ื”ืฉืจืช ืฉืœื ื•.

ื‘ื”ื—ืœื˜ ืœื ืžื•ืžืœืฅ ืœื”ืฉื‘ื™ืช ืืช SELinux! OpenVPN ืคื•ืขืœ ืžื‘ืœื™ ืœื”ืฉื‘ื™ืช ืืช ืžื“ื™ื ื™ื•ืช ื”ืื‘ื˜ื—ื”.

ืชื•ื›ืŸ

  1. ื”ืชืงื ืช ืžืขืจื›ืช ื”ืคืขืœื” ื•ืชื•ื›ื ื•ืช ืืคืœื™ืงืฆื™ื”
  2. ื”ื’ื“ืจืช ืงืจื™ืคื˜ื•ื’ืจืคื™ื”
  3. ื”ื’ื“ืจืช OpenVPN
  4. ืื™ืžื•ืช AD
  5. ื”ืคืขืœื” ื•ืื‘ื—ื•ืŸ
  6. ื”ื ืคืงืช ืื™ืฉื•ืจ ื•ื‘ื™ื˜ื•ืœ
  7. ื”ื’ื“ืจืช ืจืฉืช
  8. ืžื” ื”ืœืื”

ื”ืชืงื ืช ืžืขืจื›ืช ื”ืคืขืœื” ื•ืชื•ื›ื ื•ืช ืืคืœื™ืงืฆื™ื”

ืื ื• ืžืฉืชืžืฉื™ื ื‘ื”ืคืฆื” CentOS 7.8.2003. ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ืชืงื™ืŸ ืืช ืžืขืจื›ืช ื”ื”ืคืขืœื” ื‘ืชืฆื•ืจื” ืžื™ื ื™ืžืœื™ืช. ื–ื” ื ื•ื— ืœืขืฉื•ืช ื–ืืช ื‘ืืžืฆืขื•ืช kickstart, ืฉื™ื‘ื•ื˜ ืชืžื•ื ืช ืžืขืจื›ืช ื”ืคืขืœื” ืฉื”ื•ืชืงื ื” ื‘ืขื‘ืจ ื•ืืžืฆืขื™ื ืื—ืจื™ื.

ืœืื—ืจ ื”ื”ืชืงื ื”, ื”ืงืฆืืช ื›ืชื•ื‘ืช ืœืžืžืฉืง ื”ืจืฉืช (ืขืœ ืคื™ ืชื ืื™ ื”ืžืฉื™ืžื” 172.16.19.123), ืื ื• ืžืขื“ื›ื ื™ื ืืช ืžืขืจื›ืช ื”ื”ืคืขืœื”:

$ sudo yum update -y && reboot

ืื ื—ื ื• ื’ื ืฆืจื™ื›ื™ื ืœื•ื•ื“ื ืฉืกื ื›ืจื•ืŸ ื–ืžืŸ ืžื‘ื•ืฆืข ื‘ืžื—ืฉื‘ ืฉืœื ื•.
ื›ื“ื™ ืœื”ืชืงื™ืŸ ืชื•ื›ื ืช ื™ื™ืฉื•ื, ืืชื” ืฆืจื™ืš ืืช ื—ื‘ื™ืœื•ืช openvpn, openvpn-auth-ldap, easy-rsa ื•-vim ื›ืขื•ืจืš ื”ืจืืฉื™ (ืชืฆื˜ืจืš ืืช ืžืื’ืจ ื”-EPEL).

$ sudo yum install epel-release
$ sudo yum install openvpn openvpn-auth-ldap easy-rsa vim

ื›ื“ืื™ ืœื”ืชืงื™ืŸ ืกื•ื›ืŸ ืื•ืจื— ืขื‘ื•ืจ ืžื—ืฉื‘ ื•ื™ืจื˜ื•ืืœื™:

$ sudo yum install open-vm-tools

ืขื‘ื•ืจ ืžืืจื—ื™ VMware ESXi, ืื• ืขื‘ื•ืจ oVirt

$ sudo yum install ovirt-guest-agent

ื”ื’ื“ืจืช ืงืจื™ืคื˜ื•ื’ืจืคื™ื”

ืขื‘ื•ืจ ืืœ ืกืคืจื™ื™ืช easy-rsa:

$ cd /usr/share/easy-rsa/3/

ืฆื•ืจ ืงื•ื‘ืฅ ืžืฉืชื ื”:

$ sudo vim vars

ื”ืชื•ื›ืŸ ื”ื‘ื:

export KEY_COUNTRY="RU"
export KEY_PROVINCE="MyRegion"
export KEY_CITY="MyCity"
export KEY_ORG="ABC LLC"
export KEY_EMAIL="[email protected]"
export KEY_CN="allUsers"
export KEY_OU="allUsers"
export KEY_NAME="gw.abc.ru"
export KEY_ALTNAMES="abc-openvpn-server"
export EASYRSA_CERT_EXPIRE=3652

ื”ืคืจืžื˜ืจื™ื ืฉืœ ื”ืืจื’ื•ืŸ ื”ืžื•ืชื ื” ABC LLC ืžืชื•ืืจื™ื ื›ืืŸ; ืืชื” ื™ื›ื•ืœ ืœืชืงืŸ ืื•ืชื ืœืืœื” ื”ืืžื™ืชื™ื™ื ืื• ืœื”ืฉืื™ืจ ืื•ืชื ืžื”ื“ื•ื’ืžื”. ื”ื“ื‘ืจ ื”ื—ืฉื•ื‘ ื‘ื™ื•ืชืจ ื‘ืคืจืžื˜ืจื™ื ื”ื•ื ื”ืฉื•ืจื” ื”ืื—ืจื•ื ื”, ื”ืงื•ื‘ืขืช ืืช ืชืงื•ืคืช ื”ืชื•ืงืฃ ืฉืœ ื”ืชืขื•ื“ื” ื‘ื™ืžื™ื. ื”ื“ื•ื’ืžื” ืžืฉืชืžืฉืช ื‘ืขืจืš 10 ืฉื ื™ื (365*10+2 ืฉื ื™ื ืžืขื•ื‘ืจื•ืช). ื™ื”ื™ื” ืฆื•ืจืš ืœื”ืชืื™ื ืขืจืš ื–ื” ืœืคื ื™ ื”ื ืคืงืช ืื™ืฉื•ืจื™ ืžืฉืชืžืฉ.

ืœืื—ืจ ืžื›ืŸ, ืื ื• ืžื’ื“ื™ืจื™ื ืจืฉื•ืช ืื™ืฉื•ืจื™ื ืื•ื˜ื•ื ื•ืžื™ืช.

ื”ื”ื’ื“ืจื” ื›ื•ืœืœืช ื™ื™ืฆื•ื ืžืฉืชื ื™ื, ืืชื—ื•ืœ ื”-CA, ื”ื ืคืงืช ืžืคืชื— ื”ืฉื•ืจืฉ ื•ื”ืื™ืฉื•ืจ ืฉืœ CA, ืžืคืชื— Diffie-Hellman, ืžืคืชื— TLS ื•ืžืคืชื— ื•ืชืขื•ื“ืช ืฉืจืช. ื™ืฉ ืœื”ื’ืŸ ื‘ืงืคื™ื“ื” ืขืœ ืžืคืชื— ื”-CA ื•ืœืฉืžื•ืจ ื‘ืกื•ื“! ื ื™ืชืŸ ืœื”ืฉืื™ืจ ืืช ื›ืœ ืคืจืžื˜ืจื™ ื”ืฉืื™ืœืชื” ื›ื‘ืจื™ืจืช ืžื—ื“ืœ.

cd /usr/share/easy-rsa/3/
. ./vars
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-dh
./easyrsa gen-req myvpngw nopass
./easyrsa sign-req server myvpngw
./easyrsa gen-crl
openvpn --genkey --secret pki/ta.key

ื–ื” ืžืฉืœื™ื ืืช ื”ื—ืœืง ื”ืขื™ืงืจื™ ืฉืœ ื”ื’ื“ืจืช ืžื ื’ื ื•ืŸ ื”ื”ืฆืคื ื”.

ื”ื’ื“ืจืช OpenVPN

ืขื‘ื•ืจ ืืœ ืกืคืจื™ื™ืช OpenVPN, ืฆื•ืจ ืกืคืจื™ื•ืช ืฉื™ืจื•ืช ื•ื”ื•ืกืฃ ืงื™ืฉื•ืจ ืœ-easy-rsa:

cd /etc/openvpn/
mkdir /var/log/openvpn/ /etc/openvpn/ccd /usr/share/easy-rsa/3/client
ln -s /usr/share/easy-rsa/3/pki/ /etc/openvpn/

ืฆื•ืจ ืืช ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ื”ืจืืฉื™ ืฉืœ OpenVPN:

$ sudo vim server.conf

ื”ืชื•ื›ืŸ ื”ื‘ื

port 1194
proto udp
dev tun
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/myvpngw.crt
key /etc/openvpn/pki/private/myvpngw.key
crl-verify /etc/openvpn/pki/crl.pem
dh /etc/openvpn/pki/dh.pem
server 172.16.20.0 255.255.254.0
ifconfig-pool-persist ipp.txt
push "route 172.16.0.0 255.255.255.0"
push "route 172.17.0.0 255.255.255.0"
client-config-dir ccd
push "dhcp-option DNS 172.16.16.16"
push "dhcp-option DNS 172.16.17.17"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append  /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
username-as-common-name
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/ldap.conf

ื›ืžื” ื”ืขืจื•ืช ืขืœ ื”ืคืจืžื˜ืจื™ื:

  • ืื ืฆื•ื™ืŸ ืฉื ืื—ืจ ื‘ืขืช ื”ื•ืฆืืช ื”ืชืขื•ื“ื”, ืฆื™ื™ืŸ ื–ืืช;
  • ืฆื™ื™ืŸ ืืช ืžืื’ืจ ื”ื›ืชื•ื‘ื•ืช ืฉื™ืชืื™ื ืœืžืฉื™ืžื•ืช ืฉืœืš*;
  • ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ื ืชื™ื‘ ืื—ื“ ืื• ื™ื•ืชืจ ื•ืฉืจืชื™ DNS;
  • ื™ืฉ ืฆื•ืจืš ื‘-2 ื”ืฉื•ืจื•ืช ื”ืื—ืจื•ื ื•ืช ื›ื“ื™ ืœื™ื™ืฉื ืื™ืžื•ืช ื‘-AD**.

*ื˜ื•ื•ื— ื”ื›ืชื•ื‘ื•ืช ืฉื ื‘ื—ืจ ื‘ื“ื•ื’ืžื” ื™ืืคืฉืจ ืœืขื“ 127 ืœืงื•ื—ื•ืช ืœื”ืชื—ื‘ืจ ื‘ื• ื–ืžื ื™ืช, ืžื›ื™ื•ื•ืŸ ืจืฉืช /23 ื ื‘ื—ืจื”, ื•-OpenVPN ื™ื•ืฆืจ ืจืฉืช ืžืฉื ื” ืขื‘ื•ืจ ื›ืœ ืœืงื•ื— ื‘ืืžืฆืขื•ืช ืžืกื›ืช /30.
ืื ื™ืฉ ืฆื•ืจืš ื‘ืžื™ื•ื—ื“, ื ื™ืชืŸ ืœืฉื ื•ืช ืืช ื”ื™ืฆื™ืื” ื•ื”ืคืจื•ื˜ื•ืงื•ืœ, ืขื ื–ืืช, ื™ืฉ ืœื–ื›ื•ืจ ืฉืฉื™ื ื•ื™ ืžืกืคืจ ื”ื™ืฆื™ืื” ื™ื—ื™ื™ื‘ ื”ื’ื“ืจืช SELinux, ื•ืฉื™ืžื•ืฉ ื‘ืคืจื•ื˜ื•ืงื•ืœ tcp ื™ื’ื“ื™ืœ ืืช ื”ืชืงื•ืจื”, ืžื›ื™ื•ื•ืŸ ื‘ืงืจืช ืžืฉืœื•ื— ืžื ื•ืช TCP ื›ื‘ืจ ืžื‘ื•ืฆืขืช ื‘ืจืžืช ื”ืžื ื•ืช ื”ืžื•ื‘ืœืขื•ืช ื‘ืžื ื”ืจื”.

**ืื ืื™ืŸ ืฆื•ืจืš ื‘ืื™ืžื•ืช ื‘-AD, ื”ื’ื™ื‘ื•, ื“ืœื’ ืขืœ ื”ืกืขื™ืฃ ื”ื‘ื ื•ื‘ืชื‘ื ื™ืช ื”ืกืจ ืืช ืงื• Auth-User Pass.

ืื™ืžื•ืช AD

ื›ื“ื™ ืœืชืžื•ืš ื‘ื’ื•ืจื ื”ืฉื ื™, ื ืฉืชืžืฉ ื‘ืื™ืžื•ืช ื—ืฉื‘ื•ืŸ ื‘-AD.

ืื ื• ื–ืงื•ืงื™ื ืœื—ืฉื‘ื•ืŸ ื‘ื“ื•ืžื™ื™ืŸ ืขื ื–ื›ื•ื™ื•ืช ืฉืœ ืžืฉืชืžืฉ ืจื’ื™ืœ ื•ืงื‘ื•ืฆื”, ืฉื”ื—ื‘ืจื•ืช ื‘ื• ืชืงื‘ืข ืืช ื™ื›ื•ืœืช ื”ื—ื™ื‘ื•ืจ.

ืฆื•ืจ ืงื•ื‘ืฅ ืชืฆื•ืจื”:

/etc/openvpn/ldap.conf

ื”ืชื•ื›ืŸ ื”ื‘ื

<LDAP>
        URL             "ldap://ldap.abc.ru"
        BindDN          "CN=bindUsr,CN=Users,DC=abc,DC=ru"
        Password        b1ndP@SS
        Timeout         15
        TLSEnable       no
        FollowReferrals yes
</LDAP>
<Authorization>
        BaseDN          "OU=allUsr,DC=abc,DC=ru"
        SearchFilter    "(sAMAccountName=%u)"
        RequireGroup    true
        <Group>
                BaseDN          "OU=myGrp,DC=abc,DC=ru"
                SearchFilter    "(cn=myVPNUsr)"
                MemberAttribute "member"
        </Group>
</Authorization>

ืžืกืคืจ ืงื˜ืœื•ื’ื™:

  • ื›ืชื•ื‘ืช URL "ldap://ldap.abc.ru" - ื›ืชื•ื‘ืช ื‘ืงืจ ืชื—ื•ื;
  • BindDN "CN=bindUsr,CN=Users,DC=abc,DC=ru" - ืฉื ืงื ื•ื ื™ ืœืงื™ืฉื•ืจ ืœ-LDAP (UZ - bindUsr ื‘ืžื™ื›ืœ abc.ru/Users);
  • ืกื™ืกืžื” b1ndP@SS โ€” ืกื™ืกืžืช ืžืฉืชืžืฉ ืœื›ืจื™ื›ื”;
  • BaseDN "OU=allUsr,DC=abc,DC=ru" - ื”ื ืชื™ื‘ ืฉืžืžื ื• ืžืชื—ื™ืœื™ื ืœื—ืคืฉ ืืช ื”ืžืฉืชืžืฉ;
  • BaseDN "OU=myGrp,DC=abc,DC=ru" - ืžื™ื›ืœ ืฉืœ ื”ืงื‘ื•ืฆื” ื”ืžืืคืฉืจืช (ืงื‘ืฅ myVPNUsr ื‘ืžื™ื›ืœ abc.rumyGrp);
  • SearchFilter "(cn=myVPNUsr)" ื”ื•ื ื”ืฉื ืฉืœ ื”ืงื‘ื•ืฆื” ื”ืžืืคืฉืจืช.

ื”ืคืขืœื” ื•ืื‘ื—ื•ืŸ

ื›ืขืช ื ื•ื›ืœ ืœื ืกื•ืช ืœื”ืคืขื™ืœ ื•ืœื”ืคืขื™ืœ ืืช ื”ืฉืจืช ืฉืœื ื•:

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]

ื‘ื“ื™ืงืช ื”ืคืขืœื”:

systemctl status [email protected]
journalctl -xe
cat /var/log/messages
cat /var/log/openvpn/*log

ื”ื ืคืงืช ืื™ืฉื•ืจ ื•ื‘ื™ื˜ื•ืœ

ื›ื™ ื‘ื ื•ืกืฃ ืœืื™ืฉื•ืจื™ื ืขืฆืžื, ืืชื” ืฆืจื™ืš ืžืคืชื—ื•ืช ื•ื”ื’ื“ืจื•ืช ืื—ืจื•ืช; ื–ื” ืžืื•ื“ ื ื•ื— ืœืขื˜ื•ืฃ ืืช ื›ืœ ื–ื” ื‘ืงื•ื‘ืฅ ืคืจื•ืคื™ืœ ืื—ื“. ืœืื—ืจ ืžื›ืŸ ื”ืงื•ื‘ืฅ ื”ื–ื” ืžื•ืขื‘ืจ ืœืžืฉืชืžืฉ ื•ื”ืคืจื•ืคื™ืœ ืžื™ื•ื‘ื ืœืœืงื•ื— OpenVPN. ืœืฉื ื›ืš ื ื™ืฆื•ืจ ืชื‘ื ื™ืช ื”ื’ื“ืจื•ืช ื•ืกืงืจื™ืคื˜ ืฉื™ื•ืฆืจ ืืช ื”ืคืจื•ืคื™ืœ.

ืขืœื™ืš ืœื”ื•ืกื™ืฃ ืœืคืจื•ืคื™ืœ ืืช ื”ืชื•ื›ืŸ ืฉืœ ืื™ืฉื•ืจ ื”ืฉื•ืจืฉ (ca.crt) ื•ืžืคืชื— TLS (ta.key).

ืœืคื ื™ ื”ื ืคืงืช ืื™ืฉื•ืจื™ ืžืฉืชืžืฉ ืืœ ืชืฉื›ื— ืœื”ื’ื“ื™ืจ ืืช ืชืงื•ืคืช ื”ืชื•ืงืฃ ื”ื ื“ืจืฉืช ืœืื™ืฉื•ืจื™ื ื‘ืงื•ื‘ืฅ ื”ืคืจืžื˜ืจื™ื. ืืชื” ืœื ืฆืจื™ืš ืœืขืฉื•ืช ืืช ื–ื” ืืจื•ืš ืžื“ื™; ืื ื™ ืžืžืœื™ืฅ ืœื”ื’ื‘ื™ืœ ืืช ืขืฆืžืš ืœื›ืœ ื”ื™ื•ืชืจ 180 ื™ืžื™ื.

vim /usr/share/easy-rsa/3/vars

...
export EASYRSA_CERT_EXPIRE=180

vim /usr/share/easy-rsa/3/client/template.ovpn

client
dev tun
proto udp
remote gw.abc.ru 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
auth-user-pass

<ca>
-----BEGIN CERTIFICATE-----
PUT YOUR CA CERT (ca.crt) HERE
-----END CERTIFICATE-----
</ca>

key-direction 1
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
PUT YOUR TA KEY (ta.key) HERE
-----END OpenVPN Static key V1-----
</tls-auth>

ื”ืขืจื•ืช:

  • ืงื•ื•ื™ื ืฉื™ื ืืช ืฉืœืš... ืœืฉื ื•ืช ืœืชื•ื›ืŸ ืฉืœ ืชืขื•ื“ื•ืช;
  • ื‘ื”ื ื—ื™ื” ืžืจื—ื•ืง, ืฆื™ื™ืŸ ืืช ื”ืฉื/ื”ื›ืชื•ื‘ืช ืฉืœ ื”ืฉืขืจ ืฉืœืš;
  • ื”ื”ื ื—ื™ื” Auth-user-pass ืžืฉืžืฉืช ืœืื™ืžื•ืช ื—ื™ืฆื•ื ื™ ื ื•ืกืฃ.

ื‘ืกืคืจื™ื™ืช ื”ื‘ื™ืช (ืื• ื‘ืžืงื•ื ื ื•ื— ืื—ืจ) ืื ื• ื™ื•ืฆืจื™ื ืกืงืจื™ืคื˜ ืœื‘ืงืฉืช ืื™ืฉื•ืจ ื•ื™ืฆื™ืจืช ืคืจื•ืคื™ืœ:

vim ~/make.profile.sh

#!/bin/bash

if [ -z "$1" ] ; then
 echo Missing mandatory client name. Usage: $0 vpn-username
 exit 1
fi

#Set variables
basepath=/usr/share/easy-rsa/3
clntpath=$basepath/client
privpath=$basepath/pki/private
certpath=$basepath/pki/issued
profile=$clntpath/$1.ovpn

#Get current year and lowercase client name
year=`date +%F`
client=${1,,}
echo Processing $year year cert for user/device $client

cd $basepath

if [  -f client/$client* ]; then
    echo "*** ERROR! ***"
    echo "Certificate $client already issued!"
    echo "*** ERROR! ***"
    exit 1
fi

. ./vars
./easyrsa --batch --req-cn=$client gen-req $client nopass
./easyrsa --batch sign-req client $client

#Make profile
cp $clntpath/template.ovpn $profile

echo "<key>" >> $profile
cat $privpath/$1.key >> $profile
echo "</key>" >> $profile

echo -e "n" >> $profile
openssl x509 -in $certpath/$1.crt -out $basepath/$1.crt

echo "<cert>" >> $profile
cat $basepath/$1.crt >> $profile
echo "</cert>" >> $profile
echo -e "n" >> $profile

#remove tmp file
rm -f $basepath/$1.crt

echo Complete. See $profile file.

cd ~

ื”ืคื™ื›ืช ื”ืงื•ื‘ืฅ ืœืืคืฉืจื™ ื”ืคืขืœื”:

chmod a+x ~/make.profile.sh

ื•ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ื ืคื™ืง ืืช ื”ืชืขื•ื“ื” ื”ืจืืฉื•ื ื” ืฉืœื ื•.

~/make.profile.sh my-first-user

ื›ื–ื›ื•ืจ

ื‘ืžืงืจื” ืฉืœ ืคื’ื™ืขื” ื‘ืชืขื•ื“ื” (ืื•ื‘ื“ืŸ, ื’ื ื™ื‘ื”), ื™ืฉ ืฆื•ืจืš ืœื‘ื˜ืœ ืืช ื”ืชืขื•ื“ื” ื”ื–ื•:

cd /usr/share/easy-rsa/3/
./easyrsa revoke my-first-user
./easyrsa gen-crl

ื”ืฆื’ ืชืขื•ื“ื•ืช ืฉื”ื•ื ืคืงื• ื•ื‘ืฉืœืœื•

ื›ื“ื™ ืœื”ืฆื™ื’ ืื™ืฉื•ืจื™ื ืฉื”ื•ื ืคืงื• ื•ื‘ื˜ืœื•, ืคืฉื•ื˜ ื”ืฆื’ ืืช ืงื•ื‘ืฅ ื”ืื™ื ื“ืงืก:

cd /usr/share/easy-rsa/3/
cat pki/index.txt

ื”ืกื‘ืจื™ื:

  • ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื” ื”ื™ื ืชืขื•ื“ืช ื”ืฉืจืช;
  • ื”ื“ืžื•ืช ื”ืจืืฉื•ื ื”
    • V (ืชืงืฃ) - ืชืงืฃ;
    • ืจ (ืžื‘ื•ื˜ืœ) - ื ื–ื›ืจ.

ื”ื’ื“ืจืช ืจืฉืช

ื”ืฉืœื‘ื™ื ื”ืื—ืจื•ื ื™ื ื”ื ืœื”ื’ื“ื™ืจ ืืช ืจืฉืช ื”ืฉื™ื“ื•ืจ - ื ื™ืชื•ื‘ ื•ื—ื•ืžื•ืช ืืฉ.

ื”ืชืจืช ื—ื™ื‘ื•ืจื™ื ื‘ื—ื•ืžืช ื”ืืฉ ื”ืžืงื•ืžื™ืช:

$ sudo firewall-cmd --add-service=openvpn
$ sudo firewall-cmd --add-service=openvpn --permanent

ืœืื—ืจ ืžื›ืŸ, ื”ืคืขืœ ื ื™ืชื•ื‘ ืชืขื‘ื•ืจืช IP:

$ sudo sysctl net.ipv4.ip_forward=1
$ sudo echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/50-sysctl.conf

ื‘ืกื‘ื™ื‘ื” ืืจื’ื•ื ื™ืช, ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉื™ืฉ ืจืฉืช ืžืฉื ื” ื•ืขืœื™ื ื• ืœื•ืžืจ ืœื ืชื‘/ื™ื ื›ื™ืฆื“ ืœืฉืœื•ื— ืžื ื•ืช ื”ืžื™ื•ืขื“ื•ืช ืœืœืงื•ื—ื•ืช ื”-VPN ืฉืœื ื•. ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื” ืื ื• ืžื‘ืฆืขื™ื ืืช ื”ืคืงื•ื“ื” ื‘ืื•ืคืŸ (ื‘ื”ืชืื ืœืฆื™ื•ื“ ื”ืžืฉืžืฉ):

# ip route 172.16.20.0 255.255.254.0 172.16.19.123

ื•ืฉืžื•ืจ ืืช ื”ืชืฆื•ืจื”.

ื‘ื ื•ืกืฃ, ื‘ืžืžืฉืง ื”ื ืชื‘ ื”ื’ื‘ื•ืœ ืฉื‘ื• ืžื•ื’ืฉืช ื”ื›ืชื•ื‘ืช ื”ื—ื™ืฆื•ื ื™ืช gw.abc.ru, ื™ืฉ ืฆื•ืจืš ืœืืคืฉืจ ืžืขื‘ืจ ืฉืœ ืžื ื•ืช udp/1194.

ื‘ืžืงืจื” ืฉืœืืจื’ื•ืŸ ื™ืฉ ื›ืœืœื™ ืื‘ื˜ื—ื” ื ื•ืงืฉื™ื, ื™ืฉ ืœื”ื’ื“ื™ืจ ื—ื•ืžืช ืืฉ ื’ื ื‘ืฉืจืช ื”-VPN ืฉืœื ื•. ืœื“ืขืชื™, ื”ื’ืžื™ืฉื•ืช ื”ื’ื“ื•ืœื” ื‘ื™ื•ืชืจ ื ื™ืชื ืช ื‘ื”ืงืžืช ืจืฉืชื•ืช iptables FORWARD, ืื ื›ื™ ื”ื”ื’ื“ืจื” ืฉืœื”ื ืคื—ื•ืช ื ื•ื—ื”. ืขื•ื“ ืงืฆืช ืขืœ ื”ื’ื“ืจืชื. ืœืฉื ื›ืš, ื”ื›ื™ ื ื•ื— ืœื”ืฉืชืžืฉ ื‘"ื›ืœืœื™ื ื™ืฉื™ืจื™ื" - ื›ืœืœื™ื ื™ืฉื™ืจื™ื, ื”ืžืื•ื—ืกื ื™ื ื‘ืงื•ื‘ืฅ /etc/firewalld/direct.xml. ื ื™ืชืŸ ืœืžืฆื•ื ืืช ื”ืชืฆื•ืจื” ื”ื ื•ื›ื—ื™ืช ืฉืœ ื”ื›ืœืœื™ื ื›ื“ืœืงืžืŸ:

$ sudo firewall-cmd --direct --get-all-rule

ืœืคื ื™ ืฉื™ื ื•ื™ ืงื•ื‘ืฅ, ืฆื•ืจ ืขื•ืชืง ื’ื™ื‘ื•ื™ ืฉืœื•:

cp /etc/firewalld/direct.xml /etc/firewalld/direct.xml.`date +%F.%T`.bak

ื”ืชื•ื›ืŸ ื”ืžืฉื•ืขืจ ืฉืœ ื”ืงื•ื‘ืฅ ื”ื•ื:

<?xml version="1.0" encoding="utf-8"?>
<direct>
 <!--Common Remote Services-->
  <!--DNS-->
    <rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o ens192 -p udp --dport 53 -j ACCEPT</rule>
  <!--web-->
    <rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -p tcp -d 172.16.19.200 --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT</rule>
    <rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -p tcp -d 172.16.19.201 --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT</rule>
  <!--Some Other Systems-->
    <rule priority="0" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -p udp -d 172.16.19.100 --dport 7000 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT</rule>
  <!--just logging-->
    <rule priority="1" table="filter" ipv="ipv4" chain="FORWARD">-i tun0 -o eth0 -j LOG --log-prefix 'forward_fw '</rule>
</direct>

ื”ืกื‘ืจื™ื

ืืœื” ื”ื ื‘ืขืฆื ื›ืœืœื™ iptables ืจื’ื™ืœื™ื, ืืจื•ื–ื™ื ืื—ืจืช ืœืื—ืจ ื”ื•ืคืขืช ื—ื•ืžืช ื”ืืฉ.

ืžืžืฉืง ื”ื™ืขื“ ืขื ื”ื’ื“ืจื•ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื•ื tun0, ื•ื”ืžืžืฉืง ื”ื—ื™ืฆื•ื ื™ ืฉืœ ื”ืžื ื”ืจื” ืขืฉื•ื™ ืœื”ื™ื•ืช ืฉื•ื ื”, ืœืžืฉืœ, ens192, ื‘ื”ืชืื ืœืคืœื˜ืคื•ืจืžื” ืฉื‘ื” ื ืขืฉื” ืฉื™ืžื•ืฉ.

ื”ืฉื•ืจื” ื”ืื—ืจื•ื ื” ืžื™ื•ืขื“ืช ืœืจื™ืฉื•ื ืžื ื•ืช ืฉื ืคืœื•. ื›ื“ื™ ืฉื”ืจื™ืฉื•ื ื™ืขื‘ื•ื“, ืขืœื™ืš ืœืฉื ื•ืช ืืช ืจืžืช ื ื™ืคื•ื™ ื”ื‘ืื’ื™ื ื‘ืชืฆื•ืจืช ื—ื•ืžืช ื”ืืฉ:

vim /etc/sysconfig/firewalld
FIREWALLD_ARGS=--debug=2

ื”ื—ืœืช ื”ื’ื“ืจื•ืช ื”ื™ื ื”ืคืงื•ื“ื” ื”ืจื’ื™ืœื” ืฉืœ ื—ื•ืžืช ื”ืืฉ ื›ื“ื™ ืœืงืจื•ื ืžื—ื“ืฉ ืืช ื”ื”ื’ื“ืจื•ืช:

$ sudo firewall-cmd --reload

ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืžื ื•ืช ืฉื ืฉืžื˜ื• ื›ืš:

grep forward_fw /var/log/messages

ืžื” ื”ืœืื”

ื–ื” ืžืฉืœื™ื ืืช ื”ื”ื’ื“ืจื”!

ื›ืœ ืžื” ืฉื ื•ืชืจ ื”ื•ื ืœื”ืชืงื™ืŸ ืืช ืชื•ื›ื ืช ื”ืœืงื•ื— ื‘ืฆื“ ื”ืœืงื•ื—, ืœื™ื™ื‘ื ืืช ื”ืคืจื•ืคื™ืœ ื•ืœื”ืชื—ื‘ืจ. ืขื‘ื•ืจ ืžืขืจื›ื•ืช ื”ืคืขืœื” Windows, ืขืจื›ืช ื”ื”ืคืฆื” ืžืžื•ืงืžืช ื‘- ืืชืจ ืœืžืคืชื—ื™ื.

ืœื‘ืกื•ืฃ, ืื ื• ืžื—ื‘ืจื™ื ืืช ื”ืฉืจืช ื”ื—ื“ืฉ ืฉืœื ื• ืœืžืขืจื›ื•ืช ื”ื ื™ื˜ื•ืจ ื•ื”ืืจื›ื™ื•ืŸ, ื•ืœื ืฉื•ื›ื—ื™ื ืœื”ืชืงื™ืŸ ืขื“ื›ื•ื ื™ื ื‘ืื•ืคืŸ ืงื‘ื•ืข.

ื—ื™ื‘ื•ืจ ื™ืฆื™ื‘!

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”