пятница, 3 декабря 2021 г.

Ansible

Появилось много ПК с Astra Linux, ими надо как-то рулить, был выбран Ansible.

На управляемом хосте создан пользователь ansible, и помещен в группу sudo.

На узле управления требуется создать пару SSH-ключей

# ssh-keygen

и передать публичный ключ на управляемый хост

# ssh-copy-id ansible@managed-host

cat /etc/ansible/hosts

[corp:vars]

ansible_sudo_pass=strongpass

ansible_become=yes

ansible_become_method=sudo

ansible_user=ansible


[corp]

astra1.corp.ru

astra2.corp.ru

Плэйбуки для тестов:

cat /root/anisble-workspace/apt.yaml
---
- hosts: all
  become: true
  become_user: root
  tasks:
  - name: Update and upgrade apt packages
    apt:
      upgrade: yes
      update_cache: yes
      cache_valid_time: 86400


cat /root/anisble-workspace/reboot.yaml
---
- hosts: all
  become: true
  become_user: root
  tasks:
          - name: Rebooting the cloud server/bare metal box
            reboot:

Проверяем работу плейбуков:
cd /root/anisble-workspace

ansible-playbook test.yaml
ansible-playbook apt.yaml


среда, 6 октября 2021 г.

Создание HTTP принципала, и добавление новых к существующему.

Таким образом мы создаем файл keytab на контроллере домена, в PS, под админской учеткой (PS от админа!) для специально созданного сервисного пользовате в AD - akhchservice@CORP.DOMAIN.LOCAL

ktpass /princ HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL /mapuser akhchservice@CORP.DOMAIN.LOCAL /crypto ALL /ptype KRB5_NT_PRINCIPAL /out C:\multiweb.keytab /pass *

Будет запрошен пароль, следует ввести пароль, который назначался при создании пользователя akhchservicе.

Затем файл C:\multiweb.keytab следует перенести на Linux-сервер в нужный каталог, напр. /etc

Усложняем задачу - на том же web-сервере появляется новый виртуал-хост - srv-phonebook, нужно добавить этого принципала в keytab-файл.

Опять идем на контроллер домена, под админской учеткой вводим следующую команду в PS:

ktpass /princ HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL /mapuser akhchservice@CORP.DOMAIN.LOCAL  /crypto All /ptype KRB5_NT_PRINCIPAL /in C:\multiweb.keytab /out C:\multiweb2.keytab /setupn /setpass /pass *

При этом, новый файл - C:\multiweb2.keytab создается на основе файла C:\multiweb.keytab, который так и лежал на КД в корне диска С. Запрашивается пароль для akhchservice@CORP.DOMAIN.LOCAL, вводим его, переносим файл multiweb2.keytab на Linux.

Можем просмотреть содержимое файла multiweb2.keytab на Linux.

klist -K -e -t -k /etc/multiweb2.keytab

Keytab name: FILE:/etc/multiweb2.keytab

KVNO Timestamp           Principal

---- ------------------- ------------------------------------------------------

   6 01.01.1970 03:00:00 HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL (des-cbc-crc)  (0x4f29081ab51f8c7c)

   6 01.01.1970 03:00:00 HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL (des-cbc-md5)  (0x4f29081ab51f8c7c)

   6 01.01.1970 03:00:00 HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL (arcfour-hmac)  (0x8867da9b89eb48be56b132c9a176f9da)

   6 01.01.1970 03:00:00 HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL (aes256-cts-hmac-sha1-96)  (0xcec5a1d9182afd58cea26323e044f5c4b8bdd839474880c13e1c4c59d0724f7d)

   6 01.01.1970 03:00:00 HTTP/srv-multiweb.corp.domain.local@CORP.DOMAIN.LOCAL (aes128-cts-hmac-sha1-96)  (0x2f750fd25ff19a57a61249716a2f7614)

   6 01.01.1970 03:00:00 HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL (des-cbc-crc)  (0xe091fd80c438b67a)

   6 01.01.1970 03:00:00 HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL (des-cbc-md5)  (0xe091fd80c438b67a)

   6 01.01.1970 03:00:00 HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL (arcfour-hmac)  (0x8867da9b89eb48be56b132c9a176f9da)

   6 01.01.1970 03:00:00 HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL (aes256-cts-hmac-sha1-96)  (0x5e8baa1ee5ece62022fc7b5db0d972d3d4e32fe14350575adcab6e88a0d480ad)

   6 01.01.1970 03:00:00 HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL (aes128-cts-hmac-sha1-96)  (0x6221daab711b0c124e12e26af6cb0d5b)

Таким образом мы можем создавать на одном web-сервере множество виртуал-хостов для доменной авторизации.

Ну и на всякий случай листинг файлов с упоминанием keytab.

cat /etc/krb5.conf
[libdefaults]
        default_realm = CORP.DOMAIN.LOCAL
        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true
        v4_instance_resolve = false
        v4_name_convert = {
                host = {
                        rcmd = host
                        ftp = ftp
                }
                plain = {
                        something = something-else
                }
        }
        fcc-mit-ticketflags = true
# test  default_keytab_name = FILE:/etc/multiweb.keytab
        default_keytab_name = FILE:/etc/multiweb2.keytab

[realms]
        CORP.DOMAIN.LOCAL = {
                kdc = dc
                kdc = dc2
                admin_server = dc
                default_domain = CORP.DOMAIN.LOCAL
        }

[domain_realm]
        .corp.domain.local = CORP.DOMAIN.LOCAL
        corp.domain.local = CORP.DOMAIN.LOCAL
[login]
        krb4_convert = false
        krb4_get_tickets = false

Один из виртуал-хостов апача. (У нас их два - srv-phonebook и srv-multiweb.)

cat /etc/apache2/sites-available/srv-phonebook.corp.domain.local
<VirtualHost *:80>
ServerName srv-phonebook
DocumentRoot  /var/www/html/srv-phonebook
ServerAlias srv-phonebook.corp.domain.local
<Directory  /var/www/html/srv-phonebook>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    allow from all
</Directory>
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
  CustomLog ${APACHE_LOG_DIR}/srv-phonebooki_access.log combined
  ErrorLog ${APACHE_LOG_DIR}/srv-phonebook_error.log
</VirtualHost>
<Location />
AuthType Kerberos
KrbAuthRealms CORP.DOMAIN.LOCAL
KrbServiceName HTTP/srv-phonebook.corp.domain.local@CORP.DOMAIN.LOCAL
# тест Krb5Keytab /etc/multiweb.keytab
Krb5Keytab /etc/multiweb2.keytab
KrbMethodNegotiate On
KrbMethodK5Passwd Off
require valid-user       
</Location>