Назад | Перейти на главную страницу

Уникально ли поле conn в журнале OpenLDAP?

Я хочу выяснить, сколько попыток аутентификации было неудачным или успешным, обработав файл журнала OpenLDAP (2.4.42).

Ниже приводится образец моего журнала OpenLDAP.

slapd[5516]: conn=2803 op=3 SRCH base="ou=groups,dc=myOrg,dc=com" scope=2 deref=0 filter="(&(objectClass=posixGroup)(cn=*)
slapd[5516]: conn=2803 op=3 SRCH attr=objectClass cn userPassword gidNumber memberuid modifyTimestamp modifyTimestamp
slapd[5516]: <= bdb_inequality_candidates: (modifyTimestamp) not indexed
slapd[5516]: conn=2803 op=3 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[5516]: conn=2803 op=4 SRCH base="dc=myOrg,dc=com" scope=2 deref=0 filter="(&(objectClass=ipService)(cn=*)(ipServicePort=*)(ipServiceProtocol=*))"
slapd[5516]: conn=2803 op=4 SRCH attr=objectClass cn ipServicePort ipServiceProtocol modifyTimestamp
slapd[5516]: conn=2803 op=4 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[5516]: conn=2797 fd=37 closed (connection lost)
slapd[5516]: conn=2795 op=23 UNBIND
slapd[5516]: conn=2795 fd=36 closed
slapd[5516]: conn=2804 fd=36 ACCEPT from IP=10.1.1.205:49974 (IP=0.0.0.0:636)
slapd[5516]: conn=2804 fd=36 TLS established tls_ssf=128 ssf=128
slapd[5516]: conn=2804 op=0 BIND dn="" method=128
slapd[5516]: conn=2804 op=0 RESULT tag=97 err=0 text=
slapd[5516]: conn=2804 op=1 SRCH base="ou=people,dc=myOrg,dc=com" scope=2 deref=3 filter="(&(objectClass=*)(uid=xyzUser))"
slapd[5516]: conn=2804 op=1 SRCH attr=uid
slapd[5516]: conn=2804 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
slapd[5516]: conn=2804 op=2 BIND dn="uid=xyzUser,ou=people,dc=myOrg,dc=com" method=128
slapd[5516]: conn=2804 op=2 BIND dn="uid=xyzUser,ou=people,dc=myOrg,dc=com" mech=SIMPLE ssf=0
slapd[5516]: conn=2804 op=2 RESULT tag=97 err=0 text=
slapd[5516]: conn=2804 op=3 BIND anonymous mech=implicit ssf=0
slapd[5516]: conn=2804 op=3 BIND dn="" method=128
slapd[5516]: conn=2804 op=3 RESULT tag=97 err=0 text=
slapd[5516]: conn=2804 op=4 SRCH base="ou=people,dc=myOrg,dc=com" scope=2 deref=3 filter="(&(&(&(&(objectClass=myOrgEmployee)(status=TRUE))(webmailAllowed=TRUE))(passwordExpired=FALSE))(uid=xyzUser))"
slapd[5516]: conn=2804 op=4 SRCH attr=uid
slapd[5516]: <= bdb_equality_candidates: (passwordExpired) not indexed
slapd[5516]: conn=2804 op=4 SEARCH RESULT tag=101 err=0 nentries=1 text=

Что я хочу знать о ценности conn атрибут в журнале всегда будет уникальным или нет? Потому что мой алгоритм похож на

  1. Искать по ключевому слову SEARCH RESULT
  2. Получить значение атрибута conn и op
  3. Найти для SRCH base такое же значение conn и op

Обычно во время аутентификации используется запрос BIND.

В противном случае ваша система аутентификации использует другого пользователя (возможно, диспетчер каталогов?) Или анонимные запросы для сопоставления имени пользователя / пароля с сервером каталогов.

На самом деле вы действительно аутентифицируетесь с помощью BIND:

Подключение / установка LDAPS:

slapd[5516]: conn=2804 fd=36 ACCEPT from IP=10.1.1.205:49974 (IP=0.0.0.0:636)
slapd[5516]: conn=2804 fd=36 TLS established tls_ssf=128 ssf=128

Выполните привязку с использованием предоставленных учетных данных:

slapd[5516]: conn=2804 op=2 BIND dn="uid=xyzUser,ou=people,dc=myOrg,dc=com" method=128
slapd[5516]: conn=2804 op=2 BIND dn="uid=xyzUser,ou=people,dc=myOrg,dc=com" mech=SIMPLE ssf=0

Результат успешный (err = 0):

slapd[5516]: conn=2804 op=2 RESULT tag=97 err=0 text=

Итак, способ реализации поиска:

  • Получите список принятых подключений, включая IP-адрес клиента: PORT:
  • Сопоставьте строки с одинаковым номером подключения и запросом BIND, оттуда получите номер операции
  • Сопоставьте строку результата с предыдущим запросом привязки, используя номер соединения и операцию muber, и проверьте результат, используя возвращенный код ошибки.

Но очень вероятно, что у вас будут более простые способы ведения журналов openldap для выполнения того, что вам нужно, если вы используете предварительно созданный IAM, такой как Siteminder / Oracle (ex SUN) Identity Management, вам будет проще получить информацию для входа оттуда. Если нет, вы можете проверить журналы приложений.

Надеюсь это поможет.