буйный

Задолби пробел да пола

Поднятие контроллера Kerberos с базой в LDAP
буйный
[info]dalth
Начальные условия - иерархия данных Kerberos лежит в LDAP в поддереве ou=KDCData,dc=local
Контроллер домена Kerberso будет логиниться в базу под юзером uid=kerberos,ou=special users,dc=local
Kerberos realm name у нас будет LOCAL

Создаем /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 = LOCAL
 dns_lookup_realm = no
 dns_lookup_kdc = no
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = yes

[realms]
 LOCAL = {
  kdc = 127.0.0.1:88
  admin_server = 127.0.0.1:749
  database_module = openldap_ldapconf
 }

[domain_realm]
 .work.local = LOCAL
 work.local = LOCAL

[dbdefaults]
 ldap_kerberos_container_dn = ou=KDCData,dc=local

[dbmodules]
 openldap_ldapconf = {
  db_library = kldap
  ldap_kdc_dn = "uid=kerberos,ou=special users,dc=local"
  ldap_kadmind_dn = "uid=kerberos,ou=special users,dc=local"
  ldap_service_password_file = /var/kerberos/krb5kdc/service.keyfile
  ldap_servers = ldap://localhost/
  ldap_conns_per_server = 5
 }

Сама база в LDAP создается вызовом kdb5_ldap_util create <...>
ldap_service_password_file - это файлик используемый контроллером Kerberos чтобы идентифицироваться в LDAP. Создается он утилитой kdb5_ldap_util stashsrvpv <...>
Если надо создаь копию контроллера домена - копируем каталог /var/kerberos/krb5kdc на другой компьютер, после чего стартуем там kadmin и kr5kdc.

1. Общий порядок действий - настроить LDAP, завести в нем юзера для KDC и элемент где будет жить база Kerberos
2. Через kdb5_ldap_util создать базу в каталоге
3. Создать stash file
... и потом всё что надо - SSSD, PAM и так далее

UPD: если надо заводить Windows-хосты как принципалов, не забывать указывать ключик "-e rc4-hmac:normal" при вызове kadmin/addprinc
  • Leave a comment
  • Add to Memories

Темы GTK3 без GNOME
буйный
[info]dalth
Кто пробовал - тот знает, что GTK3'шные программы вне GNOME выглядят ужасно. Впрочем, поставить свою любимую тему для них несложно:

mkdir ~/.config/gtk-3.0
cp -R /usr/share/themes/Adwaita/gtk-3.0 ~/.config/gtk-3.0

Ага. Готово.

Расстояние между иконками на десктопе в XFCE
буйный
[info]dalth
Править надо ~/.gtkrc-2.0, у меня он имеет такое содержание:

style "xfdesktop-icon-view" {
    XfdesktopIconView::cell-padding = 0
}
widget_class "*XfdesktopIconView*" style "xfdesktop-icon-view"
  • Leave a comment
  • Add to Memories

SpamAssassin и sendmail в ScientificLinux / RHEL / CentOS
буйный
[info]dalth
Итак, пытаемся подружить SpamAssassin с сендмайлом на RHEL и его клонах (CentOS, SL).

1. Спамассассин собираем из SRPM'ов текущей федоры. Ничего сложного

2. В /etc/mail/sendmail.mc добавляем следующие строки:

INPUT_MAIL_FILTER(`spamassassin', `S=unix:/var/run/spamass-milter/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m')dnl
define(`confMILTER_MACROS_CONNECT',`t, b, j, _, {daemon_name}, {if_name}, {if_addr}')dnl
define(`confMILTER_MACROS_ENVRCPT',confMILTER_MACROS_ENVRCPT`, r, v, Z')dnl
define(`confMILTER_MACROS_HELO',`s, {tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}')dnl

Пересобираем sendmail.cf -> Вуаля!

Краткое how-to для поднятия CA, адресной книги и почты
буйный
[info]dalth
1. Ставим openssl-perl, 389-ds, dovecot, sendmail, sendmail-cf(!!!)

2. Генерируем самоподписаный Root Certificate, субъектом пишем например такой:
    C=RU, O=Example Ltd. Company, OU=IT Dept, CN=Certification Authority

3. Определяемся с именами хост-служб!!!:
   LDAP-сервер - ldap.example.com
   WWW-сервер - example.com
   Почтовый сервер - mail.example.com

5. Генерируем сертификаты для сервисов, то есть сертификаты на следующих субъектов:
   C=RU, O=Example Ltd. Company, CN=ldap.example.com  -- для LDAP(389-DS)
   C=RU, O=Example Ltd. Company, CN=example.com -- для HTTPS
   C=RU, O=Example Ltd. Company, CN=mail.example.com -- для почты (dovecot, sendmail)
Создаем .p12-файл для сертификата сервера LDAP:
openssl pkcs12 -inkey ldap.example.com.key -in ldap.example.com.crt -out ldap.example.com.p12 -nodes -name "LDAP server"

6. Сертификаты, ключи и сертификат CA складываем например в /etc/pki/example.com
   на каталог ставим права (root:root 755)
   на файлы сертификатов (root:root 644)
   на ключи сертификатов ставим права (root:root 600)

7. Прописываем сертфифкаты и ключи:
   Dovecot -> в /etc/dovecot/conf.d/10-ssl.conf
   Sendmail -> в /etc/mail/sendmail.mc(!!!)

8. Подкидываем наш Root Certificate в /etc/opelndap/cacerts - это нужно для валидной работы LDAPовских утилит, иначе будет ж..па:
   # ln -s /etc/pki/example.com/root-ca.crt /etc/openldap/cacerts
   # c_rehash /etc/openldap/cacerts
(*) Утилита c_rehash взялась из openssl-perl

9. Развертываем каталог (setup-ds-admin.pl)

10. Стартуем 389-console и настраиваем сертификаты:
   идем в упраление сервером каталога
   выбираем Manage certificates
   задаем пароль для базы сертификатов
   импортируем корневой сертификат
   Использую pk12util импортируем P12 с сертифкатом сервера LDAP в его базу ключей:
      pk12util -d /etc/dirsrv/slapd-ldap -i ldap.example.com.p12
   Создаем PIN-файл для базы сертификатов со следующим содержанием:
       # cat /etc/dirsrv/slapd-ldap/pin.txt
       Internal (Software) Token:******
   Вместо звездочек подставляем ваш ранее заданый пароль для базы сертификатов
   Рестартуем сервер каталога
   Идем в его настройки, включаем шифрование, выбираем сертифкат для ldap.example.com, жмем Save
   Нас предупреждают, мы запоминаем предупреждение, оптравляемся в SSH и еще раз перестартовываем сервер каталога (service dirsrv restart)
   Пароль для базы сертификатов прочтется из pin.txt

11. Проверяем, что у нас работает ldapsearch -H ldaps://ldap.example.com ...

12. Настраиваем SSSD чтобы он работал через LDAPS, указываем id provider, chpass provider и auth provider - везде LDAP.
   Рекомендации по настройке SSSD в связке с 389-ds (FDS, RHDS):
      ldap_schema = rfc2307bis
      ldap_group_member = uniqueMemeber
      enumerate = true
О да, для настройки PAM и NSS на использование SSSD используем authconfig: authconfig --update --enablemkhomedir --enablesssd --enablesssdauth

13. Заводим юзеров и группы, проверяем командой getent passwd <имя юзера> и getent group <имя группы>

14. Адресная книга в Outlook - работает нормально. В evolution - выбираем порт 389 и шифрование TLS или SSL

Править записи можно через GQ или Evolution, достаточно достойно получается.

P.S.: пользователям RedHat/CentOS/ScientificLinux - обязательно проверьте наличие /etc/ldap.conf, а также наличие в нем строки "tls_cacertdir /etc/openldap/cacerts" - без этого LDAP'овские клиенты и утилиты будут впадать в истерику по поводу того, что при подключении по SSL или TLS не удается проверить сертификат сервера
  • Leave a comment
  • Add to Memories

Fedora и LDAP
буйный
[info]dalth
Согласно новым веяниям, все доконфигурации дополнительных данных для NSS и PAM в федоре и новых RedHat'ах делаются через SSSD (System Securtiy Services Daemon). Следовательно, в конфигурационных файлах PAM и NSS мы увидим ссылки на pam_sss.so и libnss_sss.so

pam_ldap и nss_ldap
буйный
[info]dalth
В федоре 14 эти два модуля имеют РАЗНЫЕ конфигурационные файлы с одинаковым синтаксисом!
За работу NSS отвечает /etc/nss_ldap.conf и /etc/nss_ldap.secret
за работу PAM отвечает /etc/pam_ldap.conf и /etc/pam_ldap.secret
А я чуть голову не сломал пока до меня не доперло.

Windows dynamic disks
буйный
[info]dalth
Как увидеть Windows dynamic disks в линуксе??? Итак, сейчас в линуксе мы умеем собирать "чередующийся том", "составной том" и "зеркальный том". Ну и само собой видеть "простые тома". Порядок действий (quick-n-dirty howto):

1. Собираем ядро с поддержкой Windows dynamic disks:
CONFIG_LDM_PARTITION=y

2. Загружаемся в новом ядре и видим разделы sdc1, sdc2, sdb1, sdb2, sdb3 и так далее, хотя если запустить fdisk -l /dev/sda он выводит только sdb1/sdc1 с типом SFS. Так вот самое главное - /dev/sdb1 != fdisk.sdb1 и  sdc1 != fdisk.sdc1 (!!!!), и те sdb1/sdc1 которые в /dev это тома (частит томов) Windows dynamic disk

3. Сборка томов:

3.1. Простой том - просто монтируем, например так
mount -t ntfs-3g /dev/sdc1 /mnt/simple_volume

3.2. Составной том (linear). Используем mdamd:
mdadm --build /dev/md0 -n 2 -l linear /dev/sdb2 /dev/sdc1
mount -t ntfs-3g -o ro /dev/md0 /mnt/linear_volume

Важно(!!!) МОНТИРОВАТЬ ДЛЯ НАЧАЛА С ОПЦИЕЙ "ТОЛЬКО ЧТЕНИЕ" (-o ro)
Важно(!!!) ПОРЯДОК СЛЕДОВАНИЯ УСТРОЙСТВ ВАЖЕН - ВОЗМОЖНО, ПОТРЕБУЕТСЯ ПОИГРАТЬ С НИМ


3.3. Зеркальный том (mirror). Используем mdamd:
mdadm --build /dev/md1 -n 2 -l mirror -c 64 --assume-clean  /dev/sdb3 /dev/sdc2
mount -t ntfs-3g -o ro /dev/md1 /mnt/mirror_volume

Важно(!!!) МОНТИРОВАТЬ ДЛЯ НАЧАЛА С ОПЦИЕЙ "ТОЛЬКО ЧТЕНИЕ" (-o ro)
Важно(!!!) ВОЗМОЖНО, ПОТРЕБУЕТСЯ ПОИГРАТЬ С РАЗМЕРОМ ЧАНКА (опция -c у mdadm)


3.4. Чередующийся том (stripe). Используем mdamd:
mdadm --build /dev/md2 -n 2 -l stripe -c 64 /dev/sdb4 /dev/sdc3
mount -t ntfs-3g -o ro /dev/md2 /mnt/stripe_volume
Важно(!!!) МОНТИРОВАТЬ ДЛЯ НАЧАЛА С ОПЦИЕЙ "ТОЛЬКО ЧТЕНИЕ" (-o ro)
Важно(!!!) ВОЗМОЖНО, ПОТРЕБУЕТСЯ ПОИГРАТЬ С РАЗМЕРОМ ЧАНКА (опция -c у mdadm)

Устанавливем PHP на IIS
буйный
[info]dalth
1. Скачиваем FastCGI extension вот отсюда http://www.iis.net/download/fastcgi и ставим
2. Берем свеженький PHP http://windows.php.net/download/ и ставим, выбирая интеграцию с IIS FastCGI
3. Настраиваем PHP.INI так чтобы php.exe при запуске из командной строки не ругался
3. Запускаем cmd.exe и делаем там:
cd \windows\system32\inetsrv
cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP\php-cgi.exe"
cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP\php-cgi.exe" -site:1
Первая команда регистрирует секцию для всего сервера (у меня ее не хватило), вторая для конкретно взятого сайта
4. Тестируем
А вот и полная ссылка: http://learn.iis.net/page.aspx/247/using-fastcgi-to-host-php-applications-on-iis-60/
Tags: , ,

Сказки
буйный
[info]dalth
В общем-то, начало должно быть стандартным: давным-давно, легенды рассказывали, что в далеком-далеком замке томится прекрасная девушка, и охраняет ее злой дракон. Но! Легенды рассказывают люди, и они не всегда курсе дела. Точнее, не всегда в курсе всей картины, скажем так

- Эй, дракон!!! - завопил дурным голосом очередной прекрасный принц. - Именем всевышнего и моим мечом требую - освободи принцессу!
- И не подумаю. - дракон почесал за ухом задней лапой. Почему задней? Потому, что в одной передней лапе он держал Богатырского Коня, а во второй - самого Прекрасного Принца
- Думаешь, ты тут первый такой освободитель? - дракон ехидно усмехнулся и выпустил дым прямо в лицо Прекрасному. Прекрасный закашлялся:
- Чертова бестия, ну неужели тебе надо надо мной так измываться?
- Ну посуди сам, - возразил дракон - пришел, сломал ворота, напал гнусным образом...
- Не гнусным, а благородным! - возмутился Прекрасный. - Я честно тебя предупредил.
- Честно? А кто приладил котел со смолой над главными воротами, а потом начал орать "Выходи, тварь чешуйчатая, биться будем!"???
Прекрасный потупился. - Ну ты же сам сказал - ничего не случилось, я не первый, ну что такого?
- То-то! - нравоучительно заметил дракон. - Теперь надо решать что с тобой делать
Прекрасный задумался и начал рассуждать вслух
- Отпустить меня ты конечно можешь, но это не логично. Ты же знаешь, что я опять нападу
- Именно. - дракон с интересом прищурился
- Сожрать меня никакого толка также нет - мои братья придут отомстить за мою гибель и...
- Не придут. - дракон хихикнул. - Я про твою семью наслышан, у тебя трое братьев, и все младшие.
- Н-да, прокол вышел. - Прекраснейший невозмутимо поболтал ногами. - Слууущай, поставь меня на землю, я не могу так думать. Не сбегу, слово рыцаря!
Будучи поставленым на землю, Принц оглядел валявшееся окружь имущество. Имущество имело вид жалкий и непрезентабельный
- Да, и заплатить выкуп за себя и принцессу ты не сможешь. - похоже, дракон сошелся в оценке имущества с принцем
- Ага, вот блин ситуевина... - Принц поднял с земли мешочек и выкинул на ладонь пару игральных костей
- Мало того, что сражаться не умеет, так еще и игрок. Надеюсь, играешь ты лучше чем сражаешься. - ехидно прокомментировал принцеву находку большой чешуйчатый
- Да уж кто бы говорил. - возмущению принца не было предела. - К твоему сведению, благородные кости издревне составляют забаву благородных рыцарей...
- А также весьма эффективный метод перераспределения денежых средств. Думаешь ты один такой умный? - еще раз продемонстрировал подохрительную осведомленность дракон. Принца накрыли недобрые предчувствия, а зеленые глаза дракона на мгновение скрылись под веками, и тварь задумалась о чем то.
- Убивать тебя смысла нет, братья твои конечно будут рады, но долг чести, кровная месть и тому подобное мне не нужно. - Принц расцвел
- С другой стороны, - продолжала рассуждать рептилия, - если они также умелы как и ты, то это будет даже весело. - Прекрасный ощутил себя слишком рано радующимся
- Вот что, Принц, - сказал дракон. - у меня тут мысль. Играем в кости, три круга, по итогам трех кругов либо ты мне отдаешь коня, либо...
- Либо я забираю принцессу! - нашелся принц
- Э, нет. Так нечестно. - если выигрываешь ты, то я отпускаю тебя, коня и Принцессу в обмен на небольшой надел земли в мое ведение из твоего королевства
- Не, не согласен. - сказал принц. - Я еще принцессу в глаза не видел - а вдруг она страшна как смертный грех?
- Обижаешь! - возмутился чешуйчатый. - Смотри!
Дракон достал откуда-то небольшую тарелку с рунами и яблоко. - Смотри, молодой, второй раз показывать не стану.
Принц с драконом вместе уставились в картинку, которая проявилась на тарелке с катающимся яблоком. - ОГО!!! Вот это да!!! Ну-ка, нука... БЛИН!!! В полотенце завернулась!!!
- Ну вот, можно сказать, вы заочно знакомы. - дракон хихикнул. - По рукам?
- По рукам!... Эй, не лупи со всего маху, больно же!
Спустя 30 минут дракон с принцем торчали над картой.
- Ну вот смотри, тут деревня, молодые селяночки, речка, лес - красота! - уламывал принц своего весьма крупного знакомого
- Да на кой мне твои селянки? - дракон удивился. - От них же проку ни на грош, визгу море, давай лучше вот это плато, там дичи много, подходов всего два, и куча пещер.
- Идет. - тут же согласился принц. - Только учти, по левой дороги ходят войной кочевники.
- И как часто?
- Ну, два раза в год....
- Терпимо. - дракон на радостях хлопнул хвостом по мосту, отчего тот жалобно заскрипел и закачался. - Но учти, я задаром тебе границу сторожить не нанимался
- Решаемо. Четыре коровы каждую новую луну. - Принц практично подошел к делу
- Договорились! - дракон обрадованно махнул хвостом, и мост надо рвом Замка Дракона окончательно рухнул в зеленую воду
- Так-с, - итоги переговоров явно пришлись обоим по душе, а Принц подсчитывал дивиденды. - +20% с новых караванных дорог для купцов вдоль плато, минус 4 тысячи солдат в 8 фортах, плюс гарантия что кочевникик не придут... Эй, а сколько ты живешь? - спросил Принц дракона
- Все путем, тебя переживу, и твоих внуков тоже. Ежели они у тебя будут, с твоей склонностью к авантюрам. - дракон явно получал удовольствие. - Но они могут пролонгировать договор
- Заметано! - Принц вскочил в седло. - Знаешь, если бы все люди были драконами, это был бы восхитительный мир. Рад был познакомиться, уважаемый!
С этими словами Принц отвесил дракону изящный поклон и направился в свой дворец.
Через пару часов его воздухом нагнал дракон. - Эй, ты кажется что-то забыл! - Дракон сделал заход и ловко скинул на коня что-то (а точнее, кого-то) с мешком на голове. - Твоя принцесса
- Тьфу, совсем забыл! - Прекрасный Принц снял мешок с головы прекрасной бесчувственной девушки, судя по всему находившейся в глубоком обмороке и собрался разбудить ее Поцелуем Истиной Любви, но вдруг остановился
- Слушай, Драк, ну будь человеком, не порти романтику! - обратился принц к дракону
Огромная рептилия захохотала, выпустила поток огня, свистнула и стремительно скрылась вдали.
Прекрасный Принц снял мешок с головы прекрасной бесчувственной девушки, судя по всему находившейся в глубоком обмороке и разбудил ее Поцелуем Истиной Любви.

=== Эпилог ===

Согласно историческим данным, Принц Фласо Третий по прозвище "Прекрасный" освободил свою будущую жену из плена дракона после жестокого боя, в 4 день 5 месяця на 13 году 11 века от возвращения Дракона. Спустя еще три года, благодаря умелым дипломатическим действиям Принца, ставшего уже королем, прекратились набеги кочевников, и Симайское королевство окрепло достаточно, чтобы его стали называть Империей. (с) История Симайской Империи

Драконы чрезвычайно умны, логичны, хотя и не лишены азарта. Органы чувств драконов не имеют равных среди живых существ, полумагическая натура этих сзданий позволяет им не только услышав угадать вытащенную карту по шелесту, но даже видеть кости в деревянном стакане. Поэтому помните - даже если дракон проиграл, дракон выиграл. Дракон всегда выигрывает. (c) Энциклопедия магических и мистических существ

You are viewing [info]dalth's journal