30 апреля 2015 г.

Настройка в Debian linux Vpn pptp Сервера c авторизацией в Windows Active Directory

В последенее время часто приходится делать одно и то же.
Сохраню знания, чтобы каждый раз не искать все заново. 
Озадачились переводом части VPN серверов с windows на linux, но с авторизацией все в том же домене.

Данная инструкция шаг в шаг подходит для меня и у меня работает.

Использую Debian 7.8 x86_64
Устанавливаем нужные пакет:
# apt-get install samba ntp krb5-user libpam-krb5 smbclient winbind pptpd
пусть будет домен corp.local, ip AD сервера 10.10.1.1, администратор домена administrator

Настриваем ntp:

 

в файле /etc/ntp.conf
вписываем свой ntp сервер (который скорее всего сервер AD)
server 10.10.1.1
перезапускаем ntp
# /etc/init.d/ntp restart

Настраиваем Kerberos:

 

файл /etc/krb5.conf
дописываем/меняем 3 параметра в секции libdefaults:
default_realm = CORP.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
секции realms, domain_realm, login приводим к виду (методом набивания шишек выяснил, что регистр имеет значение):

[realms]
    CORP.LOCAL = {
        kdc = 10.10.1.1:88
        admin_server = 10.10.1.1
    }

[domain_realm]
    .corp.local = corp.local
    corp.local = corp.local

[login]
    krb4_convert = true
    krb4_get_tickets = false
проверяем работу
# kinit administrator
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@CORP.LOCAL
Valid starting    Expires           Service principal
30/04/2015 14:40  01/05/2015 00:39  krbtgt/CORP.LOCAL@CORP.LOCAL
        renew until 01/05/2015 14:40

Настраиваем samba, вводим в домен:

 

/etc/samba/smb.conf
[global]
    workgroup = CORP
    realm = CORP.LOCAL
    password server = 10.10.1.1
        security = ads
        idmap uid = 10000-20000
        idmap gid = 10000-20000
        winbind enum users = yes
        winbind enum groups = yes
        template homedir = /home/%D/%U
        template shell = /bin/bash
        client use spnego = yes
        client ntlmv2 auth = yes
        encrypt passwords = yes
        winbind use default domain = yes
        restrict anonymous = 2
        domain master = no
        local master = no
        preferred master = no
        os level = 0
перезапускаем самбу:
/etc/init.d/winbind stop
/etc/init.d/samba restart
/etc/init.d/winbind start
вводим в домен
# net ads join -U administrator
перезапускаем самбу еще раз:
/etc/init.d/winbind stop
/etc/init.d/samba restart
/etc/init.d/winbind start

проверяем работу
# wbinfo -u
результатом выполнения команды будет список пользователей домена


Настраиваем PPTP VPN:

 

файл /etc/ppp/pptpd-options
добавляем меняем строки:
plugin winbind.so
ntlm_auth-helper "/usr/bin/ntlm_auth --require-membership-of='corp\\vpn_users' --helper-protocol=ntlm-server-1"
ms-dns 10.10.1.1
proxyarp
тут настраивается авторизация pptp через winbind. пускаются только пользователи группы vpn_users. если не нужно ограничение по группе, то удалите из строки --require-membership-of='corp\\vpn_users'

файл /etc/pptpd.conf
bcrelay eth0
localip 10.20.1.1
remoteip 10.20.1.2-100
перезапускаем pptpd
 /etc/init.d/pptpd restart
файл /etc/sysctl.conf
net.ipv4.ip_forward=1
применяем
# sysctl -p

ну и пускание пользователей в локалку я делаю так:
файл /etc/rc.local
iptables -A POSTROUTING -t nat -s 10.20.1.0/24 -o eth0 -j MASQUERADE