Det här kapitlet innehåller en introduktion till SEAM.
SEAM (Sun Enterprise Authentication Mechanism) är en klient/server-arkitektur med kraftfull användarverifiering och funktioner för dataintegritet och skydd av personuppgifter, vilket ger säkra transaktioner i nätverk. Verifiering garanterar att identiteten stämmer hos både avsändaren och mottagaren av en nätverkstransaktion. SEAM kan även kontrollera giltigheten hos data som överförs ( integritet) och kryptera den under överföringen (skydd av personuppgifter). Med SEAM kan du logga in på andra datorer, köra kommandon, utbyta data och överföra filer på ett säkert sätt. Dessutom innehåller SEAM tjänster för behörighet, vilket gör att administratörer kan begränsa åtkomst till tjänster och datorer. Vidare kan du som SEAM-användare styra andras åtkomst till ditt konto.
SEAM är ett separat inloggningssystem, vilket innebär att du bara behöver verifiera din identitet för SEAM en gång per session och att alla andra transaktioner under sessionen automatiskt blir säkra. När SEAM har verifierat din identitet behöver du inte bevisa den igen varje gång du använder ett SEAM-baserat kommando som ftp eller rsh, eller när du hämtar information i ett NFS-filsystem. Det innebär att du inte behöver skicka ditt lösenord via nätverket, där risken finns att någon fångar upp det, varje gång du använder de här tjänsterna.
SEAM är baserat på protokollet Kerberos V5 för nätverksverifiering som är utvecklat av Massachusetts Institute of Technology (MIT). Den som tidigare har använt Kerberos V5 bör därför känna igen funktionerna i SEAM. Eftersom Kerberos V5 är en de facto-standard för säkerhet i nätverk fungerar SEAM med andra system. Det innebär att SEAM ger säkra transaktioner även i heterogena nätverk, eftersom programmet fungerar med andra system som använder Kerberos V5. Dessutom ger SEAM verifiering och säkra överföringar både mellan domäner och inom en enskild domän.
Eftersom SEAM är baserat på och utformat för att fungera med Kerberos V5 används ofta uttrycken "Kerberos" och "SEAM" för att beskriva i stort sett samma sak i den här handboken - t ex , "Användarkategori för Kerbero" och "SEAM-baserat verktyg." (Dessutom används även "Kerberos" och "Kerberos V5" för att beskriva samma sak.) På de ställen där det behövs skiljer handboken mellan begreppen.
SEAM ger större flexibilitet vid körning av Solaris-program. Du kan konfigurera SEAM så att det tillåter både SEAM-baserade och icke-SEAM-baserade förfrågningar om nätverkstjänster, t ex NFS-tjänsten, telnet och ftp. Det innebär att dina aktuella Solaris-program fortfarande fungerar om de körs på system som inte har SEAM installerat. Du kan förstås även konfigurera SEAM så att det endast tillåter SEAM-baserade nätverksförfrågningar.
Dessutom behöver inte programmen ha kvar stödet för SEAM om andra säkerhetsmekanismer utvecklas. Eftersom SEAM är utformat för att integrera modularitet i GSS-API:t (Generic Security Service), kan program som använder GSS-API:t använda den säkerhetsmekanism som passar dem bäst.
Här följer en allmän översikt över verifieringssystemet SEAM. Mer ingående information finns i "Så fungerar verifieringssystemet".
Ur användarens synvinkel är SEAM för det mesta osynligt när SEAM-sessionen väl har startat. Kommandon som rsh och ftp fungerar i stort sett som vanligt. Att starta en SEAM-session innebär oftast inte mer än att logga in och ange ett Kerberos-lösenord.
SEAM-systemet kretsar kring begreppet biljett. En biljett är en uppsättning elektronisk information som fungerar som identifikation för en användare eller en tjänst som NFS-tjänsten. På samma sätt som ditt körkort identifierar dig och visar vilka fordon du har rätt att framföra, identifierar biljetten dig och dina åtkomsträttigheter i nätverket. När du utför en SEAM-baserad transaktion - t ex om du använder rlogin för att ansluta till en annan dator - skickas transparent en förfrågan om en biljett till en KDC (Key Distribution Center), vilken kontrollerar en databas för att verifiera din identitet. KDC:n skickar tillbaka en biljett som ger dig åtkomstbehörighet till den andra datorn. "Transparent" innebär att du inte uttryckligen behöver begära en biljett, det sker i stället som en del av kommandot rlogin. Eftersom det bara är den verifierade klienten som kan få en biljett för en viss tjänst, kan inte en annan klient använda kommandot rlogin under antagen identitet.
Biljetter har vissa attribut som styr deras egenskaper. En biljett kan t ex vara vidarebefordringsbar (vilket innebär att den kan användas på en annan dator utan ny verifiering) eller efterdaterad (den gäller inte förrän vid en viss angiven tidpunkt). Sättet biljetter används på - t ex vilka användare som får skaffa vissa typer av biljetter - anges av policies som bestäms när SEAM installeras eller administreras.
Du kommer ofta att se uttrycken referens och biljett. I större Kerberos-sammanhang används uttrycken ofta för att beskriva samma sak. Rent tekniskt är dock en referens en biljett plus en sessionsnyckel för sessionen. Den här skillnaden förklaras mer ingående i "Skaffa åtkomst till tjänster med SEAM".
I följande avsnitt beskrivs verifieringsprocessen i SEAM i korthet.
Kerberos-verifiering består av två faser: en första verifiering som medger följande verifieringar, samt själva de följande verifieringarna.
Figur 1-1 visar den första verifieringen:
En klient (en användare eller en tjänst, t ex NFS) påbörjar en SEAM-session genom att begära en biljettbeviljarbiljett (TGT) från KDC:n (Key Distribution Center). Det här görs ofta automatiskt vid inloggningen.
En biljettbeviljarbiljett behövs för att du ska få andra biljetter för särskilda tjänster. Det går att jämföra funktionen hos biljettbeviljarbiljetten med den hos ett pass. Liksom ett pass identifierar biljettbeviljarbiljetten dig och gör att du kan hämta flera "visum" - där dina "visum" (biljetter) inte är till andra länder utan för andra datorer eller nätverkstjänster. Biljettbeviljarbiljetten och de andra biljetterna har som pass och visum begränsad giltighetstid. Skillnaden är att "Kerberos-anpassade" kommandon ser att du har ett pass och skaffar visumen åt dig - du behöver inte utföra transaktionerna själv.
KDC:n skapar en biljettbeviljarbiljett och skickar tillbaka den i krypterad form till klienten. Klienten dekrypterar biljettbeviljarbiljetten med hjälp av sitt lösenord.
När klienten nu har en giltig biljettbeviljarbiljett kan den begära biljetter för all typer av nätverksåtgärder, t ex rlogin och telnet, under den tid biljettbeviljarbiljetten gäller. Den brukar gälla ett par timmar. Varje gång klienten utför en unik åtgärd i nätverket begär den en biljett för åtgärden från KDC:n.
När klienten har tagit emot den första verifieringen följer alla andra verifieringar mönstret som visas i Figur 1-2:
Klienten begär en biljett för en viss tjänst (t ex rlogin till en annan dator) från KDC:n och skickar sin biljettbeviljarbiljett till KDC:n som bevis på sin identitet.
KDC:n skickar biljetten för den begärda tjänsten till klienten.
Antag t ex att användaren johan använder rlogin på servern boston. Eftersom han redan är verifierad (han har alltså redan en biljettbeviljarbiljett), får han automatiskt och transparent en biljett som en del av kommandot rlogin. Med den här biljetten kan han köra rlogin för att ansluta till boston så ofta han vill till dess biljetten löper ut. Om johan vill köra rlogin för att ansluta till datorn denver hämtar han en ny biljett, som i steg 1.
Klienten skickar biljetten till servern.
Servern beviljar åtkomst för klienten.
När du har läst den här beskrivningen har du kanske lagt märke till att servern inte verkar kommunicera med KDC:n under processen. Men det gör den - den registrerar sig hos KDC:n på samma sätt som första klienten gör. För enkelhets skull har den delen utelämnats.
Vilka SEAM-baserade (eller "Kerberos-anpassade") kommandon kan då användare som johan använda sig av? De är:
ftp
rcp
rlogin
rsh
telnet
De här programmen är desamma som Solaris-programmen med samma namn, förutom att Kerberos-principaler används för att verifiera transaktioner, vilket ger Kerberos-baserad säkerhet. (Mer information om principaler finns i "Principaler".)
Dessa kommandon beskrivs mer ingående i "SEAM-kommandon".
En klient i SEAM identifieras genom sin principal. En principal är en unik identitet till vilken KDC:n kan tilldela biljetter. Principalen kan vara en användare, t ex johan, eller en tjänst, t ex nfs eller telnet.
Principalnamn delas in i tre delar: primär, instans och användarkategori. En typisk SEAM-principal kan t ex vara johan/admin@ENG.ACME.COMdär:
johan är primär, vilken som i det här fallet kan vara ett användarnamn, eller en tjänst, t ex nfs. Den kan även vara ordet host, vilket visar att det är en tjänstprincipal som tillhandahåller olika nätverkstjänster (ftp, rcp, rlogin, osv).
admin är instansen. Instansen är valfri för användarprincipaler, men obligatorisk för tjänstprincipaler. Till exempel: om användaren johan ibland fungerar som systemadministratör kan han använda johan/admin för att skilja sig från sin vanliga identitet. Om johan har konton på två olika värdar kan på samma sätt använda två principalnamn med två olika instanser (t ex johan/denver.acme.com och johan/boston.acme.com). Lägg märke till att SEAM behandlar johan och johan/admin som två helt olika principaler.
För tjänstprincipaler är instansen ett fullständigt värdnamn. Ett exempel på en sådan instans är stordator.eng.acme.com och där kan primär/instans t ex vara ftp/stordator.eng.acme.com eller host/stordator.eng.acme.com.
ENG.ACME.COM är SEAM-användarkategorin. Mer information om användarkategorier finns i "Användarkategorier".
Här följer en samling giltiga principalnamn:
johan
johan/admin
johan/admin@ENG.ACME.COM
ftp/värd.eng.acme.com@ENG.ACME.COM
host/eng.acme.com@ENG.ACME.COM
En användarkategori är ett logiskt nätverk, t ex en domän, som anger en grupp system under samma huvud-KDC (se nedan). Figur 1-3 visar hur användarkategorier kan förhålla sig till varandra. Vissa användarkategorier är hierarkiska, men annars icke-hierarkiska, vilket gör att avbildningen mellan två användarkategorier måste anges. Med SEAM går det att verifiera mellan användarkategorier om varje användarkategori har en principalpost för den andra användarkategorin i sin KDC.
Alla användarkategorier innehåller en server som står för underhållet av huvudkopian av principaldatabasen. Den kallas huvud-KDC-servern. Dessutom bör varje användarkategori innehålla minst en underordnad KDC-server, med kopior av principaldatabasen. Både huvud-KDC-servern och den underordnade KDC-servern skapar biljetter som används för verifiering.
Användarkategorin kan även innehålla två ytterligare typer av SEAM-servrar. En programserver för SEAM-nätverket som ger åtkomst till Kerberos-anpassade program ( t ex ftp, telnet och rsh). Användarkategorier kan även innehålla NFS-servrar, vilka tillhandahåller NFS-tjänster med Kerberos-verifiering.
Figur 1-4 visar vad en tänkt användarkategori kan innehålla.
Förutom säker verifiering av användare tillhandahåller SEAM två säkerhetstjänster:
Integritet (integrity). På samma sätt som verifiering försäkrar att klienter i nätverket är de de utger sig för att vara, försäkrar integritet att att data som användarna överför är giltig och inte har manipulerats under överföringen. Det görs via kryptografiska kontrollsummor. Integritet omfattar även användarverifiering.
Skydd av personuppgifter (privacy)). Skydd av personuppgifter höjer säkerheten ytterligare en nivå. Tjänsten omfattar inte bara verifiering av integriteten hos överförd data - den krypterar data före överföringen, vilket skyddar informationen från tjuvlyssnare. Dessutom verifieras användare av tjänsten.
På grund av USA:s exportregler är det inte säkert att tjänsten för skydd av personuppgifter finns tillgänglig för alla användare av SEAM.
För närvarande är det bara kommandot ftp bland de Kerberos-anpassade programmen i SEAM som medger att användare kan ändra säkerhetstjänst under körning. Genom att använda programmeringsgränssnittet RPCSEC_GSS kan utvecklare utforma sina RPC-baserade program så att de väljer säkerhetstjänst.
Liksom MIT-distributionen av Kerberos V5 innehåller SEAM:
KDC (Key Distribution Center) (huvud):
Bakgrundsprogrammet kadmind för administration av Kerberos-databasen.
Bakgrundsprogrammet krb5kdc för behandling av Kerberos-biljetter.
Underordnade KDC:er.
Program för databasadministration - kadmin och kadmin.local
Programvara för databasöverföring - kprop
Användarprogram för att skaffa, visa och förstöra biljetter - kinit, klist, kdestroy - och för att ändra SEAM-lösenord för användaren - kpasswd
Program - ftp, rcp, rlogin, rsh och telnet - samt bakgrundsprogram för de här programmen - ftpd, rlogind, rshd och telnetd.
Administrationsverktyg - ktutil och kdb5_util.
Flera bibliotek
Dessutom innehåller SEAM följande:
Administrationsverktyget för SEAM(gkadmin) för administration av KDC:n. Med det här Java(TM)-baserade grafiska användargränssnittet kan administratören utföra åtgärder som vanligen utförs via kommandot kadmin.
Med PAM (Pluggable Authentication Module ) kan program använda olika verifieringsmekanismer. PAM kan användas för att göra inloggning och utloggning transparent för användaren.
Ett verktyg (gsscred) och ett bakgrundsprogram (gssd) - De här programmen avbildar UNIXTM-användar-ID:n till principalnamn, vilket behövs eftersom NFS-servrar för SEAM använder UNIX-ID:n för identifiering av användare, inte principalnamn vilka har ett helt annat format.
GSS-API-ramverk - Med GSS-API:t (Generic Security Service Application Programming Interface) kan program använda flera säkerhetsmekanismer utan att programmen måste kompileras om varje gång en ny mekanism läggs till. Eftersom GSS-API:t är datoroberoende är det lämpligt för program på Internet. GSS-API:t gör att program kan innehålla tjänsterna för integritet och skydd av personuppgifter samt verifiering.
Med RPCSEC_GSS- API:t (RPCSEC_GSS Application Programming Interface) kan NFS-tjänster använda Kerberos-verifiering. RPCSEC_GSS är en ny säkerhetsvariant som tillhandahåller säkerhetstjänster som är oberoende av mekanismerna som används. RPCSEC_GSS ligger "över" GSS-API-lagret. Alla dynamiska GSS_API-baserade säkerhetsmekanismer kan användas av program med RPCSEC_GSS.
En förkonfigureringsprocedur gör att du kan ange parametrar för installation och konfigurering av SEAM så att installationen blir automatisk, vilket är särskilt användbart för installationer på flera datorer samtidigt.
Ändringar i kärnan ger bättre prestanda.