Archive for the ‘Linux and Windows’ Category

Настройка квот на сервере pdc Samba 3.5. CentOS 6.2

21 апреля, 2013

Исходные данные Задача: задать квоты на профили пользователе домена Samba.

Исходные данные:

  • ОС — CentOS
  • Новый диск sda ( нужен так как на тестовой системе все было установлено в корень)
  • Настроенный PDC Samba

Настройка квот

Квотирование позволяет задавать ограничения по двум параметрам дисковых хранилищ: число индексных дескрипторов, которыми может владеть пользователь или группа, и число блоков диска, доступных пользователю или группе.

Квоты должны включаться и управляться суперпользователем (root) или пользователем, обладающим его полномочиями.

Существует три версии квот:

  • vfsold, или версия 1.
  • vfsv0, или версия 2.
  • xfs, или квота для файловой системы XFS.

(more…)

Squid NTLM авторизация в домене Samba

25 января, 2012

Необходимо настроить NTLM авторизацию на ОС CentOS. Данная авторизация позволяет организовать доступ в интернет без ввода логина и пароля.

Исходные данные:

1. ОС — CentOS 5.7 x32

# cat /etc/redhat-release
CentOS release 5.7 (Final)

2. Домен на Samba

Установлены следующие пакеты Samba:

# yum list installed | grep samba
samba.i386 3.0.33-3.29.el5_7.4 installed
samba-client.i386 3.0.33-3.29.el5_7.4 installed
samba-common.i386 3.0.33-3.29.el5_7.4 installed

Параметры домена:

# more /etc/samba/smb.conf | grep netb
netbios name = SLHSRV
.........

# more /etc/samba/smb.conf | grep work
workgroup = KONTORASLH
comment = Network Logon Service
……….

IP адрес сервера — 10.0.15.2

3. Версия Squid

# squid -v
Squid Cache: Version 2.6.STABLE21
......

установленный пакет:

# yum list installed | grep squid
squid.i386
7:2.6.STABLE21-6.el5 installed

Имеем настроенную авторизацию следующим способом:

auth_param basic program /usr/lib/squid/smb_auth –W\ KONTORASLH -U 10.0.15.2
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive on
external_acl_typeunix_group %\ LOGIN /usr/lib/squid/squid_unix_group -p
acl samba_users proxy_auth REQUIRED

4. На сервере настроен DNS

Подробно описывать настройки сервера не буду. Остановлюсь на настройках прокси сервера в части, касающейся NTLM авторизации.  Рассмотрим два способа:

Первый: наиболее оптимальный. Без Winbind и ввода сервера в домен.
Второй: Использую Winbind, и вводя сервер в домен.

Приступаем к первому способу.

Добавляем в squid.conf следующие строки:

auth_param ntlm program /usr/lib/squid/ntlm_auth KONTORASLH/10.0.15.2
auth_param ntlm children 20
auth_param ntlm keep_alive on
#######################################
выше настроек : auth_param basic program
........................................
#######################################
external_acl_type unix_group %LOGIN /usr/lib/squid/squid_unix_group -p -s

строки необходимо добавить перед строками базовой авторизации (auth_param basic), auth_param basic убирать не следует, так как не все программы поддерживают такую авторизацию (например skype).

auth_param — Этот тэг используется для определения параметров для различных схем аутентификации
поддерживаемых Squid.

format: auth_param scheme parameter [setting]

auth_param ntlm program — указывает на использование хелпера авторизации, расположенного в каталоге /usr/lib/squid/, и протокол авторизации.

auth_param ntlm children 20 — указано максимально количество одновременно запускаемых хелперов

"keep_alive" on|off

Эта опция включает использование постоянного соединения при инициализации запроса аутентификации. Есть сведения, что некоторые версии MS IE имеют проблемы с этим, но лучше будет если эта опция включена.

external_acl_type

Этот тэг позволяет определить внешние ACL. Внешние ACL это такие ACL, которые не входят в набор стандартных типов ACL. Например, это могут быть самописные (или откуда- нибудь взятые) скрипты (вспомогательные программы), которые используя переменные Squid осуществляют некоторое действие. Такие скрипты запускаются вместе со Squid отдельным процессом.

external_acl_type name [options] FORMAT.. /path/to/helper [helper arguments..]

Хелпер входит в пакет squid.

# /usr/lib/squid/squid_unix_group --help
/usr/lib/squid/squid_unix_group: invalid option -- -
Unknown option '--'.
Usage: /usr/lib/squid/squid_unix_group -g group1 [-g group2 ...] [-p] [-s]

-g group
The group name or id that the user must belong in order to
be allowed to authenticate.
-p Verify primary user group as well
-s Strip NT domain from usernames

Второй способ.

добавляем следующие строчки также перед базовой авторизацией:

......
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 20
auth_param ntlm keep_alive on
......

Нужно ввести сервер в домен командой:

net join -U samba

После запуска squid-a:

В логах пишет:

Jan 24 11:42:35 slhsrv (ntlm_auth): [2012/01/24 11:42:35, 0] utils/ntlm_auth.c:get_winbind_netbios_name(172)
Jan 24 11:42:35 slhsrv (ntlm_auth): could not obtain winbind netbios name!
Jan 24 11:42:47 slhsrv (ntlm_auth): [2012/01/24 11:42:47, 0] utils/ntlm_auth.c:get_winbind_domain(146)
Jan 24 11:42:47 slhsrv (ntlm_auth): could not obtain winbind domain name!
Jan 24 11:42:47 slhsrv (ntlm_auth): [2012/01/24 11:42:47, 0] utils/ntlm_auth.c:get_winbind_netbios_name(172)
Jan 24 11:42:47 slhsrv (ntlm_auth): could not obtain winbind netbios name!
Jan 24 11:42:57 slhsrv (ntlm_auth): [2012/01/24 11:42:57, 0] utils/ntlm_auth.c:get_winbind_domain(146)
Jan 24 11:42:57 slhsrv (ntlm_auth): could not obtain winbind domain name!
Jan 24 11:42:57 slhsrv (ntlm_auth): [2012/01/24 11:42:57, 0] utils/ntlm_auth.c:get_winbind_netbios_name(172)
Jan 24 11:42:57 slhsrv (ntlm_auth): could not obtain winbind netbios name!

Запускаем Winbind:

# /etc/init.d/winbind start

Как уже упоминалось, для второго способа нужен Winbind. отличий в Работе не заметил, так первый способ более предпочтителен для домена на SAmba.

Немного теории:

Исходный код Squid идет с несколькими типами процессов аутентификации. Включая:

  1. LDAP: использует Lightweight Directory Access Protocol
  2. NCSA: использует NCSA-стиль для файла имен пользователей и паролей.
  3. MSNT: использует Windows NT authentication domain.
  4. PAM: использует Linux Pluggable Authentication Modules scheme.
  5. SMB: использует SMB-север типа Windows NT или Samba.
  6. getpwam: использует старомодный файл паролей old-fashioned Unix.

      Пользователи будут аутентифицироваться, если squid настроен на использование ACL типа proxy_auth.
Броузер посылает пользовательский запрос на аутентификацию в заголовке Authorization.
Если Squid получает запрос и если список правил http_access содержит ACL типа proxy_auth, Squid ищет загловок Authorization. Если заголовок присутствует, Squid декодирует его и извлекает имя пользователя и пароль.

Если заголовок отсутствует, Squid возвращает HTTP-ответ со статусом 407 (Proxy Authentication Required). Пользовательский агент (броузер) получает ответ 407 и просит пользователя ввести имя и пароль. Имя и пароль кодируется и посылается в заголовке Authorization для последующих запросов к прокси.

Имя пользователя и пароль фактически передаются «открытым текстом» между броузером и прокси. Поэтому вы не должны использовать тот же пароль и имя пользователя, который вы используете для вашего аккаунта.

Аутентификация фактически происходит вне основного процесса Squid. Когда Squid стартует, он запускаеть несколько процессов аутентификации. Эти процессы читают имена пользователей и пароли со стандартного ввода и выдают "OK" или "ERR" на стандартный вывод. Подобная техника позволяет вам использовать большое количество различных схем аутентификации, однако вы можете использовать только одну схему в данный момент времени.

Аутентификация NTLM

NTLM представляет собой расширенную версию старого протокола аутентификации LM (LAN Manager). NTLM работает посредством вопросов/ответов между сервером и клиентом без передачи пароля пользователя через сеть в открытом виде. Клиент должен подтвердить то, что он знает пароль пользователя, посредством отправки зашифрованного хэша.

NTLM функционирует следующим образом:

  1. Пользователь указывает имя пользователя, пароль и имя домена при входе на компьютер-клиент.
  2. Клиент создает хэш данного пароля и удаляет оригинал.
  3. Клиент отправляет серверу имя пользователя в открытом виде.
  4. Сервер отправляет клиенту 16-битный фрагмент случайных данных.
  5. Клиент шифрует этот фрагмент, а также хэш пароля пользователя и передает их на сервер.
  6. Сервер передает имя пользователя, случайный фрагмент данных и ответ клиента на контроллер домена.
  7. Контроллер домена шифрует отрезок случайных данных вместе со своим собственным хэшем пароля пользователя, после чего сравнивает их с элементами, присланными сервером.
  8. Если значения совпадают, контроллер домена уведомляет сервер об успешном завершении аутентификации.
  9. Если значения или имя пользователя не совпадают, контроллер домена уведомляет об этом сервер, который передает клиенту соответствующее сообщение. После этого браузер клиента запрашивает у пользователя аутентификационные данные.

Возможно отключать и включать данную авторизацию в самом браузере:
Первоисточник: http://skeletor.org.ua/?p=422

Приведу некоторые выдержки:

Opera: официально не поддерживает NTLM-авторизацию, хотя в настройках можно найти пункт, который позволяет включать или отключать эту опцию. Поэтому, в настройках вашего прокси-сервера нужно добавить basic авторизацию. Что бы отключить NTLM-авторизацию (и собственно заставить работать через прокси этот браузер) делаем следующее:

1) набираем в браузере about:config
2) переходим в раздел NetWork и снимаем галочку с параметра Enable NTLM
3) перезапускаем браузер.

Правда есть один ньюанс (так сказать неудобство): при первом запуске придётся ввести логин пароль (полностью, то есть с доменом) и поставить галочку «Сохранить». Теперь при каждом последующем открытии браузера табличка авторизации появляться будет, и нужно будет просто жать «Ок». Неудобно, но что поделаешь.

Примечание: иногда на некоторых ОС наоборот приходилось включать NTLM-авторизацию. Возможно это так же зависило от версий браузера и ОС.

FireFox, Chrome: они поддерживают, хотя нужно немного по шаманить. Опишу несколько вариантов, которые раздобыл в интернете, возможно вам придётся перепробовать все, пока не найдёте тот, который подошёл вам.

1) нужно будет добавить в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa параметр под названием LmCompatibilityLevel типа DWORD и присвоить ему значение 1. После чего надо будет перегрузить компьютер (именно этот вариант мне подошёл)

2) Чтобы Firefox мог проходить ntlm авторизацию, вроде достаточно открыть в адресной строке about:config и изменить параметры на такие:

network.negotiate-auth.delegation-uris = http://,https://
network.negotiate-auth.trusted-uris = http://,https://

После чего перезапустить браузер.

3) Открываем редактор политик (gpedit.msc) Конфигурация компьютера -> Конфигурация windows -> Параметры безопасности -> Локальные Политики -> Параметры Безопасности -> Сетевая безопасность: уровень проверки подлинности LAN Manager и ставим параметр Отправлять LM и NTLM – использовать сеансовую безопасность NTLMv2 при согласовании.

После чего закрываем политику и перегружаемся.

Если у вас английская версия, тогда так: machine policy-> computer config->windows setting->local policies->security option->Network security: LAN Manager authentication level и выбрать LM & NTLM – Use NTLMv2 session if negotited.

От себя: у меня все заработало. шаманить с самими браузерами не пришлось. Но информация по включению и отключению NTLM в браузере полезна.

Полезные статьи:

http://www.securitylab.ru/analytics/362448.php
http://www.chla.ru/index.php/security
http://wiki.squid-cache.org/ConfigExamples#Authentication

Страдания c Ubuntu 8.10 (введение).

14 апреля, 2009

Страдания c Ubuntu 8.10 (введение).

На работе постоянно сталкиваюсь с Linux. Но в качестве полноценной, пользовательской ОС, не пытался использовать.
И вот решил в очередной раз поставить себе Linux. Выбор пал на Ubuntu. По причине широкой распространенности, и популярности в последнее время. Мне нравиться Slackware, но ее настройка требует большего времени.

Основные проблемы возникшие при использовании Ubuntu 8.10:

1. Отсутствие звука в системе. Это при видимом воспроизведении плеером звуковых файлов.
2. Настройка внешнего вида близкого к Windows XP. (Использование шрифтов в системе, и Mozile Firefox)

3. Настройка ТВ тюнера.


4. Программы для ведения блогов.
5. Запуск виндовых программ.

Это основные проблемы. Частично они решены. Чуть позже я опишу их решение. Пока могу сказать, что переход на open source, требует времени и волевых усилий. Ведь тратить свободное время дома на настройку системы не всегда возможно, а решение некоторых проблем требует длительного времени. Но путь этот правильный, ведь все мы по сути воруем ПО !!! А ведь есть бесплатные реализации и единственное, что нас останавливает — это лень, и отсутствие желание разбираться.

samba and win2003

21 апреля, 2008

Страдания по Samba. часть 2.

Нужен файловый сервер Linux в Домене Windows 2003.
Исходные данные:
ОС — Fedora 8
пакеты :

# yum list installed | grep samba

# yum list installed | grep krb5*

krb5-devel.i386 1.6.2-14.fc8 installed
krb5-libs.i386 1.6.2-14.fc8 installed
krb5-workstation.i386 1.6.2-14.fc8 installed
krb5-workstation-clients.i386 1.6.2-14.fc8 installed
krb5-workstation-servers.i386 1.6.2-14.fc8 installed
pam_krb5.i386 2.2.18-1 installed

Вводные данные:

mynet.ru — Домен
domain.mynet.ru -контроллер домена
10.0.1.50 — ип адреса сервера домена

Samba должна быть собрана с поддержкой LDAP, Kerberos (MIT либо Heimdal) и, желательно, PAM

Проверить это можно следующими командами:

#smbd -b | grep LDAP
#smbd -b | grep KRB
#smbd -b | grep PAM

Файл /etc/samba/smb.conf должен содержать как минимум:

realm = DOMAIN.LOCAL.NET
security = ADS
encrypt passwords = yes

       Параметр realm указывает на имя домена. Иногда, не разобравшись, в качестве значения realm указывают FQDN DC. Это неверно, и вот почему: при установке AD и сопутствующей настройке DNS автоматически создает запись типа SRV в DNS зоне _kerberos._tcp.mynet.ru для каждого KDC (Kerberos Key Distribution Center) в домене. Очевидно, что если вы укажете в качестве значения realm имя своего контроллера домена, то нужная DNS запись будет искаться в зоне _kerberos._tcp.domain.mynet.ru. В некоторых случаях может понадобится явно задать параметр password server. Это нужно, когда Samba не может самостоятельно обнаружить AD DC, используя параметр realm. Происходит это, как правило, либо при некорректной настройке MS DNS сервера, либо при использовании не MS DNS серверов, несоответствующих требованиям AD, вроде старых версий BIND.

В одном из источников прочитал:

    Во всех без исключения статьях приводится образец конфигурации /etc/krb5.conf. На самом деле в данном случае и для MIT и для Heimdal Kerberos этот файл не нужен вообще. Все более или менее свежие библиотеки Kerberos cамостоятельно способны обнаружить KDC, при корректно настроеном DNS (но не все).

     Я лично не пробовал так, и все время переписывал конфигурационный файл krb5.conf.

Мои настройки:

# 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 = MYNET.RU
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
clock_skew = 300
forwardable = yes

[realms]
MYNET.RU = {
kdc = DOMAIN.MYNET.RU:88
admin_server = DOMAIN.MYNET.RU :749
default_domain = MYNET.RU
}
10.0.1.50 = {
kdc = 10.0.1.50
}

[domain_realm]
.mynet.ru = MYNET.RU
mynet.ru = MYET.RU

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

10.0.1.50 — ип адрес контролера домена.

Чтобы проверить, работает ли Kerberos выполните:
# kinit bez@MYNET.RU
Password for bez@MYNET.RU:******

bez — администратор домена. При успехе ничего не выводиться.

Но могут возникнуть проблемы:

1. Неправильно настроенный DNS. (Всегда проверяйте перед настройкой).

2. Расхождение во времени с KDC. Выводиться сообщение такого вида :
«kinit(v5): Clock skew too great while getting initial credentials»

      Допустимые расхождения по-умолчанию составляет 5 минут. Изменить это значение можно в политиках безопасности домена, но правильнее все же настроить на машине с Samba синхронизацию времени с DC.
Для синхронизации времени нужно установить пакет ntpdate.

3. Указание параметра realm в нижнем регистре. Ошибка такого вида:
«Cannot find KDC for requested realm while getting initial credentials»

        Еще рекомендуют, чтоб для KDC работал поиск в обратной зоне DNS. В документации указано, что DNS имя, которое выдается на nslookup ip_adress_of_kdc обязательно должно совпадать с NetBIOS именем KDC. Я это пропускал, но может кому то понадобиться. Хотя Samba может работать в домене состоящем только из Windows 2000/XP/2003 вообще с отключенным NetBIOS, соответственно имена NetBIOS использоваться не будут.

Настраиваем SAMBA.

Привожу свой конфиг:
# cat /etc/samba/smb.conf
[global]
log file = /var/log/samba/log.%m
idmap gid = 10000-20000
idmap uid = 10000-20000
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
auth methods = winbind
encrypt passwords = yes
realm = DOMAIN.MYNET.RU
winbind use default domain = yes
case sensitive = no
dns proxy = no
netbios name = vmtestnw
server string = vmtestnw work
password server = 10.0.1.50
default = public
dos charset = 866
local master = no
workgroup = MYNET
os level = 20
#тут мы показываем, что используем AD
security = ads
unix charset = KOI8-R
max log size = 150
template shell = /bin/bash
template homedir = /home/samba/%D/%U

[homes]
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN’%S

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

[public]
guest ok = Yes
writable = yes
writeable = yes
public = yes
path = /opt/pub
write list = nobody

Пояснения:

password server = 10.0.1.50
параметр определяет имена или адреса серверов, на которых Samba будет авторизировать пользователей, которые обращаются к ее ресурсам. В данном параметре можно указывать доменные имена хостов, их IP-адреса или символ «*». В последнем случае Samba сама будет определять какой сервер выбрать для авторизации доменных пользователей.

realm = DOMAIN.MYNET.RU
имя домена, которое используется в нашей сети.
ВНИМАНИЕ! Имя должно быть таким же, как и прописано в
/etc/krb5.conf и набрано в таком же регистре!

security=ADS — тип авторизации на сервере, Так как у нас
AD-домен, то и тип авторизации — для AD

encrypt passwords = Yes — разрешить шифрование паролей.

auth methods = winbind — указывает Samba использовать модуль
winbind при авторизации пользователей.

idmap uid = 10000-20000
idmap gid = 10000-20000
Диапазон идентификаторов пользователя и группы, которые будут выделяться при отображении Win-пользователей с их SID (Secure ID) в UNIX. Диапазон не должен включать UID и GID существующих в Linux пользователей и групп.

winbind enum users = Yes < Убрал
winbind enum groups = Yes < Убрал
winbind use default domain = Yes
winbind refresh tickets = Yes < Убрал

Дает указание Samba-модулю winbind вести учет пользователей и групп вместо локальных системных вызовов setpwent(), getpwent(), рассматривать пользователей без доменного имени перед именем пользователя (DOMAIN’user) как пользователей, принадлежащих к данному домену и производить обновление Kerberos-билетов с помощью модуля winbind.

os level = 20
Указывает «вес» Samba-сервера при участи в выборах обозревателя сети (не
путать с DNS). Обычно основным обозревателем является контроллер домена,
но это не обязательно.

hide unreadable = Yes — прятать от пользователей файлы и
каталоги, для которых у них нет прав чтения. (убрано)
некоторые маны pекомендуют включать

; winbind separator = +
но многие утверждают Дефолтный сепаpатоp ’’’ куда удобнее для любого виндузятника. А pаботает не хуже.

template homedir = /home/%D/%U
template shell = /bin/bash
Если есть желание давать юзвеpям консоль
winbind pеплициpует также ВСЕ домены, с котоpыми налажены тpасты.
Отключается при желании: allow trusted domains = no

По пользовательским шарам:

Доступ к шарам :

valid users = @»YARNET’Domain Users»
valid users = YARNET’xxx
По умолчанию, Самба 3.0 имеет ту же самую семантику как Сервер Windows NT не чувствителен к регистру, но сохраняет регистр имен файлов. Поскольку специальный регистр для каталогов с большими количеством файлов, если варианты опции регистра установлены следующим образом «case sensitive = yes», «case preserve = no», «short preserve case = no» тогда «default case» опция будет применена и изменит все имена файла, посланные от клиента при доступе к этому ресурсу.

Самбе можно пpикpутить для удаленного администpиpования шаp MS management console, но ей-богу, пpоще поднять swat. И удобнее — через mmc можно рулить только созданием/удалением шар, но никак не параметрами самбы. (Не пробовал)

Информация по символам подстановки переменных в Samba:
 
%S Имя текущей службы
%P Корневой каталог текущей службы
%u Пользователь текущей службы
%g Основная группа %u
%U Имя пользователя для сеанса (может отличаться от имени,запрошенного клиентом)
%G Основная группа %U
%H Домашний каталог пользователя
%v Версия Samba
%h Имя хоста, на котором работает Samba
%m NetBIOS-имя компьютера-клиента
%L NetBIOS имя сервера
%M Имя хоста для компьютера-клиента
%N Имя NIS-сервера домашних каталогов. Значение определяется при помощи файла настройки системы NIS auto map. Если вы скомпилировали Samba без automount, то значение совпадает с установленным для сервера NetBIOS именем
%p Путь к домашнему каталогу службы. Определяется при помощи файла настройки системы NIS auto map, как %N:%p
%R Выбранный после установления соединения уровень протокола
%d Номер текущего серверного процесса
%a Операционная система клиента (значение может быть неверным)
%I IP-адрес клиентской машины
%T Текущие дата и время
%D имя домена или рабочей группы текущего пользователя.
 
Более подробно можно прочитать понятное дело — man smb.conf.
Проверяем конфигурацию SAMBA командой testparm

Для того чтобы, можно было входить в Linux машину под пользователями домена, необходимо, произвести следующие настройки:

а) Остановим сервер samba и winbind

# service smb stop
# service winbind stop

б) Добавим в файл /etc/hosts

10.0.1.50 domain #описание PDC
ВНИМАНИЕ! В конце последней строки ОБЯЗАТЕЛЬНО необходимо
сделать перевод на новую строку, иначе в будущем возможны проблемы при
подключении сервера к домену.

в) Правим nsswitch.conf и lmhost

Добавляем winbind

# cat /etc/samba/lmhosts
127.0.0.1 localhost
10.0.1.50 domain
 
# cat /etc/nsswitch.conf
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry ’[NOTFOUND=return]’ means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
# nisplus or nis+ Use NIS+ (NIS version 3)
# nis or yp Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files
# db Use the local database (.db) files
# compat Use NIS on compat mode
# hesiod Use Hesiod for user lookups
# [NOTFOUND=return] Stop searching if not found so far
#

# To use db, put the «db» in front of «files» for entries you want to be
# looked up first in the databases
#
# Example:
#passwd: db files nisplus nis
#shadow: db files nisplus nis
#group: db files nisplus nis

passwd: files winbind
shadow: files
winbind
group: files winbind

#hosts: db files nisplus nis dns
hosts: files dns

# Example — obey only what nisplus tells us…
#services: nisplus [NOTFOUND=return] files
#networks: nisplus [NOTFOUND=return] files
#protocols: nisplus [NOTFOUND=return] files
#rpc: nisplus [NOTFOUND=return] files
#ethers: nisplus [NOTFOUND=return] files
#netmasks: nisplus [NOTFOUND=return] files

bootparams: nisplus [NOTFOUND=return] files

ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files

netgroup: files
publickey: nisplus
automount: files
aliases: files nisplus

г) идем в каталог /etc/pam.d
добавляем файл common-account

# touch common-account

В нем прописываем: account sufficient pam_winbind.so

д) в этом же каталоге необходимо отредактировать файл
system-auth-ac — его приводим к следующему виду:

Привожу свой файл:

# cat /etc/pam.d/system-auth-ac

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required /lib/security/$ISA/pam_env.so
auth sufficient /lib/security/$ISA/pam_winbind.so
auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok use_first_pass
auth required /lib/security/$ISA/pam_deny.so

account required /lib/security/$ISA/pam_unix.so
account sufficient /lib/security/$ISA/pam_winbind.so
account sufficient /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet
account required /lib/security/$ISA/pam_permit.so

password requisite /lib/security/$ISA/pam_cracklib.so retry=3
password sufficient /lib/security/$ISA/pam_winbind.so
password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
password required /lib/security/$ISA/pam_deny.so

session required /lib/security/$ISA/pam_mkhomedir.so skel=/etc/skel umask=0077
session required /lib/security/$ISA/pam_limits.so
session required /lib/security/$ISA/pam_unix.so

e) Перед добавлением машины в домен обязательно надо выполнить
следующую команду синхронизации времени на машине:
# net time set

ё)Добавляем машину в домен:
net join ads -U user%password
net join ads -U admin
у некоторых net ads join -U Admin, как я делал не помню. Может можно и так и сяк

Ошибки:
# net join ads -U bezsss
Password:
Could not connect to server DOMAIN
The username or password was not correct.
Connection failed: NT_STATUS_LOGON_FAILURE
—> При неправильном пароли или пользователи.

Если такая машина уже существует увидим —
Failed to set password for machine account (NT_STATUS_ACCESS_DENIED)
Failed to join domain !
Если будет такая ошибка содержащая что то про principal name, а в AD появится учетка, но со знаком красного крестика значит смотри и проверяй /etc/hosts
При рассинхронизации времени с контролером возможно появление ошибки из-за несовпдаения времени .

Запустим samba и winbind

# service smb start
# service winbind start

Проверяем Winbind
# wbinfo -p
ответ : Ping to winbindd succeeded on fd 4

Устанавливаем авторизацию Winbind — a !!!!
Очень важное мероприятие. Не во всех статьях по данной теме встречал.
Без этой процедуры не возможно войти по доменному пользователю. Не создаются
домашние каталоги.

# wbinfo —set-auth-user=Administartorr
Продолжаем проверку работы винбинда.
# wbinfo -t
Если все правильно, получаем ответ: checking the trust secret via RPC calls succeeded.

Проверить список доступных групп и пользователей домена можно командами:
# wbinfo -g
# wbinfo -u
Выводит список пользователей и групп.

Проверяем аутентификацию в домене:
#wbinfo -a <имя_юзера>%<пароль_юзера>
#wbinfo -a irina%321
Ответ:
plaintext password authentification succeeded
challenge/response password authentification succeeded

Проверка распознавания доменных пользователей:
 
#id Administrator
Ответ: uid=10000(Administrator) gid=10005(пользователи домена)
groups=10005(пользователи домена) , 10004(администраторы домена)
У меня вместо русских аброказявка, что то с кодировкой видно.

Насчет PAM некоторое дополнение:

# cat common-account

account sufficient pam_winbind.so
account required pam_unix.so nullok_secure
<—- Добавил строчку.

В некоторых источниках пишут о том, что нужно создать следующие файлы
в директории /etc/pam.d/.

1) !!! /etc/pam.d/common-account должны содержать только следующие строки:

account sufficient pam_winbind.so
account required pam_unix.so

2) !!! в /etc/pam.d/common-auth должно быть только это:

auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass
 
3) убедитесь, что /etc/pam.d/common-session содержит следующие строки:

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

В других статьях рекомендуют так:
 
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
 
или
 
session required pam_winbind.so
session required pam_unix.so
#session required pam_mkhomedir.so umask=0022 skel=/etc/skel
session optional pam_foreground.so
 
4) Поправим the /etc/pam.d/common-password так, чтобы параметр max был 50,

в качестве примера:

password required pam_unix.so nullok obscure min=4 max=50 md5

В других статьях:
 
password sufficient pam_unix.so nullok obscure md5
password sufficient pam_winbind.so

или

password sufficient pam_winbind.so
password required pam_unix.so nullok obscure min=4 max=8 md5
 
В некоторых источниках пишут о замене информации в следующих файлах относящихся к
PAM.

К примеру :
 
Файл /etc/pam.d/samba
Редактируем /etc/pam.d/login :

#%PAM-1.0
auth required pam_securetty.so
auth sufficient pam_winbind.so
auth sufficient pam_unix.so use_first_pass
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
account sufficient pam_winbind.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
session optional pam_console.so

Для того, чтобы можно было использовать доменные аккаунты для входа через ssh в файле /etc/pam.d/sshd делаем изменения аналогично /etc/pam.d/login..

Так же важное дополнение: Домменные пользователи не являются root — овыми для данной машины. Для того чтобы были такие права необходимо править — /etc/samba/smbusers.

Для сопоставления (Map) групп домена и групп UNIX (Делал это давно при создании PDC на самбе, в одной статейке рекомендовали и при членстве самбы в домене.:

# net groupmap modify ntgroup=»Domain Admins» unixgroup=root
# net groupmap modify ntgroup=»Domain Users» unixgroup=users
# net groupmap modify ntgroup=»Domain Guests» unixgroup=nobody
 
Я создал бы новые группы в Linux е. И зделал бы сопоставление с ними.

Еще Полезные комманды:

$ smbclient -N -L 10.0.0.117
— показывает ресурсы компьютера с адресом 10.0.0.117

$ smbclient //10.0.0.117/common
Вход в расшаренную директорию. Пользователь unix от которого выполняется команда должен быть зарегистрирован в домене.

# net ads join -U pm -d 3
— Добавить пользователя pm

Источники:
http://www.opennet.ru/base/net/fedora7_win_domain.txt.html — наиболее удачная
http://rus-linux.net/main.php?name=servers.koi — комплекс ссылок, основные статьи по самбе там указаны.
http://us1.samba.org/samba/docs/man/Samba-HOWTO-Collection/FastStart.html

Spamassassin

18 февраля, 2008

Исходные данные:
ОС — Fedora Core 8.0
Спам система — Spamassassin.

Устанавливаем из репозитариев Fedora.

#yum install spamassassin

[root@ns spamassassin]# spamassassin -V
SpamAssassin version 3.2.4
running on Perl version 5.8.8
(more…)

Авторизация squid в домене Windows 2003 Server

30 января, 2008

Задача: Доступ в интернет получали пользователи по своим логинам в домене компании. Удобство такого подхода в возможности — на разных машинах иметь интернет в соответствии со своими правами.

Исходные данные:

  • Контроллер домена — Windows 2003 Server Enterprise Edition.
  • Интересуемая машина — FedoraCore 8.0.

Все программы ставил из репозитария используя программу yum.

(more…)