Продолжая цикл статей про бюджетное резервное копирование данных в корпоративной сети, хочу предложить вашему вниманию, очередную статью по настройке файлового сервера Samba.
Для восстановления данных с сервера резервного копирования приходилось идти на сервер через веб-интерфейс и выкачивать оттуда необходимый архив с файлами, это удобно когда необходимая папка или файл не очень большие, но когда надо восстановить папку, объем которой превышает пару Гигабайт, например после крипто-вируса, это не так удобно. Для того чтобы нам получить прямой доступ к копиям данных, мы и поднимем сервер Samba на нашем бекап сервере.
Так же Samba нам понадобится для настройки резервного копирования MS SQL и Exchange на этот сервер, но об этом в следующих статьях. А пока, настроим сам сервер(в качестве которого мы используем уже настроенный сервер резервного копирования из статьи в шапке, все тот же CentOS6):
- Устанавливаем необходимые пакеты
yum install samba samba-client ntp acl krb5-workstation -y
- Запускаем ntp клиент (время лучше всего получать с контроллера домена, чтобы оно сильно не расходилось с нашим сервером)
chkconfig ntpd on service ntpd start
- Подправим файл /etc/hosts, чтобы он имел примерно такой вид:
# cat /etc/hosts 127.0.0.1 localhost.localdomain localhost 10.0.0.2 server-name.domain.local server-name
где 10.0.0.2 IP-адрес нашего бекап-сервера
- Настроим kerberos для добавления сервера в домен
cat /etc/krb5.conf[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = DOMAIN.LOCAL ticket_lifetime = 24h forwardable = yes [realms] DOMAIN.LOCAL = { default_domain = domain.local kdc = dc1.domain.local #контроллер домена admin_server = dc1.domain.local } [domain_realm] domain.local = DOMAIN.LOCAL .domain.local = DOMAIN.LOCAL
- Конфигурируем Samba. Приводим файл /etc/samba/smb.conf к такому виду:
cat /etc/samba/smb.conf[global] load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = yes workgroup = DOMAIN password server = dc1.domain.local netbios name = server-name server string = Samba Server Version %v security = ads realm = DOMAIN.LOCAL domain master = no local master = no preferred master = no socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072 use sendfile = true idmap config *:backend = tdb idmap config *:range = 11000-20000 idmap config DOMAIN:backend = rid idmap config DOMAIN:range = 100000-199000 template shell = /sbin/nologin winbind enum users = yes winbind enum groups = yes winbind use default domain = no winbind nested groups = yes winbind refresh tickets = yes client use spnego = yes client ntlmv2 auth = yes encrypt passwords = yes restrict anonymous = 2 log file = /var/log/samba/log.%m max log size = 50 #log level = 3 vfs objects = acl_xattr map acl inherit = Yes store dos attributes = Yes [disk1$] comment = disk1 path = /media/disk1 public = yes writable = yes
- Настраиваем nsswitch, для того чтобы он мог использовать данные AD с помощью winbind-сервиса
# cat /etc/nsswitch.conf ... passwd: files winbind shadow: files winbind group: files winbind ...
- Запускаем сервисы
chkconfig smb on chkconfig winbind on chkconfig nmb on service smb start service nmb start service winbind start
- Теперь мы можем вводить наш сервер в домен
# net ads join -U administrator administrator's password: Using short domain name -- DOMAIN Joined 'SERVER-NAME' to realm 'DOMAIN.LOCAL'
Если все прошло удачно, то перезапускаем сервис winbind и проверяем подключение к домену
#service winbind restart # wbinfo -t checking the trust secret for domain DOMAIN via RPC calls succeeded
- Чтобы мы могли работать с правами из Windows нам необходимо перемонтировать нашу файловую систему с поддержкой ACL
для этого идем в /etc/fstab и добавляем опцию acl для нашего диска
# cat /etc/fstab ... /dev/VolGroup00/LogVol00 /media/disk1 ext4 defaults,acl 1 2 ...
перемонтируем раздел и раздаем диску права на корень, после чего мы сможем управлять правами папок прямо из Windows
# mount -o remount /media/disk1 # setfacl -m g:"DOMAIN\domain admins":rwx /media/disk1 # setfacl -d -m g:"DOMAIN\domain admins":rwx /media/disk1
- ну и конечно же не забываем про iptables
cat /etc/sysconfig/iptables# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT # правило для urbackup -A INPUT -m state --state NEW -m tcp -p tcp --dport 55414 -j ACCEPT #правила для samba -A INPUT -s 10.0.0.0/8 -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT -A INPUT -s 10.0.0.0/8 -m state --state NEW -m udp -p udp --dport 445 -j ACCEPT -A INPUT -s 10.0.0.0/8 -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT -A INPUT -s 10.0.0.0/8 -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT -A INPUT -s 10.0.0.0/8 -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
# service iptables restart
Готово. Теперь мы можем работать с нашими резервными копиями из любимого файл-менеджера в Windows.
Комментарии (24)
JuriM
15.07.2015 13:20+1Для kerberos в libdefaults желательно увеличить значение параметра clockskew.
Для winbind я бы отключил все enum опции и добавил winbind offline logon = yes и winbind cache time побольше.
Также добавил бы unix charset = UTF-8, а если самба четвертой версии, то max protocol = SMB2
TokminD
15.07.2015 20:21+1Это просто подарок судьбы. Как раз сегодня понадобилось настроить такую связку, зашел на хабр и пожалуста — через 30 минут все заработало. Да и к тому же редкий случай — пример на CentOS 6 (на котором у меня все сервисы), а не популярная нынче Ubunta. Правда параметры с enum и winbind пока не до конца понял, есть еще что почитать — вслепую такое точно еще не повторю. К сожалению с мануалами хорошими по samba, kerberos (и lvm до кучи) не встречался. Либо просто их не осознал еще.
VGusev2007
15.07.2015 23:37Вопрос: если придти на Вашу самбу из машины ВНЕ домена. Можно войти по имени вида: admin pass?
Не могу никак забороть, аналогичные настройки samba (ну или почти аналогичные), и приходится входить так: DOMAIN\admin pass или даже так: admin@domain, что прямо таки злит! Хочу просто входить как admin passVGusev2007
15.07.2015 23:50winbind use default domain = no — без разницы его значение. :(
winbind refresh tickets = yes — тоже странный параметр. Точнее, он тоже просто не работает похоже…TerAnYu
16.07.2015 00:22Попробуйте всё же в конфиге самбы такие параметры:
auth methods = winbind realm = DOMAIN.LOCAL winbind use default domain = yes
У меня работает (вводят только sAMAccountName — имя входа пользователя и пароль). Остальное не так уж и сильно отличается от топика.
P.S.
winbind stop
nmbd restart
winbind start
Ну или вообще перезагрузить сервер :)VGusev2007
16.07.2015 00:39Штука вот какая: случайно выяснил, что если зайти не важно откуда linux или windows по:
netbios name — то всё похоже работает как надо. Даже с winbind use default domain = no (т.е. умолчательной настройкой).
Если же войти по dns имени: то ни в какую, и никак…
Есть какая-либо магия в имени входа?VGusev2007
16.07.2015 00:45В общем не устойчивое поведение… Не могу понять. Не помогли настройки.
[global]
netbios name = admin2
workgroup = COMPANY
security = ADS
realm = COMPANY.RU
dedicated keytab file = /etc/krb5.keytab
kerberos method = secrets and keytab
auth methods = winbind
idmap config *:backend = tdb
idmap config *:range = 2000-9999
idmap config COMPANY:backend = ad
idmap config COMPANY:schema_mode = rfc2307
idmap config COMPANY:range = 10000-20000
winbind nss info = rfc2307
winbind trusted domains only = no
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
winbind refresh tickets = Yes
[test]
path = /tmp/test
map to guest = bad password
read only = no
augin Автор
16.07.2015 00:53Доброй ночи. Завтра постараюсь проверить такое поведение сервера. Отпишусь по результату.
augin Автор
16.07.2015 01:11Не удержался и проверил сейчас. Работает по любому имени, как netbios, так и полному, с доменом, а так же по IP адресу. Попробуйте все же перепроверить настройки и перезагрузить сервер. Так же, если используете SELinux, его надо настроить. Единственное но, я заходил из домена(Windows 7).
VGusev2007
16.07.2015 08:20Благодарю за интерес к вопросу!
Единственное но, я заходил из домена(Windows 7).
Я применяю samba4 как единственный PDC master в продуктивной инсталляции (то есть вполне серьёзная продуктивная инсталляция). Домен один.
Я применяю samba4 в качестве файловых серверов.
Если входить на samba4 файловый сервер, из ЭВМ которые находятся в домене (Windows, Linux, MacOS) — всё хорошо, работает SSO. Если заходить на samba4 файловый сервер с узлов (Windows, Linux, MacOS), которые находятся в другом, старом, продуктивном домене (samba3), приходится входить как: admin@domain. Или если входить с узла который вобще не состоит ни в каких доменах — поведение аналогичное (только: admin@domain). :( Писал в список рассылки — не помогли.
Будет здорово, если проверите войти с узла, который точно ни в каком домене не участвует.
augin Автор
16.07.2015 00:56winbind use default domain = no — без разницы его значение. :(
Этот параметр пригодится когда домен в лесу не один, как в моем случае.
k3NGuru
16.07.2015 06:58Для особо ленивых есть даже интерфейс по настройке samba.
yum install system-config-firewall-tui samba-winbind krb5-workstation pam_krb5
После
authconfig-tui
и там уже делаем настройки Samba и KRB
rrrav
17.07.2015 18:18А почему политика таблицы iptables INPUT ACCEPT?
Вроде не соответствует стандарту безопасности.
Ну и кстати, раз для INPUT политика по умолчанию ACCEPT, то из всех правил для таблицы INPUT можно было оставить только последнее:
-A INPUT -j REJECT --reject-with icmp-host-prohibited
— остальные все равно пройдутrrrav
17.07.2015 19:08пардон, не подумал, что как раз последняя строчка и превращает политику ACCEPT в политику REJECT
xlin
Бекап серверов на Linux предусмотрена? Или мне самому нужно будет указать какие папки забекапить?
augin Автор
Да. Про систему резервного копирования, подробно расписано в предыдущей статье. В данной же статье я рассказал как сделать удобный доступ к копиям из Windows.
xlin
Жду статью про бекап MS SQL Собираюсь на днях сделать. Интересно как это у Вас будет.
augin Автор
планирую следующей статьей.
justabaka
Это легко и вполне интуитивно настраивается и автоматизируется средствами самого MSSQL — достаточно создать Maintenance Plan (или самому добавить таск в SQL Server Agent, если нужно/хочется выполнять кастомный T-SQL). В первом случае он даже будет за вас удалять старые бэкапы (с настроенным Maintenance Cleanup Task).
servekon
Это невозможно сделать с версией Express, а это как раз самое интересное.
augin Автор
С Express тоже есть варианты, но я не планировал описывать их. Теперь подумаю.
justabaka
Кто вам это сказал?
support.microsoft.com/en-us/kb/2019698
www.fmsinc.com/free/NewTips/SQL/SQLServerExpressDatabase/Automated_Backup.asp
augin Автор
Я бы не назвал метод по первой ссылке интуитивным
augin Автор
Именно так, но не все об этом знают.