Bunch OpenVPN боюнча Windows Server жана бул нерселердин миграциясы менен Mikrotik Linux

Салам!

Ар бир бизнес эртеби-кечпи күтүлбөгөн жерден алыстан кирүү керек.
Дээрлик ар бир IT адис ишканада өз тармактарына алыстан кирүүнү уюштуруу зарылдыгына туш болот.

Мен үчүн, башкалар сыяктуу эле, бул муктаждык мага "кечээ" сыяктуу тийди. Бардык жакшы жана жаман жактарын талдап, ошондой эле тонналаган маалыматты карап чыгып, теориялык жактан бир аз изилдеп чыккандан кийин, мен орнотууну улантууну чечтим.

Коопсуздук максатында ал тандалып алынган OpenVPN кийинки ишке ашырууда: операциялык системасы бар серверде Windows Server 2012-жылы ага виртуалдык машина орнотулган, Windows Server 2012, жана ага өз кезегинде сервер OpenVPN, сертификаттарды берип, кол койгон.

Ыңгайлуулук үчүн, аны "сертификация сервери" деп атайлы. Андан кийин, мен сервердин сертификатын алып, Mikrotikке киргизип, андан кийин аны Mikrotik роутеринин өзүндө иштеттим. OpenVPN аккаунттар жана профилдер менен. Кардарлардын сертификаттарын берүү үчүн сертификация сервери да колдонулган.

Ишке ашыруу, албетте, коркунучтуу болду жана ошол кезде менин тажрыйбам, айталы, коопсуздук маселесинде жетишсиз болсо да, эң жаман чечим болгон эмес.

Бул байланыш бир аз убакытка чейин иштеди жана мага жаңы маалымат берилди: сертификация серверин төмөнкүгө жылдыруу Linux, Mikrotik менен байланышты сактап калуу менен - ​​кардарларга зыян келтирилбеши керек.

Менин билимим Linux ошол учурда аяктаган Ubuntu 16.04LTS графикалык интерфейси менен, ал RDP аркылуу серверге туташуу үчүн терминал катары колдонулган WindowsБашкача айтканда, sudo apt-get -f install -y жана бир сантиметрге да көп эмес.

ОС кайсы деген суроону изилдеп чыккандан кийин Linux үй-бүлө менин уюмум үчүн туруктуураак жана келечектүү, мен ошого токтолдум CentOS 7 Минималдуу.

Баштоо үчүн, мен теорияга бир аз тереңдеп кирүүнү чечтим, анын жалпысынан кандайча иштээрин жана иштешин түшүнүү үчүн. Каналдан видеосабактарды көрдүм www.youtube.com/channel/UCKdRgZWgy42YxoFcTJ30LTA (Такыр жарнак эмес, алар мен биринчи жолуккандарым эле). Жагымдуу үндүү кыз мени тандалган ОСте иштөөнүн негиздери менен тааныштырды.

Алгач, мен компьютериме Hyper-V программасын ишке киргизип, ал жерге орноттум. CentOS 7 Минималдуу. Орнотуу учурунда мен Администратор колдонуучусун түзүп, root үчүн SSHти толугу менен өчүрдүм. Кооз көп түстүү экран менен коштошуп, терминалдын кара-ак дүйнөсүнө сүңгүп кирдим.

Менимче, программалык камсыздоону орнотуу процессин сүрөттөөнүн эч кандай мааниси жок, процесстин жүрүшүндө пайда болгон көйгөйлөргө көңүл буруп, аларды чечүү үчүн мен кичинекей сценарий жазууга туура келген (ал кесилген жерде. Ар биринин сыпаттамасы. утилиталарды Интернеттен тапса болот, бирок мен муну жасаган учурда, бул скрипт али жок болчу, бардыгы биринчи жолу тийүү жана туш келди жасалган).

Скриптте мен сервер үчүн зарыл болгон минималдуу утилиталарды орнотууну автоматташтырууга, Selinuxту өчүрүүгө, Epel репозиторийин туташтырууга, орнотууга аракет кылдым OpenVPNж.б. Төмөндө скрипттин өзү келтирилген; ал жөнөкөй, бирок колдонууга оңой. Мен майда-чүйдөсүнө чейин токтолбойм, бирок кимдир бирөөгө керек болсо, мага кабарлаңыз.

Скриптти колдонгондон кийин, алдын ала конфигурацияланган сервер пайда болот. OpenVPN, жашыл көзүн кысып.

#!/bin/bash
cd /etc/sysconfig/
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' selinux
sudo setenforce 0
cd /home/Admin
sudo yum update -y
sudo yum install epel-release -y
sudo yum install mc -y
sudo yum install nano -y
sudo cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax
sudo yum install chrony -y
sudo systemctl start chronyd
sudo systemctl enable chronyd
sudo yum install net-tools -y
sudo yum install iftop -y
sudo yum install htop -y
sudo yum install lsof -y
sudo yum install dos2unix -y
sudo yum install wget -y
sudo yum install tcpdump -y
sudo yum install openvpn -y
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.3/EasyRSA-3.0.3.tgz
sudo tar -xvzf EasyRSA-3.0.3.tgz
sudo chown -R Admin:Admin /var/log
sudo chmod 755 /var/log
mkdir /var/log/openvpn
mkdir /etc/openvpn/ccd	
sudo chown -R Admin:Admin /etc/openvpn/ccd
sudo chown -R Admin:Admin /var/log/openvpn
chmod 755 /etc/openvpn/ccd
chmod 755 /var/log/openvpn
echo >/var/log/openvpn/openvpn-status.log
echo >/var/log/openvpn/openvpn.log
sudo chown -R Admin:Admin /etc/resolv.conf
chmod 755 /etc/resolv.conf
echo  nameserver 8.8.8.8 >>/etc/resolv.conf
cd /etc/openvpn/ 
sudo /home/Admin/EasyRSA-3.0.3/easyrsa init-pki
sudo chown -R Admin:Admin /etc/openvpn
chmod 755 /etc/openvpn
 echo  set_var EASYRSA_DN "org" >/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_COUNTRY "RU" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_KEY_SIZE 4096 >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_PROVINCE "LIP" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_CITY "Lipetsk" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_ORG "Cool-Admin" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_EMAIL "xxx.ru" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_OU "Our_ORG" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_CN "changeme" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_CERT_EXPIRE 3650 >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_DH_KEY_SIZE=2048 >>/home/Admin/EasyRSA-3.0.3/test
sudo /home/Admin/EasyRSA-3.0.3/easyrsa build-ca nopass
sudo /home/Admin/EasyRSA-3.0.3/easyrsa build-server-full Serv nopass
sudo /home/Admin/EasyRSA-3.0.3/easyrsa build-client-full Client1 nopass
sudo /home/Admin/EasyRSA-3.0.3/easyrsa --vars=vars gen-dh
sudo /home/Admin/EasyRSA-3.0.3/easyrsa --vars=vars gen-crl
 mkdir keys
sudo chown -R Admin:Admin /etc/openvpn/keys
chmod 755 /etc/openvpn/keys
sudo cp /etc/openvpn/pki/ca.crt /etc/openvpn/keys
sudo cp /etc/openvpn/pki/dh.pem /etc/openvpn/keys
sudo cp /etc/openvpn/pki/crl.pem /etc/openvpn/keys
sudo cp /etc/openvpn/pki/issued/Serv.crt /etc/openvpn/keys
sudo cp /etc/openvpn/pki/private/Serv.key /etc/openvpn/keys
echo port 443 						>/etc/openvpn/server.conf
echo proto udp					>>/etc/openvpn/server.conf
echo dev tun						>>/etc/openvpn/server.conf
echo ca /etc/openvpn/keys/ca.crt			>>/etc/openvpn/server.conf		
echo cert /etc/openvpn/keys/Serv.crt			>>/etc/openvpn/server.conf
echo key /etc/openvpn/keys/Serv.key		>>/etc/openvpn/server.conf
echo dh /etc/openvpn/keys/dh.pem			>>/etc/openvpn/server.conf
echo crl-verify /etc/openvpn/keys/crl.pem		>>/etc/openvpn/server.conf
echo client-config-dir /etc/openvpn/ccd		>>/etc/openvpn/server.conf
echo topology subnet					>>/etc/openvpn/server.conf
echo server 172.21.0.0 255.255.255.0		>>/etc/openvpn/server.conf
echo route 172.21.0.0 255.255.255.0			>>/etc/openvpn/server.conf
echo push "dhcp-option DNS 8.8.8.8"		>>/etc/openvpn/server.conf
echo push "dhcp-option DNS 8.8.4.4"		>>/etc/openvpn/server.conf
echo keepalive 10 120				>>/etc/openvpn/server.conf
echo persist-key					>>/etc/openvpn/server.conf
echo persist-tun					>>/etc/openvpn/server.conf
echo status /var/log/openvpn/openvpn-status.log	>>/etc/openvpn/server.conf
echo log-append /var/log/openvpn/openvpn.log	>>/etc/openvpn/server.conf
echo verb 2						>>/etc/openvpn/server.conf
echo mute 20						>>/etc/openvpn/server.conf
echo daemon						>>/etc/openvpn/server.conf
echo mode server					>>/etc/openvpn/server.conf
echo user nobody					>>/etc/openvpn/server.conf
echo group nobody					>>/etc/openvpn/server.conf
sudo chown -R Admin:Admin /etc/sysctl.conf
chmod 755 /etc/sysctl.conf
echo net.ipv4.ip_forward=1 >>/etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
sudo systemctl enable openvpn@server
sudo systemctl start openvpn@server
sudo systemctl status openvpn@server

жөндөө OpenVPN Ал толугу менен ийгиликтүү болгон жок.

Укуктар саясатынын өзгөчөлүктөрү жөнүндө билбөө Linux системаларда мен журналдарды изилдөөгө жана бардык файлдарга керектүү уруксаттарды берүүгө көп убакыт короттум.

Баскыч басылганда OpenVPN жашыл түскө айланганда, мен абдан кубандым, бирок кийинчерээк бул башталышы гана экени белгилүү болду. Мен өзүмдүн наивдүүлүгүм менен баары иштейт деп үмүттөнүп, түпкү сертификаттарды жана crl.pem файлын алмаштырууга ишендим. Акырында, серверден башкасына которулушум керек болду Windows төмөнкү файлдар:

Serv.crt — Сервер сертификаты
Serv.key — Сервер ачкычы
Ca.crt - Түпкү сертификат
Ca.key — Root ачкычы
Crl.pem — Сертификатты жокко чыгаруу файлы
Dh.pem - Diffie-Hellman ачкычы
Index.txt - Учурдагы сертификаттар тууралуу маалымат камтылган файл
Сериялык - бул сертификаттардын актуалдуулугуна да жооп берет

Ошондой эле сизге certs_by_serial папкасы, vars файлы жана бардык кардар ачкычтары жана сертификаттары керек.
Микротикте сертификаттар ордунда калды, ошондуктан баары иштеди.

Сертификатты жокко чыгарууга аракет кылганда көйгөйлөр пайда болду, ал такыр иштеген жок - index.txt файлын unix форматына айландыруу керек болчу, бирок мен аны дароо кылган жокмун. Мен dos2unix утилитасын колдондум.

Эми сертификаттар жокко чыгарылды, бирок эч кандай көйгөйсүз иштей берди, анткени Микротик алардын жокко чыгарылганын жана кандайдыр бир жол менен кабардар болушу керектигин билген эмес.

Көрсөтмөлөрдү окуп, ошондой эле Александр ERI менен кеңешкенден кийин (чоң рахмат!), мен сертификаттоо серверине жөнөкөй Apache http серверин орнотуп, ага жокко чыгарылган сертификаттардын файлын жарыяладым. Бир IPден жарыяланган файлды кошпогондо, ага кирүү толугу менен бөгөттөлгөн.

Mikrotik терминалында, /Система/Сертификаттар/CRL өтмөгүндө жарыяланган crl.pemге жол көрсөтүлгөн. Бул жерде Mikrotik бир гана http жана CRL өтмөгү үчүн абсолюттук даректи кабыл алаарын тактоо керек, б.а. Ал мындай көрүнүшү керек болчу: 127.0.0.1/crl/1.crl
Баары иштеди, жок дегенде RouterOSтин 6.4.2.x версиялары үчүн, бирок кардар конфигурациялары кол менен түзүлүшү керек болчу, бул мен үчүн өкүнүчтүү жана бир топ ыңгайсыздыктарды жаратты. Бир жумадан кийин мен 50гө жакын кардар үчүн конфигурацияларды түзүшүм керек болгондо, мен бул процессти тездетүүнү чечтим жана бул үчүн Интернеттен табылган башка бирөөнүн сценарийинин бир бөлүгүн колдондум.

Скрипт мындай иштейт: ишке киргизгенден кийин, биз "кардардын атын" көрсөтөбүз, "парол коюу керекпи же жокпу" деген суроого жооп беребиз, андан кийин "client.ovpn" конфигурациясынын даяр файлын алабыз, сертификаттар жана орнотуулар бириктирилген. ага. Аны колдонуу үчүн /etc/openvpn ичинде болушуңуз керек. Жолду өзүңүзгө алмаштыруу керек болгон саптарга комментарийлер менен кол коем. Ошондой эле конфигурацияны түзүү процессинде скрипт аларды алмаштыра алышы үчүн кардар орнотуулары менен файлды түзүү керек.

#!/bin/bash
function newClient () {
	echo ""
	echo "Tell me a name for the client."
	echo "Use one word only, no special characters."

	until [[ "$CLIENT" =~ ^[a-zA-Z0-9_]+$ ]]; do
		read -rp "Client name: " -e CLIENT
	done

	echo ""
	echo "Do you want to protect the configuration file with a password?"
	echo "(e.g. encrypt the private key with a password)"
	echo "   1) Add a passwordless client"
	echo "   2) Use a password for the client"

	until [[ "$PASS" =~ ^[1-2]$ ]]; do
		read -rp "Select an option [1-2]: " -e -i 1 PASS
	done

	#cd /etc/openvpn/easy-rsa/ || return
	case $PASS in
		1)
		sudo /home/admin/EasyRSA-3.0.3/easyrsa build-client-full "$CLIENT" nopass
		;;
		2)
		echo "You will be asked for the client password below"
			./easyrsa build-client-full "$CLIENT"
		;;
	esac
# Generates the custom client.ovpn
	cp /etc/openvpn/client-template.txt "$home/home/admin/IT/Temp/$CLIENT.ovpn" 
#Директория в которой хранится файл с настройками клиента.
#Директория, в которой сформируется файл конфигурации
	{
		echo "<ca>"
		cat "/etc/openvpn/pki/ca.crt" #Директория хранения корневого сертификата
		echo "</ca>"

		echo "<cert>"
		awk '/BEGIN/,/END/' "/etc/openvpn/pki/issued/$CLIENT.crt" #Директория с созданным #сертификатом клиента
		echo "</cert>"

		echo "<key>"
		cat "/etc/openvpn/pki/private/$CLIENT.key" #Директория с созданным ключом клиента
		echo "</key>"

} >> "$home/home/admin/IT/Temp/$CLIENT.ovpn" #Директория, в которой сформируется файл #конфигурации

	echo ""
	echo "Client $CLIENT added, the configuration file is available at $home/admin/IT/OVPN/Temp/$CLIENT.ovpn."
	echo "Download the .ovpn file and import it in your OpenVPN client."
exit 0;
}
newClient

Бир аз убакыт өткөндөн кийин, алыстан кирүүгө коюлган жаңы чектөө бул серверди да, учурдагы Mikrotik байланышын да жок кылууга аргасыз кылды. Жаңы сервер түзүлдү. OpenVPN, азыр толугу менен иштеген IT бөлүмүнүн кызматкерлери үчүн CentOS. Бирок бул таптакыр башка окуя.

Макаланы оңдоого жардам бергени үчүн Иван менен Павелге терең ыраазычылыгымды билдирем.

Source: www.habr.com

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster