Google opublikowało kod źródłowy projektu HIBA (Host Identity Based Authorization), który proponuje wdrożenie dodatkowego mechanizmu autoryzacji umożliwiającego organizację dostępu użytkowników poprzez SSH w połączeniu z hostami (sprawdzanie, czy dostęp do konkretnego zasobu jest dozwolony, czy nie podczas uwierzytelniania za pomocą kluczy publicznych). Integrację z OpenSSH zapewnia się poprzez określenie procedury obsługi HIBA w dyrektywie AuthorizedPrincipalsCommand w pliku /etc/ssh/sshd_config. Kod projektu napisany jest w języku C i rozpowszechniany na licencji BSD.
HIBA wykorzystuje standardowe mechanizmy uwierzytelniania oparte na certyfikatach OpenSSH do elastycznego i scentralizowanego zarządzania autoryzacją użytkowników w stosunku do hostów, ale nie wymaga okresowych zmian w plikach autoryzowanych_kluczy i autoryzowanych_użytkowników po stronie hostów, z którymi nawiązywane jest połączenie. Zamiast przechowywać listę ważnych kluczy publicznych i warunków dostępu w plikach autoryzowanych_(klucze|użytkowników), HIBA integruje informacje o powiązaniach użytkownik-host bezpośrednio z samymi certyfikatami. W szczególności zaproponowano rozszerzenia dla certyfikatów hosta i certyfikatów użytkownika, które przechowują parametry hosta i warunki przyznawania dostępu użytkownikowi.
Sprawdzanie po stronie hosta jest inicjowane przez wywołanie procedury obsługi hiba-chk określonej w dyrektywie AuthorizedPrincipalsCommand. Procesor ten dekoduje rozszerzenia wbudowane w certyfikaty i na ich podstawie podejmuje decyzję o przyznaniu lub zablokowaniu dostępu. Reguły dostępu ustalane są centralnie na poziomie urzędu certyfikacji (CA) i integrowane z certyfikatami na etapie ich generowania.
Po stronie centrum certyfikacji prowadzona jest ogólna lista dostępnych uprawnień (hostów, z którymi dozwolone są połączenia) oraz lista użytkowników, którzy mogą z tych uprawnień korzystać. Do generowania certyfikowanych certyfikatów ze zintegrowaną informacją o referencjach zaproponowano narzędzie hiba-gen, a funkcjonalność niezbędną do utworzenia urzędu certyfikacji zawarto w skrypcie iba-ca.sh.
Gdy użytkownik łączy się, uprawnienia określone w certyfikacie są potwierdzane cyfrowym podpisem urzędu certyfikacji, co pozwala na przeprowadzenie wszystkich kontroli całkowicie po stronie hosta docelowego, z którym nawiązywane jest połączenie, bez konieczności uciekania się do usług zewnętrznych. Listę kluczy publicznych urzędu certyfikacji certyfikującego certyfikaty SSH określa dyrektywa TrustedUserCAKeys.
Oprócz bezpośredniego łączenia użytkowników z hostami, HIBA umożliwia definiowanie bardziej elastycznych reguł dostępu. Na przykład informacje takie jak lokalizacja i typ usługi można powiązać z hostami, a podczas definiowania reguł dostępu użytkowników można zezwolić na połączenia ze wszystkimi hostami z danym typem usługi lub z hostami w określonej lokalizacji.
Źródło: opennet.ru