Защищенный VPN на CentOS 6 из xl2tpd, openswan, dnsmasq и авторизацией в AD

Задача

  • Необходимо орнанизовать защищенный доступ для сотрудников компании во внутренюю офисную сеть извне.

  • В VPN пускаем только трафик в офисную сеть, маршруты в офисную сеть раздаем автоматически.

  • Для того, чтобы в xl2tpd настроить авторизацию в AD, необходимо чтобы сервер, на котором установлен xl2tpd входил в домен! О том, как эго туда затащить, читайте в этой статье.

Установка нужных пакетов

Нужные нам пакеты лежат в репозитории EPEL. Подключаем его.

  • Для x86_64

    rpm --import
    rpm -ivh
  • Для x86

    rpm --import
    rpm -ivh

Берем нужное


yum -y install xl2tpd openswan dnsmasq ppp

Настройка

openswan

/etc/ipsec.secrets

1.2.3.4     %any:     PSK     "Pre-Shared_KEY"
  • Здесь рассматривается вариант настройки IPSec-L2TP с Pre-Shared Key. В качестве PSK лучше указать что-то типа 7vFDC4W0XRfF.
  • 1.2.3.4 -- это внешний ip-адрес вашего VPN-сервера, тот, с которым будет устанавливать соединение VPN-клиент.

/etc/ipsec.conf

1234567891011121314151617181920212223242526272829
version 2.0     # conforms to second version of ipsec.conf specification config setup        interfaces=%defaultroute        nat_traversal=yes        oe=off        protostack=netkey        virtual_private=%v4:192.168.0.0/16,%v4:10.0.0.0/8,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:!10.10.1.0/24 conn l2tp-psk        authby=secret        pfs=no        auto=add        rekey=no        type=transport        right=%any        rightsubnet=vhost:%priv,%no        rightprotoport=17/%any        # Using the magic port of "0" means "any one single port". This is        # a work around required for Apple OSX clients that use a randomly        # high port, but propose "0" instead of their port.        left=1.2.3.4        leftprotoport=17/1701        # Apple iOS doesn't send delete notify so we need dead peer detection        # to detect vanishing clients        dpddelay=10        dpdtimeout=90        dpdaction=clear        
  • В блоке config setup файла /etc/ipsec.conf в параметре virtual_private задаются серые сети. При помощи инверсии ! можно исключить определенные сети.
  • В блоке conn l2tp-psk в left указываем внешний ip-адрес, на котором слушает xl2tpd.

xl2tpd

  • listen-addr – внешний IP
  • ip range и local ip должны быть из серой офисной сети. Можно указать какую-то абстрактную сеть исключительно для p-t-p, но тогда не будет работать dnsmasq и proxyarp!

/etc/xl2tpd/xl2tpd.conf

12345678910111213
[global]listen-addr = 1.2.3.4 [lns default]ip range = 192.168.0.65-192.168.0.99local ip = 192.168.0.64assign ip = yesrefuse pap = yesrequire authentication = yesname = prometheus ppp debug = yespppoptfile = /etc/ppp/options.xl2tpdlength bit = yes

ppp

  • Для работы ntlm_auth-helper должна быть установлена samba и сервер, на котором производится настройка, должен быть втащен в домен. Подробности в статье Добавление сервера Linux в Active Directory (CentOS 6).
  • Обращаю внимание на то, что в данном конфиге используется winbind separator = +. Если используется значение по-умолчанию, нужно экранировать \\!
  • '--require-membership-of="DOMAIN+OFFICE_VPN"'. В этой конструкции DOMAIN -- это NetBIOS-имя домена AD, а OFFICE_VPN -- это группа, в которой должны находится пользователи, которым разрешена авторизация на VPN-сервере.

/etc/ppp/options.xl2tpd

12345678910111213141516
ipcp-accept-localipcp-accept-remotems-dns  192.168.0.2ms-dns  192.168.0.22noccpauthcrtsctsidle 1800mtu 1200mru 1200nodefaultroutedebugproxyarpconnect-delay 5000plugin winbind.sontlm_auth-helper '/usr/bin/ntlm_auth --helper-protocol=ntlm-server-1 --require-membership-of="DOMAIN+OFFICE_VPN"'

dnsmasq

  • По невыясненной причине dnsmasq у меня не работал, если в качестве p-t-p сети была указана сеть, не являющейся серой офисной 192.168.0.0/24, которая в свою очередь используется на внутреннем интерфейсе сервера.
  • 192.168.0.64 – это p-t-p адрес туннеля со стороны сервера
  • except-interface -- это интерфейсы, на которых не должен работать dnsmasq (там другие dhcp-серверы работают)

/etc/dnsmasq.conf

1234567891011
bind-interfacesexcept-interface=bridge0except-interface=virbr0except-interface=eth0 dhcp-range=192.168.0.64,staticdhcp-option=option:routerdhcp-option=121,192.168.0.0/24,192.168.0.64dhcp-option=249,192.168.0.0/24,192.168.0.64dhcp-option=vendor:MSFT,2,1idomain=domain.local

Запуск


chkconfig dnsmasq on
chkconfig ipsec on
chkconfig xl2tpd on
service dnsmasq start
service ipsec start
service xl2tpd start

Дополнительные ссылки

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

Содержание этого поля является приватным и не предназначено для показа.

Plain text

  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.