Добавление юзера в openLDAP

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
shtirlic053
рядовой
Сообщения: 14
Зарегистрирован: 2009-09-03 8:53:50
Откуда: Екатерибург
Контактная информация:

Добавление юзера в openLDAP

Непрочитанное сообщение shtirlic053 » 2009-09-16 23:29:42

Здравствуйте, уважаемые!
У меня возникла проблема:
на freeBSD7.0 установлен openLDAP

slapd.conf:

Код: Выделить всё

include         /usr/local/etc/openldap/schema/core.schema

include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/misc.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/openldap.schema
include		/usr/local/etc/openldap/schema/freeradius.schema

pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args

loglevel	256

moduleload      back_bdb

modulepath      /usr/local/libexec/openldap

access to attrs=userPassword
	by self write
	by anonymous auth
	by dn="uid=root,dc=tim,dc=ru" write
	by * none
access to *
	by dn="uid=root,dc=tim,dc=ru" write
	by * read

database        bdb

suffix          "dc=tim,dc=ru"
rootdn          "cn=root,dc=tim,dc=ru"
rootpw password
directory       /var/db/openldap-data


Корневой объект:
base.ldif:

Код: Выделить всё

dn: dc=tim,dc=ru
objectClass: dcObject
objectClass: organization
objectClass: top
dc:tim
o:tim

добавил его:

Код: Выделить всё

ldapadd -x -D "cn=root,dc=tim,dc=ru" -W -f base.ldif
Enter LDAP password:
adding new entry "dc=tim,dc=ru"

Создаю контейнер test.ldif:

Код: Выделить всё

dn: ou=test,dc=tim,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: test
Добавляю его.

Код: Выделить всё

ldapadd -x -D "cn=root,dc=tim,dc=ru" -W -f test.ldif
создаю пользователя lucky
lucky.ldif:

Код: Выделить всё

dn: cn=lucky,ou=test,dc=tim,dc=ru
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
cn: lucky
sn: lucky's sername
uid: lucky
userpassword: 1234 
uidNumber: 1000
gidNumber: 1000
gecos: lucky
homeDirectory: /home/lucky
Добавляю его.

Код: Выделить всё

ldapadd -x -D "cn=root,dc=tim,dc=ru" -W -f lucky.ldif
Пытаюсь найти созданного пользователя:

Код: Выделить всё

ldapsearch -x -LLL "dc=tim,dc=ru" -b uid=lucky
No such object(32)
Вот логи LDAP.
/var/log/debug.log:

Код: Выделить всё

Sep 17 01:52:18 OO7 slapd[556]: conn=4 fd=12 ACCEPT from IP=127.0.0.1:58252 (IP=0.0.0.0:389)
Sep 17 01:52:18 OO7 slapd[556]: conn=4 op=0 BIND dn="" method=128
Sep 17 01:52:18 OO7 slapd[556]: conn=4 op=0 RESULT tag=97 err=0 text=
Sep 17 01:52:18 OO7 slapd[556]: conn=4 op=1 SRCH base="dc=pupkin,dc=com,dc=ru" scope=2 deref=0 filter="(dc=tim,dc=ru)"
Sep 17 01:52:18 OO7 slapd[556]: conn=4 op=1 SRCH attr=-b uid=lucky
Sep 17 01:52:18 OO7 slapd[556]: conn=4 op=1 SEARCH RESULT tag=101 err=32 nentries=0 text=
Sep 17 01:52:18 OO7 slapd[556]: conn=4 op=2 UNBIND
Sep 17 01:52:18 OO7 slapd[556]: conn=4 fd=12 closed
В чем может быть моя ошибка?
Прямые у меня руки!!!!!! просто я еще учусь...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

shtirlic053
рядовой
Сообщения: 14
Зарегистрирован: 2009-09-03 8:53:50
Откуда: Екатерибург
Контактная информация:

Re: Добавление юзера в openLDAP

Непрочитанное сообщение shtirlic053 » 2009-09-18 1:24:27

Ошибка была глупой - не правильно искал...
Прямые у меня руки!!!!!! просто я еще учусь...

shtirlic053
рядовой
Сообщения: 14
Зарегистрирован: 2009-09-03 8:53:50
Откуда: Екатерибург
Контактная информация:

Re: Добавление юзера в openLDAP

Непрочитанное сообщение shtirlic053 » 2009-09-18 1:26:51

появилась новая проблема:

при подключении юзера freeRADIUS находит юзера lucky, но не может получить пароль...

лог openldap:

Код: Выделить всё

Sep 18 03:56:26 OO7 slapd[556]: conn=0 op=2 SRCH base="dc=tim,dc=ru" scope=2 deref=0 filter="(uid=lucky)"
Sep 18 03:56:26 OO7 slapd[556]: conn=0 op=2 SRCH attr=radiusNASIpAddress radiusExpiration acctFlags ntPassword lmPassword radiusCallingStationId radiusCalledStationId radiusSimultaneousUse radiusAuthType radiusCheckItem radiusReplyMessage radiusLoginLATPort radiusPortLimit radiusFramedAppleTalkZone radiusFramedAppleTalkNetwork radiusFramedAppleTalkLink radiusLoginLATGroup radiusLoginLATNode radiusLoginLATService radiusTerminationAction radiusIdleTimeout radiusSessionTimeout radiusClass radiusFramedIPXNetwork radiusCallbackId radiusCallbackNumber
Sep 18 03:56:26 OO7 slapd[556]: conn=0 op=2 SRCH attr=radiusLoginTCPPort radiusLoginService radiusLoginIPHost radiusFramedCompression radiusFramedMTU radiusFilterId radiusFramedRouting radiusFramedRoute radiusFramedIPNetmask radiusFramedIPAddress radiusFramedProtocol radiusServiceType radiusReplyItem userpassword dialupAccess
Sep 18 03:56:26 OO7 slapd[556]: <= bdb_equality_candidates: (objectClass) not indexed
Sep 18 03:56:26 OO7 slapd[556]: <= bdb_equality_candidates: (uid) not indexed
Sep 18 03:56:26 OO7 slapd[556]: conn=0 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=

лог freeRADIUS:

Код: Выделить всё

Fri Sep 18 03:40:12 2009 : Info: Using deprecated naslist file.  Support for this will go away soon.
Fri Sep 18 03:40:12 2009 : Info: rlm_exec: Wait=yes but no output defined. Did you mean output=none?
Fri Sep 18 03:40:12 2009 : Info: rlm_eap_tls: Loading the certificate file as a chain
Fri Sep 18 03:40:12 2009 : Info: WARNING: rlm_eap_tls: Unable to set DH parameters.  DH cipher suites may not work!
Fri Sep 18 03:40:12 2009 : Info: Ready to process requests.
Fri Sep 18 03:55:45 2009 : Info: Using deprecated naslist file.  Support for this will go away soon.
Fri Sep 18 03:55:45 2009 : Info: rlm_exec: Wait=yes but no output defined. Did you mean output=none?
Fri Sep 18 03:55:45 2009 : Info: rlm_eap_tls: Loading the certificate file as a chain
Fri Sep 18 03:55:45 2009 : Info: WARNING: rlm_eap_tls: Unable to set DH parameters.  DH cipher suites may not work!
Fri Sep 18 03:55:45 2009 : Info: Ready to process requests.

slapd.conf:

Код: Выделить всё

include         /usr/local/etc/openldap/schema/core.schema

include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/misc.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/openldap.schema
include        /usr/local/etc/openldap/schema/freeradius.schema

pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args

loglevel    256

moduleload      back_bdb

modulepath      /usr/local/libexec/openldap

access to attrs=userPassword
    by self write
    by self read
    by anonymous auth
    by dn="uid=root,dc=tim,dc=ru" write
    by * none
access to *
    by dn="uid=root,dc=tim,dc=ru" write
    by * read

#access to attrs=userPassword by self write by * auth


database        bdb

suffix          "dc=tim,dc=ru"
rootdn          "cn=root,dc=tim,dc=ru"
rootpw password
directory       /var/db/openldap-data

radiusd.conf:

Код: Выделить всё

    prefix = /usr/local
exec_prefix = ${prefix}
sysconfdir = ${prefix}/etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct

confdir = ${raddbdir}
run_dir = ${localstatedir}/run/radiusd

log_file = ${logdir}/radius.log

libdir = ${exec_prefix}/lib

pidfile = ${run_dir}/radiusd.pid

max_request_time = 30

delete_blocked_requests = no

cleanup_delay = 5

max_requests = 1024

bind_address = *

port = 0

hostname_lookups = no

allow_core_dumps = no

regular_expressions    = yes
extended_expressions    = yes

log_stripped_names = no

log_auth = no

log_auth_badpass = no
log_auth_goodpass = no

usercollide = no

lower_user = no
lower_pass = no

nospace_user = no
nospace_pass = no


security {
    max_attributes = 200
    reject_delay = 1
    status_server = no
}

proxy_requests  = yes
$INCLUDE  ${confdir}/proxy.conf

$INCLUDE  ${confdir}/clients.conf

snmp    = no
$INCLUDE  ${confdir}/snmp.conf

thread pool {
    start_servers = 5

    max_servers = 32

    min_spare_servers = 3
    max_spare_servers = 10

    max_requests_per_server = 0
}

modules {
    pap {
        auto_header = yes
    }

    chap {
        authtype = CHAP
    }

    pam {
        pam_auth = radiusd
    }

    unix {
        cache = no

        cache_reload = 600

        radwtmp = ${logdir}/radwtmp
    }

$INCLUDE ${confdir}/eap.conf

    ldap {
        server = "ldapi://%2fvar%2frun%2fopenldap%2fldapi"
        identity = "cn=root,dc=tim,dc=ru"
        password = password
        basedn = "dc=tim,dc=ru"
        filter = "(uid=%{Stripped-User-Name:-%{User-Name}})"

        start_tls = no

        access_attr = "dialupAccess"

        dictionary_mapping = ${raddbdir}/ldap.attrmap

        ldap_connections_number = 5

        password_attribute = userpassword
        edir_account_policy_check=no

        timeout = 4
        timelimit = 3
        net_timeout = 1
    }

    mschap    {
        use_mppe = yes
        require_encryption = yes
        require_strong = yes
        with_ntdomain_hack = yes
    }


    realm IPASS {
        format = prefix
        delimiter = "/"
        ignore_default = no
        ignore_null = no
    }

    realm suffix {
        format = suffix
        delimiter = "@"
        ignore_default = no
        ignore_null = no
    }

    realm realmpercent {
        format = suffix
        delimiter = "%"
        ignore_default = no
        ignore_null = no
    }

    realm ntdomain {
        format = prefix
        delimiter = "\\"
        ignore_default = no
        ignore_null = no
    }    

    checkval {
        item-name = Calling-Station-Id

        check-name = Calling-Station-Id

        data-type = string
    }
    
    preprocess {
        huntgroups = ${confdir}/huntgroups
        hints = ${confdir}/hints

        with_ascend_hack = no
        ascend_channels_per_line = 23

        with_ntdomain_hack = no

        with_specialix_jetstream_hack = no

        with_cisco_vsa_hack = no
    }

    files {
        usersfile = ${confdir}/users
        acctusersfile = ${confdir}/acct_users
        preproxy_usersfile = ${confdir}/preproxy_users

        compat = no
    }

    detail {
        detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d

        detailperm = 0600

    }

    acct_unique {
        key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port"
    }

    $INCLUDE  ${confdir}/sql.conf

    radutmp {
        filename = ${logdir}/radutmp

        username = %{User-Name}

        case_sensitive = yes

        check_with_nas = yes        

        perm = 0600

        callerid = "yes"
    }

    radutmp sradutmp {
        filename = ${logdir}/sradutmp
        perm = 0644
        callerid = "no"
    }

    attr_filter {
        attrsfile = ${confdir}/attrs
    }

    counter daily {
        filename = ${raddbdir}/db.daily
        key = User-Name
        count-attribute = Acct-Session-Time
        reset = daily
        counter-name = Daily-Session-Time
        check-name = Max-Daily-Session
        allowed-servicetype = Framed-User
        cache-size = 5000
    }

    sqlcounter dailycounter {
        counter-name = Daily-Session-Time
        check-name = Max-Daily-Session
        reply-name = Session-Timeout
        sqlmod-inst = sql
        key = User-Name
        reset = daily

        query = "SELECT SUM(AcctSessionTime - \
                 GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) \
                 FROM radacct WHERE UserName='%{%k}' AND \
                 UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'"
    }

    sqlcounter monthlycounter {
        counter-name = Monthly-Session-Time
        check-name = Max-Monthly-Session
        reply-name = Session-Timeout
        sqlmod-inst = sql
        key = User-Name
        reset = monthly

        query = "SELECT SUM(AcctSessionTime - \
                 GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) \
                 FROM radacct WHERE UserName='%{%k}' AND \
                 UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'"
    }

    always fail {
        rcode = fail
    }
    always reject {
        rcode = reject
    }
    always ok {
        rcode = ok
        simulcount = 0
        mpp = no
    }

    expr {
    }

    digest {
    }

    exec {
        wait = yes
        input_pairs = request
    }

    exec echo {
        wait = yes

        program = "/bin/echo %{User-Name}"

        input_pairs = request

        output_pairs = reply
    }

    ippool main_pool {

        range-start = 192.168.1.1
        range-stop = 192.168.3.254

        netmask = 255.255.255.0

        cache-size = 800

        session-db = ${raddbdir}/db.ippool

        ip-index = ${raddbdir}/db.ipindex

        override = no

        maximum-timeout = 0
    }
}

instantiate {
    exec

    expr
}

authorize {
    preprocess

    ldap

    mschap

    suffix
    ntdomain
}

authenticate {
    Auth-Type MS-CHAP {
        mschap
    }

    unix

    eap
}

preacct {
    preprocess

    acct_unique

    suffix
    files
}

accounting {
    detail

    unix

    radutmp
}

session {
    radutmp
}

post-auth {
}
pre-proxy {
}

post-proxy {
    eap
}
В чем может быть ошибка?
Прямые у меня руки!!!!!! просто я еще учусь...

snorlov
подполковник
Сообщения: 3829
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Добавление юзера в openLDAP

Непрочитанное сообщение snorlov » 2009-09-18 15:22:18

А фиг знает :smile:
А что у тебя так много баз, в которых необходимо шарится freeradius'у, он ходит только к ldap или, если судить по конфигу и sql, ntdomain, просто проверяет файл (имя пароль)

shtirlic053
рядовой
Сообщения: 14
Зарегистрирован: 2009-09-03 8:53:50
Откуда: Екатерибург
Контактная информация:

Re: Добавление юзера в openLDAP

Непрочитанное сообщение shtirlic053 » 2009-09-18 23:50:17

В смысле много баз? freeradius должен ходить только к лдап'у за паролем и все...
Прямые у меня руки!!!!!! просто я еще учусь...

snorlov
подполковник
Сообщения: 3829
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Добавление юзера в openLDAP

Непрочитанное сообщение snorlov » 2009-09-21 8:18:53

shtirlic053 писал(а):В смысле много баз? freeradius должен ходить только к лдап'у за паролем и все...
Он у тебя проверяет запросы не только в Ldap'е....

shtirlic053
рядовой
Сообщения: 14
Зарегистрирован: 2009-09-03 8:53:50
Откуда: Екатерибург
Контактная информация:

Re: Добавление юзера в openLDAP

Непрочитанное сообщение shtirlic053 » 2009-09-21 8:59:02

Я понял, что не только там, только не совсем понятно, что нужно оставить (минимум), чтобы он обращался только к лдапу... ldap + ms chap?
Прямые у меня руки!!!!!! просто я еще учусь...