Поднимаем корпоративный файловый сервер на Debian Linux

Для поднятия файлового хранилища на Linux требуется совсем не много времени. И сейчас, уважаемый читатель, я тебе это докажу. Я покажу, как настроить Debian Linux для работы с Active Directory, а так же поднять веб-интерфейс для администрирования.

Определимся с задачей

Пусть у нас имеется контроллер домена на Windows 2003 Server и системник под файловый сервер без ОС. Задача состоит в том, чтобы: установить ОС, ввести машину в домен, настроить аутентификацию доменных пользователей без запроса логина и пароля, поднять веб-интерфейс для управления, создать необходимые общедоступные ресурсы.
Итак, приступим-с…

Условимся, что:
Имя нашего нового файлового сервера: vr-online
Домен: mydomain
Контроллер домена: dataserver
Полное доменное имя контроллера домена (FQDN): dataserver.mydomain.local
IP контроллера домена: 192.168.0.1
IP DNS-сервера: 192.168.0.1

Debian Linux 5 под кодовым именем Lenny

Логинимся под рутом

Первым делом убираем CD/DVD привод из sources.list. В реале это позволяет физически отключить привод от нашего сервака. Ведь больше он на нём не понадобится.

# nano /etc/apt/sources.list

Комментируем строчку, что начинается на «deb cdrom» и сохраняем.
Теперь:

# apt-get update

Поднимаем SSH. Ведь рулить серваком проще всего с помощью классной утилиты Putty.

# apt-get install ssh

Т.к. сервер стоит во внутренней сети, то можно не менять настройки безопасности SSH и сразу логиниться со своего компа от имени рута. Делать так на public сервере ни в коем случае нельзя.

Теперь смотрим какой IP получил наш сервер:

# ifconfig

Можно заходить по SSH. Открываем Putty, пишем IP. В разделе Translation указываем UTF-8. Огромное достоинство Putty заключается в том, что данные из буфера обмена вставляются с командную строку по клику правой клавиши мыши по области окна. Т.е. скопировал ранее заготовленную команду со всеми нужными параметрами, кликнул по окну Putty, данные попали в командную строку.

Куда же нам теперь без файлового менеджера? Он обязательно пригодится. Ставим Midnight Commander. Кстати в mc при работе через putty можно пользоваться даже мышкой.

# apt-get install mc

Переходим к настройке сервера

На всякий случай добавим в hosts инфу о нашем контроллере домена:

# nano /etc/hosts

Пишем в файл:

192.168.0.1 dataserver.mydomain.local dataserver

Ставим ntpdate для синхронизации времени c DC(Domain Controller), это нужно для нормальной работы Kerberos.

# apt-get install ntpdate

Настроим его.

# nano /etc/default/ntpdate

Прописываем наш контроллер домена:

NTPSERVERS="dataserver.mydomain.local"

Запускаем синхронизацию времени вручную:

# ntpdate –s dataserver.mydomain.local

Для проверки запускаем:

# date

Должны увидеть правильное время и дату.

Пришла пора уточнить сервер(ы) DNS, обслуживающий домен.

# nano /etc/resolv.conf

Там обязательно должна быть строка:

nameserver 192.168.0.1

Ведь наш DC так же несёт на себе DNS
Ставим все нужные для работы пакеты.

# apt-get install samba winbind libpam-smbpass krb5-user krb5-config

Небольшое описание того, что мы устанавливаем:

Samba это набор программ, которые реализуют протокол SMB/CIFS в системах unix, позволяя обслуживать запросы к файлам и принтерам клиентов Windows, NT, OS/2 и DOS. Этот протокол иногда называют LanManager или NetBIOS.

Winbindдля получения информации о пользователях и группах с серверов Windows NT. Также служба может выполнять функции авторизации через PAM-модуль.

Libpam-smbpassэто модуль для PAM. Позволяет преобразовывать Unix пользователей в пользователей Samba. Т.к. у Samba своя собственная база пользователей, поэтому её обязательно нужно синхронизировать с базой Unix.

Krb5-userпозволяет производить аутентификацию пользователей в сети. Kerberos — сетевой протокол аутентификации, позволяющий безопасно передавать данные через незащищённые сети для безопасной идентификации. Обеспечивает взаимную аутентификацию — оба пользователя через сервер подтверждают личности друг друга. Сообщения, отправляемые через протокол Kerberos, защищены от прослушивания и атак повторного воспроизведения.

Krb5-confсоздаёт начальную конфигурацию пакета.

Всё. Установилось. Настроим сначала Kerberos.
Лёгким жестом руки удаляем всё из конфига:

# cat /dev/null > /etc/krb5.conf

Не подумай, что я – маньяк. Просто я не люблю, когда в конфигах находится сотни строк с комментариями. Всегда удаляю всё лишнее. Теперь правим его:

# nano /etc/krb5.conf

Вот мой начальный рабочий конфиг кербероса:

[libdefaults]
default_realm = MYDOMAIN.LOCAL
 
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
 
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
 
[realms]
DATASERVER.MYDOMAIN.LOCAL = {
kdc = dataserver.mydomain.local
admin_server = dataserver.mydomain.local
}
 
[domain_realm]
.mydomain.local = MYDOMAIN.LOCAL
mydomain.local = MYDOMAIN.LOCAL
 
[login]
krb4_convert = true
krb4_get_tickets = false

Важно соблюдать регистр букв! Точно так же как и у меня!!!
Обрати внимание, что в разделе [realms] мы пишем DATASERVER.MYDOMAIN.LOCAL, а не MYDOMAIN.LOCAL !!!

Просто замени MYDOMAIN.LOCAL и DATASERVER.MYDOMAIN.LOCAL на своё и все будет работать. По факту это – и есть стандартный конфиг. Я лишь вырезал из него комментарии и realms доменов, которыми ты всё равно никогда не будешь пользоваться.

Так же безжалостно поступаем с конфигом самбы. Дропаем всё.

# cat /dev/null > /etc/samba/smb.conf
# nano /etc/samba/smb.conf

Вот мой рабочий конфиг, с которого я всегда начинаю настройку:

[global]
workgroup = MYDOMAIN
server string = File server
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = ads
realm = MYDOMAIN.LOCAL
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
pam password change = yes
socket options = TCP_NODELAY
idmap uid = 1000-20000
idmap gid = 1000-20000
template shell = /bin/bash
winbind use default domain = yes
winbind enum groups = yes
winbind enum users = yes
 
#======================= Share Definitions =======================
[homes]
comment = Home Directories
browseable = no
read only = no
create mask = 0700
directory mask = 0700
valid users = MYDOMAIN\%S
 
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700

Расписывать каждый параметр не буду. Описание можно найти без проблем в инете.
Потестим конфиг самбы:

# testparm

Получили:

Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER

Отлично. Осталось совсем немного.

В файле /etc/nsswitch.conf указать, откуда брать информацию о пользователях:

passwd: compat winbind
group: compat winbind
shadow: compat winbind
 
hosts: files dns winbind

Модифицируем PAM. Наcтраиваем cиcтемную аутенфикацию и авторизацию контроллером домена.

# nano /etc/pam.d/common-account

Пишем:

account required pam_unix.so
account sufficient pam_winbind.so
# nano /etc/pam.d/common-auth

Пишем:

auth sufficient pam_winbind.so
auth sufficient pam_unix.so nullok_secure use_first_pass
# nano /etc/pam.d/common-password

Пишем:

password sufficient pam_winbind.so
password required pam_unix.so nullok obscure min=4 max=8 md5
# nano etc/pam.d/common-session

Пишем:

session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

т.к. у нас объявлена в конфиге Samba одна шара (домашняя директория каждого юзера домена), то нужно создать папку MYDOMAIN в /home.

Перезапускаем winbind и samba

# /etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start

Теперь джойнимся в домен:

# net ads join -U administrator

Здесь administrator – логин администратора домена. Писать просто логин.
Не administrator@mydomain, и не administrator@mydomain.local . А просто administrator!

Далее вбиваем пароль. Вуяля! И мы в домене.

Делаем reload winbind, чтобы он перечитал информацию о доменных юзерах и группах:

# /etc/init.d/winbind force-reload

Поcле чего проверяем что же получили. Отобразим доменных юзеров и группы:

# wbinfo –u
# wbinfo –g

-u отобразит cпиcки доменных пользователей
-g отобразит cпиcки доменных групп
Поздравляю, мой дорогой читатель!

Теперь можно зайти на наш файловый сервер:

\\vr-online

Пока ты увидишь лишь одну шару – папку с именем своего пользователя. Эта личная папка создастся для каждого доменного пользователя, зашедшего по сети на файловый сервер. Доступ к папке имеет только сам пользователь, и никто более.

Дело почти сделано. Теперь нужно поставить удобную панель администрирования Samba. Ставим, конечно же, WebMin.

Webminэто программный комплекс, позволяющий администрировать операционную систему через веб-интерфейс, в большинстве случаев, позволяя обойтись без использования командной строки и запоминания системных команд и их параметров. Используя любой браузер, администратор сервера может создавать новые учётные записи пользователей, почтовые ящики, изменять настройки служб и сервисов, например : веб-сервера Apache, DNS, файл-сервера Samba.

Официальный ресурс проекта http://www.webmin.com/
Возможности Webmin значительно шире, чем мы будем юзать. Так что если не сталкивался с ним, то обязательно посмотри остальной функционал. Тебе понравится. Уверен.

Удобней всего ставить из репозитория. Правим /etc/apt/sources.list. Добавим в него строку:

deb http://download.webmin.com/download/repository sarge contrib

Далее нужно установить GPG ключ следующими командами:

# cd /root
# wget http://www.webmin.com/jcameron-key.asc
# apt-key add jcameron-key.asc

Теперь:

# apt-get update
# apt-get install webmin

Все зависимости подтянуться автоматически.

Теперь со своего рабочего места можно уже заходить на сервер через браузер:

https://vr-online:10000/

Логинимся под root’ом. Для начала нужно сменить язык интерфейса:
WebminChange Language and theme — выбираем Russian UTF-8.

Надо залогиниться заново, чтобы увидеть русскоязычный интерфейс. Кое-что всё равно останется на англицком, но это не страшно.

Вот теперь можно заняться настройкой Samba.
Идём СлужбыФайл-сервер Samba.
Выбирай “Настройка автоматической синхронизации пользователей Unix и Samba”.

Ставь галочки:
— Добавлять пользователя Samba при добавлении пользователя Unix
— Изменить пользователя Samba при изменении пользователя Unix
— Удалить пользователя Samba при удалении пользователя Unix
Кликай пимпу “Применить”.

Аналогично нужно настроить синхронизацию групп Samba с группами Unix. Кнопка “Configure automatic Unix and Samba group synchronisation”

Остаётся лишь перенести всех доменных пользователей и группы в Samba. Для этого кликай “Преобразование пользователей Unix в пользователи Samba”.

Ну вот и всё. Теперь можно создавать новые файловые ресурсы и админить существующие, используя удобный веб-интерфейс.
Напоследок.

Установку и настройку я производил попутно с написанием статьи, поэтому ошибок быть не может. Но если, всё-таки, ты нашёл недочет, то пиши в личку или на мыло. Поправлю.

Как видишь, нет абсолютно ничего сверхсложного. Первый раз я копался с настройкой 2 дня. Теперь мне хватает 30-ти минут на поднятие файлового сервера на Debian Linux. Качай свой скилл и сможешь делать всё это с закрытыми глазами. Удачи!

Written by: Роман Костенко aka Lord_of_fear
E-mail: kostenko.r.khv@gmail.com

Источник

Запись опубликована в рубрике Linux, Компы, Сети. Добавьте в закладки постоянную ссылку.