ááŒá¿áá¬ááá¯áá¯á¶áá±á¬áºááŒááºáž
áá±á¬ááºážáá«ážááẠopen source áá¯ááºáá¯ááºáá»á¬ážááœáẠáááºáááºážáá»á¬ážá¡ááœáẠá¡áá±ážááááºážá áá áºááŒáá·áº áááºáá±á¬ááºá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº á¡ááœá²á·á¡á ááºážááᯠáá±á¬áºááŒáá¬ážááŒá®áž áá¯á¶ážáá¯á¶ážááá¯ááºááá¯ááºá¡á¯ááºáá»á¯ááºááœáá·áºáá áá áºáá áºáᯠáááºáá±á¬ááºáááºá¡ááœáẠááŸá áºáá»áá¯ážáá¯á¶ážá¡áá¯á¶ážááŒá¯ááá¯ááºááŒá®áž áááºááŸááá¯ááºáááºážáá¯á¶ážá áá áºááœáẠááá¯ááºá ááºáá»á¬ážááŒááºáááºááŸá¯ ááá¯á·ááá¯áẠáááºážáá áœááºážáá±á¬ááºááẠááá¯á¶áá±á¬ááºááá·áºá¡áá« ááá¯ážáá»á²á·ááŸá¯á¡ááœáẠá¡áá¯á¶ážáááºáááºááŒá áºáááºá
áá±á¬ááºážáá«ážááááºááœááºáá»ááºááŸá¬ "OpenVPN ááᯠ10 áááá áºá¡ááœááºáž ááá·áºááœááºážááŒááºáž" ááẠá¡áááºážáááºáá¬ááœááºáá±á¬ á¡ááœá²á·á¡á ááºážáá áºáá¯á¡á¬áž á¡áá±ážááŸáááºáá±á¬ááºááœáá·áºáá±ážááŒááºážá¡ááœáẠááŒá®ážááŒáá·áºá á¯á¶áá±á¬á áá áºáá áºáá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºááŒá áºáááºá
ááááºá¡áá±ááŒáá·áºá áá¯á¶ážá áœá²áá°áá»á¬ážááᯠá á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒáááºá¡ááœáẠáááºááŸááºáá»á¬ážááŸáá·áº (ááœá±ážáá»ááºááá¯ááºáááº) áá±á¬áºááá¯áááẠActive Directory ááᯠá¡áá¯á¶ážááŒá¯ááá·áº á áá áºáá áºáá¯ááᯠáá»áœááºá¯ááºááá¯á· áááŸááá«áááºá á¡á²áá«á áá»áœááºá¯ááºááœáẠ(áááºáá±áá¶áááºááŸááº) ááŸáá·áº áá»áœááºá¯ááºáááá¬ážááẠ(á áá¬ážááŸááº) ááŸá áºáá¯áá«ááŸááá±á¬ á áá áºáá áºáá¯ááᯠáá»áœááºá¯ááºááá¯á·áááŸááá«áááºá
á¡áá¯á¶ážááŒá¯áá°áá áºáŠážááᯠáá»áááºáááºááœáá·áºááŒá¯ááá·áº ááá¹ááá¬ááŸá¬ myVPNUsr á¡ááœá²á·ááœáẠáááºážááá¯á·á á¡ááœá²á·áááºááŒá áºááŒááºáž ááŒá áºáááºá áááºááŸááºá¡á¬áá¬ááá¯ááºááᯠá¡á±á¬á·ááºááá¯ááºážáá¯á¶ážáá«áááºá
ááŒá±ááŸááºážáá»ááºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ááœáẠáá¯ááºáá»á ááááºááẠáá±ážáááºáá±á¬ áá¬á·ááºáá²á¡áááºážá¡ááŒá áºáá»á¬ážááŸáá·áº á áá áºá á®áá¶ááá·áºááœá²áá°á á¡áá¯ááºáá»ááẠ1 áá¬áá®áá»áŸáá¬ááŒá áºáááºá
áá»áœááºá¯ááºááá¯á·ááẠCetntOS 3 ááœáẠOpenVPN ááŸáá·áº Easy-RSA áá¬ážááŸááºáž 7 áá«ááá·áº virtual machine áá
áºáá¯ááᯠá¡áá¯á¶ážááŒá¯áááºááŒá
áºááŒá®ážá áá»áááºáááºááŸá¯ 100 áá
áºáá¯áá»áŸáẠ4 vCPU ááŸáá·áº 4 GiB RAM ááá¯á·ááᯠááœá²áá±áá±ážáááºááŒá
áºáááºá
á¥ááá¬ááœááºá áá»áœááºá¯ááºááá¯á·áá¡ááœá²á·á¡á
ááºážáááœááºáááºááẠ172.16.0.0/16 ááŒá
áºááŒá®áž ááááºá
ᬠ172.16.19.123 áá«ááá·áº VPN áá¬áá¬ááẠá¡ááá¯ááºáž 172.16.19.0/24á DNS áá¬áá¬áá»á¬áž 172.16.16.16 ááŸáá·áº 172.16.17.17á á¡ááá¯ááºážááœá² 172.16.20.0 ááŸáá·áº .23.net .XNUMX/XNUMX ááᯠVPN áá¯á¶ážá
áœá²áá°áá»á¬ážá¡ááœáẠááœá²áá±áá±ážáá«áááºá
ááŒááºáááŸáá»áááºáááºáááºá¡ááœááºá port 1194/udp ááŸáááá·áºáá»áááºáááºááŸá¯ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž áá»áœááºá¯ááºááá¯á·ááá¬áá¬á¡ááœáẠDNS ááœáẠA-record gw.abc.ru ááá¯áááºáá®ážáá¬ážáááºá
SELinux ááᯠááááºááẠáááºážáááºážáá»ááºáá»áẠááá±á¬ááºáá¶áá«á OpenVPN ááẠáá¯á¶ááŒá¯á¶áá±ážáá°áá«ááá»á¬ážááᯠáááááºáá² á¡áá¯ááºáá¯ááºáááºá
á¡ááŒá±á¬ááºážá¡áá¬
OS ááŸáá·áº application software áá»á¬áž áááºáááºááŒááºážá áá»áŸáá¯á·ááŸááºá á¬ááŸááºááᯠá áá áºááá·áºááœááºážááŒááºážá OpenVPN ááᯠá áá áºááá·áºááœááºážááŒááºážá AD á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒááºážá á áááºááŒááºážááŸáá·áº áá±á¬áá«ááŸá¬ááœá±ááŒááºážáá»á¬áž áááºááŸááºáá¯ááºáá±ážááŒááºážááŸáá·áº áá¯ááºááááºážááŒááºážá ááœááºáááºááᯠConfiguration áá±á¬ááºáá áºáá¯ááá¬áá²
OS ááŸáá·áº application software áá»á¬áž áááºáááºááŒááºážá
áá»áœááºá¯ááºááá¯á·ááẠCentOS 7.8.2003 ááŒáá·áºááŒá°ážááŸá¯ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áááºážáááºáá»áŸáá±á¬ ááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶ááŒáá·áº OS ááᯠááá·áºááœááºážááẠááá¯á¡ááºáááºá áá«ááá¯á¡áá¯á¶ážááŒá¯ááŒá®ážáá¯ááºááᬠá¡áááºááŒá±áá«áááºá
áááºáááºááŒá®ážáá±á¬ááºá (áá¯ááºáááºážáá¬ááẠ172.16.19.123 á á ááºážáááºážáá»ááºáá»á¬ážá¡á) ááœááºáááºá¡ááºáá¬áá±á·á áºááá¯á· ááááºá á¬áá áºáá¯áááºááŸááºáá±ážááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠOS ááᯠá¡ááºááááºáá¯ááºáááº-
$ sudo yum update -y && reboot
áá»áœááºá¯ááºááá¯á·áá
ááºáá±á«áºááœáẠá¡áá»áááºáááºáá°ááŒá¯ááŒááºážááᯠáá¯ááºáá±á¬ááºááŒá±á¬ááºážááá¯áááºáž áá±áá»á¬á
á±áááºááá¯á¡ááºáá«áááºá
á¡ááá®áá±ážááŸááºážáá±á¬á·ááºáá²ááá¯ááá·áºááœááºážáááºá á¡ááááááºážááŒááºáá°á¡ááŒá
Ạopenvpná openvpn-auth-ldapá easy-rsa ááŸáá·áº vim packages ááá¯á¡ááºááẠ(ááẠEPEL repository ááá¯á¡ááºáá«áááº)á
$ sudo yum install epel-release
$ sudo yum install openvpn openvpn-auth-ldap easy-rsa vim
virtual machine áá áºáá¯á¡ááœáẠá§áá·áºáááºá¡á±ážáá»áá·áºááᯠááá·áºááœááºážááẠá¡áá¯á¶ážáááºáááº-
$ sudo yum install open-vm-tools
VMware ESXi hosts á¡ááœáẠááá¯á·ááá¯áẠoVirt á¡ááœááº
$ sudo yum install ovirt-guest-agent
áá»áŸáá¯á·ááŸááºá á¬ááŸááºááᯠá áá áºááá·áºááœááºážááŒááºážá
ááœááºáá°áá±á¬ 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
áááºážááẠcryptographic ááá¹ááá¬ážááᯠáááºáá±á¬ááºááŒááºážá á¡áááá¡á
áááºá¡ááá¯ááºážááᯠááŒá®ážááŒá±á¬ááºá
á±áááºá
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 áá¬áá¬áá»á¬áž ááŸáááá¯ááºáá«áááºá
- AD ** ááœáẠá á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááẠáá±á¬ááºáá¯á¶ážá á¬ááŒá±á¬ááºáž á ááŒá±á¬ááºáž ááá¯á¡ááºáá«áááºá
*á¥ááá¬ááœáẠááœá±ážáá»ááºáá¬ážáá±á¬ ááááºá
á¬á¡ááœá¬á¡áá±ážááẠáá¯á¶ážá
áœá²áá° 127 áŠážá¡áá áá
áºááŒáá¯ááºááẠáá»áááºáááºááá¯ááºá
á±áááºááŒá
áºáá±á¬ááŒá±á¬áá·áºá /23 ááœááºáááºááᯠááœá±ážáá»ááºáá¬ážááŒá®áž OpenVPN ááẠ/30 mask ááᯠá¡áá¯á¶ážááŒá¯á client áá
áºáá¯á
á®á¡ááœáẠsubnet áá
áºáá¯ááᯠáááºáá®ážáá±ážáá«áááºá
á¡áá°ážáááŒáá·áº ááá¯á¡ááºáá«áá ááááºáááºážááŸáá·áº áááá¯ááá¯áá±á¬ááᯠááŒá±á¬ááºážáá²ááá¯ááºáá±á¬áºáááºážá ááááºáááºážáá¶áá«ááºááᯠááŒá±á¬ááºážáá²ááŒááºážááẠSELinux ááᯠááŒááºáááºáááºááŸááºááŒááºážááœáẠáá«áááºáááºááŒá
áºááŒá®áž tcp áááá¯ááá¯áá±á¬ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠááá¯áá»á¬ážáá¬áááºááŒá
áºáá±á¬ááŒá±á¬áá·áºá TCP packet áá±ážááá¯á·ááŸá¯ ááááºážáá»á¯ááºááŸá¯ááᯠá¥áááºááá¯ááºáá±á«ááºážá¡ááœááºáž áá¯ááºááá¯ážáá¬ážáá±á¬ áááºáá±á·ááºá»á¡ááá·áºááœáẠáá¯ááºáá±á¬ááºááŒá®ážááŒá
áºáááºá
** 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>
á¡ááá parameters áá»á¬ážááá¯:
- URL âldap://ldap.abc.ruâ - ááá¯ááááºáž ááááºážáá»á¯ááºáááááᬠááááºá á¬á
- BindDN âCN=bindUsráCN=UsersáDC=abcáDC=ruâ - LDAP (UZ - bindUsr ááœááºááááºáá¬á¡ááœááºážááŸá abc.ru/Users) ááŸáá·áº áá±á«ááºážá ááºážáááºá¡ááœáẠcanonical name
- á áá¬ážááŸáẠb1ndP@SS â binding á¡ááœááºá¡áá¯á¶ážááŒá¯áá°á áá¬ážááŸááº;
- 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 áááá¯ááºážááá·áºááœáẠááá·áºááœááºážáá¬ážáááºá áá«ááá¯áá¯ááºááá¯á·á áááºáááºáá¯á¶á á¶áá áºáá¯áá²á· áááá¯ááá¯ááºááá¯áá¯ááºáá±ážáá²á· script áá áºáá¯ááᯠáááºáá®ážáá«áááºá
áááºááẠáááá¯ááá¯ááºááœáẠroot áááºááŸáẠ(ca.crt) ááŸáá·áº TLS áá±á¬á· (ta.key) ááá¯ááºáá»á¬ážá á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáá±á«ááºážááá·áºááẠááá¯á¡ááºáááºá
á¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá»á¬áž ááá¯ááºáá±ážáá® áááºááŸááºáá»á¬ážá¡ááœáẠááá¯á¡ááºáá±á¬ ááá¬ážáááºáááºáááºážáá¬áááᯠáááºááŸááºááẠááá±á·áá«ááŸáá·áº parameters ááá¯ááºáá²ááŸá¬á á¡áááºážááŒá¬á¡á±á¬áẠááá¯ááºááá·áºáá«áá°ážá ááá·áºááá¯ááºááẠá¡áá»á¬ážáá¯á¶áž ááẠ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 ááœáŸááºááŒá¬ážáá»ááºááᯠááŒááºáá á áºááŸááºááŒá±á¬ááºážá¡áááºááŒá¯ááŒááºážá¡ááœáẠáá±á¬ááºáááºá¡áá¯á¶ážááŒá¯áááºá
á¡áááºáááºážááœáŸáẠ(ááá¯á·ááá¯áẠá¡ááŒá¬ážá¡áááºááŒá±ááá·áºáá±áá¬) ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáááºááŸááºáá áºáá¯áá±á¬ááºážááá¯áááºááŸáá·áº áááá¯ááá¯ááºáááºáá®ážáááºá¡ááœáẠscript áá áºáá¯ááᯠáááºáá®ážáááº-
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 (Valid) - valid;
- R (Revoked) - ááŒááºáááºááááºážáááºážááŒááºážá
ááœááºáááºááᯠConfiguration
áá±á¬ááºáá¯á¶ážá¡ááá·áºáá»á¬ážááŸá¬ transmission network - routing and firewalls ááᯠconfigure áá¯ááºáááºááŒá áºáááºá
áá±áááœááºáž firewall ááœáẠáá»áááºáááºááŸá¯áá»á¬ážááᯠááœáá·áºááŒá¯ááŒááºáž-
$ 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
áá±á¬áºááá¯ááááºáááºáááºážáá»ááºááœááºá subnetting ááŸáááá¯ááºááœááºááŸáááŒá®áž áá»áœááºá¯ááºááá¯á·á VPN áá¯á¶ážá áœá²áá°áá»á¬ážá¡ááœáẠáááºááœááºáá¬ážáá±á¬ packets áá»á¬ážááᯠrouter(áá»á¬áž) ááᯠáááºááá¯á·áá±ážááá¯á·ááááºááᯠááŒá±á¬ááŒáááºááá¯á¡ááºáá«áááºá command line ááœááºáá»áœááºá¯ááºááá¯á·ááẠcommand ááá¯áá¯á¶á á¶ááŒáá·áºáá¯ááºáá±á¬ááºááẠ(á¡áá¯á¶ážááŒá¯ááá·áºáááááá¬áá±á«áº áá°áááºá)
# ip route 172.16.20.0 255.255.254.0 172.16.19.123
configuration ááᯠááááºážáááºážáá«á
ááá¯á·á¡ááŒááºá ááŒááºáááááºá ᬠgw.abc.ru áááºáá±á¬ááºááŸá¯áá±ážááá·áºáááºá ááºáá±á¬ááºáá±á¬ááºáá¬á¡ááºáá¬áá±á·á áºááœááºá udp/1194 packets áá»á¬ážáááŒááºáááºážááŸá¯ááá¯ááœáá·áºááŒá¯áááºááá¯á¡ááºáááºá
á¡ááœá²á·á¡á ááºážááœáẠáááºážáá»ááºáá±á¬ áá¯á¶ááŒá¯á¶áá±ážá ááºážáá»á¥áºážáá»á¬ážááŸááá«áá áá»áœááºá¯ááºááá¯á·á VPN áá¬áá¬ááœáẠfirewall ááá¯áááºáž configure áá¯ááºááá«áááºá áá»áœááºá¯ááºáá¡ááŒááºá¡áá áááºážááá¯á·á¡á¬áž áááºáááºááŒááºážááẠá¡áááºááŒá±ááŸá¯áááºážáá±á¬áºáááºáž 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 á ááºážáá»ááºážáá»á¬ážááŒá áºáááºá ááá¯ááºáá«á firewalld ááœááºážáá¬ážááŒá®ážáá±á¬áẠáá¯ááºááá¯ážáá¬ážáááºá
áá¯á¶áá±áááºáááºáá»á¬ážáá«ááŸááá±á¬ áŠážáááºáá¬á¡ááºáá¬áá±á·á áºááẠtun0 ááŒá áºááŒá®ážá á¥áááºááá¯ááºáá±á«ááºážá¡ááœáẠááŒááºáá¡ááºáá¬áá±á·á áºááẠá¡áá¯á¶ážááŒá¯ááá·áºááááºáá±á¬ááºážáá±á«áº áá°áááºá á¥ááᬠens192 ááœá²ááŒá¬ážááá¯ááºáááºá
áá±á¬ááºáá¯á¶ážá á¬ááŒá±á¬ááºážááŸá¬ ááŒá¯ááºáá»áá¬ážáá±á¬ packet áá»á¬ážááᯠááŸááºáááºážáááºáááºá¡ááœáẠááŒá áºáááºá áá±á¬á·ááºá¡ááºáá¯ááºáááºá¡ááœáẠáááºááẠfirewalld configuration ááœáẠá¡ááŸá¬ážá¡ááœááºážá¡ááá·áºááᯠááŒá±á¬ááºážáá²ááẠááá¯á¡ááºáááº-
vim /etc/sysconfig/firewalld
FIREWALLD_ARGS=--debug=2
áááºáááºáá»á¬ážááᯠá¡áá¯á¶ážáá»ááŒááºážááẠáááºáááºáá»á¬ážááᯠááŒááºáááºáááºááŸá¯ááẠáá¯á¶ááŸáẠfirewalld command ááŒá áºáááºá
$ sudo firewall-cmd --reload
á€áá²á·ááá¯á·áá±á¬ áá»áááºážááœá¬ážáá±á¬ á¡áá¯ááºáá»á¬ážááᯠáááºááŒáá·áºááŸá¯ááá¯ááºáááº-
grep forward_fw /var/log/messages
áá±á¬ááºáá áºáá¯ááá¬áá²
áááºážááẠá áá áºááá·áºááœááºážááŸá¯ááᯠá¡ááŒá®ážáááºáá«áááºá
áá»ááºáááºááŸá¬ áááá¯ááºážááá·áºáá±á¬á·ááºáá²ááᯠáááá¯ááºážááá·áºáááºááœáẠááá·áºááœááºážáááºá áááá¯ááá¯ááºááᯠáááºááœááºážááŒá®áž áá»áááºáááºáááºááŒá
áºáááºá Windows áááºáááºááŸá¯á
áá
áºáá»á¬ážá¡ááœááºá ááŒáá·áºáá»á®áá±ážáááááá¬ááá¯áá±á«áºááœáẠáááºááŸááááºá
áá±á¬ááºáá¯á¶ážááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·ááá¬áá¬á¡áá áºááᯠá á±á¬áá·áºááŒáá·áºááŒááºážááŸáá·áº ááááºážáááºážááŒááºážá áá áºáá»á¬ážááá¯á· áá»áááºáááºáᬠá¡ááºááááºáá»á¬ážááᯠáá¯á¶ááŸááºááá·áºááœááºážááẠááá±á·áá«ááŸáá·áºá
áááºááŒáááºáá±á¬áá»áááºáááºááŸá¯á
source: www.habr.com