Samba внутри FreeBSD jail + MS AD(samba jail chroot ldap freebsd)


На сервере был поднят веб-сервер с сайтом компании и поддерживать его поручили мне. Так как мне очень не хотелось перегонять файлы по FTP туда и обратно, решил поднять сервер Samba и через его шары рулить файлами сайта. И дизайнерам будет проще править дизайн. Чтобы не засорять систему поднял jail для Samba.

Быстрое создание jail-машины в FreeBSD

Нам понадобится первый установочный диск FreeBSD 6.2 и немного свободного времени. Предполагается что наша jail-машина будет размещена в директории /var/jail.


Список действий:

1. Создать директорию /var/jail/machine для jail-машины;

2. Смонтировать установочный диск и распаковать базовые файлы в директорию jail-машины:


# mount /cdrom

для bash:


# DESTDIR=/var/jail/machine /cdrom/6.2-RELEASE/base/install.sh

для csh:


# env DESTDIR=/var/jail/machine /cdrom/6.2-RELEASE/base/install.sh

3. Создать пустой файл /var/jail/machine/etc/fstab:


# touch /var/jail/machine/etc/fstab

4. Создать файл /var/jail/machine/etc/rc.conf со следующим содержанием:


# Запускаем sshd
sshd_enable="YES"
sendmail_enable="NONE"
syslogd_flags="-ss"
rpcbind_enable="NO"
network_interfaces=""

5. Теперь требуется создать непривилегированного пользователя и изменить пароль пользователя root.


Входим в каталог jail-машины


# chroot /var/jail/machine /bin/csh

Создаем пользователя


# adduser

Меняем пароль пользователя root


# passwd
# exit

6. В файл /etc/rc.conf основной системы добавить:
# Разрешаем запуск jail-машин
jail_enable="YES"
# Запрещаем им менять свое имя jail_set_hostname_allow="NO"
# Перечисляем jail-машины в системе.
jail_list="machine"
# Jail-машина "machine"
# Корневая директория jail_machine_rootdir="/var/jail/machine"
# Имя jail_machine_hostname="machine.local"
# IP-адрес jail_machine_ip="192.168.0.10"
# На какой сетевой интерфейс будет цепляться jail-машина
jail_machine_interface="ed0"
# монтируем файловую систему devfs внутри jail-машины.
jail_machine_devfs_enable="YES"
# Скрипты запуска и останова jail_machine_exec_start="/bin/sh /etc/rc"
jail_machine_exec_stop="/bin/sh /etc/rc.shutdown"

7. Кроме того требуется все запускаемые сервисы основной системы привязать к его ip-адресам (не должны слушаться порты на ip-адресах jail-машин).

Например, в rc.conf:
# Супер-сервер inetd
inetd_enable="YES"
# Слушает порт только на 192.168.0.1
inetd_flags="-wW -a 192.168.0.1"
# Syslogd
syslogd_enable="YES"
# Не слушать порты
syslogd_flags="-ss"
8. Запускаем созданную jail-машину:
# /etc/rc.d/jail start

Samba

Порядок действий внутри созданного jail:

1. cd /usr/ports/net/samba3

2. в make config отметил:
[X] LDAP With LDAP support
[X] ADS With Active Directory support
[X] WINBIND With WinBIND support
[X] UTMP With UTMP accounting support
[X] MSDFS With MSDFS support
[X] POPT With system-wide POPT library

3. И далее установил командой make install.

4. Настроил Kerberos5:

# cat > /etc/krb5.conf
[libdefaults]
default_realm = MY-DOMAIN.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
MY-DOMAIN.LOCAL = {
kdc = MY-DOMAIN.LOCAL
admin_server = MY-DOMAIN.LOCAL
kpasswd_server = 192.168.0.1
default_domain = my-domain.local
}
[domain_realm]
.my-domain.local = MY-DOMAIN.LOCAL
[logging]
default = FILE:/var/log/kerberos/krb5libs.log
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmind.log

Где my-domain.local домен MS Active Directory.

Проверяем:
# kinit root

root@MY-DOMAIN.LOCAL's Password:
kinit: NOTICE: ticket renewable lifetime is 1 week

Если выходит другое сообщение - проверяем файл конфигурации.

4. Файл конфигурации Samba:

# cat > /usr/local/etc/smb.conf
[global]
# Имя домена
workgroup = MY-DOMAIN
realm = MY-DOMAIN.LOCAL
server string = Samba Server
# Машина в Active Directory
security = ads
hosts allow = 192.168.0.
# Принтеры нам не нужны
load printers = no
show add printer wizard = no
log file = /var/log/samba/log.%m
# Контроллеры домена
password server = pdc.my-domain.local bdc.my-domain.local
# Имя samba сервера
netbios name = FILESRV
# IP-адрес jail
bind interfaces only = yes
interfaces = 192.168.0.23/24
auth methods = winbind
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
winbind refresh tickets = Yes
case sensitive = No
hide unreadable = Yes
socket options = TCP_NODELAY
dns proxy = no
display charset = koi8-r
unix charset = koi8-r
dos charset = cp866
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

4. Правим /etc/hosts:
192.168.0.23 FILESRV FILESRV.MY-DOMAIN.LOCAL

Иначе машина не войдет в домен.

5. Правим /etc/resolv.conf:


search my-domain.local
nameserver 192.168.0.xxx

Где 192.168.0.xxx ip-адрес DNS Active Directory.

6. Правим /etc/nsswitch.conf:
<< ... skip ... >>
group: files winbind
passwd: files winbind
<< ... skip ... >>

7. Вгоняем машину в домен:
# net ads join -U root

Если машина вошла в домен, на всякий случай проверяем:
# wbinfo -u
<< ... Список пользователей домена ... >>
# wbinfo -g
<< ... Список групп домена ... >>

8. Запускаем Samba:
# /usr/local/etc/rc.d/samba start

http://faqman.ru

Обновлено: 12.03.2015