SlideShare a Scribd company logo
1 of 41
Download to read offline
Управление учетными
   записями unix
Как управлять учетными записями
     пользователей на тысячах серверов?
●   Статические файлы, нет автоматической синхронизации
●   Статические файлы, с синхронизацией или системой
    централизованного управления конфигурацией
●   NIS, etc.
●   LDAP
Статические файлы, нет автоматической
           синхронизации
Плюсы:
–   Не зависит от внешних ресурсов
Минусы:
–   Сложность заведения, блокирования учетных записей
–   Сложность аудита (нельзя сказать какие есть учетные записи
    и куда они имеют доступ, когда получали доступ)
–   Относительно слабая безопасность
Статические файлы, с синхронизацией или
 системой централизованного управления
             конфигурацией
 Плюсы:
 –   Почти не зависит от внешних ресурсов
 –   Простое добавление учетных записей
 Минусы:
 –   Сложность аудита
 –   Относительно слабая безопасность
NIS, etc.
Плюсы:
–   Простота добавления/удаления учетных записей
Минусы:
–   Нет возможности централизованного ограничения доступа
–   Слабая безопасность
–   Зависимость от внешних ресурсов
LDAP
Плюсы:
–   Простота заведения/удаления учетных записей
–   Простой аудит
–   Возможность централизованного разграничения доступа
–   Возможность подвязать доступы другого вида к тем же
    учетным записям
–   Средняя безопасность
Минусы:
–   Зависимость от внешних ресурсов
LDAP
Плюсы:
–   Простота заведения/удаления учетных записей
–   Возможность централизованного разграничения доступа
–   Простой аудит
–   Возможность подвязать доступы другого вида к тем же
    учетным записям
Минусы:
–   Зависимость от внешних ресурсов
Что из себя представляет LDAP
Запись LDAP
dn: uid=testuser,ou=People,dc=test,dc=ru
uid: testuser
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
gecos: Test User
loginShell: /bin/bash
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/testuser
host: someserver.test.ru
userPassword: {CRYPT}$1$12345678$oEitTZYQtRHfNGmsFvTBA/
Приступим к настройке
●   Настроить LDAP-сервер
    –   Прописать схемы
    –   Настроить базу
    –   Задать доступы
●   Залить в него корневые записи и записи пользователей
●   Настроить клиент
    –   Прописать доступ в ldap
    –   Включить NSS-часть
    –   Включить PAM-часть
    –   Добавить кеширование
●   Включить TLS
Конфигурация сервера: схемы

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/misc.schema
Конфигурация сервера: база
 database    bdb
 suffix      "dc=test,dc=ru"
 rootdn      "cn=admin,dc=test,dc=ru"
 rootpw      {CRYPT}XXXXXXXX
 directory   /var/lib/ldap
 index       objectClass     eq,pres
 index       <....>
Конфигурация сервера: acl
access to attrs=userPassword
    by anonymous auth
    by dn="cn=admin,dc=test,dc=ru" write
    by self write
    by * none
access to dn.subtree="dc=test,dc=ru"
    by anonymous auth
    by dn="cn=ronly,dc=test,dc=ru" read
    by dn="cn=admin,dc=test,dc=ru" write
    by self read
    by * none
Конфигурация сервера: тюнинг
●   slapd.conf
       threads 16
       conn_max_pending 2000
       conn_max_pending_auth 2000
       cachesize 30000
       idlcachesize 30000
       sizelimit unlimited
       timelimit 300
●   DB_CONFIG
       set_cachesize 0 268435456 1
       set_lk_max_locks 8192
Конфигурация клиента
Существует три варианта:
– pam_ldap и nss_ldap
– nss-pam-ldapd (nslcd)
– sssd (pam_sss и nss_sss)
pam_ldap и nss_ldap
●   /etc/ldap.conf
       uri ldap://192.168.123.2
       base dc=test,dc=ru
       binddn cn=ronly,dc=test,dc=ru
       bindpw test


       pam_check_host_attr yes
       pam_filter objectclass=posixAccount
       pam_password exop
       nss_initgroups_ignoreusers root,sysadm
nss-pam-ldapd
●   /etc/nslcd.conf
       uri ldap://192.168.123.2
       base dc=test,dc=ru
       binddn cn=ronly,dc=test,dc=ru
       bindpw test


       pam_authz_search (&(objectClass=posixAccount)
       (uid=$username)(|(host=$hostname)(host=*)))
       nss_initgroups_ignoreusers ALLLOCAL
Включаем nss через ldap
●   /etc/nsswitch.conf
       passwd: files ldap
       shadow: files
       group:   files ldap


●   Запускаем nscd
Включаем pam через ldap
●   /etc/pam.d/system-auth
       auth      sufficient   pam_ldap.so use_first_pass


       account required    pam_ldap.so ignore_authinfo_unavail
       ignore_unknown_user


       password sufficient    pam_ldap.so use_authtok


       session   optional     pam_ldap.so
Включаем TLS
●   Сервер:
       TLSCACertificateFile     /etc/ldap/cacert.pem
       TLSCertificateFile       /etc/ldap/cert.pem
       TLSCertificateKeyFile /etc/ldap/cert.key
       security tls=1
●   Клиент (/etc/ldap.conf и /etc/nslcd.conf):
       ssl start_tls
       tls_cacertdir /etc/ldap/cacerts/
●   /etc/sssd/sssd.conf
       [sssd]                               SSSD
       config_file_version = 2
       services = nss, pam
       domains = TEST
       [domain/TEST]
       id_provider = ldap
       auth_provider = ldap
       chpass_provider = ldap
       access_provider = ldap
       ldap_uri = ldap://192.168.123.2
       ldap_default_bind_dn = cn=ronly,dc=test,dc=ru
       ldap_default_authtok = test
       ldap_search_base = dc=test,dc=ru
       enumerate = false
       ldap_access_filter = host=someserver.test.ru
       ldap_tls_cacertdir = /etc/ldap/cacerts/
Недостатки
●   Ssh-ключи лежат локально
●   При недоступности LDAP-серверов имеем большие
    таймауты, иногда превышающие таймаут ssh
●   Безопасность
Централизованное хранение ssh-ключей
Существует патч для openssh, добавляющий возможность
хранения ssh-ключей в LDAP:
   http://code.google.com/p/openssh-lpk/
Поля добавляемые в ldap-запись:
   dn: uid=blablabla
   objectClass: ldapPublicKey
   sshPublicKey: ssh-rsa AAAA...blablabla
Таймауты при недоступности LDAP-серверов
  ●   Поднимаем дополнительные сервера, делаем
      репликацию и резервирование при помощи keepalived
  ●   Используем кеширование
      –   nscd
      –   pam_ccreds
      –   встроенное в sssd
  ●   Не лукапим LDAP для локальных пользователей
      –   nss_initgroups_ignoreusers для nss_ldap и nslcd
      –   nss_ldap и pam_ldap пришлось пропатчить
      –   filter_users и filter_groups для sssd
Репликация и резервирование
●   LDAP поддерживает N-way мульти-мастер репликацию
●   Также умеет отдавать ссылку (Refferal) на мастер при
    попытке записи в реплику
Способы увеличения безопасности
Используем аутентификацию по другому сервису:
–   Kerberos
–   One Time Passwords
–   Железные решения (USB-ключи, смарт-карты)
Kerberos
Настройка Kerberos
●   Настройка Kerberos-сервера
    –   Определим realm, относящиеся к нему DNS-имена и отвечающие за него сервера
    –   Настроим KDC (Key Distribustion Center)
    –   Зададим доступы
    –   Добавим принципал администратора
●   Настройка Kerberos-клиента
    –   Определим realm, относящиеся к нему DNS-имена и отвечающие за него сервера
    –   Добавим принципал для клиента
    –   Добавим принципал для пользователя
    –   Включим Kerberos в PAM и sshd
●   Добавим дополнительные DNS записи с указанием Kerberos-серверов
Конфигурация Kerberos сервера
●
    /etc/krb5.conf
       [libdefaults]
           default_realm = TEST.RU
       [realms]
           TEST.RU = {
                       kdc = 192.168.123.2
                       admin_server = 192.168.123.2
           }
       [domain_realm]
           .test.ru = TEST.RU
           test.ru = TEST.RU
       [login]
           krb4_convert = false
Конфигурация Kerberos сервера
●   /etc/krb5kdc/kdc.conf
       [kdcdefaults]
         kdc_ports = 750,88
       [realms]
         TEST.RU = {
             database_name = /var/lib/krb5kdc/principal
             key_stash_file = /etc/krb5kdc/stash
             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
         }
Конфигурация Kerberos сервера
●   /etc/krb5kdc/kadm5.acl
       krbadm@TEST.RU        *
       */admin@TEST.RU       *
       */*@TEST.RU           i
       *@TEST.RU             i
●   # krb5_newrealm
●   # kadmin.local -q "ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/admin"
●   # kadmin.local -q "ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/changepw"
●   # kadmin.local -q "addprinc krbadm@TEST.RU"
●   # kinit krbadm
Конфигурация Kerberos клиента
●   /etc/krb5.conf
       [libdefaults]
       default_realm = TEST.RU
       [realms]
       TEST.RU = {
           kdc = 192.168.123.2
           admin_server = 192.168.123.2
       }
       [domain_realm]
       .test.ru = TEST.RU
       test.ru = TEST.RU
●   # kadmin -p krbadm
       : addprinc -randkey host/someserver.test.ru
       : ktadd host/someserver.test.ru
       : addprinc testuser@TEST.RU
Конфигурация Kerberos клиента
●   /etc/pam.d/system-auth
       auth      sufficient   pam_krb5.so use_first_pass ignore_root forwardable
       session   sufficient   pam_krb5.so ignore_root
●   /etc/ssh/sshd_config
       KerberosAuthentication yes
       GSSAPIAuthentication yes
       GSSAPIKeyExchange yes
●   Добавляем в DNS для зоны test.ru SRV записи с указанием наших
    Kerberos-серверов
Интегрируем Kerberos и LDAP
●   Можно хранить базу Kerberos в LDAP
●   Можно настроить аутентификацию в LDAP-е Kerberos-ом
    через SASL
One Time Passwords
●   Основанные на математических функциях
      Например Aladdin eToken
●   Основанные на текущем времени
      Например RSA Security SecurID
MOTP (Mobile One-Time Passwords)
Есть программные реализации,
например MOTP
–   Использует очень простой алгоритм:
       md5(str(unixtime/10)+secret+pin)[0:6]
       пользователь (pin) и устройство (secret)
–   Имеет приложение под многие типы
    мобильных телефонов
Radius+MOTP: настройка сервера
    Конфигурация сервера на основе freeradius для использования mOTP
●   /etc/raddb/users
       DEFAULT Auth-Type = Accept
           Exec-Program-Wait = "/usr/local/motp/motp.pl %{User-Name} %{User-
       Password} %{Client-Shortname}"

●   /etc/raddb/clients.conf
       client 1.1.1.1 {
           secret = secret_up_to_31_chars
           shortname = i_am_server
       }
Radius+MOTP: настройка клиента
    Конфигурация клиента для использования MOTP в ssh
●   /etc/pam_radius.conf
       10.10.10.10 secret_up_to_31_chars 5

●   /etc/pam.d/sshd
       auth     sufficient pam_radius_auth.so client_id=ssh
●   Железные решения (USB-ключи, смарт-
                 карты)
      ●   Аналог One-Time Password
      ●   Безопасное хранение закрытых ключей
            например Gemalto USB Shell Token v2
СПАСИБО!
     Алексей Бажин
Директор по эксплуатации
   bazhin@corp.mail.ru

More Related Content

What's hot

Yandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоYandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоAvitoTech
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Tanya Denisyuk
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationAlexey Lesovsky
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан КупреевOpenVZ
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Ontico
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Alexey Lesovsky
 
Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Alexey Lesovsky
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщенияRoman Brovko
 
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиЗагрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиKirill Mokevnin
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
 
Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Alexey Lesovsky
 
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Timur Shemsedinov
 
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...Ontico
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)AvitoTech
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Mikhail Davydov
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Alexey Lesovsky
 
Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Alexey Lesovsky
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервереYandex
 

What's hot (20)

Yandex Tank - Арсений Фомченко
Yandex Tank - Арсений ФомченкоYandex Tank - Арсений Фомченко
Yandex Tank - Арсений Фомченко
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
PostgreSQL Streaming Replication
PostgreSQL Streaming ReplicationPostgreSQL Streaming Replication
PostgreSQL Streaming Replication
 
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан КупреевCRIU: ускорение запуска PHP в CloudLinux OS  -- Руслан Купреев
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)Call of Postgres: Advanced Operations (part 1)
Call of Postgres: Advanced Operations (part 1)
 
Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения
 
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиЗагрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.Отладка и устранение проблем в PostgreSQL Streaming Replication.
Отладка и устранение проблем в PostgreSQL Streaming Replication.
 
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
 
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
 
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)
 
Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)Call of Postgres: Advanced Operations (part 3)
Call of Postgres: Advanced Operations (part 3)
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере
 
Chef
ChefChef
Chef
 

Similar to Bazhin 1 zal

От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к AnsibleIvan Grishaev
 
Опыт разработки и тестирования RESTful JSON сервиса
Опыт разработки и тестирования RESTful JSON сервисаОпыт разработки и тестирования RESTful JSON сервиса
Опыт разработки и тестирования RESTful JSON сервисаIlya Chesnokov
 
LDAP in infrastructure (RootConf 2009)
LDAP in infrastructure (RootConf 2009)LDAP in infrastructure (RootConf 2009)
LDAP in infrastructure (RootConf 2009)Sergey Skvortsov
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayAndrey Rebrov
 
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...Cisco Russia
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Ontico
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомAlexander Titov
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow Vadim Nesterov
 
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.SECON
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Dev_Party
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42DevDay
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
Kostja Root Conf
Kostja Root ConfKostja Root Conf
Kostja Root ConfLiudmila Li
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Ontico
 
09 server mgmt_ii_ru
09 server mgmt_ii_ru09 server mgmt_ii_ru
09 server mgmt_ii_rumcroitor
 

Similar to Bazhin 1 zal (20)

От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Опыт разработки и тестирования RESTful JSON сервиса
Опыт разработки и тестирования RESTful JSON сервисаОпыт разработки и тестирования RESTful JSON сервиса
Опыт разработки и тестирования RESTful JSON сервиса
 
LDAP in infrastructure (RootConf 2009)
LDAP in infrastructure (RootConf 2009)LDAP in infrastructure (RootConf 2009)
LDAP in infrastructure (RootConf 2009)
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
 
Хранилище 101
Хранилище 101Хранилище 101
Хранилище 101
 
DevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектомDevOps или исскуство ухода за Интернет-проектом
DevOps или исскуство ухода за Интернет-проектом
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
SECON'2017, Лесовский Алексей, Потоковая репликация в PostgreSQL.
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
 
«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42«DevOps — это о передаче смысла» — Александр Титов, Express 42
«DevOps — это о передаче смысла» — Александр Титов, Express 42
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
Kostja Root Conf
Kostja Root ConfKostja Root Conf
Kostja Root Conf
 
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
 
09 server mgmt_ii_ru
09 server mgmt_ii_ru09 server mgmt_ii_ru
09 server mgmt_ii_ru
 

More from kuchinskaya (20)

Kharkov
KharkovKharkov
Kharkov
 
Balashov
BalashovBalashov
Balashov
 
Zamyakin
ZamyakinZamyakin
Zamyakin
 
Panfilov
PanfilovPanfilov
Panfilov
 
Platov
PlatovPlatov
Platov
 
Rabovoluk
RabovolukRabovoluk
Rabovoluk
 
Smirnov dependency-injection-techforum(1)
Smirnov dependency-injection-techforum(1)Smirnov dependency-injection-techforum(1)
Smirnov dependency-injection-techforum(1)
 
Smirnov reverse-engineering-techforum
Smirnov reverse-engineering-techforumSmirnov reverse-engineering-techforum
Smirnov reverse-engineering-techforum
 
Zacepin
ZacepinZacepin
Zacepin
 
Zagursky
ZagurskyZagursky
Zagursky
 
Haritonov
HaritonovHaritonov
Haritonov
 
Chudov
ChudovChudov
Chudov
 
Bubnov
BubnovBubnov
Bubnov
 
A.pleshkov
A.pleshkovA.pleshkov
A.pleshkov
 
Zenovich
ZenovichZenovich
Zenovich
 
Romanenko
RomanenkoRomanenko
Romanenko
 
Perepelitsa
PerepelitsaPerepelitsa
Perepelitsa
 
Osipov
OsipovOsipov
Osipov
 
Kubasov
KubasovKubasov
Kubasov
 
Kalugin balashov
Kalugin balashovKalugin balashov
Kalugin balashov
 

Bazhin 1 zal

  • 1.
  • 3. Как управлять учетными записями пользователей на тысячах серверов? ● Статические файлы, нет автоматической синхронизации ● Статические файлы, с синхронизацией или системой централизованного управления конфигурацией ● NIS, etc. ● LDAP
  • 4. Статические файлы, нет автоматической синхронизации Плюсы: – Не зависит от внешних ресурсов Минусы: – Сложность заведения, блокирования учетных записей – Сложность аудита (нельзя сказать какие есть учетные записи и куда они имеют доступ, когда получали доступ) – Относительно слабая безопасность
  • 5. Статические файлы, с синхронизацией или системой централизованного управления конфигурацией Плюсы: – Почти не зависит от внешних ресурсов – Простое добавление учетных записей Минусы: – Сложность аудита – Относительно слабая безопасность
  • 6. NIS, etc. Плюсы: – Простота добавления/удаления учетных записей Минусы: – Нет возможности централизованного ограничения доступа – Слабая безопасность – Зависимость от внешних ресурсов
  • 7. LDAP Плюсы: – Простота заведения/удаления учетных записей – Простой аудит – Возможность централизованного разграничения доступа – Возможность подвязать доступы другого вида к тем же учетным записям – Средняя безопасность Минусы: – Зависимость от внешних ресурсов
  • 8. LDAP Плюсы: – Простота заведения/удаления учетных записей – Возможность централизованного разграничения доступа – Простой аудит – Возможность подвязать доступы другого вида к тем же учетным записям Минусы: – Зависимость от внешних ресурсов
  • 9. Что из себя представляет LDAP
  • 10. Запись LDAP dn: uid=testuser,ou=People,dc=test,dc=ru uid: testuser objectClass: top objectClass: posixAccount objectClass: shadowAccount gecos: Test User loginShell: /bin/bash uidNumber: 10001 gidNumber: 10001 homeDirectory: /home/testuser host: someserver.test.ru userPassword: {CRYPT}$1$12345678$oEitTZYQtRHfNGmsFvTBA/
  • 11. Приступим к настройке ● Настроить LDAP-сервер – Прописать схемы – Настроить базу – Задать доступы ● Залить в него корневые записи и записи пользователей ● Настроить клиент – Прописать доступ в ldap – Включить NSS-часть – Включить PAM-часть – Добавить кеширование ● Включить TLS
  • 12. Конфигурация сервера: схемы include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/misc.schema
  • 13. Конфигурация сервера: база database bdb suffix "dc=test,dc=ru" rootdn "cn=admin,dc=test,dc=ru" rootpw {CRYPT}XXXXXXXX directory /var/lib/ldap index objectClass eq,pres index <....>
  • 14. Конфигурация сервера: acl access to attrs=userPassword by anonymous auth by dn="cn=admin,dc=test,dc=ru" write by self write by * none access to dn.subtree="dc=test,dc=ru" by anonymous auth by dn="cn=ronly,dc=test,dc=ru" read by dn="cn=admin,dc=test,dc=ru" write by self read by * none
  • 15. Конфигурация сервера: тюнинг ● slapd.conf threads 16 conn_max_pending 2000 conn_max_pending_auth 2000 cachesize 30000 idlcachesize 30000 sizelimit unlimited timelimit 300 ● DB_CONFIG set_cachesize 0 268435456 1 set_lk_max_locks 8192
  • 16. Конфигурация клиента Существует три варианта: – pam_ldap и nss_ldap – nss-pam-ldapd (nslcd) – sssd (pam_sss и nss_sss)
  • 17. pam_ldap и nss_ldap ● /etc/ldap.conf uri ldap://192.168.123.2 base dc=test,dc=ru binddn cn=ronly,dc=test,dc=ru bindpw test pam_check_host_attr yes pam_filter objectclass=posixAccount pam_password exop nss_initgroups_ignoreusers root,sysadm
  • 18. nss-pam-ldapd ● /etc/nslcd.conf uri ldap://192.168.123.2 base dc=test,dc=ru binddn cn=ronly,dc=test,dc=ru bindpw test pam_authz_search (&(objectClass=posixAccount) (uid=$username)(|(host=$hostname)(host=*))) nss_initgroups_ignoreusers ALLLOCAL
  • 19. Включаем nss через ldap ● /etc/nsswitch.conf passwd: files ldap shadow: files group: files ldap ● Запускаем nscd
  • 20. Включаем pam через ldap ● /etc/pam.d/system-auth auth sufficient pam_ldap.so use_first_pass account required pam_ldap.so ignore_authinfo_unavail ignore_unknown_user password sufficient pam_ldap.so use_authtok session optional pam_ldap.so
  • 21. Включаем TLS ● Сервер: TLSCACertificateFile /etc/ldap/cacert.pem TLSCertificateFile /etc/ldap/cert.pem TLSCertificateKeyFile /etc/ldap/cert.key security tls=1 ● Клиент (/etc/ldap.conf и /etc/nslcd.conf): ssl start_tls tls_cacertdir /etc/ldap/cacerts/
  • 22. /etc/sssd/sssd.conf [sssd] SSSD config_file_version = 2 services = nss, pam domains = TEST [domain/TEST] id_provider = ldap auth_provider = ldap chpass_provider = ldap access_provider = ldap ldap_uri = ldap://192.168.123.2 ldap_default_bind_dn = cn=ronly,dc=test,dc=ru ldap_default_authtok = test ldap_search_base = dc=test,dc=ru enumerate = false ldap_access_filter = host=someserver.test.ru ldap_tls_cacertdir = /etc/ldap/cacerts/
  • 23. Недостатки ● Ssh-ключи лежат локально ● При недоступности LDAP-серверов имеем большие таймауты, иногда превышающие таймаут ssh ● Безопасность
  • 24. Централизованное хранение ssh-ключей Существует патч для openssh, добавляющий возможность хранения ssh-ключей в LDAP: http://code.google.com/p/openssh-lpk/ Поля добавляемые в ldap-запись: dn: uid=blablabla objectClass: ldapPublicKey sshPublicKey: ssh-rsa AAAA...blablabla
  • 25. Таймауты при недоступности LDAP-серверов ● Поднимаем дополнительные сервера, делаем репликацию и резервирование при помощи keepalived ● Используем кеширование – nscd – pam_ccreds – встроенное в sssd ● Не лукапим LDAP для локальных пользователей – nss_initgroups_ignoreusers для nss_ldap и nslcd – nss_ldap и pam_ldap пришлось пропатчить – filter_users и filter_groups для sssd
  • 26. Репликация и резервирование ● LDAP поддерживает N-way мульти-мастер репликацию ● Также умеет отдавать ссылку (Refferal) на мастер при попытке записи в реплику
  • 27. Способы увеличения безопасности Используем аутентификацию по другому сервису: – Kerberos – One Time Passwords – Железные решения (USB-ключи, смарт-карты)
  • 29. Настройка Kerberos ● Настройка Kerberos-сервера – Определим realm, относящиеся к нему DNS-имена и отвечающие за него сервера – Настроим KDC (Key Distribustion Center) – Зададим доступы – Добавим принципал администратора ● Настройка Kerberos-клиента – Определим realm, относящиеся к нему DNS-имена и отвечающие за него сервера – Добавим принципал для клиента – Добавим принципал для пользователя – Включим Kerberos в PAM и sshd ● Добавим дополнительные DNS записи с указанием Kerberos-серверов
  • 30. Конфигурация Kerberos сервера ● /etc/krb5.conf [libdefaults] default_realm = TEST.RU [realms] TEST.RU = { kdc = 192.168.123.2 admin_server = 192.168.123.2 } [domain_realm] .test.ru = TEST.RU test.ru = TEST.RU [login] krb4_convert = false
  • 31. Конфигурация Kerberos сервера ● /etc/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 750,88 [realms] TEST.RU = { database_name = /var/lib/krb5kdc/principal key_stash_file = /etc/krb5kdc/stash 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 }
  • 32. Конфигурация Kerberos сервера ● /etc/krb5kdc/kadm5.acl krbadm@TEST.RU * */admin@TEST.RU * */*@TEST.RU i *@TEST.RU i ● # krb5_newrealm ● # kadmin.local -q "ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/admin" ● # kadmin.local -q "ktadd -k /etc/krb5kdc/kadm5.keytab kadmin/changepw" ● # kadmin.local -q "addprinc krbadm@TEST.RU" ● # kinit krbadm
  • 33. Конфигурация Kerberos клиента ● /etc/krb5.conf [libdefaults] default_realm = TEST.RU [realms] TEST.RU = { kdc = 192.168.123.2 admin_server = 192.168.123.2 } [domain_realm] .test.ru = TEST.RU test.ru = TEST.RU ● # kadmin -p krbadm : addprinc -randkey host/someserver.test.ru : ktadd host/someserver.test.ru : addprinc testuser@TEST.RU
  • 34. Конфигурация Kerberos клиента ● /etc/pam.d/system-auth auth sufficient pam_krb5.so use_first_pass ignore_root forwardable session sufficient pam_krb5.so ignore_root ● /etc/ssh/sshd_config KerberosAuthentication yes GSSAPIAuthentication yes GSSAPIKeyExchange yes ● Добавляем в DNS для зоны test.ru SRV записи с указанием наших Kerberos-серверов
  • 35. Интегрируем Kerberos и LDAP ● Можно хранить базу Kerberos в LDAP ● Можно настроить аутентификацию в LDAP-е Kerberos-ом через SASL
  • 36. One Time Passwords ● Основанные на математических функциях Например Aladdin eToken ● Основанные на текущем времени Например RSA Security SecurID
  • 37. MOTP (Mobile One-Time Passwords) Есть программные реализации, например MOTP – Использует очень простой алгоритм: md5(str(unixtime/10)+secret+pin)[0:6] пользователь (pin) и устройство (secret) – Имеет приложение под многие типы мобильных телефонов
  • 38. Radius+MOTP: настройка сервера Конфигурация сервера на основе freeradius для использования mOTP ● /etc/raddb/users DEFAULT Auth-Type = Accept Exec-Program-Wait = "/usr/local/motp/motp.pl %{User-Name} %{User- Password} %{Client-Shortname}" ● /etc/raddb/clients.conf client 1.1.1.1 { secret = secret_up_to_31_chars shortname = i_am_server }
  • 39. Radius+MOTP: настройка клиента Конфигурация клиента для использования MOTP в ssh ● /etc/pam_radius.conf 10.10.10.10 secret_up_to_31_chars 5 ● /etc/pam.d/sshd auth sufficient pam_radius_auth.so client_id=ssh
  • 40. Железные решения (USB-ключи, смарт- карты) ● Аналог One-Time Password ● Безопасное хранение закрытых ключей например Gemalto USB Shell Token v2
  • 41. СПАСИБО! Алексей Бажин Директор по эксплуатации bazhin@corp.mail.ru