Пошаговое руководство по использованию пакетов debian ldap, kerberos и bind с gnumed

Записано Сяном Тан (незначительные изменения Джима Бюссер).

Настройка Bind

Эти записи относятся к пакетам bind9 для debian. Полезными были URL-адреса http://www.unix.org.ua/orelly/networking/dnsbind/ch04_01.htm

1. установите bind9, bind9-doc - странно замораживает ошибки.

2. установка по умолчанию: /etc/bind/named.conf named.conf показывает определения зоны, являющимися умолчанием для локального компьютера.

Возникающие вопросы:

a) как он решает вопрос о ссылках на локальный компьютер?

b) как он использует интернет для поиска нелокальных имен?

Ответ a) зоны 'localhost' и "127.in-addr.arpa" . Ответ b) зона '.'

Учтите, что a) является "type master" и b) является "type hint".

"type master" означает, что программа bind этого компьютера является authoratitive сервером имен и может решить вопрос об адресах.

"type hint" означает, что этот компьютер укажет способ другим серверам имен для компьютеров, которые могут иметь информацию о решении вопроса.

строка ' file ""; ' содержит сведения об информации по принятию решения (a) или направляющие интернет-адреса других серверов имен (b)

для зоны "localhost" файлом является "/etc/bind9/db.local", а "127.in-addr.arpa" является /etc/named/db.127

2 файла db.local и db.127 практически идентичны, за исключением последней строки

последней строкой db.local является "@ IN A 127.0.0.1"

последней строкой db.127 является "1.0.0 IN PTR localhost."

@ является маркером для контекста имени локальной зоны, то есть "localhost" для db.local

IN устанавливается для класса "internet" , и по сути, излишен и устарел A является Authoratative преобразованием записи или имени-адреса, поэтому localhost преобразуется на 127.0.0.1

PTR используется в обратном преобразовании или преобразовании адрес-на-имя, и преобразует обратно 127.0.0.1 на localhost.

Первая часть адреса дается в "127.in-addr.arpa" в имени зоны, в / etc/bind9/named.conf.

Остальные адреса даются в обратном порядке.

Если адрес или имя с последующей '.', то она завершает имя или адрес, если нет, то адрес является префиксом, так что monidesktop.monidomain преобразует localhost.monidomain.monidomain, так, обычно, указание полного имени с окончанием '.' является хорошей идеей.

Если имя зоны "127.0.in-addr.arpa", то запись будет "0.1 IN PTR localhost" вместо "1.0.0 IN PTR localhost"

Для настройки локального компьютера с именем, отличающимся от localhost, можно скопировать в файл, и прямое и обратное преобразование, созданное для локальной сети.

вот конфигурация:

десктоп запускает bind9. ноутбук является единственным другим компьютером в сети.

syan@monidesktop 192:~$ cat /etc/resolv.conf

search
nameserver 192.168.1.5
nameserver 192.168.1.1

upto 3 сервера имен может быть указан и будет будет рассматриваться по порядку.

syan@monidesktop 192:~$ cat /etc/hostname
monidesktop

это имя localhost.

syan@monidesktop 192:~$ cat /etc/bind/named.conf

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";

// prime the server with knowledge of the root servers
zone "." {
        type hint;
        file "/etc/bind/db.root";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
};

// zone "com" { type delegation-only; };
// zone "net" { type delegation-only; };

// From the release notes:
//  Because many of our users are uncomfortable receiving undelegated answers
//  from root or top level domains, other than a few for whom that behaviour
//  has been trusted and expected for quite some length of time, we have now
//  introduced the "root-delegations-only" feature which applies delegation-only
//  logic to all top level domains, and to the root domain.  An exception list
//  should be specified, including "MUSEUM" and "DE", and any other top level
//  domains from whom undelegated responses are expected and trusted.
// root-delegation-only exclude { "DE"; "MUSEUM"; };

include "/etc/bind/named.conf.local";

это /etc/bind/named.conf по умолчанию, за исключением того, что named.conf.local включен

#/etc/bind/named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
// include "/etc/bind/zones.rfc1918";

zone    "monidomain" in {
        type master;
        file "/etc/bind/db.local.moni";
};

zone    "168.192.in-addr.arpa" in {
        type master;
        file "/etc/bind/db.192.168";

};

это указывает 2 взаимные парные зоны, по одной для преобразования имя-в-адрес сети monidomain, и один для обратного преобразования этой сети.

syan@monidesktop 192:~$ cat /etc/bind/db.local.moni
;
; BIND data file for local loopback interface
;
$TTL    604800
;domainname.    internet  start of authority, primary master, administrator email
@       IN      SOA     localhost. syan.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.

monidesktop     IN      A       192.168.1.5
monilaptop      IN      A       192.168.1.6

предоставляет статическую адресацию двух компьютеров в сети.


syan@monidesktop 192:~$ cat /etc/bind/db.192.168
;
; BIND data file for local loopback interface
;
$TTL    604800
;domainname.    internet  start of authority, primary master, administrator email
@       IN      SOA     monidesktop. syan.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      monidesktop.monidomain.

5.1     IN      PTR     monidesktop.monidomain.
6.1     IN      PTR     monilaptop.monidomain.

преобразует обратно 192.168.1.5 в monidesktop.monidomain.

Дополнительная настройка предоставлена в ссылке, где в локальной сети(ях) расположен роутер, и имеет два интерфейса, или компьютеры являются псевдонимами.

Проблемы с bind и dhcp

Я не думаю, что они хорошо совместимы.

Если запущен dhcp, и роутер broadband/adsl является сервером dhcp, то, вероятно, что каждый раз при отключении и снова включении компьютера, в /etc/resolv.conf в процессе загрузки демоном клиента dhcp будут сделаны изменения.

Я думаю, что решением будет удаление установки или остановка сервера dhcp, в этом случае локальные адреса ip будут статично расположены через bind.

Но я еще не делал этого, я по-прежнему сохраняю /etc/resolv.conf и копирую его обратно после того, как компьютер загрузится.

TODO: как все это сделать в динамическом IP.

Другие проблемы: о чем AVAHI , или использование DHCP с DNS ?

Настройка krb5

после настройки для сети bind можно настроить krb5. Этот пример имеет следующее применение:

1. основной ключевой сервер и сервер kadmin запускаются на одном компьютере, как и сервер bind9.

2. был использован postgresql 8.2 (не обязателен): обеспечьте при создании из исходника, чтобы был запущен, по крайней мере, ./configure --with-krb5, (также --with-openssl для шифрованных сессий postgres без необходимости переадресации через ssh).

После выполнения plain debian устанавливает из krb5-admin-server и krb5-kdc, libkrb5-devel (при сборке postgresql) предпринимает следующие шаги:

1. configure /etc/krb5.conf

концепция состоит в том, что безопасное имя домена - это отдельное имя, так joe@mydomain, где mydomain это kerberos безопасный домен отличается от joe@joehost.mydomain, локальный пользователь сети и joe@mydomain могут войти в систему с любого компьютера, указанного в krb5.conf, как части безопасного домена ( mydomain)

syan@monidesktop 192:~$ cat /etc/krb5.conf
[libdefaults]
        default_realm = monidomain

# The following krb5.conf variables are only for MIT Kerberos.
        krb4_config = /etc/krb.conf
        krb4_realms = /etc/krb.realms
        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true

# The following encryption type specification will be used by MIT Kerberos
# if uncommented.  In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.

#       default_tgs_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
#       default_tkt_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
#       permitted_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5

# The following libdefaults parameters are only for Heimdal Kerberos.
        v4_instance_resolve = false
        v4_name_convert = {
                host = {
                        rcmd = host
                        ftp = ftp
                }
                plain = {
                        something = something-else
                }
        }
        fcc-mit-ticketflags = true

[realms]
        monidomain = {
                kdc = kerberos.monidomain
                admin_server = kerberos.monidomain
        }
        ATHENA.MIT.EDU = {
                kdc = kerberos.mit.edu:88
                kdc = kerberos-1.mit.edu:88
                kdc = kerberos-2.mit.edu:88
                admin_server = kerberos.mit.edu
                default_domain = mit.edu
        }
        MEDIA-LAB.MIT.EDU = {
                kdc = kerberos.media.mit.edu
                admin_server = kerberos.media.mit.edu
        }
        ZONE.MIT.EDU = {
                kdc = casio.mit.edu
                kdc = seiko.mit.edu
                admin_server = casio.mit.edu
        }
        MOOF.MIT.EDU = {
                kdc = three-headed-dogcow.mit.edu:88
                kdc = three-headed-dogcow-1.mit.edu:88
                admin_server = three-headed-dogcow.mit.edu
        }
        CSAIL.MIT.EDU = {
                kdc = kerberos-1.csail.mit.edu
                kdc = kerberos-2.csail.mit.edu
                admin_server = kerberos.csail.mit.edu
                default_domain = csail.mit.edu
                krb524_server = krb524.csail.mit.edu
        }
        IHTFP.ORG = {
                kdc = kerberos.ihtfp.org
                admin_server = kerberos.ihtfp.org
        }
        GNU.ORG = {
                kdc = kerberos.gnu.org
                kdc = kerberos-2.gnu.org
                kdc = kerberos-3.gnu.org
                admin_server = kerberos.gnu.org
        }
        1TS.ORG = {
                kdc = kerberos.1ts.org
                admin_server = kerberos.1ts.org
        }
        GRATUITOUS.ORG = {
                kdc = kerberos.gratuitous.org
                admin_server = kerberos.gratuitous.org
        }
        DOOMCOM.ORG = {
                kdc = kerberos.doomcom.org
                admin_server = kerberos.doomcom.org
        }
        ANDREW.CMU.EDU = {
                kdc = vice28.fs.andrew.cmu.edu
                kdc = vice2.fs.andrew.cmu.edu
                kdc = vice11.fs.andrew.cmu.edu
                kdc = vice12.fs.andrew.cmu.edu
                admin_server = vice28.fs.andrew.cmu.edu
                default_domain = andrew.cmu.edu
        }
        CS.CMU.EDU = {
                kdc = kerberos.cs.cmu.edu
                kdc = kerberos-2.srv.cs.cmu.edu
                admin_server = kerberos.cs.cmu.edu
        }
        DEMENTIA.ORG = {
                kdc = kerberos.dementia.org
                kdc = kerberos2.dementia.org
                admin_server = kerberos.dementia.org
        }
        stanford.edu = {
                kdc = krb5auth1.stanford.edu
                kdc = krb5auth2.stanford.edu
                kdc = krb5auth3.stanford.edu
                admin_server = krb5-admin.stanford.edu
                default_domain = stanford.edu
        }

[domain_realm]
        .monidomain = monidomain
        .mit.edu = ATHENA.MIT.EDU
        mit.edu = ATHENA.MIT.EDU
        .media.mit.edu = MEDIA-LAB.MIT.EDU
        media.mit.edu = MEDIA-LAB.MIT.EDU
        .csail.mit.edu = CSAIL.MIT.EDU
        csail.mit.edu = CSAIL.MIT.EDU
        .whoi.edu = ATHENA.MIT.EDU
        whoi.edu = ATHENA.MIT.EDU
        .stanford.edu = stanford.edu

[login]
        krb4_convert = true
        krb4_get_tickets = false

[logging]
        kdc=file:/var/log/kdc.log
        admin_server=file:/var/log/kadmin_server.log

где kerberos.monidomain это компьютеры, запускающие только инфраструктуру kerberos infrastructure - минимально является основной ключевой сервер и сервер admin, оба могут быть запущены на одном компьютере.

2.настройка записей привязки в bind


syan@monidesktop 192:~$ cat /etc/bind/db.local.moni
;
; BIND data file for local loopback interface
;
$TTL    604800
;domainname.    internet  start of authority, primary master, administrator email
@       IN      SOA     localhost. syan.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.

kerberos                CNAME   monidesktop
postgres                CNAME   monidesktop
_kerberos._udp          SRV     0 0 88 monidesktop
_kerberos-adm._tcp      SRV     0 0 750 monidesktop
_kerberos-master._udp   SRV     0 0 88 monidesktop

monidesktop     IN      A       192.168.1.5
monilaptop      IN      A       192.168.1.6

где имя узла kerberos является псевдонимом для имени узла monidesktop. Другие записи указывают, где отображены имена конкретного сервера, какой порт с какого компьютера, например, имя сервера _kerberos._udp отображается в monidesktop:88

3. Следующее предназначено для создания основной ключевой базы данных: взято из документации krb5-doc admin html
  
shell% /usr/local/sbin/kdb5_util create -r ATHENA.MIT.EDU -s
     Initializing database '/usr/local/var/krb5kdc/principal' for
     => realm 'ATHENA.MIT.EDU',
     master key name 'K/M@ATHENA.MIT.EDU'
     You will be prompted for the database Master Password.
     It is important that you NOT FORGET this password.
     Enter KDC database master key:  <= Type the master password.
     Re-enter KDC database master key to verify:  <= Type it again.
     shell%

замените после - r для имени realm, например monidomain.

4. Добавьте администраторов в /etc/krb5kdc/kadm5.acl . Проще добавить

*/admin@monidomain

где monidomain подставляется к доменному имени kerberos, которое было принято в krb5.conf.

monidesktop 192:/home/syan# cat /etc/krb5kdc/kadm5.acl
*/admin@monidomain *

Этот файл acl ссылается на /etc/krb5kdc/kdc.conf и, поэтому является файлом kadm5.keytab. (здесь не работает)
monidesktop 192:/home/syan# cat /etc/krb5kdc/kdc.conf
[kdcdefaults]
    kdc_ports = 750,88

[realms]
    monidomain = {
        database_name = /var/lib/krb5kdc/principal
        admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
        acl_file = /etc/krb5kdc/kadm5.acl
        key_stash_file = /etc/krb5kdc/stash
        kdc_ports = 750,88
        max_life = 10h 0m 0s
        max_renewable_life = 7d 0h 0m 0s
        master_key_type = des3-hmac-sha1
        supported_enctypes = des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
        default_principal_flags = -preauth
    }

в действительности, я выключил preauth с +preath на -preauth .

5. согласно руководству создайте пользователей admin.

     shell% /usr/local/sbin/kadmin.local
     kadmin.local: addprinc admin/admin@ATHENA.MIT.EDU
     NOTICE: no policy specified for "admin/admin@ATHENA.MIT.EDU";
     assigning "default".
     Enter password for principal admin/admin@ATHENA.MIT.EDU:  <= Enter a password.
     Re-enter password for principal admin/admin@ATHENA.MIT.EDU:  <= Type it again.
     Principal "admin/admin@ATHENA.MIT.EDU" created.
     kadmin.local:
 

инструмент kadmin.local запускается под root, и не требует аутентификации.

Основным admin для примера домена будет admin/admin@monidomain.

6. экспортируйте некоторые специальные основы в файл kadm5.keytab, используемый для обратной совместимости со старыми клиентами kerberos.

     shell% /usr/local/sbin/kadmin.local
     kadmin.local: ktadd -k /usr/local/var/krb5kdc/kadm5.keytab  kadmin/admin kadmin/changepw
 

ktadd это команда kadmin.local, которая экспортирует в файл keytab перечисленные основы ( kadmin/admin, kadmin/changepw)

7. запустите серверы в debian , то есть
/etc/init.d/krb5-admin-server start  

/etc/init.d/krb5-kdc start

8. установите пакет krb5-client на клиентские компьютеры и скопируйте krb5.conf на них в /etc/krb5.conf

9. проверьте установку. например с помощью kadmin.local, команда add_principal добавляет основу, скажем пользователя.

затем выйдите из kadmin.local,

затем попробуйте, например, kinit user@domain , где user был самым последним созданным пользователем и домен - это krb5.conf домена kerberos (например, monidomain).

10. по некоторой причине получение postgesql для использования kerberos может пойти неверно из-за имен.

необходимо изменить pg_hba.conf так, чтобы использовался krb5.

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
#host    all         all         127.0.0.1/32          trust
host    all         all         192.168.1.1/8         krb5

11. также необходим файл keytab, который должен быть доступен для пользователя postgres после того, как он создан через kadmin.local

kadmin.local

addprinc  postgres/monidesktop.monidomain

ktadd -k /home/crypt2/postgresql/8.2/main/pg.keytab postgres/monidesktop.monidomain

quit

chown postgres.postgres /home/crypt2/postgresql/8.2/main/pg.keytab

здесь, основной postgres/monidesktop.monidomain экспортируется в pg.keytab, файл видимым для postgres, и postgres сделан владельцем файла pg.keytab. (Это предполагает, что проверка ключа осуществляется не через службу, а библиотеку kerberos, вызываему postgres).

Основное имя должно точно соответствовать настраиваемому в postgresql.conf, параметрам krb5_srvname и krb5_server_hostname.

krb5_srvname соответствует первой части (postgres) перед слэшем, krb5_server_hostname совпадает со второй частью после слэша (monidesktop.monidomain).


# extracted from postgresql.conf
# Kerberos
krb_server_keyfile = './pg.keytab'              # (change requires restart)
krb_srvname = 'postgres'                # (change requires restart)
krb_server_hostname = 'monidesktop.monidomain'  # empty string matches any keytab entry

13. далее проверьте на ошибки,

- перезапустите сервер postgresql. Должен запускаться без проблем.

- psql на этом сервере, запускающем kerberos-configured pg_hba.conf. Он должен ответить, что нет полномочий.

- kinit любого основного, затем psql к этому серверу, управляемому kerberos-configured pg_hba.conf. Если он работает первый раз, то вay, я отдаю должное вам, умный ублюдок! (говорит тот, кто потратил много часов).

- kdestroy, и попробуйте снова psql, чтобы убедиться, что psql работает только после успешного kinit.

Если не работает, ниже имеется перечисление возможных ошибок.

14. возможные ошибки при настройке

* если основное имя postgres kerberos не совпадает, следовательно отсутствие полномочий обнаружит ошибку, которая сообщит при попытке входа в систему.

исправление: проверьте, имеет ли основной postgres, экспортированный в pg.keytab, то же самое имя, как указано в postgresql.conf параметрами krb5_srvname и krb5_server_hostname .

* если файл pg.keytab имеет неправильные права доступа, то будет сообщена ошибка об отсутствии прав доступа.

исправление: chown postgres.postgres pg.keytab

* если сообщается, что верси 5 kerberos не поддерживается, то сообщается или на сервере, или в клиенте. Проверьте, что обе программы - и клиента (psql), и сервера (pg_ctl), из пакета с поддержкой kerberos.

Если компиляция из, скажем, последнего пакета postgresql, проверьте, что ./configure запущен с параметрами --with-krb5 перед выполнением make и make install.

* если встречается ошибка не канонического имени хоста, то проверьте другой журнал - /var/log/kdc.log .

(ниже приведено из журнала postgresql на стандартный вывод)
LOG:  Kerberos sname_to_principal("monidesktop.monidomain", "postgres") returned error -1765328168
postgres: Hostname cannot be canonicalized while getting server principal for server "monidesktop.monidomain" for service "postgres"
FATAL:  Kerberos 5 authentication failed for user "syan"

возможно, что иногда keytab повреждается /? по истечении времени. знак может пытаться kinit postgres/monidesktop.monidomain@monidomain, и см., возможен ли вход в систему с установленным паролем.

если нет,

kadmin.local

change_password postgres/monidesktop.monidomain

ktadd -k / postgres/monidesktop.monidomain

часто может это исправить.

* если имеется ошибка, но без "No canonical hostname", то может быть, либо невозможность клиента найти определенное имя хоста с сообщением, вроде "kdc для имени хоста сервера не найден", либо, что поиск сделан с именем хоста, и ключ присутствует, но он не является ключом, соответствующим службе выдачи ярлыков, в этом случае выдает "имя сервера не найдено".

убедитесь, что локальный файл /etc/krb5.conf был обновлен в двух местах, одно, очевидно, является определением области безопасности kerberos, которое используется, а другое - это преобразование domain-to-realm в domain_realm. например,

если в указанном файле /etc/krb5.conf пропущена строка " .monidomain =monidomain", то между доменом и realm не будет преобразования, а клиент получит ошибку "Server name not found", и найденное в журнале master_key_server на /var/log/kdc.log покажет, что наилучшим выходом является преобразование доменного имени в верхний регистр; так что, если доменным именем является monidomain, пропущено преобразование domain_realm для .monidomain, то клиент будет пытаться, что-то подобное (в этом случае неверное):

(из /var/log/kdc.log)

Dec 16 19:52:32 monidesktop.monidomain krb5kdc[5713](info): TGS_REQ (7 etypes {18 17 16 23 1 3 2}) 192.168.1.6: UNKNOWN_SERVER: authtime 1166259147,  syan@monidomain for krbtgt/MONIDOMAIN@monidomain, Server not found in Kerberos database

если, по-другому, он говорит,

Dec 16 18:28:17 monidesktop krb5kdc[3876](info): AS_REQ (7 etypes {18 17 16 23 1 3 2}) 192.168.1.6: ISSUE: authtime 1166254097, etypes {rep=16 tkt=16 ses=16}, syan@monidomain for krbtgt/monidomain@monidomain

Dec 16 18:29:37 monidesktop krb5kdc[3876](info): TGS_REQ (7 etypes {18 17 16 23 1 3 2}) 192.168.1.6: UNKNOWN_SERVER: authtime 1166254097,  syan@monidomain for krbtgt/LOCALDOMAIN@monidomain, Server not found in Kerberos database

Его не использует видимое доменное имя monidomain, чей клиент должен быть частью: 1) проверьте на практике '/usr/bin/hostname', проверьте /etc/hostnames , /etc/host и убедитесь, что доменное имя локально не переопределено. Проверьте /etc/krb5.conf и посмотрите, есть ли строка, подобная


[libdefaults]
        default_realm = localdomain   # should be monidomain

и измените default_realm на используемое имя realm.

Наконец, если все верно, вы должны увидеть что-то подобное


Dec 16 18:03:46 monidesktop krb5kdc[3876](info): AS_REQ (7 etypes {18 17 16 23 1 3 2}) 192.168.1.5: ISSUE: authtime 1166252626, etypes {rep=16 tkt=16 ses=16}, syan@monidomain for krbtgt/monidomain@monidomain

Dec 16 18:09:29 monidesktop krb5kdc[3876](info): TGS_REQ (7 etypes {18 17 16 23 1 3 2}) 192.168.1.5: ISSUE: authtime 1166252626, etypes {rep=16 tkt=16 ses=16}, syan@monidomain for postgres/monidesktop.monidomain@monidomain

Например, у меня было имя настольного компьютера, преобразуемое в /etc/hostnames в имя моей покойной кошки на ноутбуке, что было сделано много месяцев назад, и вызвало большую потерю времени. Затем, после этого оно все еще не было исправлено, так как default_realm из раздела lib_defaults в krb5.conf был установлено на =LOCALDOMAIN , и это перегружает отсутствующее преобразование domain_realm, как указано выше. После этого исправления доменное имя догадалось, чтобы быть MONIDOMAIN, что также было неправильно, и было исправлено только, когда преобразование [domain_realm] добавило .monidomain = monidomain в krb5.conf

Просмотр /var/log/kdc.log является хорошей идеей, так как вывляет также ошибки конфигурации вне kerberos. Он также подтверждает мнение, как мало работает kerberos: в основном AS (службы авторизации) предоставляет временное полномочие с ярлыком, который проверяет подлинность запросов на TGS (служба предоставления ярлыка), выдающей дальнейшие временные ярлыки, связанные со службами. Указанная выше настройка postgresql показывает, что дополнительные ярлыки только маркируют именем, идентифицирующим их; их применение только вызывает библиотеку kerberos, проверяющую ярлык с kerberos.

Пользователи kerberos должны соответствовать пользователям postgres в написании

Пользователи для gnumed также должны быть основными для kerberos и писаться так же: например, kadmin.local , addprinc any-doc@mydomain . Предпочтительней не использовать пароль с дефисом, он может не работать. После этого, если нужно использовать клиент gnumed, kinit any-doc@mydomain и введите пароль без дефисов. После этого экран входа для gnumed не требует пароль: она будет запрашиваться, только если kinit работал до запуска gnumed. Это также означает, что если один забывает kdestroy после выхода из сессии gnumed, то кто-то может войти в систему в течение ограниченного времени после этого.

Оценка

Большинство людей знакомы с ssh , ssl , https , где каналы связи шифрованные с сессионным ключем, посылают кратко шифрованные с помощью открытого ключа сервера. Как только канал будет установлен, то незашифрованный пароль может быть отправлен по каналу.

Kerberos, вероятно, привлекателен для пользователей windows, так как он всегда в продаже из-за простоты использования, и не формален для пользователей, поэтому его часто называют Windoze,особенно мазохисты UNIX.

Kerberos предоставляет возможность однократной регистрации и использования приложения, как одинарный безопасный principal, ограниченный на основе user/principal. Это, вероятно, наиболее полезно, если оконная система входа также с поддержкой Kerberos, так что если JoeDoctor обозначен на рабочем столе, он просто возьмет и использует gnumed без пароля, потому что JoeDoctor является членом уровня доступа postges для gm-doctors в gnumed.

СТАРЫЕ ПРИМЕЧАНИЯ

Цель

настроить gnumed для использования в debian с kerberos на основе сети.

Компоненты

MIT kerberos версии 5, Bind 9 из ISC, OpenLDAP , postgresql версии 8.0, gnumed и зависимости

Требования

начальной установкой является один компьютер с запущенным debian linux. Это специфично в зависимости от особенностей Linux соответствовать дереву каталогов.

например, в моем экземпляре debian linux
  • /etc - это директория, куда, обычно, идет информация по настройке.
  • /etc/init.d - это, где располагаются сценарии для запуска служб.
  • /var - это директория, куда, обычно, идет выполнение данных.
  • /var/lib - где проходит пакетирование постоянных данных. например, данные базы данных postgresql собираются в /var/lib/postgresql
  • /var/log - это для расположения журналов, полезных для отладки
  • /usr - это, где располагается пакет статичных данных, например, программы и библиотеки, исправленная настройка и документация.
  • /usr/bin , /usr/sbin - где располагаются программы. Системные программы, обычно, идут в /usr/sbin, например, идут файлы управления kerberos.
  • /usr/share/doc - это основная директория расположения документации для пакетов.

Настройка компьютера

Предполагается, что gnumed настроен, и кто-либо может запустить клиент и войти в систему. Это требует успешной установки: - python (specifically 2.3) , wx-python (-2.3), пакета python pyPgSQL, библиотеки python egenix-datetime, postgresql

Настройка сети

первоначально для установки kerberos , ldap и bind имеется один компьютер. Позже он станет сервером, а цеью является получение клиентского компьютера с указанной выше основной установкой gnumed для подключения к серверу.

Общие сведения

О системе пакетирования debian

- многим нравится автоматическая зависимая проверка системы apt-get / dpkg system (соединенная интерфейсом с консолью на основе программы aptitude или графического пакета synaptic). - на самом верхнем уровне имеются группы пакетов, называемые stable, unstable и testing. - чтение /etc/apt/sources.list, обычно, говорит, что набор пакетов единственное получается при обновлении списка пакетов.

О программе postgresql

- postgresql является системой релятиционной базы данных, реализующей ANSI-SQL до уровня, который делает его язык SQL более мощным, чем mysql, но его масштабируемость и сетевые возможности меньше, чем у Oracle. - руководство администратора postgresql не сложно для чтения и доступно при установке под /usr/share/doc/postgresql--doc/html/index.html

О программе ldap

- ldap является стандартом интернет на основе системы директории имен. Его можно использовать для хранения информации адресной книги, и даже данных директории приложения, подобно, где отдельные экземпляры программ запускаются в сети, и другого... Предлагаемые предназначением для gnumed было хранение адресной книги для ссылок а также проверка подлинности и шифрованной информации, хранящейся, как атрибуты сущностей, перечисленных в адресной книге, особенно, для использования в безопасном стандарте электронной почты, таком как SMIME.

О программе bind

- bind является названием пакета программного обеспечения от Концорциума для систем интернета (Berkeley Internet Name Domain) и предоставляет отдельно службу DNS, которая находит адреса интернет-номеров для имен. Он работает посредством перечисления хорошо-известных активно используемых случаев привязки, давая им конкретный адрес интернет-номера. Если локальный экземпляр привязки не может преобразовать имя в число, он будет идти по кругу и опрашивать каждый из известных объектов, может ли он преобразовать имя. Эти объекты могут рекурсивно делать то же самое, пока какая-нибудь программа не выдаст привязку числа.

- В контексте этого пояснения основная организация конфигурационных файлов привязки описывает, файл привязки зоны проверяет так, чтобы могла быть сделана запись для некоторых постоянных локальных названий, используемых kerberos. Таким образом, файл конфигурации kerberos только указывает, на каком компьютере в сети работает, например, экземпляр kerberos и имена служб будут переведены черз экземпляр(ы) привязки для локальной сети к жестким номерам и портам сети.

О программе kerberos

- kerberos является академической, популярной системой сетевой безопасности, первоначально используемой для безопасности больших академических сетей - от 100 до 1000 компьютеров, поэтому он считается хорошо масштабируемой системой для этого размера сети. Он был разработан так, чтобы был хорошо описан механизм проверки подлинности, а приложения могли бы использовать концепцию безопасности известного пути к хранимому файлу учетных данных, который ассоциирован с uid пользователя unix при осуществлении входа в систему. приложения могут получить uid пользователя из их окружения, а затем проверить учетные данные, указанные для пользователя unix с помощью приложения. В случае postgresql, оказывется, что программа psql и клиентская библиотека pgsql включены для kerberos, поэтому любая программа или пакет, создающие бэкэнд через стандартную клиентскую библиотеку postgres, должны работать. например, gnumed использует pyPgSQL, пакет питона для клиентской библиотеки postgres.

Дополнительная информация о kerberos находится на http://www.isi.edu/gost/brian/security/kerberos.html и http://www.ornl.gov/~jar/HowToKerb.html. Я действительно не понимаю, что это хорошо, но получается что-то вроде:

- AS является сервисом аутентификации. Сервис аутентификации посылает 2 атрибута в запрос на регистрацию для другого сервиса, вызов, содержащий сессионный ключ, и ярлык, содержащий сессионный ключ. Ярлык посылается для сервиса, и он может быть расшифрован с помощью секретного ключа сервиса, и ярлык также содержит сессионный ключ. Пользователь должен разорвать вызов с целью получения его копии сессионного ключа. Он можете всегда послать ярлык, но без разрыва вызова он не может использовать его окончание сессионного ключа. Для того, чтобы не иметь авторизации для каждого отдельного сервиса, сессионный ключ может быть кэширован на ограниченный период времени.

Этот сессионный ключ предназначен для Сервиса выдачи ярлыков или сессионного ключа TGS (Ticket Granting Service).

Как только TGS получает сессионный ключ, канал в tgs может быть зашифрован, и дополнительные сессионные ключи для других служб могут быть пропущены. Сервис выдачи ярлыков имеет доступ к другим секретным ключам служб, и запросы сессионных ярлыков шифруются с ключами других служб. приложения, реализующие безопасность kerberos, используют библиотеку kerberos для доступа к файлу службы закрытого ключа, для расшифровки ярлыков, предоставленных TGS. Файл закрытого ключа экспортируется под управлением средства администрирования kadmin при добавлении ключей к principal. ( ktadd -k file principal) .

Файл закрытого ключа не должен быть читаемым в файловой системе ОС, кроме как посредством специального пользователя ОС для этой службы, так как он не шифрован, например, он является "secure"

- Kerberos должен быть масштабируемым, поскольку он работает рекурсивно, как BIND, так что TGS может разговаривать с равным TGS в других областях безопасности, которые могут говорить от имени другого TGS к третьему TGS, способные делать то же самое, и возвращать любые ярлыки в первоначальный запрашивающий TGS.

Быстрый просмотр реальной установки

  • su , synaptic,
  • установите сервер kerberos версии 5 и клиент с зависимостями, опционально m установите документацию.
  • установите bind
  • настройте kerberos
  • выберите доменное имя безопасности. Домен безопасности не является интернет-адресом, он указывает набор principals. В основной настройке домена безопасности любой пользователь principal, вошедший в систему, может использовать любого principal служб в
домене безопасности.

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

Единственная дополнительная конфигурация действительна, чтобы изменить / etc/krb5.conf и установить раздел [регистрация].

[logging]
 kdc = SYSLOG:INFO:DAEMON
 admin_server = SYSLOG:INFO:DAEMON

это полезно для отладки, выполнив
tail -n 20 /var/log/syslog

для прочтения последних 20 строк того, что сделали некоторые демоны ссылка http://web.mit.edu/kerberos/krb5-1.4/krb5-1.4.3/doc/krb5-admin/logging.html#logging

Пример конфигурационного файла: http://web.mit.edu/kerberos/krb5-1.4/krb5-1.4.3/doc/krb5-admin/Sample-krb5.conf-File.html#Sample%20krb5.conf%20File

установка debian будет добавлять под [realm] чем-то подобным:

[realm]
  LOCALDOMAIN = {
     kdc = kerberos.localdomain
     admin_server = kerberos.localdomain
  }

* выберите имя для хост-компьютера и локальной сети. например, измените localhost.localdomain на что-то другое. В противном случае, начните с localhost.localdomain и пытаться двигаться дальше.

* обеспечьте известные статические адреса ip для компьютера с kerberos (а также других машин). можно вводить через привязку. это предполагает
  1. настройку привязки,
  2. установку имен серверов в /etc/resolv.conf и
  3. возможно, изменение /etc/hosts.

* * настройте привязку на разрешение

Достигается копированием /etc/bind/db.empty, допустим в /etc/bind/db.kdc. Скажем, фактический хост назван myhost1, а доменом является myDomain1.

Во-первых, определим локальную зону привязки.Зона является какой-либо частью имени интернета, которое может помочь в поиске привязки для некоторой конкретной информации.
zone "mydomain1" { type master; file "/etc/bind/db.kdc" }

разместите эту строку в /etc/bind/named.conf.local; это указывает, что когда требуется оканчание url-адреса на .mydomain1, программа локальной привязки будет искать /etc/bind/db.kdc для некоторого разрешения информации.

Файл зоны может содержать записи, подобные:-

$TTL a_number
этот параметр определяет период времени до отказа от этой зоны до разрешения имени.

ORIGIN domain.
этот параметр указывает, что все urls-адреса в последующем будут иметь "домен", прилагаемый к нему.

Следующие имеют формат, подобный:

url (IN) OPERATION url-or-address

например:

 
_kerberos    TXT    "mydomain1" 
kerberos   CNAME   "myhost1"

_kerberos._udp        SRV 0 0 88  myhost1 
                      SRV 0 0 88  myhost2

_kerberos-master._udp SRV 0 0 88 myhost1
_kerberos-adm._tcp    SRV 0 0 749 myhost1
_kpasswd._udp         SRV 0 0 464

myhost1       IN     A      192.168.1.2
myhost2       IN     A      192.168.1.4

ссылка: http://web.mit.edu/kerberos/krb5-1.4/krb5-1.4.3/doc/krb5-admin/Hostnames-for-KDCs.html#Hostnames%20for%20KDCs

Теперь, вот общее предположение, как он работает:

строка 2 указывает, что имя kerberos сопоставляется с myhost1. Это помогает определению области найти каноническое имя для kerberos. ; указанное извлечение [realm] должно сопоставить kerberos.localdomain с myhost1.localdomain. Иногда встречаются дополнительные хосты, указанные в части realm krb5.conf, таких как kerberos-1 и kerberos-2 для указания серверов kdc "slave". Они также должны иметь запись в db.kdc

например,
kerberos-1   CNAME  "myhost2"

где myhost2 является конкретным именем для второго компьютера в вашей сети, запущенной krb5kdc.

Строки с 3 по 7 указывают определения SRV, назначающие сопоставление постоянных имен kerberos. Имейте в виде, что строка 4 имеет второе определение SRV для _kerboros._udp , который является другим хостом для сервера kdc.

порт 88 udp является стандартным сервером для ключа распределения. порт 749 tcp используется для администрирования сервером. порт 464 udp используется клиентским kpasswd для изменения пользовательских паролей.

последние две строки сопоставляют имена хоста с определенными статическими адресами ip. Имейте в виду, что эти имена также являются субъектом для определения $ORIGIN, поэтому они в действительности являются myhost1.mydomain1 и myhost2.mydomain2

Завершение /etc/bind/db.kdc моей настройки приведено ниже. Она является копией db.empty для первой части перед $ORIGIN, за исключением того, что localhost был расположен с monihost.
SOA
является командой зоны для определения атрибута.
@
устанавливается для текущего
содержания имени, которое должно быть именем зоны в
zone "mydomain" { type master; file "/etc/bind/db.kdc"  } 
, как указано выше.
NS
устанавливаетя для сервера имен, указывает хост сервера имен для @ , так что он является monihost.mydomain
(на самом деле он monihost.monidomain , так как это было имя, которое я использовал для указания зоны).

$TTL    86400
@       IN      SOA     monihost. root.monihost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      monihost.


$ORIGIN moni.net.
_kerberos               TXT     "MONI.NET"
kerberos                CNAME   MONIHOST
_kerberos._udp          SRV     0 0 88  monihost
_kerberos-adm._tcp      SRV     0 0 750 monihost
_kerberos-master._udp   SRV     0 0 88  monihost

monihost        IN      A       192.168.1.6
temple          IN      A       192.168.1.4
;monihost       IN      A       127.0.0.1

  • установка /etc/resolv.conf
при использовании dhclient умолчанием является что-то подобное
search
nameserver 192.168.1.1 
где 192.168.1.1 должне быть исправленным адресом ip сервера dhcp , обычно adsl box .

измените его на

nameserver 192.168.1.6

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

  • возможно, измените /etc/hosts.

Это должно быть исключены, если только отладка явным образом не показывает проблему. Поскольку для myhost1 без доменной части сложным способом может быть и не определен url, это легко было бы сделать в /etc/hosts со строками, подобными
192.168.1.2   myhost1 host
192.168.1.4   myhost2 

Может потребоваться второй "host", поскольку при поиске служб иногда ethereal показывает запрос kerberos пакет отправляет что-то, подобное "ldap/host.mydomain1@MYDOMAIN1", где хост был вставлен в имя principal. Вероятно, эта неправильность где-то связана с ldap.

Запуск и отладка kerberos

для запуска kerberos в /etc/init.d имеются сценарии krb5_admin_server , krb5kdc.

для отладки, обычно, используется:-
 ps -A 
под root , (перечисляет все запущенные процессы: неправильный не будет запущен: после /etc/init.d/krb5_admin_server start check kadmin is running.

после /etc/init.d/krb5_kdc start проверьте, запущен ли krb5kdc.

после /etc/init.d/slapd start проверьте, перечислен ли slapd в ps -A.

после /etc/init.d/bind start проверьте, перечислено ли названное в ps -A.

если нет, вероятно, что конфигурационный файл имеет ошибку. проверка /var/log/syslog может иметь подсказки, не было ли ошибки на запуске в консоли.

ps -A | grep k
только перечисляет процессы, запущенные с k.

Другим способом проверки (под root) является :-

netstat -l -p -n 

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

Особой ошибкой является попытка запустить kdc на 127.0.0.1, единственном одинарном без подключения к ethernet. Это не будет работать подобно семейству сокета unix, семейству 17, и это не реализовано. При просмотре /var/log/syslog обнаруживается ошибка
tail /var/log/syslog

другие полезные журналы могут быть в /var/log/daemon.log

и лог-файлы, указанные в разделе /etc/krb5.conf [logging] (если не установлено на SYSLOG:INFO:DAEMON, являющийся syslog)

Другим полезным инструментом отладки является ethereal. Запись в локальном интерфейсе при использовании одного компьютера (lo): может также переводить пакеты протокола kerberos, и полезен для работы, когда случается ошибка "не найден клиентский principal", "не найден серверный principal" или "виден etext".

Общие ошибки включают: - не добавлен principal - не настроен ключ для principal и экспорта его для службы (для postgresql) - principal добавлен, но без добавление ключа обновления (для ldap) - не именован соответственно principal для службы (например, ldap требует, чтобы principal был именован host/full-canonical-domain, например, если mydomain.org.au, то principal должен быть myhost/mydomain.org.au ) - опечатка имени principal при его добавлении, так что при входе в систему, он не может быть найден с ожидаемым именем.

  • использование kadmin.local для создания principals в kerberos и ключей.

под root сделайте kadmin.local, это должно работать.

  • в kadmin.local "listprincs", должно показать список principal'ов, которые будут, в основном, TGT , сервер admin, kdc.

  • "addprinc myuser1/myhost", затем "cpw myuser1/myhost" , затем listprincs, затем "getprinc myuser1/myhost"

  • "addprinc -randkey ldap/myhost.myfulldomain" это настраивает ldap.

  • "addprinc -randkey postgres/myhost.myfulldomain" , "ktadd -k /etc/postgresql/8.0/main/krb5.keytab",

настройка сервера postgres для пользовательского kerboros

  • затем exit kadmin.local
  • сделайте "chown postgres.postgres /etc/postgresql/8.0/main/krb5.keytab", с последующим
  • редактированием /etc/postgresql/8.0/main/postgresql.conf, и установите параметр

 krb_server_keyfile="/etc/postgresql/8.0/main/krb5.keytab" 

  • отредактируйте etc/postgresql/8.0/main/pg_hba.conf , и для нелокального домена ip следует использовать (например, без 127.0.0.1/32) добавление
host     all    all  192.168.1.6/32   krb5

для разрешения сетевого доступа kerberized к gnumed_v2 и всем другим базам данных в главном кластере.

  • возвратитесь в kadmin.local и добавьте principals для всех необходимых пользователей базы данных,

например, gm-dbo, any-doc

  • файл gnumed/client/gm-V2.conf имеет запись profile для канонического имени хоста postgresql, который не
localhost.localdomain (например, myhost1.mydomain1), localhost.localdomain (например, myhost1.mydomain1), что также соответствует этому значению principal в postgres/, где должен быть полным url (например, myhost1.mydomain1).

вот пример gm-v2.conf


[backend]
logins = $logins$
any-doc
$logins$
profiles = $profiles$
GNUmed - v2 database on this machine
GNUmed - v2 database at publicdb.gnumed.de
GNUmed - v2 on monihost
$profiles$
client encoding = latin1


[profile GNUmed - v2 on monihost]
host = monihost.moni.net
port = 5432
database = gnumed_v2


[profile GNUmed - v2 database on this machine]
host =
port = 5432
database = gnumed_v2


[profile GNUmed - v2 database at publicdb.gnumed.de]
host = publicdb.gnumed.de
port = 5432
database = gnumed_v2


[workplace]
help desk = GNUmed Development List <Gnumed-devel@gnu.org>
name = Librarian Release (0.2)

Все это установлено, но как только работа отлажена, пользователям придется сделать что-то вроде:-

kinit -p any-doc/mydomain

и тогда они смогут все это:-
  1. войти в gnumed без ввода пароля
  2. использовать ldapsearch, и ldapadd, и ldapmodify
  3. подготовить kerberos для других включенных приложений kerberos.

для очистки пользовательской аутентификации предполагается при выходе из системы запустить kdestroy

Для изменения пользовательского пароля можно также выполнить kpasswd.

Настройка базы данных директории для ldap

* /etc/slapd.conf должен иметь по умолчанию головную организацию после настройки debian вот пример определения базы данных extra.

В этом примере
access to * by users write
включает доступ на запись для авторизованных пользователей.

database        bdb
suffix          "o=gnumed"
directory       "/var/lib/ldap/gnumed"

указанное извлечение показывает, что поддиректории gnumed созданы в /var/lib/ldap, где хранятся файлы базы данных berkeley. Эта директория должна быть создана перед запуском, иначе no file error может остановить запуск slapd.

Пример

# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema

# Schema check allows for forcing entries to
# match schemas for their objectClasses's
schemacheck     on

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd.args

# Read slapd.conf(5) for possible values
loglevel        0

# Where the dynamically loaded modules are stored
modulepath      /usr/lib/ldap
moduleload      back_bdb

#######################################################################
# Specific Backend Directives for bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend         bdb
checkpoint 512 30

#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend                <other>

#######################################################################
# Specific Directives for database #1, of type bdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        bdb

# The base of your directory in database #1
suffix          "dc=moni,dc=net,dc=au"

# Where the database file are physically stored for database #1
directory       "/var/lib/ldap"

# Indexing options for database #1
index           objectClass eq

# Save the time that the entry gets modified, for database #1
lastmod         on

# Where to store the replica logs for database #1
# replogfile    /var/lib/ldap/replog

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword
        by dn="cn=admin,dc=moni,dc=net,dc=au" write
        by anonymous auth
        by self write
        by * none

# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
access to *
        by dn="cn=admin,dc=moni,dc=net" write
        by users write
        by * read

# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=moni,dc=net" write
#        by dnattr=owner write

#######################################################################
# Specific Directives for database #2, of type 'other' (can be bdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database        <other>

# The base of your directory for database #2
#suffix         "dc=debian,dc=org"


# The base of your directory for database #2
database        bdb
suffix          "o=gnumed"
directory       "/var/lib/ldap/gnumed"
index           objectClass eq
lastmod         on

#replogfile     "/var/lib/ldap/gnumed/replog"
access to dn.base=""
        by * read

access to *
        by users write
        by * read



  • имеются команды, такие как slapadd и slapcat, работающие под root, а не обычными пользователями.
для slapcat требуется параметр -nN, где N является номером базы данных, если имеется более одной базы данных определенной в slapd.conf.

С другой стороны, ldapsearch может извлекать из любой базы данных, определенной в slapd.conf. 1. намек на использование ldapsearch состоит в использовании параметра -b для привязки к описанию dn организации. например, ldapsearch -b "o=gnumed" "(objectclass=*)" должно отойти от всех объектов в рамках организации gnumed.

*hint - при отладке ldapsearch часто проблемой является получение права на полномочия. Иногда требуется повозиться с ключами, особенно, если principal службы ldap не имеет правильных ключей.

Пример формирования дампа ldif для базы данных gnumed
# extended LDIF
#
# LDAPv3
# base <o=gnumed> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#

# gnumed
dn: o=gnumed
objectClass: top
objectClass: organization
o: gnumed
description: "gnumed organization"

# gnumedAdmin, gnumed
dn: cn=gnumedAdmin,o=gnumed
objectClass: top
objectClass: organizationalRole
cn: gnumedAdmin
description: gnumed LDAP administrator

# au developers, gnumed
dn: ou=au developers,o=gnumed
objectClass: top
objectClass: organizationalUnit
ou: au developers
description: au developers

# Herb Horst, au developers, gnumed
dn: cn=Herb Horst,ou=au developers,o=gnumed
objectClass: inetOrgPerson
sn: Horst
cn: Herb Horst
userSMIMECertificate:: c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBQkl3QUFBSUVBMkFEem9
 oSklvbU5QZEozSnB0N3hsQlV5QlArOGxBNy9SRVhrNVlLMXdvRUMwaExMeWxMMmJrRXBNdWR6SU1E
 TlVzME9HN2k2K3RIM3ZsR0R5QVlKc1RsZktsQ2JNMjlTT3NIQW9Ya1BmbERHcEUwaW1ESzdZbGhnS
 ytEenJXVjgzSkVWdmhYMjhkWndhNzVMRkZMMjBxeitoS0s5MmtxajhHWGpQc3Y0SFFrPSBzanRhbk
 Btb25pCg==

# Dr. Karsten Hilbert 2006020728, au developers, gnumed
dn: description=Dr. Karsten Hilbert 2006020728,ou=au developers,o=gnumed
cn:: RHIuIEthcnN0ZW4gSGlsYmVydCA=
title: doc , developer
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
o: gnumed
sn: Hilbert
givenName: Karsten
description: Dr. Karsten Hilbert 2006020728

Для получения дополнительной справки: неполная

  • /etc/postgresql/8.0 - это основа установки postgresql версии 8.0 ( так, ../8.1 может быть для другой
версии postgresql, и он может сосуществовать с 8.0)
  • /etc/postgresql/8.0/main - postgresql разрешает запуск нескольких экземпляров postgres, имеющих каждый своего владельца
база данных template0 и template1, из которых создаются базы данных. По этой причине для приложений могут быть разные имена пользователей в каждом наборе приложений, так как пользователи являются глобальными для каждого "экземпляра" или кластера базы данных. В качестве конкретного примера предположим, что имеются базы данных, называемые gnumed_v1 и gnumed_v2, и каждая создана в "основном" кластере. Если изменить пользовательский пароль any-doc для gnumed_v1, то он будет также изменен в gnumed_v2. Если сформировать дамп gnumed_v1 в pg_dump, умолчанием является не формировать дамп из декларированных заявлений для данных пользователя, но если сделать pg_dumpall из основного кластера, то обе базы данных и декларации пользователей будут также сброшены в дамп.
Topic revision: 28 Feb 2013, IvanLykov
 
Download.png
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback
Powered by Olark