ProHoster > Блог > басқарма > OpenVPN жүйесінде ШОБ ұйымының қашықтан жұмысын ұйымдастыру
OpenVPN жүйесінде ШОБ ұйымының қашықтан жұмысын ұйымдастыру
Мәселенің тұжырымы
Мақалада ашық бастапқы өнімдерде қызметкерлерге қашықтан қол жеткізуді ұйымдастыру сипатталған және оны толығымен автономды жүйені құру үшін де пайдалануға болады, сондай-ақ қолданыстағы коммерциялық жүйеде лицензиялардың жетіспеушілігі немесе оның өнімділігі жеткіліксіз болған кезде кеңейту үшін пайдалы болады.
Мақаланың мақсаты – ұйымға қашықтан қол жеткізуді қамтамасыз ететін толық жүйені енгізу, бұл «OpenVPN-ді 10 минут ішінде орнатудан» көп емес.
Нәтижесінде біз пайдаланушыларды аутентификациялау үшін сертификаттар және (міндетті емес) корпоративтік Active Directory пайдаланылатын жүйені аламыз. Бұл. біз екі тексеру факторы бар жүйені аламыз - менде бар (сертификат) және мен білетін (пароль).
Пайдаланушыға қосылуға рұқсат етілген белгі оның myVPNUsr тобына мүшелігі болып табылады. Сертификаттау орталығы офлайн режимде пайдаланылады.
Шешімді енгізу құны тек шағын аппараттық ресурстар мен жүйелік әкімшінің 1 сағаттық жұмысы болып табылады.
Біз CetntOS 3 жүйесінде OpenVPN және Easy-RSA 7 нұсқасы бар виртуалды машинаны қолданамыз, ол 100 қосылымға 4 vCPU және 4 ГБ жедел жады бөлінген.
Мысалда біздің ұйымның желісі 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.net. .23/XNUMX VPN клиенттері үшін бөлінген.
Сырттан қосылу үшін 1194/udp порты арқылы қосылым пайдаланылады және серверіміз үшін DNS жүйесінде gw.abc.ru A жазбасы жасалды.
SELinux-ты өшіру қатаң ұсынылмайды! OpenVPN қауіпсіздік саясаттарын өшірмей жұмыс істейді.
ОЖ және қолданбалы бағдарламалық қамтамасыз етуді орнату
Біз CentOS 7.8.2003 дистрибутивін қолданамыз. Операциялық жүйені минималды конфигурацияда орнатуымыз керек. Мұны қолдану арқылы жасау ыңғайлы кикстарт, бұрын орнатылған ОЖ кескінін және басқа құралдарды клондау.
Орнатқаннан кейін желі интерфейсіне мекенжай тағайындау (172.16.19.123 тапсырмасының шарттарына сәйкес) біз ОЖ-ны жаңартамыз:
$ sudo yum update -y && reboot
Сондай-ақ, уақыт синхрондау біздің құрылғыда орындалатынына көз жеткізуіміз керек.
Қолданбалы бағдарламалық құралды орнату үшін сізге негізгі редактор ретінде openvpn, openvpn-auth-ldap, easy-rsa және vim пакеттері қажет (сізге EPEL репозиторийі қажет болады).
ABC LLC шартты ұйымының параметрлері мұнда сипатталған, оларды нақтыға түзетуге немесе мысалдан қалдыруға болады. Параметрлердегі ең маңыздысы - сертификаттың жарамдылық мерзімін күндермен анықтайтын соңғы жол. Мысал 10 жыл (365*10+2 кібісе жылдар) мәнін пайдаланады. Бұл мән пайдаланушы сертификаттары шығарылмай тұрып реттелуі керек.
Әрі қарай, біз автономды сертификаттау орталығын конфигурациялаймыз.
Орнату айнымалы мәндерді экспорттауды, CA инициализациясын, CA түбірлік кілтін және сертификатын, Diffie-Hellman кілтін, TLS кілтін және сервер кілтін және сертификатын шығаруды қамтиды. CA кілті мұқият қорғалуы және құпия сақталуы керек! Барлық сұрау параметрлерін әдепкі ретінде қалдыруға болады.
Бұл криптографиялық механизмді орнатудың негізгі бөлігін аяқтайды.
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 жүйесінде есептік жазбаны тексеруді қолданамыз.
Бізге доменде қарапайым пайдаланушының және топтың құқықтары бар тіркелгі қажет, оның мүшелігі қосылу мүмкіндігін анықтайды.
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>
Ескерту:
сызықтар ҚОЙЫҢЫЗ... мазмұнына өзгерту өз сертификаттар;
Корпоративтік ортада ішкі желі болуы мүмкін және біз маршрутизатор(лар)ға 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
Файлды өзгертпес бұрын оның сақтық көшірмесін жасаңыз:
Бұл негізінен iptables ережелері, әйтпесе брандмауэр пайда болғаннан кейін пакеттелген.
Әдепкі параметрлері бар тағайындалған интерфейс tun0 болып табылады және туннельге арналған сыртқы интерфейс пайдаланылатын платформаға байланысты әртүрлі болуы мүмкін, мысалы, ens192.
Соңғы жол түсірілген пакеттерді тіркеуге арналған. Жұмысқа кіру үшін брандмауэр конфигурациясында жөндеу деңгейін өзгерту қажет:
vim /etc/sysconfig/firewalld
FIREWALLD_ARGS=--debug=2
Параметрлерді қолдану - параметрлерді қайта оқу үшін әдеттегі брандмауэр пәрмені:
$ sudo firewall-cmd --reload
Түсірілген пакеттерді келесідей көруге болады:
grep forward_fw /var/log/messages
Ары қарай не
Бұл орнатуды аяқтайды!
Клиенттік бағдарламалық құралды клиент жағында орнату, профильді импорттау және қосылу ғана қалады. Windows операциялық жүйелері үшін тарату жинағы мына жерде орналасқан әзірлеуші сайты.
Соңында, біз жаңа серверімізді бақылау және мұрағаттау жүйелеріне қосамыз және жаңартуларды жүйелі түрде орнатуды ұмытпаңыз.