Настройка mikrotik vpn l2tp сервер, удаленное подключение
Содержание:
- Шаг 6 — Настройка брандмауэра и переадресации IP ядра
- Setting up the IPsec tunnel
- Примеры статических маршрутов в MikroTik
- Чем отличается IKEv2 от IpSec
- IKEv2 Payload Types
- 1: Установка StrongSwan
- Шаг 2 — Создание центра сертификации
- Choosing what to send over the tunnel
- 6: Настойка брандмауэра и IP forwarding
- Настройка IPSEC при конфигурации «узел-узел»
- Заключение
Шаг 6 — Настройка брандмауэра и переадресации IP ядра
После настройки конфигурации StrongSwan нам нужно настроить брандмауэр, чтобы он разрешал трафик VPN и перенаправлял его.
Если вы выполнили указания предварительных обучающих модулей, у вас должен быть включен базовый брандмауэр UFW. Если вы еще не настроили UFW, вы можете базовую конфигурацию и включить ее с помощью следующей команды:
Теперь добавьте правило, которое будет разрешать трафик UDP на стандартных портах IPSec, 500 и 4500:
Затем мы откроем один из файлов конфигурации UFW, чтобы добавить несколько политик нижнего уровня для маршрутизации и перенаправления пакетов IPSec. Перед этим нам нужно будет определить, какой сетевой интерфейс нашего сервера будет использоваться для доступа к интернету. Для этого мы можем отправить запрос интерфейса, связанного с маршрутом по умолчанию:
Ваш публичный интерфейс должен содержать слово «dev». Например, в этом результате показан интерфейс с именем , который выделен ниже:
Определив интерфейс публичной сети, откройте файл правил в своем текстовом редакторе:
Добавьте в верхнюю часть файла (перед строкой ) следующий блок конфигурации:
/etc/ufw/before.rules
Измените каждый экземпляр в конфигурации выше для соответствия имени интерфейса, которое вы определили с помощью . Строки создают правила, благодаря которым брандмауэр может обеспечивать маршрутизацию и управление трафиком между клиентами VPN и интернетом. Строка позволяет настроить максимальный размер сегмента пакета, чтобы предотвратить возможные проблемы с некоторыми клиентами VPN.
После строки и строк определения цепочки нужно добавить еще один блок конфигурации:
/etc/ufw/before.rules
Эти строки указывают брандмауэру перенаправлять трафик ESP (защищенная инкапсуляция полезной нагрузки), чтобы дать клиентам VPN возможность подключения. ESP обеспечивает дополнительную защиту пакетов VPN, когда они проходят через ненадежные сети.
Завершив редактирование, сохраните и закройте файл.
Прежде чем перезапустить брандмауэр, нам нужно изменить некоторые параметры ядра сети, чтобы разрешить маршрутизацию с одного интерфейса на другой. Откройте файл конфигурации параметров ядра UFW:
Нам нужно настроить несколько параметров:
- Прежде всего, мы активируем перенаправление пакетов PIv4.
- Мы отключим обнаружение путей MTU, чтобы предотвратить проблемы с фрагментацией пакетов.
- Также мы запретим перенаправление ICMP и отправку перенаправлений ICMP, чтобы предотвратить атаки через посредников.
Внесенные в файл изменения выделены в приведенном ниже фрагменте кода:
/etc/ufw/sysctl.conf
Завершив изменения, сохраните файл. UFW применит эти изменения при следующем запуске.
Теперь мы можем активировать все изменения, отключив и снова включив брандмауэр:
Вам будет предложено подтвердить процесс. Введите , чтобы активировать UFW с новыми настройками.
Setting up the IPsec tunnel
It is advised to create a separate Phase 1 and Phase 2 configurations to not interfere with any existing or future IPsec configuration.
/ip ipsec profile add name=NordVPN /ip ipsec proposal add name=NordVPN pfs-group=none
While it is possible to use the default template for policy generation, it is better to create a new policy and template to separate this configuration from any other IPsec configuration.
/ip ipsec policy group add name=NordVPN /ip ipsec policy add dst-address=0.0.0.0/0 group=NordVPN proposal=NordVPN src-address=0.0.0.0/0 template=yes
Create a new entry with responder=no that will request configuration parameters from the server.
/ip ipsec mode-config add name=NordVPN responder=no
Lastly, create and configurations. Specify your NordVPN credentials in username and password parameters.
/ip ipsec peer add address=lv20.nordvpn.com exchange-mode=ike2 name=NordVPN profile=NordVPN /ip ipsec identity add auth-method=eap certificate="" eap-methods=eap-mschapv2 generate-policy=port-strict mode-config=NordVPN peer=NordVPN policy-template-group=NordVPN username=support@mikrotik.com password=secret
Verify that the connection is successfully established.
/ip ipsec active-peers print installed-sa print
Примеры статических маршрутов в MikroTik
Применяется для использования разных линий интернета для разных узлов. К примеру в сети расположено два сервера, использующие внешние порты 80 и 443.
Для работы правила нужно промаркировать трафик(раздел Mangle) и указать его в параметре Routing Mark.
Применяется, когда нужно изменить некоторые параметры в автоматическом добавлении маршрута(Add default route)
В качестве параметра переключателя между провайдера используется параметр Distance. Трафик в этом случае направляется в тот маршрут, значение Distance которого МЕНЬШЕ,
Осуществляется через почередное указание шлюзов провайдера. Параметром Gateway можно задавать не только последовательность, но и управлять количественной частью. К примеру, если вам нужно чтобы к провайдеру со шлюзом 11.11.11.11 уходило в 2 раза больше трафика(или там канал в 2 раза быстрее) достаточно этот шлюз указать два раза.
В качестве шлюза указывается IP адрес VPN клиента. Использование таких маршрутов в MikroTik популярно, когда в качестве L2TP или PPTP VPN клиента выступает роутер, со своей подсетью.
Чем отличается IKEv2 от IpSec
Стоит сразу отметить что IKEv2 это разновидность IpSec с применением SSL сертификатов. Данная конструкция наследует все положительные качества у протокола IpSec такие как аппаратная поддержка маршрутизаторами(роутерами) и высокий уровень защищенности соединения. К разработке приложили руку такие гиганты как Microsoft и Cisco.
IKE (Internet Key Exchange) как v1 использует pre shared key, а как v2 – SSL сертификат. Обе версии относятся к phase-1, как первый этап, на котором происходит согласование между клиентами, устанавливающими между собой VPN туннель. Большинство ошибок, которые могут встретиться при настройке IpSec как правило происходят именно на phase-1.
IKEv2 Payload Types
- Registration Procedure(s)
-
Expert Review
- Expert(s)
-
Tero Kivinen, Valery Smyslov
- Reference
- Available Formats
Value | Next Payload Type | Notation | Reference |
---|---|---|---|
No Next Payload | |||
1-32 | Reserved | ||
33 | Security Association | SA | |
34 | Key Exchange | KE | |
35 | Identification — Initiator | IDi | |
36 | Identification — Responder | IDr | |
37 | Certificate | CERT | |
38 | Certificate Request | CERTREQ | |
39 | Authentication | AUTH | |
40 | Nonce | Ni, Nr | |
41 | Notify | N | |
42 | Delete | D | |
43 | Vendor ID | V | |
44 | Traffic Selector — Initiator | TSi | |
45 | Traffic Selector — Responder | TSr | |
46 | Encrypted and Authenticated | SK | |
47 | Configuration | CP | |
48 | Extensible Authentication | EAP | |
49 | Generic Secure Password Method | GSPM | |
50 | Group Identification | IDg | |
51 | Group Security Association | GSA | |
52 | Key Download | KD | |
53 | Encrypted and Authenticated Fragment | SKF | |
54 | Puzzle Solution | PS | |
55-127 | Unassigned | ||
128-255 | Private use |
1: Установка StrongSwan
StrongSwan – это открытый демон IPSec, который можно использовать в качестве сервера VPN.
Установите StrongSwan. Также для работы понадобится плагин StrongSwan EAP, который поддерживает парольную аутентификацию клиентов (вместо аутентификации по сертификату). Кроме того, нужно добавить несколько правил в брандмауэр, а для этого нужно установить утилиту, которая сохраняет правила и позволяет использовать их на постоянной основе.
Чтобы установить все эти компоненты, введите:
Примечание: При установке iptables-persistent инсталлятор предложит сохранить текущие правила IPv4 и IPv6. Сохраните параметры конфигурации брандмауэра, выбрав yes.
Шаг 2 — Создание центра сертификации
Для идентификации на клиентских системах серверу IKEv2 требуется сертификат. Пакет включает утилиту, которая может сгенерировать центр сертификации и сертификаты сервера. Для начала создадим несколько каталогов для хранения всех активо, с которыми мы будем работать. Структура каталогов соответствует некоторым каталогам в , куда мы постепенно переместим все создаваемые элементы. Мы заблокируем разрешения, чтобы другие пользователи не могли видеть наши частные файлы:
Располагая структурой каталогов для хранения всех элементов, мы можем сгенерировать ключ root. Это будет 4096-битный ключ RSA, который будет использоваться для подписи корневого центра сертификации.
Запустите следующие команды, чтобы сгенерировать ключ:
Получив ключ, мы можем перейти к созданию корневого центра сертификации, используя ключ для подписания сертификата root:
Вы можете изменить значение distinguished name (DN) на любое другое имя по своему желанию. Используемое здесь имя common приведено просто для примера, имя не должно соответствовать какому-либо элементу вашей инфраструктуры.
Настроив и запустив корневой центр сертификации, мы можем создать сертификат, который будет использоваться сервером VPN.
Choosing what to send over the tunnel
If we look at the generated dynamic , we see that only traffic with a specific (received by ) source address will be sent through the tunnel. But a router in most cases will need to route a specific device or network through the tunnel. In such case we can use source NAT to change the source address of packets to match the mode config address. Since the mode config address is dynamic, it is impossible to create static source NAT rule. In RouterOS it is possible to generate dynamic source NAT rules for mode config clients.
Option 1: Sending all traffic over the tunnel
In this example, we have a local network 10.5.8.0/24 behind the router and we want all traffic from this network to be sent over the tunnel. First of all, we have to make a new IP/Firewall/Address list which consists of our local network.
/ip firewall address-list add address=10.5.8.0/24 list=local
It is also possible to specify only single hosts from which all traffic will be sent over the tunnel. Example:
/ip firewall address-list add address=10.5.8.120 list=local add address=10.5.8.23 list=local
When it is done, we can assign newly created IP/Firewall/Address list to configuration.
/ip ipsec mode-config set src-address-list=local
Verify correct source NAT rule is dynamically generated when the tunnel is established.
> /ip firewall nat print Flags: X - disabled, I - invalid, D - dynamic 0 D ;;; ipsec mode-config chain=srcnat action=src-nat to-addresses=192.168.77.254 src-address-list=local dst-address-list=!local
Warning: Make sure dynamic address is not a part of local network.
Note: It is also possible to combine both options (1 and 2) to allow access to specific addresses only for specific local addresses/networks
Option 2: Accessing certain addresses over the tunnel
It is also possible to send only specific traffic over the tunnel by using the connection-mark parameter in Mangle firewall. It works similarly as Option 1 — a dynamic NAT rule is generated based on configured connection-mark parameter under .
First of all, set the connection-mark under your mode config configuration.
/ip ipsec mode-config set connection-mark=NordVPN
When it is done, a NAT rule is generated with the dynamic address provided by the server:
> /ip firewall nat print Flags: X - disabled, I - invalid, D - dynamic 0 D ;;; ipsec mode-config chain=srcnat action=src-nat to-addresses=192.168.77.254 connection-mark=NordVPN
After that, it is possible to apply this connection-mark to any traffic using Mangle firewall. In this example, access to mikrotik.com and 8.8.8.8 is granted over the tunnel.
Create a new address list:
/ip firewall address-list add address=mikrotik.com list=VPN add address=8.8.8.8 list=VPN
Apply connection-mark to traffic matching the created address list:
/ip firewall mangle add action=mark-connection chain=prerouting dst-address-list=VPN new-connection-mark=NordVPN passthrough=yes
Note: It is also possible to combine both options (1 and 2) to allow access to specific addresses only for specific local addresses/networks
6: Настойка брандмауэра и IP forwarding
Теперь нужно настроить брандмауэр для поддержки VPN-трафика. Для этого можно использовать IPTables.
Сначала отключите UFW (если этот брандмауэр включен), чтоб избежать конфликта правил:
Затем очистите список правил UFW:
Чтобы не заблокировать свою собственную сессию SSH, нужно разрешить все текущие соединения. Также нужно открыть порт 22 для поддержки новых соединений SSH (если вы используете нестандартный порт SSH, откройте его).
Чтобы принимать соединения на локальном кольцевом интерфейсе, введите:
Включите поддержку IPSec:
Затем нужно настроить перенаправление трафика ESP (Encapsulating Security Payload), чтобы VPN-клиенты могли подключаться к серверу. ESP повышает безопасность пакетов VPN, передаваемых через ненадёжные сети.
VPN-сервер будет работать как шлюз между клиентами VPN и интернетом. Поскольку VPN-сервер имеет только один внешний IP-адрес, нужно настроить маскировку, чтобы позволить серверу запрашивать данные из Интернета от имени клиентов; тогда трафик VPN-клиентов сможет поступать в сеть Интернет, и наоборот:
Чтобы избежать фрагментации IP-пакетов некоторых клиентов, нужно уменьшить размеры пакетов, отредактировав максимальный размер сегмента пакетов.
Чтобы повысить безопасность, сбрасывайте весь трафик, который не соответствует вышеперечисленным правилам.
Сохраните правила брандмауэра:
Осталось включить пересылку пакетов. Пересылка пакетов позволяет серверу поддерживать маршрутизацию данных от одного IP-адреса к другому. По сути, теперь сервер будет действовать как маршрутизатор.
Откройте /etc/sysctl.conf:
В файле нужно:
- Включить пересылку пакетов IPv4.
- Отключить Path MTU Discovery, чтобы предотвратить фрагментацию пакетов.
- Отключить поддержку icmp-редиректов, чтобы предупредить атаки посредника.
Все изменения выделены ниже красным:
Сохраните и закройте файл.
Перезапустите сервер:
При перезагрузке сервера соединение будет сброшено (это нормально). После перезагрузки снова подключитесь к серверу как пользователь с доступом к sudo. Теперь нужно протестировать настройку с помощью клиентов.
Настройка IPSEC при конфигурации «узел-узел»
С помощью IPsec можно связать одну рабочую станцию с другой, организовав соединение «узел-узел». В соединении такого типа для создания безопасного туннеля используется сеть, к которой подключены оба узла. Для создания соединения IPsec узлам нужно только постоянное подключение к Интернету или другой постоянно работающей сети.
Для соединения «узел-узел» потребуются следующие данные:
- IP-адреса обоих узлов;
- уникальное имя соединения IPsec, отличающееся от других устройств или соединений ();
- постоянный или автоматически созданный с помощью ключ шифрования;
- предварительный общий ключ проверки подлинности, используемый для установки соединения и обмена ключами шифровании во время сеанса соединения;
Рассмотрим вариант, когда два хоста устанавливают соединение друг с другом. При этом они будут использовать общий ключ с именем и демон для автоматического создания и обмена ключом проверки подлинности. Имя соединения будет иметь вид .
Ниже приведён файл для рабочей станции, с помощью которой устанавливается соединение IPsec «узел-узел» с другой рабочей станцией. Тогда вид файла будет иметь вид:
DST=X.X.X.X’ TYPE=IPSEC ONBOOT=yes IKE_METHOD=PSK
На первом компьютере символы X.X.X.X нужно заменить IP-адресом второго компьютера, а на втором компьютере сделать наоборот. Это соединение устанавливается при загрузке () и использует метод проверки подлинности с предварительным общим ключом ().
Ниже показан файл с общим ключом (), который нужен обоим компьютерам, для взаимной проверки. Содержимое этого файла должно совпадать на обоих компьютерах, а доступ к нему должен иметь только пользователь root. IKE_PSK=my_key
Для ограничения доступа к файлу можно выполнить команду:
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec0.
Ключ проверки подлинности можно изменить в любое время, для этого на обоих компьютерах нужно отредактировать файл . Для установки соединения оба ключа обязательно должны совпадать!
Ниже рассматривается конфигурацию для первого этапа соединения с удалённым узлом. Этот файл называется X.X.X.X.conf (X.X.X.X заменяется IP-адресом удалённого маршрутизатора IPsec). Необходимо иметь ввиду, что этот файл создаётся автоматически при активации туннеля IPsec и не редактируется вручную!
; remote X.X.X.X { exchange_mode aggressive, main; my_identifier address; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2 ; } }
директива X.X.X.X:
указывает, что последующие строки файла конфигурации применяются только к удалённому узлу, задаваемому по IP-адресу X.X.X.X.
в стандартной конфигурации IPsec в CentOS Linux используется режим проверки подлинности, позволяющий иметь разные IPsec-соединения с множеством узлов;
определяет метод идентификации, который будет использоваться при проверке подлинности узлов. CentOS Linux идентифицирует узлы по IP-адресам;
определяет алгоритм шифрования, используемый при проверке подлинности. По умолчанию используется стандарт тройного шифрования данных (Triple Data Encryption Standard, 3DES);
указывает алгоритм расчёта хэша, используемый на первом этапе связи;
определяет метод проверки подлинности, используемый при согласовании узлов.
указывает номер группы Диффи-Хелмана для выбора динамически создаваемых ключей сеанса. По умолчанию используется группа из 1024 бит.
Файлы также должны быть одинаковы на всех узлах IPsec, за исключением оператора . Этот оператор (и файл тоже) создаётся при активации туннеля IPsec. Ниже показан типичный файл при установленном соединении IPsec.
# Racoon IKE daemon configuration file. # See 'man racoon.conf' for a description of the format and entries. path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; sainfo anonymous { pfs_group 2; lifetime time 1 hour ; encryption_algorithm 3des, blowfish 448, rijndael ; authentication_algorithm hmac_sha1, hmac_md5 ; compression_algorithm deflate ; } include "/etc/racoon/X.X.X.X.conf"
Описание всех параметров конфигурационных файлов выходит за рамки данной статьи и может быть почерпнуто из соответствующих учебников.
Установить соединение можно, либо перезагрузив компьютер, либо выполнив на каждом узле от имени root следующую команду: .
Для проверки IPsec-соединение можно запустить утилиту tcpdump. При этом пакет должен содержать заголовок AH и данные ESP. ESP означает, что шифрование работает. Например:
17:13:20.617872 pinky.example.com > ijin.example.com: \ AH(spi=0x0aaa749f,seq=0x335): ESP(spi=0x0ec0441e,seq=0x335) (DF)
Заключение
В этом обучающем модуле вы создали сервер VPN, использующий протокол IKEv2. Теперь вы можете быть уверены, что ваши действия в сети будут защищены!
Чтобы добавить или удалить пользователей, еще раз изучите шаг 5. Каждая строка предназначена для одного пользователя, и поэтому для добавления или удаления пользователей достаточно просто отредактировать файл.
Также вы можете захотеть использовать анализатор файлов журнала, потому что StrongSwan отправляет дампы своих журналов в syslog. В обучающем модуле Установка и использование инструмента Logwatch Log Analyzer and Reporter с VPS можно найти дополнительную информацию по этой процедуре.
Вы также можете заинтересовать это руководство EFF по конфиденциальности в режиме онлайн.