- Настройка IPSEC L2TP VPN-сервера на CentOS 7
- Подготовка сервера
- IPSEC
- Установка и настройка OpenVPN на Linux CentOS 7
- Подготовка системы
- Установка, настройка и запуск VPN-сервера
- Установка OpenVPN
- Создание сертификатов
- Настройка сервера OpenVPN на CentOS 8
- Подготовка операционной системы
- 1. Настройка времени
- 2. Настройка SELinux
- 3. Настройка брандмауэра
- Установка и создание сертификатов
- Установка OpenVPN
- Создание сертификатов
- Подготовительный этап
- Генерация ключей
- Настройка и запуск сервера
- Настройка OpenVPN-клиента
- Создание сертификатов
- На клиенте
- Windows
- Linux
- Аутентификация пользователей
- Настройка сервера
Настройка IPSEC L2TP VPN-сервера на CentOS 7
Один из лучших способов поднять сервер VPN — настроить OpenVPN. Однако, данный сервер не лишен недостатков — на клиенты потребуется устанавливать специальное программное обеспечение. Если мы хотим использовать стандартные средства операционных систем для подключения к серверу, настроим VPN IPSEC L2TP.
Подготовка сервера
Для установки ПО потребуется репозиторий EPEL:
yum install epel-release
firewall-cmd —permanent —add-port=1701/tcp
firewall-cmd —permanent —add-service=ipsec
IPSEC
yum install ipsec-tools
Открываем конфигурационный файл racoon:
Добавляем в конец файла:
remote anonymous
<
exchange_mode main,aggressive,base;
doi ipsec_doi;
passive on;
proposal_check obey;
support_proxy on;
nat_traversal on;
ike_frag on;
dpd_delay 20;
proposal
<
encryption_algorithm aes;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group modp1024;
>
proposal
<
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group modp1024;
>
>
Теперь открываем следующий файл:
Для клиентов Windows добавляем:
ip-addres1 key-password1
ip-addres2 key-password2
* где ip-addres — ip-адрес клиента, с которого будет идти подключение; key-password — пароль для подключения.
Для клиентов Android добавляем:
identifier1 key-password1
identifier2 key-password2
* где identifier — идентификатор клиента, который будет использоваться при подключении; key-password — пароль для подключения.
Создаем скрипт с настройкой ipsec политик:
spdadd 0.0.0.0/0[l2tp] 0.0.0.0/0 any -P out ipsec esp/transport//require;
spdadd 0.0.0.0/0 0.0.0.0/0[l2tp] any -P in ipsec esp/transport//require;
chmod 755 /etc/rc.d/init.d/racoon.init
Добавляем скрипт на автозапуск:
И добавляем строчку:
Разрешаем запуск сервиса racoon и стартуем его:
systemctl enable racoon
systemctl start racoon
Задаем политики ipsec:
Устанавливаем пакет xl2tpd:
yum install xl2tpd
Открываем конфигурационный файл:
В секцию [global] добавим:
[global]
ipsec saref = yes
force userspace = yes
В секции [lns default] изменяем диапазон IP-адресов:
[lns default]
ip range = 176.16.10.10-176.16.10.200
local ip = 176.16.10.1
Разрешаем автозапуск сервиса и стартуем его:
systemctl enable xl2tpd
systemctl start xl2tpd
Открываем следующий файл:
Вносим небольшие изменения в DNS:
ms-dns 77.88.8.8
ms-dns 8.8.8.8
Добавляем метод mschap2
Открываем файл с пользователями:
* где dmosk — логин; первая звездочка — любой сервер; password — пароль, который должен вводить пользователь dmosk; вторая звездочка — подключение с любого IP-адреса.
Источник
Установка и настройка OpenVPN на Linux CentOS 7
Для удобства настройки заходим под суперпользователем:
Подготовка системы
Обновляем установленные пакеты:
Установим правильную временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере московское время.
Устанавливаем сервис для синхронизации времени:
yum install chrony
Разрешаем автозапуск службы chrony и запускаем ее:
systemctl enable chronyd —now
Чтобы Selinux не включился после перезагрузки, откроем данный файл:
И отредактируем строчку SELINUX=enforcing на:
Создаем правило для firewalld:
firewall-cmd —permanent —add-port=443/udp
* в данной инструкции мы настроим работу OpenVPN на порту 443 по UDP (по умолчанию, это 1194/UDP). Если в вашем случае необходим другие порт и протокол, меняем значения на соответствующие.
. и применяем его:
* если используется iptables, правило создаем командой iptables -I 1 INPUT -p udp —dport 443 -j ACCEPT, где 443 — порт, который мы будем использовать для openvpn.
Установка, настройка и запуск VPN-сервера
Установка OpenVPN
Устанавливаем репозиторий epel:
yum install epel-release
Устанавливаем необходимые пакеты следующей командой:
yum install openvpn easy-rsa
Создание сертификатов
В основе идеи VPN лежит шифрование трафика, а значит для его работы необходимы сертификаты.
Переходим в каталог easy-rsa:
* в зависимости от версии easy-rsa, последний каталог может быть другим. Увидеть точное название каталога можно командой ls /usr/share/easy-rsa/.
Чтобы упростить и ускорить процесс создания ключей, создаем следующий файл:
export KEY_COUNTRY=»RU»
export KEY_PROVINCE=»Sankt-Petersburg»
export KEY_CITY=»Sankt-Petersburg»
export KEY_ORG=»DMOSK COMPANY»
export KEY_EMAIL=»master@dmosk.ru»
export KEY_CN=»DMOSK»
export KEY_OU=»DMOSK»
export KEY_NAME=»name-openvpn-server.dmosk.ru»
export KEY_ALTNAMES=»name-openvpn-server»
* где KEY_CN и KEY_OU: рабочие подразделения (например, можно указать название отдела); KEY_NAME: адрес, по которому будет выполняться подключение (можно указать полное наименование сервера); KEY_ALTNAMES — альтернативный адрес.
* так как мы генерируем самоподписный сертификат, значения данных полей никак не повлияют на работу OpenVPN, однако, для удобства, лучше подставить реальные данные.
Источник
Настройка сервера OpenVPN на CentOS 8
Подготовка операционной системы
Мы внесем небольшие правки в настройки. Настроим время для правильного формирования клиентских сертификатов, отключим систему безопасности SELinux, откроем нужные порты брандмауэра.
1. Настройка времени
Установим правильную временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере мы укажем московское время.
Устанавливаем утилиту для синхронизации времени:
dnf install chrony
Разрешаем автозапуск службы chronyd и запускаем ее:
systemctl enable chronyd
systemctl start chronyd
Проверить корректность времени можно командой:
2. Настройка SELinux
В нашей инструкции мы просто отключим SELinux. Если необходимо его настроить и оставить включенным, используем инструкцию Настройка SELinux в CentOS 7 (для CentOS 8 она также подходит).
И так, отключаем Selinux командой:
Чтобы Selinux не включился после перезагрузки, открываем на редактирование файл:
. и редактируем опцию SELINUX:
3. Настройка брандмауэра
Создаем правило для firewalld:
firewall-cmd —permanent —add-port=443/udp
* в данной инструкции мы настроим работу OpenVPN на порту 443 по UDP. Если в вашем случае необходим другие порт и протокол, меняем значения на соответствующие. По умолчанию, OpenVPN использует порт 1194.
Установка и создание сертификатов
Использование сертификатов является обязательным условием при использовании VPN. Поэтому сразу после установки мы создадим все необходимые ключи.
Установка OpenVPN
Устанавливаем репозиторий epel:
dnf install epel-release
Устанавливаем необходимые пакеты следующей командой:
dnf install openvpn easy-rsa
Создание сертификатов
Подготовительный этап
Переходим в каталог easy-rsa:
* в зависимости от версии easy-rsa, последний каталог может быть другим. Увидеть точное название каталога можно командой ls -l /usr/share/easy-rsa/.
Чтобы упростить и ускорить процесс создания ключей, создаем следующий файл:
export KEY_COUNTRY=»RU»
export KEY_PROVINCE=»Sankt-Petersburg»
export KEY_CITY=»Sankt-Petersburg»
export KEY_ORG=»DMOSK COMPANY»
export KEY_EMAIL=»master@dmosk.ru»
export KEY_CN=»DMOSK»
export KEY_OU=»DMOSK»
export KEY_NAME=»name-openvpn-server.dmosk.ru»
export KEY_ALTNAMES=»name-openvpn-server»
* где KEY_CN и KEY_OU: рабочие подразделения (например, можно указать название отдела); KEY_NAME: адрес, по которому будет выполняться подключение (можно указать полное наименование сервера); KEY_ALTNAMES — альтернативный адрес.
* так как мы генерируем самоподписный сертификат, значения данных полей никак не повлияют на работу OpenVPN, однако, для удобства, лучше подставить реальные данные.
Запускаем созданный файл на исполнение:
Генерация ключей
1. Инициализируем PKI:
Мы должны увидеть:
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /usr/share/easy-rsa/3/pki
. а в текущем каталоге появится папка pki.
2. Генерируем корневой сертификат (CA):
. после ввода Enter обязательно задаем пароль дважды. На запрос ввести Common Name можно просто нажать ввод или написать свое имя:
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
3. Создаем ключ Диффи-Хеллмана:
4. Для создания сертификата сервера необходимо сначала создать файл запроса:
./easyrsa gen-req vpn-server nopass
* на запрос ввода Common Name просто вводим Enter, чтобы использовать настройку из файла vars; nopass можно упустить, если хотим повысить безопасность с помощью пароля на сертификат.
. и на его основе — сам сертификат:
./easyrsa sign-req server vpn-server
После ввода команды подтверждаем правильность данных, введя yes:
Confirm request details: yes
. и вводим пароль, который указывали при создании корневого сертификата.
5. Для создания ta ключа используем команду:
openvpn —genkey —secret pki/ta.key
6. Сертификаты сервера готовы и находятся в каталоге pki.
Создаем каталог в /etc/openvpn, в котором будем хранить сертификаты:
mkdir -p /etc/openvpn/server/keys
Переходим в каталог pki:
Копируем в него необходимые сертификаты:
cp ca.crt issued/vpn-server.crt private/vpn-server.key dh.pem ta.key /etc/openvpn/server/keys/
Настройка и запуск сервера
Создаем конфигурационный файл для сервера openvpn:
И вставляем в него следующее:
local 192.168.0.15
port 443
proto udp
dev tun
ca keys/ca.crt
cert keys/vpn-server.crt
key keys/vpn-server.key
dh keys/dh.pem
tls-auth keys/ta.key 0
server 172.16.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
max-clients 32
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 0
mute 20
daemon
mode server
tls-server
comp-lzo no
* где из всех параметров, обязательно, внести изменения нужно в следующие — local: IP-адрес, на котором будет обрабатывать запросы OpenVPN; port: сетевой порт (443 позволит избежать проблем при использовании Интернета в общественных местах, но может быть уже занят в вашей системе — посмотреть список используемых портов можно командой ss -tunlp. Если порт занят, используйте любой из свободных, например 1194).
Создаем каталог для логов сервера:
Разрешаем автоматический старт сервиса vpn:
systemctl enable openvpn-server@server
И запускаем его:
systemctl start openvpn-server@server
Проверить работоспособность можно командой:
systemctl status openvpn-server@server
Настройка OpenVPN-клиента
Для настройки клиента необходимо на сервере сгенерировать сертификаты, а на клиентском компьютере установить программу openvpn и настроить ее.
Создание сертификатов
На сервере генерируем сертификаты для клиента. Для этого снова переходим в каталог easy-rsa:
Запускаем еще раз vars:
Создаем клиентский сертификат:
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
* в данном примере будет создан сертификат для client1.
Мы должны увидеть запрос на подтверждение намерения выпустить сертификат — вводим yes:
Confirm request details: yes
После появится запрос на ввод пароля для ключа ca:
Enter pass phrase for /usr/share/easy-rsa/3/pki/private/ca.key:
На сервере скопируем ключи во временную директорию, выполнив последовательно 3 команды:
cp pki/issued/client1.crt pki/private/client1.key pki/dh.pem pki/ca.crt pki/ta.key /tmp/keys
chmod -R a+r /tmp/keys
* сертификаты скопированы в каталог /tmp для удобства переноса их на клиентский компьютер.
Сертификаты готовы для скачивания.
На клиенте
В качестве примера, выполним подключение к нашему серверу с компьютеров Windows и Linux. Более подробно процесс настройки клиента описан в инструкции Настройка OpenVPN клиента.
Windows
1. Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:
Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».
2. Переходим в папку C:\Program Files\OpenVPN\config.
Копируем в нее файлы ca.crt, client1.crt, client1.key, dh.pem, ta.key из каталога /tmp/keys на сервере, например, при помощи программы WinSCP.
После переноса файлов, не забываем удалить ключи из временного каталога на сервере:
3. Возвращаемся к компьютеру с Windows, открываем блокнот от имени администратора и вставляем следующие строки:
client
resolv-retry infinite
nobind
remote 192.168.0.15 443
proto udp
dev tun
comp-lzo no
ca ca.crt
cert client1.crt
key client1.key
dh dh.pem
tls-client
tls-auth ta.key 1
float
keepalive 10 120
persist-key
persist-tun
verb 0
* где 192.168.0.15 443 — IP-адрес OpenVPN-сервера и порт, на котором он принимает запросы.
Сохраняем файл с именем config.ovpn в папке C:\Program Files\OpenVPN\config.
4. Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора.
Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:
Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.
5. Для автозапуска клиента, открываем службы Windows, находим и настраиваем службу OpenVPNService для автозапуска:
Linux
1. Устанавливаем клиента одной из команд.
а) для Rocky Linux / CentOS:
yum install epel-release
yum install openvpn
б) для Ubuntu / Debian:
apt-get install openvpn
2. Создаем каталог:
И переходим в него:
Копируем в каталог файлы ca.crt, client1.crt, client1.key, dh.pem, ta.key из каталога /tmp/keys на сервере, например, при помощи утилиты scp:
* где admin — имя пользователя, под которым можно подключиться к серверу по SSH; 192.168.0.15 — IP-адрес сервера.
Для закрытых ключей разрешаем доступ только для владельца:
chmod 600 client1.key ta.key
После переноса файлов, не забываем удалить ключи из временного каталога на сервере:
3. Создаем конфигурационный файл:
client
resolv-retry infinite
nobind
remote 192.168.0.15 443
proto udp
dev tun
comp-lzo no
ca ca.crt
cert client1.crt
key client1.key
dh dh.pem
tls-client
tls-auth ta.key 1
float
keepalive 10 120
persist-key
persist-tun
verb 0
* где 192.168.0.15 443 — IP-адрес OpenVPN-сервера и порт, на котором он принимает запросы.
4. Разово запустим клиента:
openvpn —config /etc/openvpn/client/client.conf
Соединение должно выполниться. Мы можем увидеть предупреждения — по желанию, межете их исправить самостоятельно.
5. Прерываем выполнение подключения комбинацией Ctrl + C и запустим клиента в качестве службы:
systemctl enable openvpn-client@client —now
Проверить, что соединение состоялось можно пинганув сервер по VPN-адресу:
Аутентификация пользователей
Мы можем настроить проверку пользователя по логину и паролю. Это даст дополнительный уровень защиты, а также позволит использовать один и тот же сертификат для всех подключений.
Настройка сервера
Открываем конфигурационный файл openvpn:
И добавляем следующие строчки:
username-as-common-name
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so login
* где username-as-common-name указывает на то, что openvpn должен использовать логины, как основные идентификаторы клиента; plugin указывает на путь к самому плагину и для чего он используется.
* как путь, так и название файла openvpn-plugin-auth-pam.so могут отличаться. Это зависит от версии Linux и OpenVPN. Чтобы найти путь до нужного файла, можно воспользоваться командой find / -name «openvpn-*auth-pam*» -print.
systemctl restart openvpn-server@server
При необходимости, создаем учетную запись для авторизации:
Источник