Перенос OpenVPN сервера на Endian Firewall Community, "Твики" настройки EFW 2.5.1 |
Здравствуйте, гость ( Вход | Регистрация )
Перенос OpenVPN сервера на Endian Firewall Community, "Твики" настройки EFW 2.5.1 |
21.12.2012, 2:40
Сообщение
#1
|
|
Администратор Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 |
Не так давно в статье Настройка OpenVPN сервера мы писали о том, как поднять и настроить OpenVPN сервер под Windows. На днях пришлось столкнуться с задачей переноса настроенного OpenVPN сервера на софтовый роутер под управлением Endian Firewall Community 2.5.1. В этом посте мы рассмотрим некоторые моменты, которые касаются непосредственно переноса. Итак, EFW, как и любой другой полноценный софтроутер имеет в своем составе OpenVPN, который можно настроить и в качестве сервера, и в качестве клиента. Но как быть, если ключи и сертификаты у нас уже сгенерированы и мы уже имеем рабочий инстанс OpenVPN?
В нашем примере предполагается что мы имеем настроенный согласно статье Настройка OpenVPN сервер, т.е. для пользователей уже сгенерированы ключи (.key) и сертификаты (.cer), также используется ключ tls-auth. Главная сложность в том, что EFW 2.5.1 поддерживает авторизацию на основе X.509 certificate для OpenVPN, но импортировать ключ и сертификат сервера туда можно только в формате PKCS#12. Как сконвертировать ключ (.key) и сертификат (.cer) в формат PKCS#12? Для этого напишем небольшой пакетный сценарий: make-pkcs12.bat Код @echo off cd %HOME% rem convert the key/cert and embed the ca cert into a pkcs12 file. openssl pkcs12 -export -inkey %KEY_DIR%\%1.key -in %KEY_DIR%\%1.crt -certfile %KEY_DIR%\ca.crt -out %KEY_DIR%\%1.p12 rem delete any .old files created in this process, to avoid future file creation errors del /q %KEY_DIR%\*.old Выполнив его для серверного ключа make-pkcs12 Server (предварительно не забываем запустить vars.bat для инициализации переменных) на выходе получим файл Server.p12, готовый для импорта в EFW. Заходим в меню VPN -> OpenVPN Server -> Advanced в EFW и в разделе Authentication settings -> Certificate management с помощью Import server certificate from external Certification Authority (CA) импортируем сертификат сервера. Одновременно с сертификатом сервера импортируется ключ сервера, и сертификат CA (Certification Authority). Далее в Advanced settings настраиваем порт и протокол на котором у нас будет находиться OpenVPN сервер, а также другие параметры. В Authentication settings -> Authentication type выбираем что аутентификация у нас будет производиться по X.509 certificate. Теперь нам придется столкнуться с другой проблемой, в статье в конфигах у нас используется tls-auth, настройку которого из Web GUI EFW 2.5.1 поддерживает только для клиентских OpenVPN подключений. Т.е. если мы настраиваем сервер, то из web-интерфейса мы никак не сможем указать EFW что надо использовать наш ta.key. Как в EFW при настройке OpenVPN сервера использовать tls-auth? Не беда. Правда, нам потребуются небольшие знания Linux и умение работать в командной строке. Подключаемся к EFW по SSH и в /etc/openvpn/openvpn.conf.tmpl (это шаблон файла конфигурации, из него при сохранении настроек OpenVPN сервера через web-интерфейс формируется основной файл конфигурации OpenVPN сервера - /etc/openvpn/openvpn.conf) меняем следующий кусок: Код #if $DS.OPENVPN.SETTINGS.AUTH_TYPE == 'psk' client-cert-not-required auth-user-pass-verify "/usr/bin/openvpn-auth" via-file username-as-common-name #else ; ns-cert-type client tls-auth /var/efw/openvpn/ta.key 0 #if $HAS_CRL == 'on' crl-verify /var/efw/openvpn/crl.pem #end if #if $DS.OPENVPN.SETTINGS.AUTH_TYPE == 'certpsk' auth-user-pass-verify "/usr/bin/openvpn-auth" via-file username-as-common-name #end if #end if Т.е. здесь мы закомментировали строчку ns-cert-type client и добавили строчку tls-auth /var/efw/openvpn/ta.key 0. Что это дает? При формировании конфига openvpn.conf, если мы используем метод авторизации по сертификатам в openvpn.conf будет добавлена строка tls-auth /var/efw/openvpn/ta.key 0. Соответственно наш файл ta.key нам необходимо будет поместить в /var/efw/openvpn/. TLS побежден. Рассмотрим еще один вопрос. Как подключить к EFW (Endian Firewall Community) репозиторий? Как устанавливать в EFW пакеты? Наверное каждый, кто занимается администрированием EFW задумывался над тем, что было бы удобно добавить туда те же wget или mc, на самом деле такой способ есть. Можно подключить репозиторий от CentOS. Для этого заходим по SSH, набираем команду login чтобы попасть в полноценную linux'овую консоль и далее в ней: Код smart config –-set rpm-check-signatures=False smart channel --remove centos-4 smart channel --add сentos-4 baseurl="http://vault.centos.org/4.9/os/i386/" type=rpm-md -y smart update smart install wget smart install mc Для удаления данного репозитория следует воспользоваться: Код smart channel --remove centos-4 Для тех, кому необходимо собрать что-то свое из исходников в EFW понадобятся следующие пакеты: Код smart install binutils gcc glibc-devel glibc-headers glibc-kernheaders kernel-devel make Ну и напоследок. Как настроить GREEN IP из консоли? Всем известно, что при установке EFW IP интерфейса GREEN по-умолчанию - 192.168.0.15, а web-морда доступна по адресу https://192.168.0.15:10443/ ... это не всегда удобно. Допустим мы только что установили (или имеем уже установленный) EFW и нам необходимо получить доступ к web-интерфейсу к примеру из подсети 192.168.10.0/24. Менять настройки сетевой карты ПК, с которого мы будем производить настройку не всегда удобно. Однако, можно временно изменить настройки GREEN IP непосредственно на EFW, для того чтобы он оказался в требуемой сети, а затем уже нормально сконфигурировать его через web. В локальной консоли EFW (имеется ввиду, что к ПК с EFW у нас подключена клавиатура и монитор) переходим в Shell, там вводим команду login для того чтобы попасть в консоль Linux. Интерфейс GREEN - это br0, соотвественно последовательно делаем: Код ifconfig br0 down ifconfig br0 inet 192.168.10.15 netmask 255.255.255.0 ifconfig br0 up Все. EFW у нас теперь с адресом 192.168.10.15 до следующей перезагрузки. Теперь к нему можно получить доступ из требуемой нам сети и сконфигурировать. Где хранятся настройки интерфейса GREEN? Чтобы быстро изменить настройки GREEN интерфейса (можно попробовать изменить их через Web GUI в System -> Network configuration -> Network setup wizard, однако мне он там сначала предлагал сконфигурировать интерфейс RED, настройки которого мне менять совершенно не хотелось) можно воспользоваться SSH. Настройки интерфейсов содержатся в /var/efw/ethernet/settings в виде: Код ORANGE_CIDR= BLUE_ADDRESS= ORANGE_BROADCAST= BLUE_NETMASK= GREEN_IPS=192.168.10.254/24 ORANGE_ADDRESS= GREEN_NETMASK=255.255.255.0 BLUE_BROADCAST= CONFIG_TYPE=2 ORANGE_NETMASK= ORANGE_DEV=br1 GREEN_NETADDRESS=192.168.10.0 BLUE_IPS= GREEN_BROADCAST=192.168.10.255 ORANGE_IPS= ORANGE_NETADDRESS= GREEN_CIDR=24 GREEN_ADDRESS=192.168.10.254 GREEN_DEV=br0 BLUE_CIDR= BLUE_DEV=br2 BLUE_NETADDRESS= Соответственно, например, можно добавить "алиас" на GREEN интерфейс. Например, если нам нужно чтобы у нас EFW на интерфейсе GREEN отзывался и на 192.168.10.254, и на 192.168.9.1, нужно в GREEN_IPS через запятую указать требуемые IP, например - GREEN_IPS=192.168.10.254/24,192.168.9.1/24. Сохранить файл и перезагрузить ПК с EFW. После перезагрузки на интерфейсе GREEN (br0) будет уже два IP. Хотел что-то еще рассказать, но это уже пост по настройке EFW получается, а не про перенос OpenVPN под EFW, поэтому, пожалуй на сегодня на этом и остановимся. -------------------- |
|
|
Текстовая версия | Сейчас: 24.11.2024, 4:45 | |