Настройка mikrotik vpn l2tp сервер, удаленное подключение

Шаг 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 по конфиденциальности в режиме онлайн.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector