Очень часто, на новом месте, хочется понимать всю картину (от слова совсем), кто какие ключи, какой пользователь, какой сервер и т.д. Простите за качество, но работает, суть в следующем, скрипт запускается на сервере (python2 без зависимостей), нагло грепает /etc/passwd /etc/shadow и пользовательские authorized_keys. В stdout выдает только тех пользователей у которых присутствует пароль и/или приватный ключ (читай могут войти удалённо):Скрипт: https://gist.github.com/iHile/6a497bc519167abe8f5a1930e2fcc1ed
Копия: https://www.opennet.me/soft/audit-system-users.py
В Ansible интегрируется банально просто:
- name: Executing audit-system-users script...
script: "audit-system-users.py --json"
environment:
INVENTORY_HOSTNAME: "{{ inventory_hostname }}"
INVENTORY_GROUPS: "{{ group_names | join(',') }}"
ANSIBLE_DATE_TIME_ISO8601: "{{ ansible_date_time.iso8601 }}"
ANSIBLE_HOST: "{{ ansible_host }}"
INVENTORY_DESCRIPTION: "{{ inventorize_description }}"
args:
executable: "{{ ansible_python.executable }}"
register: audit_system_users_run
Предложенный вывод можно скармливать в ELK и получить довольно чёткую картину происходящего.
p.s. Обратите внимание, что никаких штук вроде LDAP/FREEIPA - не нужно, утилита самодостаточно грепает активных пользвователей и выдает в stdout/json
URL: https://gist.github.com/iHile/6a497bc519167abe8f5a1930e2fcc1ed
Обсуждается: http://www.opennet.me/tips/info/3133.shtml