Сделать стартовой Добавить в избранное
 
Панель управления
логин :  
пароль :  
   
   
Регистрация
Напомнить пароль?
Статьи по Windows 9x Me XP 2003 Longhorn Vista Linux FreeBSD Apache MySQL хостинг PHP Perl » UNIX » Сетевые технологии » Интеграция VPN на базе mpd в Active Directory
Навигация по сайту
Главная Софт
Форум FeedBack
 
Расширенный поиск
Календарь
«    Сентябрь 2007    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Популярные статьи
 

 

UNIX » Сетевые технологии : Интеграция VPN на базе mpd в Active Directory
 
Было дано:
- Домен на Windows2003 с поднятым Kerberos.
- FreeBSD на шлюзе, куда должны были подключаться пользователи.
- VPN-демон mpd.

Задача: заставить mpd брать пароли из домена.

Решение:

- Ставим третью самбу с поддержкой кербероса.
- Настраиваем керберос
- Подсоединяем самбу в домен.
- Оставляем от нее только winbindd
- Ставим freeradius.
- Сцепляем радиус с самбой.
- Скручиваем mpd с радиусом и настраиваем сам mpd.

Итог: управляем учетными записями VPN-пользователей через обычные средства AD,
а не пишем руками данные в файл.

Примечание1.
Документация гласит, что можно связать радиус с керберосом.
То есть теоретически можно отказаться от самбы. Я так не делал,
поскольку подцепить через самбу мне лично было проще.

Примечание2.
Если использовать poptop, то можно не использовать
радиус, а использовать ntlm_auth из самбы. Тоже вариант.

Конфиги:

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
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
 
 
 
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
 
 
  • Аутентификация пользователей в squid через доменные аккаунты Windows
  • Авторизация squid в домене Windows 2003 Server
  • Установка и настройка gnu-radius + postgresql
  • Конфигурирование SAMBA и SQUID для работы с доменными пользователями
  • DHCP и динамическое обновление DNS
  •  
     
     (голосов: 0)
    Комментарии (0)  Распечатать
     
     
    Добавление комментария
       
     

    РАЗДЕЛЫ СТАТЕЙ
    На нашем сайте Вы можете почитать интересные статьи о разных операционных системах и не только о них.
     
    WINDOWS 98 - Все об ОС версии 9x - настройка, скрытые возможности, оптимизация, рекомендации и многое другое...
    FAQ   Безопасность   Восстановление   Другое   Настройка   Оптимизация   Установка


    WINDOWS 2000 - установка, настройка, оптимизация, ускорения работы, администрирование и многое другое.
       FAQ   Администрирование   Безопасность   Восстановление   Настройка   Оптимизация   Разное   Установка


    WINDOWS 2003 - настройка, полные обзоры данной ОС, оптимизация, скриншоты, FAQ...
       FAQ   Администрирование   Безопасность   Настрока   Разное   Установка


    WINDOWS XP - настройка, скрытые возможности, оптимизация, рекомендации и многое другое...
       FAQ   Безопасность   Восстановление   Другое  Настройка   Оптимизация   Установка


    WINDOWS Vista - установка, настройка, оптимизация, рекомендации и многое другое...
       FAQ   Другое   Обзор системы   Установка


    UNIX - установка, настройка, рекомендации и многое другое...
       Linux   FreeBSD   Сетевые технологии   Открытое программное обеспечение   Интернет   Разное   FAQ


    Администратору / пользователю - практические советы по работе с софтом железом и пр...
       Hardware   Internet   lan&more   Software    Exchange Server    Windows Server 2008


    Windows Server - Советы и рекомендации по настройке Windows серверов
       Exchange Server    Windows Server 2008    ISA Server


    Веб-мастеру - Apache, ASP, Flash, MySQL, хостинг и многое другое...
       Apache   ASP   Разное   Flash   Java/CSS/HTML/DHTML   MySQL   Хостинг   Perl   PHP
     
      Если после прочтения статьи у Вас возникли вопросы/предложения/дополнения, Вы можете изложить их на нашем форуме в соответствующем разделе.
    Если Вы являетесь автором статьи которая размещена на нашем портале незаконно, просим Вас сообщить нам об этом.