Samba4, Radius и PPTP с использованием MS-CHAP v2

…У-ф-ф, свершилось. Всё оказалось довольно просто, хотя времени потратить пришлось изрядно, в основном на поиск информации, коей на просторах Интернета (полезной, конечно) – кот наплакал… А уж как она (эта информация) разрознена! Поэтому, решил написать это руководство, основанное на собственном опыте внедрения. Главное, что всё будет собрано в одном месте (кроме, возможно, настроек bind9, но об этом чуть позже).

Итак, задача. Есть сервер с Ubuntu 12.04. Он должен стать:

  • PDC Windows-домена c Active-Directory.
  • Сервером VPN (пусть, например, это будет PPTP, но с обязательной поддержкой MS-CHAP v2 и MPPE-128) с авторизацией на Radius –сервере (для определённости – freeradius).
  • Соответственно – Freeradius-сервером.
  • Терминальным сервером, на котором прозрачно авторизуются пользователи AD.

Приступаем.

Ставим Samba4

Внимательно читаем Samba4/HOWTO. На момент начала установки была доступна следующая версия Samba4 -4.0.0rc2. Сейчас, насколько знаю – 4.0.0rc3. Я же работал с RC2 и описывать буду его.
Делаем все по инструкции HOWTO, но не забываем о нескольких нюансах:
  1. Мы ведь хотим, чтобы у нас происходила аутентификация наших пользователей AD на Linux-компьютере? Тогда не забываем установить в систему пакет libpam0g-dev (примерно так: sudo apt-get install libpam0g-dev). Без этих библиотек поддержка pam в samba4 не будет осуществлена (в построенном проекте будет отсутствовать каталог /usr/local/samba/lib/security/ с очень необходимой библиотекой pam_winbind.so).
  2. Я бы рекомендовал (настоятельно!) вместо ./configure использовать ./configure.developer.

Далее делаем, как описано в WiKi Samba4 HOWTO. Построенная samba4 будет размещена в директории /usr/local/samba/. Ещё раз обращу внимание, что все бинарные файлы samba4 располагаются в каталоге /usr/local/samba/bin/, службы – в каталоге /usr/local/samba/sbin/, поэтому обращаться к ним теперь нужно по абсолютным путям, либо же поправить переменную PATH, или же – как поступил я, ибо ставил samba4 на машину без samba3 – сделать символические ссылки всех файлов из каталога /usr/local/samba/bin/ в каталог /usr/bin/, а из каталога /usr/local/samba/sbin/ – в каталог /usr/sbin/.
Теперь делаем «заготовку» (provision) samba4, как описано в HOWTO. Помимо прочего, эта процедура создаст в каталоге /usr/local/samba/etc/ основной конфигурационный файл samba – smb.conf, который можно дополнить необходимыми опциями и «шарами» и… запускать самбу! Вот как выглядит мой /usr/local/samba/etc/smb.conf:
# Global parameters
[global]
	dos charset = CP860
	workgroup = <DOMAIN> # NetBIOS имя вашего домена
	realm = <domain.что-то>  #ваш домен 
	netbios name = <NetBIOS_Name> # NetBIOS имя вашего контроллера
	server role = active directory domain controller
	dns forwarder = 127.0.0.1 # этот же сервер является dns-сервером.
	template shell = /bin/bash
	# последние параметры в секции я поставил так, на всякий случай – хуже не будет…
	winbind use default domain = Yes
	winbind enum users = Yes
	winbind enum groups = Yes

[netlogon]
	path = /usr/local/samba/var/locks/sysvol/uchteno.local/scripts
	read only = No

[sysvol]
	path = /usr/local/samba/var/locks/sysvol
	read only = No

#[profiles]
#	path = /var/lib/samba/profiles
#	read only = no
#	browseable = No
# далее ваши «шары», описанные обычным способом.


Для запуска samba4 в каталоге /etc/init/ создаем файл samba4.conf примерно такого содержания:

description "SMB/CIFS File and Active Directory Server"
author      "Jelmer Vernooij <jelmer@ubuntu.com>"

start on (local-filesystems and net-device-up)
stop on runlevel [!2345]

expect fork
normal exit 0

pre-start script
	[ -r /etc/default/samba4 ] && . /etc/default/samba4
	install -o root -g root -m 755 -d /var/run/samba
	install -o root -g root -m 755 -d /var/log/samba
end script

exec /usr/local/samba/sbin/samba –D

Запуск/остановка сервиса будет осуществляться так:
# service samba4 start
# service samba4 stop
# service samba4 restart

Отдельной песни заслуживает настройка dns, т.к. на этом сервере уже крутился bind9 со своими зонами, а samba4, имея свой встроенный dns-сервер, не захотела «подружиться» с уже настроенным bind9, поэтому… давайте, пока ограничимся инструкциями HOWTO, а если будет интересно – потом я опишу связку samba4-bind9.
Всё остальное – строго по HOWTO, упомянутом выше, с несколькими замечаниями.
  • Установленный на Windows 7 пакет Windows Remote Administration Tools имеет две неприятные особенности (пока заметил две):
    — во-первых, в оснастке ADUC для свойств пользователя напрочь отсутствует вкладка «Dial-in» (или как она по-русски?), и, значит, настройку возможности удалённого доступа для пользователей придётся делать другими способами;
    — во-вторых, управление групповыми политиками возможно только под учёткой Administrator, несмотря на то, что специально созданный пользователь был включён во все возможные группы…
  • Честно скажу, пока не разбирался подробно с возможностью групповых политик под samba4…

Итак, samba4 установлена и запущена. Теперь – черёд аутенфикации пользователей AD в Linux

Настройка Winbind

Идём в документацию Wiki Samba4/Winbind и делаем ВСЁ-ВСЁ-ВСЁ, что там написано. Не забываем сделать рестарт системы после внесения изменений в /etc/nsswitch.conf, ибо… В общем, нужна перезагрузка. Аккуратней с файлами в /etc/pam.d/, потому что если ошибётесь – у вас сервер превратится в «чёрный ящик», т.к. зайти уже на него не сможете ни по ssh, ни с консоли… Ежели сделали всё без ошибок – вуаля, можете теперь логиниться на Linux-сервере под аккаунтами пользователей Active Directory!
Впрочем, давайте я ещё раз перечислю необходимые действия и приведу все свои (рабочие!) конфигурационные файлы, чтобы всё было в одном месте.
Итак.
Делаем доступной библиотеку libnss_winbind.so:
# ln -s /usr/local/samba/lib/libnss_winbind.so.2 /lib/libnss_winbind.so
# ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2

Правим /etc/nsswitch.conf:
# /etc/nsswitch.conf
passwd:	        compat winbind
group:		compat winbind
shadow:	        compat

hosts:		files dns
networks:	files

protocols:	db files
services:	db files
ethers:		db files
rpc:	        db files

netgroup:	nis

Вот после этой правки сразу же перегрузитесь!
Тестируем winbind. Да, не смущайтесь, что такого процесса в системе нет – демон samba теперь выполняет все функции.
Доступность winbind:
$ /usr/local/samba/bin/wbinfo -p 
Ping to winbindd succeeded

Winbind возвращает список пользователей домена:
$ /usr/local/samba/bin/wbinfo -u
...
<ВАШ_ДОМЕН>\Administrator
...

getent passwd даёт список ВСЕХ пользователей –и линуксовых, и доменных:
$ getent passwd
root:x:0:0…
...
<ВАШ_ДОМЕН>\Administrator:x:0:100::/home/MATWS/Administrator:/bin/false
...

Команда id возвращает информацию о пользователях домена:
$ id Administrator
uid=0(root) gid=100(users) groupes=0(root),100(users),3000004(Group Policy Creator Owners),3000008(Domain Admins)

Обратите внимание, что созданный на этапе «заготовки» samba4 доменный пользователь Administrator имеет uid=0 со всеми вытекающими отсюда последствиями!
Настройка pam

Прежде всего, делаем доступной библиотеку pam_winbind.so:
# ln -s /usr/local/samba/lib/security/pam_winbind.so /lib/security

Настраиваем следующие файлы в каталоге /etc/pam.d/:
/etc/pam.d/common-auth
#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
auth	sufficient			pam_winbind.so
auth	[success=1 default=ignore]	pam_unix.so nullok_secure  use_first_pass
# here's the fallback if no module succeeds
auth	requisite			pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth	required			pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config


/etc/pam.d/common-account:
#
# /etc/pam.d/common-account - authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system.  The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
#

# here are the per-package modules (the "Primary" block)
account	sufficient						pam_winbind.so
account	[success=1 new_authtok_reqd=done default=ignore]	pam_unix.so 
# here's the fallback if no module succeeds
account	requisite						pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
account	required						pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config


/etc/pam.d/common-session:
#
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive).
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
session	[default=1]			pam_permit.so
# here's the fallback if no module succeeds
session	requisite			pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session	required			pam_permit.so
# The pam_umask module will set the umask according to the system default in
# /etc/login.defs and user settings, solving the problem of different
# umask settings with different shells, display managers, remote sessions etc.
# See "man pam_umask".
session	required			pam_mkhomedir.so
session	required			pam_winbind.so
session optional			pam_umask.so
# and here are more per-package modules (the "Additional" block)
session	required	pam_unix.so 
session	optional			pam_ck_connector.so nox11
# end of pam-auth-update config


Вот теперь у вас появилась возможность логиниться на Linux-компе под пользователем домена!

Freeradius

Следующий этап – установка и настройка freeradius-сервера, настройка pptpd для работы в связке с freeradius с использованием данных Active Directory и протоколов MS-CHAP v2 и MPPE-128. И не верьте тому, что для реализации MS-CHAP v2 надо использовать samba3 или, что ещё круче – разнести samba4 и radius-сервер по разным машинам!
Итак, в качестве отправной точки опять будем использовать WiKi Samba4/HOWTO/Virtual_Private_Network. Но не буквально. Приступаем.
Устанвливаем freeradius:
sudo apt-get install freeradius freeradius-common freeradius-krb5 freeradius-ldap freeradius-utils radiusclient1

Обратите внимание, что по сравнению с упомянутой статьёй на WiKi, здесь добавлена установка пакета radiusclient1, который будет необходим для работы pptpd с плагинами радиуса.
Конфигурируем freeradius. У меня это /etc/freeradius/radiusd.conf:
prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log/freeradius
raddbdir = /etc/freeradius
radacctdir = ${logdir}/radacct
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/freeradius
db_dir = ${raddbdir}
libdir = /usr/lib/freeradius
pidfile = ${run_dir}/freeradius.pid
max_request_time = 30
cleanup_delay = 5
max_requests = 1024

listen {
       type = auth
       ipaddr = <ip_address_интерфейса> # где будем слушать
       port = 0
       interface = eth0
}
listen {
       type = auth
       ipaddr = 127.0.0.1
       port = 0
       interface = lo
}
listen {
       type = acct
       ipaddr = <ip_address_интерфейса>
       port = 0
       interface = eth0
}
listen {
       type = acct
       ipaddr = 127.0.0.1
       port = 0
       interface = lo
}
#если есть еще интерфейсы, которые будут задействованы, то повторить для них
#listen { type = auth …} и listen {type = acct …}

hostname_lookups = no
allow_core_dumps = no
regular_expressions     = yes
extended_expressions    = yes

log {
       destination = files
       file = ${logdir}/radius.log
       syslog_facility = daemon
       stripped_names = no
       auth = no
       auth_badpass = no
       auth_goodpass = no
}
checkrad = ${sbindir}/checkrad
security {
       max_attributes = 200
       reject_delay = 1
       status_server = yes
}
proxy_requests  = no
$INCLUDE clients.conf
thread pool {
       start_servers = 5
       max_servers = 32
       min_spare_servers = 3
       max_spare_servers = 10
       max_requests_per_server = 0
}
modules {
       $INCLUDE ${confdir}/modules/
} 
instantiate {
       exec
       expr
       expiration
       logintime
}
$INCLUDE policy.conf
$INCLUDE sites-enabled/


Далее, в /etc/freeradius/clients.conf пишем:
client localhost {
       ipaddr = 127.0.0.1
       netmask = 32
       secret = samba4 # это ваш «секрет» для общения клиента с сервером
       shortname = localhost
}

Удаляем возможность работы inner-tunnel, который требует EAP-TTLS и PEAP:
sudo rm -rf /etc/freeradius/sites-enabled/inner-tunnel

Теперь в каталоге /etc/freeradius/sites-enabled/ остался default, который мы и редактируем:
authorize {
       preprocess
       auth_log
       chap
       mschap
       #suffix # я убрал использование этого модуля, т.к. и без него все ок
       ldap
       expiration
       logintime
       pap
}
authenticate {
       Auth-Type PAP {
               pap
       }
       Auth-Type CHAP {
               chap
       }
       Auth-Type MS-CHAP {
               mschap
       }
       Auth-Type LDAP {
               ldap
       }
}
preacct {
       preprocess
       acct_unique
       suffix
       files
}
accounting {
       detail
       radutmp
       attr_filter.accounting_response
}
session {
       radutmp
}
post-auth {
       exec
       Post-Auth-Type REJECT {
               attr_filter.access_reject
       }
}
pre-proxy {
}
post-proxy {
}


Переходим в каталог /etc/freeradius/modules/ и редактируем необходимые модули.
Файл /etc/freeradius/modules/ldap (заменяя все cn и dc на ваши):
ldap {
       server = "localhost"
       identity = "cn=VPN,cn=users,dc=example,dc=com" # пользователь в ldap
                  # который имеет право читать базу
       password = <пароль_этого_пользователя>
       basedn = "dc=example,dc=com"
       filter = "(sAMAccountName=%{Stripped-User-Name:-%{User-Name}})"
       ldap_connections_number = 5
       timeout = 4
       timelimit = 3
       net_timeout = 1
       tls {
               start_tls = no
       }
       access_attr = "msNPAllowDialin"
       dictionary_mapping = ${confdir}/ldap.attrmap
       edir_account_policy_check = no
       # про два последних параметра в руководстве на WiKi забыли, а
       # без них этот модуль с Active Directory работать не будет!
       chase-referrals = yes
       rebind = yes
}


Редактируем /etc/freeradius/modules/mschap:
mschap {
       use_mppe = yes (для поддержки mppe-128)
       require_encryption = yes
       require_strong = yes
       with_ntdomain_hack = no
       # и вот тут-то – главная хитрющая хитрость!!!
       ntlm_auth = "/usr/local/samba/bin/ntlm_auth3 --request-nt-key \
       --username=%{Stripped-User-Name:-%{User-Name:-None}} \
       --challenge=%{mschap:Challenge:-00} \
       --nt-response=%{mschap:NT-Response:-00}"
}

Ещё раз обращу ваше внимание на параметр ntlm_auth = "/usr/local/samba/bin/ntlm_auth3…” Samba4 «дружит» с samba3 и кроме бинарника ntlm_auth, который не поддерживает MS-CHAP v2, есть бинарник ntlm_auth3, который всё это «тащит»!

PPTPD

И, наконец – pptpd. Подразумевается, что сам pptpd у вас уже установлен и настроен (файл /etc/pptpd.conf править не надо!)
Правим /etc/ppp/pptpd-options:
###############################################################################
# $Id: pptpd-options 4643 2006-11-06 18:42:43Z rene $
#
# Sample Poptop PPP options file /etc/ppp/pptpd-options
# Options used by PPP when a connection arrives from a client.
# This file is pointed to by /etc/pptpd.conf option keyword.
# Changes are effective on the next connection.  See "man pppd".
#
# You are expected to change this file to suit your system.  As
# packaged, it requires PPP 2.4.2 and the kernel MPPE module.
###############################################################################


# Authentication

# Name of the local system for authentication purposes 
# (must match the second field in /etc/ppp/chap-secrets entries)
name pptpd

# Optional: domain name to use for authentication
#

# Strip the domain prefix from the username before authentication.
# (applies if you use pppd with chapms-strip-domain patch)
#chapms-strip-domain


# Encryption
# Debian: on systems with a kernel built with the package
# kernel-patch-mppe >= 2.4.2 and using ppp >= 2.4.2, ...

refuse-pap
refuse-chap
refuse-mschap
# Require the peer to authenticate itself using MS-CHAPv2 [Microsoft
# Challenge Handshake Authentication Protocol, Version 2] authentication.
require-mschap-v2
# Require MPPE 128-bit encryption
# (note that MPPE requires the use of MSCHAP-V2 during authentication)
require-mppe-128



# Network and Routing

# If pppd is acting as a server for Microsoft Windows clients, this
# option allows pppd to supply one or two DNS (Domain Name Server)
# addresses to the clients.  The first instance of this option
# specifies the primary DNS address; the second instance (if given)
# specifies the secondary DNS address.
# Attention! This information may not be taken into account by a Windows
# client. See KB311218 in Microsoft's knowledge base for more information.
ms-dns <ip_dns> # в моем случае – это 127.0.0.1

# If pppd is acting as a server for Microsoft Windows or "Samba"
# clients, this option allows pppd to supply one or two WINS (Windows
# Internet Name Services) server addresses to the clients.  The first
# instance of this option specifies the primary WINS address; the
# second instance (if given) specifies the secondary WINS address.
ms-wins <ip_wins> # то же самое – 127.0.0.1

# Add an entry to this system's ARP [Address Resolution Protocol]
# table with the IP address of the peer and the Ethernet address of this
# system.  This will have the effect of making the peer appear to other
# systems to be on the local ethernet.
# (you do not need this if your PPTP server is responsible for routing
# packets to the clients -- James Cameron)
proxyarp

# Debian: do not replace the default route
nodefaultroute


# Logging

# Enable connection debugging facilities.
# (see your syslog configuration for where pppd sends to)
debug

# Print out all the option values which have been set.
# (often requested by mailing list to verify options)
#dump


# Miscellaneous

# Create a UUCP-style lock file for the pseudo-tty to ensure exclusive
# access.
lock

# Disable BSD-Compress compression
nobsdcomp 

auth

logfile /var/log/pptpd.log
# для работы с radius добавляем эти два плагина
plugin radius.so
plugin radattr.so


Файл /etc/radiusclien/radiusclient.conf (по-моему, я его не трогал, разве что поправил authserver и acctserver):
# General settings

# specify which authentication comes first respectively which
# authentication is used. possible values are: "radius" and "local".
# if you specify "radius,local" then the RADIUS server is asked
# first then the local one. if only one keyword is specified only
# this server is asked.
auth_order	radius,local

# maximum login tries a user has
login_tries	4

# timeout for all login tries
# if this time is exceeded the user is kicked out
login_timeout	60

# name of the nologin file which when it exists disables logins.
# it may be extended by the ttyname which will result in
# a terminal specific lock (e.g. /etc/nologin.ttyS2 will disable
# logins on /dev/ttyS2)
nologin /etc/nologin

# name of the issue file. it's only display when no username is passed
# on the radlogin command line
issue	/etc/radiusclient/issue

# RADIUS settings

# RADIUS server to use for authentication requests. this config
# item can appear more then one time. if multiple servers are
# defined they are tried in a round robin fashion if one
# server is not answering.
# optionally you can specify a the port number on which is remote
# RADIUS listens separated by a colon from the hostname. if
# no port is specified /etc/services is consulted of the radius
# service. if this fails also a compiled in default is used.
authserver 	localhost

# RADIUS server to use for accouting requests. All that I
# said for authserver applies, too. 
#
acctserver 	localhost

# file holding shared secrets used for the communication
# between the RADIUS client and server
servers		/etc/radiusclient/servers

# dictionary of allowed attributes and values
# just like in the normal RADIUS distributions
dictionary 	/etc/radiusclient/dictionary

# program to call for a RADIUS authenticated login
login_radius	/usr/sbin/login.radius

# file which holds sequence number for communication with the
# RADIUS server
seqfile		/var/run/radius.seq

# file which specifies mapping between ttyname and NAS-Port attribute
mapfile		/etc/radiusclient/port-id-map

# default authentication realm to append to all usernames if no
# realm was explicitly specified by the user
# the radiusd directly form Livingston doesnt use any realms, so leave
# it blank then
default_realm

# time to wait for a reply from the RADIUS server
radius_timeout	10

# resend request this many times before trying the next server
radius_retries	3

# LOCAL settings

# program to execute for local login
# it must support the -f flag for preauthenticated login
login_local	/bin/login


Файл /etc/radiusclien/server:
# Make sure that this file is mode 600 (readable only to owner)!
#
#Server Name or Client/Server pair		Key		
#----------------				---------------
127.0.0.1					samba4 # помните тот «секрет», что прописали в настройках freeradius?


Очень важный момент – создаём файл /etc/radiusclient/dictionary.microsoft. Приводить его текст не буду, т.к. получить его целиком можно вот здесь )

И в конец файла /etc/radiusclient/dictionary дописываете строчку
INCLUDE /etc/radiusclient/dictionary.microsoft, чтобы получилось следующее:
#
# Updated 97/06/13 to livingston-radius-2.01 miquels@cistron.nl
#
#	This file contains dictionary translations for parsing
#	requests and generating responses.  All transactions are
#	composed of Attribute/Value Pairs.  The value of each attribute
#	is specified as one of 4 data types.  Valid data types are:
#
#	string - 0-253 octets
#	ipaddr - 4 octets in network byte order
#	integer - 32 bit value in big endian order (high byte first)
#	date - 32 bit value in big endian order - seconds since
#					00:00:00 GMT,  Jan.  1,  1970
#
#	Enumerated values are stored in the user file with dictionary
#	VALUE translations for easy administration.
#
#	Example:
#
#	ATTRIBUTE	  VALUE
#	---------------   -----
#	Framed-Protocol = PPP
#	7		= 1	(integer encoding)
#

#
#	Following are the proper new names. Use these.
#
# далее стандартный текст файла

# !!!! Это надо дописать в конце файла!!!!!
INCLUDE /etc/radiusclient/dictionary.microsoft


Кажется, всё. Samba4 у вас уже запущена, надо рестартовать freeradius-сервер и демон pptpd.

Решение проблемы с отсутствием вкладки «Dial-in» в оснастке ADUC

Ах, да. По поводу того, как разрешить/запретить доступ по VPN определённым пользователям. Вы ведь установили пакет Windows Remote Administration Tools? Так вот, ту картинку оснастки ADUC, что приведена на страничках WiKi под Windows 7 с вкладкой «Dial-in», вы не увидите. А увидите вы нечто подобное:


И где же тут вкладка «Dial-in» или её русский аналог «Входящие звонки»? Как тут управлять разрешениями пользователей? Ничего страшного. Мы же не боимся трудностей? Вспоминаем (думаю – вы и не забывали!) о том, что контроллер домена – это, помимо прочего, ещё и LDAP-сервер, поэтому ставим любой инструментарий по управлению таким сервером (например, LdapAdmin) – и рулим им.
Для начала настраиваем соединение с нашим samba4-сервером: прописываем адрес сервера, давим на кнопочку «Fetch DNs», выбираем базу самого верхнего уровня, radio-box «GSS-API», в качестве пользователя –Administrator, пароль этого пользователя и коннектимся. Видим весь наш каталог, что наваяли при развертывании домена. Выбираем необходимого пользователя и заходим в режим редактирования. Находим атрибут msNPAllowDialin и вписывае TRUE или FALSE (обязательно – заглавными буквами!):


Сохраняем. Данному пользователю разрешено (или запрещено) заходить по VPN.

Итоги

По-моему, все поставленные в начале поста задачи решены. Время, затраченное на их решение (около двух с половиной недель) прежде всего было потрачено на изучение документации в Интернет, опыта подобных решений, сопоставление полученной информации с реалиями, кои я видел своими глазами на нашем сервере, компиляцию-перекомпиляцию samba4, и редактирование, редактирование и ещё раз редактирование конфигов… Но результат меня порадовал: в итоге получилась почти полноценная замена Windows Server 2008 R2 c Active Directory, службой политики сети и доступа и службой удалённого рабочего стола (под wine, конечно, но об этом ни слова не написал).
Поделиться публикацией
Комментарии 48
    0
    Полезный материал, благодарю.
      –1
      Опыт позитивный, только вот есть несколько замечаний.
      1. Держать все яйца в одной корзине плохо — упадет корзина — разобьется всё.
      2. AD должно обслуживать как минимум 2 сервера, как раз по причине пункта 1.
      3. Держать VPN сервер на сервере, являющемся сердцем сети — не очень безопасно, не зря TMG(или ISA, за давностью времен не помню) при попытке установки VPN + Firewall на машину с ролью КД выдавала ошибку и разрешала ставить только консоль управления.
      4. С групповыми политиками все ещё веселее — с обычными пользовательскими паролями класса «12345678aaa» толку от впн — никакого, и я не очень уверен, что самба даст настроить хотя бы сложность пользовательских паролей.
      5. Вы ничего не сказали о настройке сервера времени, samba уже научилась быть ntpd? разница в несколько минут (а GPO, которые выставляет допустимую погрешность по разнице времени, после которого работ машины в домене становится невозможной) вызовет очень большие проблемы в работе как минимум пользователю на рабочей станции.

      6, и последнее: потратить 2,5 недели на то, что можно развернуть в базовом варианте за полчаса, не считая времени на установку ОС (а что, Вы их еще ставите ручками?), неспешно распивая кофе и занимаясь другими делами параллельно, пока ставится винда, после чего оставив сервер обновляться на ночь — очень глупое решение.
      Три моих бывших руководителя ИТ департаментов (компании от 50 до >300 человек) посчитали, что такое решение можно использовать разве что в конторах до 10-20 человек, с ну очень ограниченным бюджетом, когда админ реально по большей части занимается всякой фигней.
        0
        По поводу пунктов 1, 2, 3 Вы сами по сути ответили своим последним предложением (со ссылкой на ИТ-деректоров) — просто данное решение развёртывалось именно в такой конторе: до 10-20 человек. А иметь несколько серверов для AD в таких конторах — как-то дороговато…
        Пункт 4. Как раз-то групповые политики по умолчанию в Samba4 и не разрешают заводить пользователей с простыми паролями, и эти пароли получаются весьма вычурными.
        Пункт 5 (и где-то пункт 6). Я ведь ничего не говорил о том, что всё ставил на чистую машину, начиная с операционки и т. д. Наоборот, из текста (в частности об dns) должно было стать ясно, что система была давно установлена и работала. Даже Samba4 была установлена давно и исправно работала, а инструкцию по установке и настройки я привёл для того, чтобы как-то собрать всё (или почти всё) в одном месте. Да и то, про эмуляцию Microsoft DNS на bind9, я пока не стал писать из-за достаточно большого объёма. Соответственно, на этом (ещё раз повторю — рабочем) сервере выполнялись и isc-dhcp-server, и bind9, и ntpd, и pptpd…
        Времени же столько было потрачено на то, чтобы понять, какого чёрта samba4 компилируется без поддержки pam, и заставить VPN работать не с PAP (по которому сразу же, из «коробки» Samba4 авторизовала пользователей). А за пол-часа, «неспешно распивая кофе и занимаясь другими делами параллельно» Вы бы получили то, что и получил я с точно таким-же подходом: АD на samba4 сам по себе, Linux, под которым он и крутиться — сам по себе, VPN — с «чудесной» пересылкой пароля по PAP и т.п.
        0
        Я правильно понимаю, что тут используется дырявый MS-CHAPv2 (не PEAP-)?
          0
          Да, именно он. Но это всё-же много лучше, чем c совсем уж непригодным PAP, который предлагается в руководстве на WiKi?
            0
            Есть L2TP. Кстати, как вы решили проблему раздачи маршрутов во внутреннюю сеть для vpn-клиентов? Или сразу к ней присоединяются?
              0
              Я же написал — пусть будет, к примеру PPTP. L2TP — лучшее решение, сейчас перевожу на него, принципальных трудностей в настройке не вижу.
          +1
          Вопрос, это АД домен контроллер с LDAP и керберос внутри и со всеми плюшками полноценного АД или старый легаси мод Самбы 3?

          Настройка очень похожа на то что я делал в универе, но с версия тогда была 3.3 ли около того, Очень интересует керберовские плюшки,

          Заранее спасибо! Очень интересно!
            +1
            Именно так — и LDAP, и Kerberos, и DNS — всё это теперь в samba4.
            –5
            сервер с Ubuntu 12.04. Он должен стать:

            PDC Windows-домена c Active-Directory.
            Сервером VPN (пусть, например, это будет PPTP, но с обязательной поддержкой MS-CHAP v2 и MPPE-128) с авторизацией на Radius –сервере (для определённости – freeradius).
            Соответственно – Freeradius-сервером.
            Терминальным сервером, на котором прозрачно авторизуются пользователи AD.

            Мои глаза плакать кровью.
            1) PDC на чем-то кроме винды.
            2) PDC одновременно с VPN сервером (т.е. он хотя бы одним портом доступен снаружи).
            3) PDC одновременно с терминальным сервером.
            4) Терминальный сервер одновременно с VPN сервером.
            Вы еще скажите, что на этом же несчастном сервере подняли прокси и вебсайт.

            Ё-мое, под линукс есть бесплатные гипервизоры, я проверял. Точно есть. И мне еще не доводилось видеть настолько грубое нарушение принципа «один сервер = одна задача».
              –3
              Ё-моё… Вы на какой планете живёте (если в Москве — точно, на другой...)? А у нас в «замкадье» нарушение принципа «один сервер = одна задача» менее грубое прегрешение, чем «разорение» мелких контор на реализации идеологически правильных решений… Если это произойдёт — вся контора будет «плакаль» кровью…
              Извините, коли Вам покажется, что чем-то Вас задел, но эта тема как раз меня сильно задевает, ибо хочется хоть иногда поработать в таких условиях, когда на первом месте будет правильность и красота решений… Дайте мне нормальный бюджет, и, если Вам нужен будет PDC на винде — ради Бога, вот 8-ядерный сервер с 8 Гб на борту под Windows Server 2008 R2, рядом с ним — BDC в такой же упаковке и т.д. и т.п. Речь же идёт, насколько я понимаю, о бюджетных альтернативах, именно альтернативах, винды.
                0
                у нас в «замкадье» нарушение принципа «один сервер = одна задача» менее грубое прегрешение, чем «разорение» мелких контор на реализации идеологически правильных решений

                Вас разорит установка какого-нибудь XEN и виртуализация нескольких minimal инсталляций линукса, даже без DE (как и надо делать на сервере)?
                Дайте мне нормальный бюджет, и, если Вам нужен будет PDC на винде

                Откуда деньги на клиентские винды?
                8-ядерный сервер с 8 Гб на борту

                8гб памяти? Сейчас мобильники имеют уже 2гб RAM. Так как в вашем случае сервером наверняка является обычный компьютер с в лучшем случае парой винтов в зеркале — 8гб памяти стоят около 1000р. Я не думаю, что в «замкадье» цены радикально выше.
                2-сокетная машина — это десятки виртуалок и десятки ГБ памяти. В вашем случае требования к железу несравнимо выше. Не вижу особых проблем полностью влезть даже в 2гб памяти всеми виртуалками. Не те задачи.
                То есть на самом деле вопрос вовсе не в бюджете, а скорее в неумении имплементировать правильные решения. Более красивая архитектура не стоила бы ни на копейку дороже.
                Но хочется делать все тяп-ляп, надеясь на «авось не упадет и не похакают» — воля ваша.
                  0
                  «В вашем случае требования к железу несравнимо выше» — оговорка само собой :)
                    –1
                    А вот платить деньги за клиентские винды как раз считается необходимым «злом», а разоряться на сервер на винде — это уже с трудом…
                    Что же касается виртуализации — совершенно с Вами согласен, но это — следующий этап. И всё же, принцип один сервер — одна задача, не является абсолютной ценностью. Вы тогда уж попеняйте Cisco с их IOS на роутере, который и dhcp-сервер, и dns-сервер, и файрволл, и VPN-сервер, и то, и сё…
                      –1
                      Вы тогда уж попеняйте Cisco с их IOS на роутере, который и dhcp-сервер, и dns-сервер, и файрволл, и VPN-сервер, и то, и сё…

                      То, что там можно поднять это добро (да хоть в твиттер логи слать) не значит, что кто-то так делает. По факту IOS редко бывает DHCP сервером (особенно в виндовой среде), никогда — DNS сервером (с этим еще менее удобно работать, чем с DHCP сервером), а роли пограничного роутера, внутреннего роутера, файрвола, VPN сервера, голосового шлюза и так далее как правило разделены по разным устройствам, каждое из которых выполняет одну узкую задачу.
                      Пример с 2008r2 с ее десятками ролей я уже приводил. На типичном сервере поднимают одну-две, край — три роли (в случае DC, который попутно DNS и DHCP), не более того.
                        0
                        разделены по разным устройствам, каждое из которых выполняет одну узкую задачу

                        А для кого сделан ISR, который и чтец, и жнец, и на трубе игрец?
                          –1
                          Серверная винда — тоже. И?
                          Вы заметили, что вообще-то у ISRов есть разные наборы функционала? Раньше на ISR были образы voice, advsecurity, enterprise и так далее (есть и «всё-в-одном» adventerprise, но смысла покупать его мало), сейчас есть лицензии на отдельные фичи — data, UC, sec.
                            0
                            Сама киска позиционирует их как всё-в-одном для бранчей, когда одна железка является пограничным рутером, файрволом, телефонией и контроллером вайфая.
                            Даже была реклама, где парень меняет кучу жуниперов на один ISR и тогда девка даёт ему, а не стороннику принципа «одна железка = одна задача».
                              –1
                              Сама киска позиционирует их как всё-в-одном для бранчей, когда одна железка является пограничным рутером, файрволом, телефонией и контроллером вайфая.

                              Да, если отказала связь с центром — они могут перехватить на себя часть задач. Но это — внештатный режим работы, «лучше, чем ничего». Мне и в страшном сне не придет в голову подключать бранчевые телефоны к местным CUCME, ставить в каждом бранче по собственному контроллеру, поднимать на бранчевых роутерах файрвол либо NAT и т.д.
                              Даже была реклама

                              Видел. Там вроде с жунипером сравнивали, и какой-то однокнопочный вебинтерфейс пиарили? И?
                              У нас по ЦОДам немало ISRов распихано. Каждый — строго под одну задачу. То, что каждый из них умеет многое, здорово — всегда есть запас железа под любую новую задачу, не нужно докупать ничего нового.
                        0
                        но это — следующий этап

                        Надо было сразу сделать. Потом будет куда сложнее, ибо корячить придется уже боевую инфраструктуру.
                    0
                    Ядрёная смесь, но и принцип «один сервер = одна задача» не является абсолютной истиной. Даже Microsoft выпускает SBS, совмещающий половину серверных продуктов в одном ящике.
                      0
                      «Даже»? Microsoft хочется срубить денег в том числе и на сильно ограниченном бюджетом секторе. Это можно понять.
                      Обычная серверная винда тоже имеет массу ролей, и если поднять все разом — получится некий «мастер на все руки», особенно если дополнительно поставить SQL, TMG и Exchange. И что? Разве стоит так делать?
                        0
                        И что? Разве стоит так делать?

                        Если работает и не конфликтует, то почему нет (при условии ограниченных ресурсов)?
                          0
                          Если работает и не конфликтует

                          Хомячковый подход — «авось не упадет». А нормальный подход — заранее постелить соломки везде, где хотя бы гипотетически можно споткнуться, чтобы, когда авария произойдет, восстановить сервис за минуты, что бы ни случилось.
                          А вот если ограниченными являются когнитивные ресурсы — вопросов нет.
                            +1
                            Да вы батенька перфекционист! И вам еще много раз предстоит умыться слезами )

                            Одно из таких открытий, которое вам предстоит — это то что такие вот «соломки подстелить где свалюсь через 10 лет на 3 часа» совсем непрактичная вещь в нашем некруглом мире с ограниченными бюджетами, сроками и требованиями к аптайму, Далеко не всем нужно чинить поломанные системы «за минуты, что бы ни случилось»

                            И да, все выше я написал просто, чтобы быть в топике, на самом деле я очень хочел написать, что вы бы лучше постеснялись упрекать тут всех насчет когнитивных ресурсов, это далеко не лучшим образом характеризует ваши собственные
                              0
                              такие вот «соломки подстелить где свалюсь через 10 лет на 3 часа»

                              Да вы батенька неизлечимый оптимист!
                              То-то среди работников мелкого бизнеса бытует мнение, что «админ» — ленивая скотина, у которой вечно все ломается. А если сразу сделать все правильно (увеличение сроков несущественное, увеличение бюджета равно нулю или близко к тому), то и шанс поломки всего сразу резко снижается, и восстановление ускоряется. То есть какие бы сроки ни были потрачены на дополнительное наведение красоты — они очень быстро окупятся.
                              +1
                              Вот теперь, кажется, Вы меня рассердили… По-моему, как раз хомячковый подход — это когда всё должно быть «как у людей» и «по-православному». Раз микрософт говорит, что AD — это только Windows, значит — винда, и всё тут… Если эта винда — ресурсоёмкая и «падучая» — значит «одна задача=один сервер», значит, виртуализируем всё и вся, не дай Бог (а он-то, как раз, за «падучесть» винды и не несёт ответственность!) какой-нибудь сервис отвалится! Мы же, по-моему, сейчас ведём обсуждение «на поляне» Linux, не так ли? На моей памяти Linux падал только из-за вышедшего из строя «железа», а в этом случае Вам будет легче от того, что всё виртуализировано? Да и «хакнуть» системы на Linux с правильным iptables нужна такая квалификация и столько времени… Хотите попробовать?.. Да, ещё Linux можно «уронить» корявыми руками, но это относится ко всем системам, и приступы «корявости рук», по-моему, периодически настигают любого работающего IT-специалиста, и от них никто не застрахован, разве что IT-директорат, который уже и не «рулит» конкретной системой, а следит за «православием»…
                              Неразумное следование же принципам и возведение их в абсолют — это ли не проявление ограниченности когнитивного ресурса — нет? А то я смотрю, этот самый когнитивный ресурс привёл отрасль к тому, что не Microsoft для бизнеса, а любой бизнес — для процветания Microsoft, когда для нормально работы системы нужно городить кучу железа (не дай-то Бог, что-то отвалится — а оно обязательно отвалится!). Тот же когнитивный ресурс сподвиг Google на такие решения, что для нормальной работы телефона — телефона! пусть и «умного», требуется полутарагигагерцовый двухядерный процессор и 2 гигабайта памяти.
                              Когда затраты (финансовые и прочие, в том числе полюбившиеся Вам когнитивные ресурсы) на «подстеление соломки» (а вдруг что-то случиться!) не соизмеряются со стоимостью бизнеса и возможных (возможных!) потерь этого бизнеса при простоях — вот тогда это «хомячковый» подход, чтоб всё по правилам, всё «как у людей», всё «круто»… Где-то я это уже наблюдал в окружающей ойкумене… Ах, да, вспомнил: уверен — у Вас есть iPhone…
                                0
                                >Раз микрософт говорит, что AD — это только Windows, значит — винда, и всё тут
                                Это не майкрософт говорит, это факт. AD на базе всякой самбы — это решение отстающее на десять лет от текущих возможностей, и в придачу никем не поддерживаемое.

                                >Если эта винда — ресурсоёмкая и «падучая» — значит «одна задача=один сервер»
                                Одна задача — один сервер актуальна и рекомендуется и для линукс и для серьезного unix-окружения. И причина не в падучести и не в ресурсоёмкости, а в разделении, которое увеличивает поддерживаемость, легкость управления, внесения изменений и отладки, а также надёжность — если падает один компонент, все остальные продолжают работать. А упасть может не только и не столько потому, что «винда падучая», а чаще всего потому что человеческие ошибки — это главная причина сбоев.

                                > Когда затраты (финансовые и прочие, в том числе полюбившиеся Вам когнитивные ресурсы) на «подстеление соломки» (а вдруг что-то случиться!) не соизмеряются со стоимостью бизнеса и возможных (возможных!) потерь этого бизнеса при простоях — вот тогда это «хомячковый» подход, чтоб всё по правилам, всё «как у людей», всё «круто»…
                                Простите, а ваше решение соизмерялось со стоимостью бизнеса и возможных простоев? Видимо она равна нулю и две-три недели на настройку (а в будущем возможно на подъём из руин за столько же или когда вам придёт смена, которая не разберётся в этом всём, а тупо заменит на решение, которое ей будет больше нравиться) — это бесплатно для бизнеса.

                                >Ах, да, вспомнил: уверен — у Вас есть iPhone…
                                У него мотор :)
                                  0
                                  как раз хомячковый подход — это когда всё должно быть «как у людей» и «по-православному».

                                  Нет, это — стандартный ентерпрайсный подход. Нацеленный на максимальный аптайм сервиса.
                                  Если эта винда — ресурсоёмкая и «падучая»

                                  Наглая ложь.
                                  значит «одна задача=один сервер»

                                  Вне зависимости от задействованной ОС. Хоть винда, хоть линукс, хоть солярка, хоть AIX.
                                  На моей памяти Linux падал только из-за вышедшего из строя «железа»

                                  Значит, вы слишком мало с ним работали.
                                  Мои коллеги, профессиональные *NIX администраторы (кстати — очень недолюбливающие линукс и обожающие те самые AIX и Solaris) к примеру традиционно побаиваются ставить апдейты на системы с аптаймом в год, потому что после этого наверняка что-то отвалится. Обновление установленного ПО — тоже стремно.
                                  Да и «хакнуть» системы на Linux с правильным iptables нужна такая квалификация и столько времени

                                  А вот это уже не ложь, а признание собственной некомпетентности.
                                  Откройте metasploit, exploit-db или любой другой посвященный анализу уязвимостей ресурс. Возьмите любой установленных у вас сервисов (хоть HTTP, хоть DNS, хоть даже ssh). Посчитайте количество експлоитов «remote code execution». И нет, IPTABLES тут никаким образом спасти не сможет.
                                  Неразумное следование же принципам и возведение их в абсолют — это ли не проявление ограниченности когнитивного ресурса — нет?

                                  Нет конечно. Это просто проявление здравого смысла. Если делаешь что-то, то делай это хорошо.
                                  а любой бизнес — для процветания Microsoft, когда для нормально работы системы нужно городить кучу железа

                                  Вы видели когда-нибудь те же high-end сервера Dell/HP/Oracle? Это когда «одна стойка = один сервер». Там обычно не винда крутится. И нет, это вовсе не суперкомпьютеры.
                                  для нормальной работы телефона — телефона! пусть и «умного», требуется полутарагигагерцовый двухядерный процессор и 2 гигабайта памяти.

                                  Снова бредите.
                                  Когда затраты (финансовые и прочие, в том числе полюбившиеся Вам когнитивные ресурсы) на «подстеление соломки» (а вдруг что-то случиться!) не соизмеряются со стоимостью бизнеса и возможных (возможных!) потерь этого бизнеса при простоях — вот тогда это «хомячковый» подход

                                  А каковы затраты на поднятие автором XEN и создание 5-и виртуалок, по одной на задачу?
                                  Ах, да, вспомнил: уверен — у Вас есть iPhone…

                                  Нет конечно. Не люблю корявые решения.

                                  Желаю вам когда-нибудь набраться опыта и немного поработать в области администрирования сервисов, простой которых даже на минуту — катастрофа. Нередко люди с таким опытом уходят в мелкие компании на крупные IT должности — и внезапно затраты на сопровождение IT снижаются в разы, а стабильность повышается. А все потому, что эти люди умеют делать красиво.
                              0
                              Надо отталкиваться от сути сервисов. Есть родственные роли или по крайней мере одного класса. Их совмещать не такое страшное зло. Если файловый сервер будет уметь отдавать по ftp, http и еще как-то — формально это разные роли, но в этом не будет криминала. Если какой-то сервер обслуживает внутренню DNS-зону, то быть еще по ходу ntp-сервером или DHCP тоже не смертельно. И совершенно другой вопрос, когда совмещение ролей противоречит, например, безопасному дизайну. Сервер электронного каталога (любого) на границе сети с функциями какого-либо фронт-энда — ясно что нонсенс.
                          0
                          Злобствующий выше хочу сообщить, что на данный момент samba4 создает AD домен одной командой в консоли, и попиванием кофе.

                          Про 1 сервер = 1 сервис. Это мудро, только когда без фанатизма. 1 сервер на dns, второй для dhcp, а третий для ntp? Даже с учетом виртуализации тратиться на такую сегментацию глупо.

                          Автору вопрос: как вы решили проблему неработающего Network Neighborhood в самбе?
                            +1
                            на данный момент samba4 создает AD домен одной командой в консоли

                            И?
                            Знаете, можно взять телефоны Nortel и подключить их к астериску, установив на тот плагин, поддерживающий нортеловскую проприетарную сигнализацию — сэкономив сотни долларов на их родных PBX. Разумеется, протокол изучен методом реверсинга, как и в случае самбы, реализованы основные фичи (не все). Но надо быть полным психом, чтобы использовать такое в боевой среде.

                            Первоначальная настройка — самое простое из всего, что может быть в мире администрирования IT систем. А вот сопровождение уже настроенного и траблшутинг требуют некоторых скиллов. Завтра у самбы отвалится какая-нибудь критичная мелочь, из-за чего вся инфраструктура встанет раком, и придется судорожно гуглить, а ITшник, гуглящий в процессе решения критического инцидента — жалкое зрелище.
                              0
                              Промахнулся, ответил ниже.
                              0
                              Вы имеете в виду то, что samba-сервер не виден в сетевом окружении? Вы же сами ответили — не работает это же… Впрочем, это — не самый, по-моему, страшный недостаток. Я вообще никогда не был в восторге от майкрософтовского Computer Browsing'а и считаю, что незачем пользователю видеть всю сеть, а достаточно знать, что есть такие-то сервисы и ресурсы, расположенные там-то и там-то…
                              +2
                              Разумеется, она изучена методом реверсинга, как и в случае самбы.


                              Это не правда, так было раньше. 4 самба делалась на основе документации предоставленной MS, и вместе с некоторыми сотрудниками MS.

                              Первоначальная настройка — самое простое из всего, что может быть в мире администрирования IT систем


                              Спорно. От задачи зависит.

                              Завтра у самбы отвалится какая-нибудь критичная мелочь, из-за чего вся инфраструктура встанет раком, и придется судорожно гуглить


                              Это конечно. Поэтому использовать samba4 в продакшене разработчики крайне не рекомендуют.

                                0
                                Спорно.

                                Неоспоримый факт, известный всем.
                                (хотя этап «разработка архитектуры» действительно можно отделить от этого пункта, тут тоже требуются некоторые усилия и опыт — однако, сама первоначальная имплементация новой системы с последующим переводом ее в продакшн — самое простое из всего, что есть)
                                Поэтому использовать samba4 в продакшене разработчики крайне не рекомендуют.

                                Уважаю таких разработчиков.
                                Лично для меня «вендор не рекомендует» и «вендор крайне не рекомендует» являются стоп-фактором при выборе решения. С помощью кувалды и такой-то матери можно прикрутить неприкручиваемое, никто не спорит, но кто будет отвечать за работоспособность такого решения? Я не готов.
                                  0
                                  Лично для меня «вендор не рекомендует» и «вендор крайне не рекомендует» являются стоп-фактором при выборе решения. С помощью кувалды и такой-то матери можно прикрутить неприкручиваемое, никто не спорит, но кто будет отвечать за работоспособность такого решения? Я не готов.

                                  А как Вы думаете, по каким причинам вендор перейдёт от нерекомендованности установки в продакшен как раз к рекомендациям? Наверное, после обкатки продукта в «боевых» условиях. Если Вы не готовы этим заниматься, хорошо, тогда я (и подобные мне) «с помощью кувалды и такой-то матери» будем это всё внедрять, что бы Вы потом спокойно отвечали за работоспособность решения…
                                    0
                                    >Наверное, после обкатки продукта в «боевых» условиях.
                                    А вы знаете как делает обкатка в боевых условиях софта от Майкрософта? Наверное, так же как самбы — раздать админам сеток на 5-10 человек и подождать пока пойдут глюки?
                                      0
                                      тогда я (и подобные мне) «с помощью кувалды и такой-то матери» будем это всё внедрять, что бы Вы потом спокойно отвечали за работоспособность решения…

                                      То есть вы готовы добровольно ставить заведомо нестабильное решение в продуктивную инфраструктуру, фактически работая бетатестером? На здоровье. А я лучше воспользуюсь рекомендованным решением. Обкатанным, кстати, не вами, а сотрудниками вендора.
                                    0
                                    >Это конечно. Поэтому использовать samba4 в продакшене разработчики крайне не рекомендуют.
                                    Супер :) Прекрасная фраза! Но, тут странная ситуация возникает. Автор топика выше упирает на то, что винда глючная и кривая, а линукс безгрешный и великолепный. Однако, многомиллиардная корпорация, отвечающая своей репутацией и деньгами (косвенно — если будет много косяков — не будут покупать) — разрабатывает свои продукты для продакшена, а разработчики самбы, ничего не теряющие от своего дипломного проекта — не рекомендуют. Тут либо они кокетничают (типа мы не рекомендуем, но вы ставьте, ставьте, вы же умные линукс-профессионалы, а линукс безгрешен), либо действительно уверены, что всё работает недостаточно хорошо.

                                    +2
                                    > Время, затраченное на их решение (около двух с половиной недель) прежде всего было потрачено на изучение документации в Интернет, опыта подобных решений, сопоставление полученной информации с реалиями, кои я видел своими глазами на нашем сервере, компиляцию-перекомпиляцию samba4, и редактирование, редактирование и ещё раз редактирование конфигов…

                                    Про то, что потратили 2 недели там, где можно было бы потратить полчаса — уже сказали. Но это цветочки. Ягодки начнутся, когда в этом «карточном домике» что-то заработает не совсем так, как хотелось. И автор потратит еще пару недель на гугление, курение манов, правку конфигов и перекомпиляцию. В то время, как работа будет стоять — потому что все яйца в одной корзине, и резервных серверов нет. И вот тогда начальство, возможно, и поймет, что бывает, когда экономят на нормальном железе, софте и людях, которые все это подымают и обслуживают.

                                    > Но результат меня порадовал: в итоге получилась почти полноценная замена Windows Server 2008 R2 c Active Directory, службой политики сети и доступа и службой удалённого рабочего стола (под wine, конечно, но об этом ни слова не написал).

                                    Ну а с этого предложения мы хохотали всем офисом. Очень полноценная замена — особенно учитывая «Решение проблемы с отсутствием вкладки «Dial-in» в оснастке ADUC».
                                      0
                                      Итак, задача. Есть сервер с Ubuntu 12.04. Он должен стать:
                                      Терминальным сервером, на котором прозрачно авторизуются пользователи AD.

                                      Ждём раскрытия темы, интересуют подробности реализации.
                                        0
                                        Итак, задача. Есть сервер с Ubuntu 12.04. Он должен стать:

                                        Нет такой задачи.
                                        Есть задача «имеется физический сервер с такими-то характеристиками, и надо на нем реализовать следующие сервисы».
                                        То, что вы держите сервер на убунте, достойно очередного фейспалма :)
                                          0
                                          Вопрос адресовался автору статьи, это была его фраза.
                                          По всей видимости у него есть какое-то решение на эту тему.
                                          Но спасибо вам за мнение, вы его высказали в достаточном объёме, продолжать не нужно.
                                            0
                                            Пардон, перепутал alex64 и uriah56 :)
                                        0
                                        А ещё у меня вопрос. Для чего нужно постить конфиги целиком? Ладно я понимаю манеру документировать все опции прямо в конфиге, потому что больше никакой документации зачастую вообще нет. Но в боевом окружении то зачем оставлять весь этот документальный мусор?
                                          0
                                          Не забываем сделать рестарт системы после внесения изменений в /etc/nsswitch.conf, ибо… В общем, нужна перезагрузка.
                                          Можно подробнее, зачем перезагрузка?
                                            0
                                            Я понимаю и поддерживаю ваше стремление. Сам похожее делал. И специально для вас сделали Zentyal с удобной веб-мордой. Если в следующий раз будете настраивать нечто подобное, обратите внимание, сильно сэкономит вам время. Есть PPA репозиторий.

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                            Самое читаемое