The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интеграция VPN на базе mpd в Active Directory. (freebsd vpn win ldap radius samba)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: freebsd, vpn, win, ldap, radius, samba,  (найти похожие документы)
From: SpheriX <spherix@koguhovo.net.> Newsgroups: email Date: Mon, 26 Jul 2006 14:31:37 +0000 (UTC) Subject: Интеграция VPN на базе mpd в Active Directory. Я писал совет http://www.opennet.ru/tips/info/1058.shtml Теперь делюсь конфигами. Собственно, на истинность и пряморукость не претендую, посему мнения и комментарии гуру будут очень важны и будут учтены в последующих редакциях хауту, но... как начальное и _рабочее_ решение для новичков подойдет. Возможно, коллективно сделаем полный мануал по теме. Кто-то скажет, что я бью микроскопом по гвоздям... Возможно ;) Напишите с конфигами как сделать лучше ;) Дано: - Домен на Windows2003, настроен керберос, шлюз на фряхе. - Ядро собрано с поддержкой mppe, mppc и тунелей. - Установлен mpd. Надо заставить mpd авторизоваться в домене, причем используя керберос (таково ТЗ). Итак, начинаем. Samba3 Собираем с поддержкой ADS и WINBIND В smb.conf должно присутствовать следующее: [global] workgroup = MYNETWORK security = ADS password server = DC.MYNETWORK.LOCAL //AD-server realm =MYNETWORK.LOCAL //realm Теперь настраиваем керберос: /etc/krb5.conf [libdefaults] ticket_lifetime = 24000 default_realm = MYNETWORK.LOCAL dns_lookup_realm = false dns_lookup_kdc = false [realms] PRESSEXPO.RU = { kdc = 192.168.0.2:88 //IP доменконтроллера. admin_server = 192.168.0.2:749 default_domain = mynetwork.local } [domain_realm] .mynetwork.local = mynetwork.local mynetwork.local = mynetwork.local [logging] kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmin.log default = FILE:/var/log/krb5lib.log [pam] debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false Настраиваем загрузочные скрипты Самбы, стартуем ее. Нам нужен работающий демон winbindd. Загоняем в домен: #net ads join -I 192.168.0.2 -U <учетка админа, имеющего право заводить машины в домен> Проверяем работу. wbinfo -p wbinfo -g wbinfo -u Должны увидеть сначала, что winbindd доступен, затем список групп, затем список пользователей. Ставим и настраиваем freeradius. /etc/radius.conf auth 127.0.0.1:1812 "password-changeme" 5 4 cd /usr/local/etc/raddb clients.conf client 127.0.0.1 { secret = password-changeme shortname = 127.0.0.1 nastype = other } Файл clients пустой. В файле acct_users : DEFAULT Service-Type == Framed-User, Service-Type == Login-User, Login-Service == Telnet, Login-Service == Rlogin, Login-Service == TCP-Clear, Login-TCP-Port <= 65536, Framed-IP-Address == 255.255.255.254, Framed-IP-Netmask == 255.255.255.255, Framed-Protocol == PPP, Framed-Protocol == SLIP, Framed-Compression == Van-Jacobson-TCP-IP, Framed-MTU >= 576, Framed-Filter-ID =* ANY, Reply-Message =* ANY, Proxy-State =* ANY, Session-Timeout <= 28800, Idle-Timeout <= 600, Port-Limit <= 2 В файле attrs DEFAULT Service-Type == Framed-User, Service-Type == Login-User, Login-Service == Telnet, Login-Service == Rlogin, Login-Service == TCP-Clear, Login-TCP-Port <= 65536, Framed-IP-Address == 255.255.255.254, Framed-IP-Netmask == 255.255.255.255, Framed-Protocol == PPP, Framed-Protocol == SLIP, Framed-Compression == Van-Jacobson-TCP-IP, Framed-MTU >= 576, Framed-Filter-ID =* ANY, Reply-Message =* ANY, Proxy-State =* ANY, Session-Timeout <= 28800, Idle-Timeout <= 600, Port-Limit <= 2 В файле dictionary $INCLUDE /usr/local/share/freeradius/dictionary $INCLUDE /usr/local/share/freeradius/dictionary.microsoft В файле eap.conf eap { default_eap_type = md5 timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no md5 { } leap { } gtc { auth_type = PAP } mschapv2 { } } В файле radiusd.conf prefix = /usr/local exec_prefix = ${prefix} sysconfdir = ${prefix}/etc localstatedir = /var sbindir = ${exec_prefix}/sbin logdir = /var/log raddbdir = ${sysconfdir}/raddb radacctdir = ${logdir}/radacct confdir = ${raddbdir} run_dir = ${localstatedir}/run/radiusd log_file = ${logdir}/radius.log libdir = ${exec_prefix}/lib pidfile = ${run_dir}/radiusd.pid user = nobody group = nobody max_request_time = 30 delete_blocked_requests = no cleanup_delay = 5 max_requests = 1024 listen { ipaddr = 127.0.0.1 port = 0 type = auth } hostname_lookups = no allow_core_dumps = no regular_expressions = yes extended_expressions = yes log_stripped_names = no log_auth = yes log_auth_badpass = yes log_auth_goodpass = yes usercollide = no lower_user = no lower_pass = no nospace_user = no nospace_pass = no checkrad = ${sbindir}/checkrad security { max_attributes = 200 reject_delay = 1 status_server = no } proxy_requests = no #$INCLUDE ${confdir}/proxy.conf $INCLUDE ${confdir}/clients.conf snmp = no #$INCLUDE ${confdir}/snmp.conf thread pool { start_servers = 5 max_servers = 32 min_spare_servers = 3 max_spare_servers = 10 max_requests_per_server = 0 } modules { pap { encryption_scheme = crypt } chap { authtype = CHAP } pam { pam_auth = radiusd } unix { cache = no cache_reload = 600 radwtmp = ${logdir}/radwtmp } $INCLUDE ${confdir}/eap.conf mschap { authtype = MS-CHAP use_mppe = yes require_encryption = yes require_strong = yes with_ntdomain_hack = yes ntlm_auth = "/usr/local/bin/ntlm_auth --request-nt-key --username=%{Stripped-User-Name:-%{User-Name:-None}} --challenge=%{mschap:Challenge:-00} --nt-response=%{mschap:NT-Response:-00}" #Можно добавить --require-membership-of=MYNETWORK+VPN-Allowed #Тогда это должно выглядеть так: #ntlm_auth = "/usr/local/bin/ntlm_auth --request-nt-key # -require-membership-#of=MYNETWORK+VPN-Allowed --username=%{Stripped-User-Name:-%{User-Name:-None}} # --challenge=%{mschap:Challenge:-00} --nt-response=%{mschap:NT-Response:-00}" #И создать группу VPN-Allowed, в которую включать пользователей, # которые должны иметь #доступ по ВПН. В моем случае доступ извне должны # иметь почти все сотрудники, поэтому #--require-membership-of я не использовал. } preprocess { huntgroups = ${confdir}/huntgroups hints = ${confdir}/hints with_ascend_hack = no ascend_channels_per_line = 23 with_ntdomain_hack = no with_specialix_jetstream_hack = no with_cisco_vsa_hack = no } files { usersfile = ${confdir}/users acctusersfile = ${confdir}/acct_users preproxy_usersfile = ${confdir}/preproxy_users compat = no } detail { detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d detailperm = 0600 } detail auth_log { detailfile = ${radacctdir}/%{Client-IP-Address}/auth-detail-%Y%m%d detailperm = 0600 } detail reply_log { detailfile = ${radacctdir}/%{Client-IP-Address}/reply-detail-%Y%m%d detailperm = 0600 } detail pre_proxy_log { detailfile = ${radacctdir}/%{Client-IP-Address}/pre-proxy-detail-%Y%m%d detailperm = 0600 } detail post_proxy_log { detailfile = ${radacctdir}/%{Client-IP-Address}/post-proxy-detail-%Y%m%d detailperm = 0600 } acct_unique { key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port" } # $INCLUDE ${confdir}/sql.conf radutmp { filename = ${logdir}/radutmp username = %{User-Name} case_sensitive = yes check_with_nas = yes perm = 0600 callerid = "yes" } radutmp sradutmp { filename = ${logdir}/sradutmp perm = 0644 callerid = "no" } attr_filter { attrsfile = ${confdir}/attrs } counter daily { filename = ${raddbdir}/db.daily key = User-Name count-attribute = Acct-Session-Time reset = daily counter-name = Daily-Session-Time check-name = Max-Daily-Session allowed-servicetype = Framed-User cache-size = 5000 } always fail { rcode = fail } always reject { rcode = reject } always ok { rcode = ok simulcount = 0 mpp = no } expr { } digest { } exec { wait = yes input_pairs = request } ippool main_pool { range-start = 192.168.200.160 ####В моем случае эти IP-адреса ничего # не значат, #так как я прописывал IP клиентов в конфиге mpd range-stop = 192.168.200.170 netmask = 255.255.255.0 cache-size = 800 session-db = ${raddbdir}/db.ippool ip-index = ${raddbdir}/db.ipindex override = no maximum-timeout = 0 } } instantiate { } authorize { preprocess auth_log attr_filter mschap eap } authenticate { Auth-Type PAP { pap } Auth-Type CHAP { chap } Auth-Type MS-CHAP { mschap } pam eap } preacct { preprocess acct_unique files } accounting { detail main_pool } session { radutmp } post-auth { main_pool reply_log } pre-proxy { } post-proxy { eap } file users DEFAULT Auth-Type := MS-CHAP, #User-Password == "mypwd" Service-Type = Framed-User, Framed-Protocol = PPP, Framed-IP-Address = 192.168.0.161+, Framed-IP-Netmask = 255.255.255.255, В файле mpd.conf default: load pptp0 load pptp1 pptp0: new -i ng00 pptp0 pptp0 set ipcp ranges 192.168.0.160/32 192.168.0.170/32 load pptp_standart pptp1: new -i ng01 pptp1 pptp1 set ipcp ranges 192.168.0.160/32 192.168.0.171/32 load pptp_standart pptp_standart: set iface disable on-demand set bundle enable multilink set link yes acfcomp protocomp #Req chap set link no pap chap set link enable chap set link keep-alive 60 180 set ipcp yes vjcomp set ipcp dns 192.168.0.2 #IP dns set ipcp nbns 192.168.0.2 #IP wins set iface enable proxy-arp set bundle enable compression set ccp yes mppc set ccp yes mpp-e40 set ccp yes mpp-e56 set ccp yes mpp-e128 set ccp yes mpp-stateless set bundle yes crypt-reqd set pptp self <ip, на котором должен висеть mpd> set pptp enable incoming set pptp disable originate set iface mtu 1500 set link mtu 1500 # set iface mtu 1460 # set link mtu 1460 #Если воникают проблемы с линком с клиентом, то надо играться с mtu. #Для начала можно #поставить 1400 #set iface up-script /usr/local/traff/up.pl #set iface down-script /usr/local/traff/down.pl set radius server 127.0.0.1 password-changeme 1812 1813 set radius timeout 10 set radius config /etc/radius.conf set radius retries 3 #set bundle enable radius-acct set bundle enable radius-auth set ipcp yes radius-ip Для тех, кто ни разу еще не настраивал mpd: pptp1: #Строка в конфиге начинается без отступа. new -i ng01 pptp1 pptp1 #В начале строки стоит знак табуляции. set ipcp ranges 192.168.0.160/32 192.168.0.171/32 #Тоже табуляция. Если использовать пробелы, то конфиг будет криво разбираться. В файле mpd.links pptp0: set link type pptp pptp1: set link type pptp mpd.secret пустой /var/db/samba/winbindd_privileged Проверить права радиуса на pipe. При необходимости поправить их. Отладка: mpd без параметров, подключаемся с виндовой машины. Отладка Radius: radius -A -X Литература: http://www.opennet.ru/base/net/freeradius_freenibs_mpd.txt.html http://google.com

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Abigor (??), 05:18, 05/08/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Класс, буд пробывать скоро, тож надо рать юзверям удаленно войти в сеть для работы, то естя я правельно понял, login:pass из домена, и группа которой она юзать vpn. получилось похоже на squid+ad
     
  • 1.2, Taras (??), 08:57, 05/08/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всьо класно ...
    я делал аналогично !
    По кабелю всьо прекрасно работает , а по радио неподходит шыфрование ... Кто знает как побороть проблему ?
     
  • 1.3, Artem (??), 12:16, 09/08/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Возможно у тебя не предается или не поддерживает протокол GRE
     
  • 1.4, zyxman (?), 23:45, 10/08/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а какой MTU у радио?
     
  • 1.5, Serhii (?), 13:37, 28/08/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А у меня не работает, подскажите, выдает ошибку:
    Error:  rlm_attr_filter: Authorize method will be deprecated.
     
     
  • 2.7, user345 (?), 15:02, 06/03/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >А у меня не работает, подскажите, выдает ошибку:
    >Error:  rlm_attr_filter: Authorize method will be deprecated.


    Тоже самое, настраивал на 6.1, так и не разобрался в чем дело.

     

  • 1.6, Mikhail (??), 09:02, 08/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Добавлю свои 5 копеек.

    При смене контроллера домена (например, upgrade AD) приходится обходить все серверы и менять адреса kdc, admin_server, перенастраивать самбу и т.д. Чтобы такого не происходило -

    1) настраиваем DNS домена (невредно в любом случае :))
    2) во всех подобных местах вместо конкретного сервера (server.localdomain.ru) и/или его адреса прописываем по имени весь домен (localdomain.ru). MS DNS в ответ на запрос выдает список всех контроллеров домена (обычно они же - DNS), авторизация пройдет в любом случае.

    Если вдруг домен (еще) на WinNT, не забыть прописАть в DNS сам домен (хост '.'), WinNT 4 сам такого не делал.

     
  • 1.8, Tester (??), 05:52, 01/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    при попытке завести машину в домен выдает следующее:
    utils/net_ads.c:ads_startup_int(286)
      ads_connect: No logon servers
    Failed to join domain: No logon servers
    с чем енто может быть связано и как исправить?
     
  • 1.9, Tester (??), 20:00, 01/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    и еще интересно, как быть если каждый пользователь должен получать выделенный ему статический, внешний IP ?
     
  • 1.10, XM (?), 23:13, 15/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    как заставить мпд брать IP адрес прописанный юзеру виз AD?
     
  • 1.11, abigor (?), 14:11, 15/11/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Все это кончено хорошо, во вот
    >Ставим и настраиваем freeradius.

    а какие галки надо поставить при сборке?

     
  • 1.12, Князь (??), 05:33, 14/01/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Облом-с:
    Module: Loaded preprocess
    preprocess: huntgroups = "/usr/local/etc/raddb/huntgroups"
    preprocess: hints = "/usr/local/etc/raddb/hints"
    preprocess: with_ascend_hack = no
    preprocess: ascend_channels_per_line = 23
    preprocess: with_ntdomain_hack = no
    preprocess: with_specialix_jetstream_hack = no
    preprocess: with_cisco_vsa_hack = no
    preprocess: with_alvarion_vsa_hack = no
    rlm_preprocess: Error reading /usr/local/etc/raddb/huntgroups
    radiusd.conf[93]: preprocess: Module instantiation failed.
    radiusd.conf[214] Unknown module "preprocess".
    radiusd.conf[213] Failed to parse authorize section.

    Кто-нибудь сталкивал с такой проблемой?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру