Standaard biedt FreeBSD ondersteuning voor OPIE (Eenmalige Wachtwoorden in Alles - “One-time Passwords In Everything”), wat standaard een MD5-hash gebruikt.
Hier worden drie verschillende soorten wachtwoorden
besproken. De eerste is het normale UNIX® of Kerberos
wachtwoord. Dit heet het “UNIX® wachtwoord”. Het
tweede type is een eenmalig wachtwoord dat wordt gemaakt met het
OPIE-programma opiekey(1) en dat wordt geaccepteerd door
opiepasswd(1) en de aanmeldprocedure. Dit heet het
“eenmalige wachtwoord”. Het laatste type wachtwoord
is het wachtwoord dat wordt opgegeven aan het programma
opiekey
(en soms aan het programma
opiepasswd
) dat gebruikt wordt om eenmalige
wachtwoorden te maken. Dit type heet “geheim
wachtwoord” of gewoon een “wachtwoord” zonder
toevoeging.
Het geheime wachtwoord heeft niets te maken met het UNIX® wachtwoord; ze kunnen hetzelfde zijn, dat wordt afgeraden. OPIE geheime wachtwoorden kennen niet de beperking van 8 karakters zoals de oude UNIX® wachtwoorden. [8] Ze mogen onbeperkt lang zijn. Wachtwoorden van een zes of zeven woorden lange zin zijn niet ongewoon. Voor het overgrote deel werkt het OPIE-systeem volledig onafhankelijk van het UNIX® wachtwoordsysteem.
Buiten het wachtwoord zijn er nog twee stukjes gegevens die van belang zijn voor OPIE. Het eerste wordt “zaad” (“seed”) of “sleutel” (“key”) genoemd en bestaat uit twee letters en vijf cijfers. Het tweede stukje gegevens heet de “iteratieteller”, een nummer tussen 1 en 100. OPIE maakt een eenmalig wachtwoord door het zaad en het geheime wachtwoord aaneen te schakelen en daarop het door de iteratieteller aangegeven keren MD5-hash toe te passen. Daarna wordt het resultaat omgezet in zes korte Engelse woorden. Deze zes woorden zijn een eenmalige wachtwoord. Het autenticatiesysteem (hoofdzakelijk PAM) houdt bij welk eenmalig wachtwoord het laatst is gebruikt en de gebruiker wordt geautenticeerd als de hash van het door de gebruiker ingegeven wachtwoord gelijk is aan het vorige wachtwoord. Omdat er een eenweg hash wordt gebruikt, is het onmogelijk om toekomstige eenmalige wachtwoorden te maken als iemand toch een eenmalig wachtwoord heeft afgevangen. De iteratieteller wordt verlaagd na iedere succesvolle aanmelding om de gebruiker en het aanmeldprogramma synchroon te houden. Als de iteratieteller op 1 staat, moet OPIE opnieuw ingesteld worden.
Er zijn enkele programma's bij ieder systeem betrokken die
hieronder worden besproken. Het programma
opiekey
heeft een iteratieteller,
zaad en een geheim wachtwoord nodig en maakt dan een eenmalig
wachtwoord of een lijst van opeenvolgende eenmalige wachtwoorden.
Het programma opiepasswd
wordt gebruikt om OPIE
te initialiseren en om wachtwoorden, iteratietellers en zaad te
wijzigen. Het accepteert zowel wachtwoordzinnen als een
iteratieteller, zaad en een eenmalig wachtwoord. Het programma
opieinfo
bekijkt de relevante bestanden waarin
de eigenschappen staan (/etc/opiekeys
) en
toont de huidige iteratieteller en zaad van de gebruiker die het
commando uitvoert.
Nu worden vier verschillende acties besproken. Bij de eerste
wordt opiepasswd
gebruikt in een beveiligde
verbinding om voor het eerst eenmalige wachtwoorden in te stellen
of om een wachtwoord of zaad aan te passen. Bij de tweede wordt
opiepasswd
gebruikt over een onbeveiligde
verbinding samen met opiekey
over een
beveiligde verbinding om hetzelfde te bereiken. In een derde
scenario wordt opiekey
gebruikt om aan te
melden over een onveilige verbinding. Het vierde
scenario behandelt het gebruik van opiekey
om
een aantal sleutels aan te maken die opgeschreven of afgedrukt
kunnen worden, zodat ze meegenomen kunnen worden naar een plaats
van waar geen enkele veilige verbinding opgezet kan worden.
Gebruik het commando opiepasswd
om OPIE
voor de eerste keer te initialiseren:
%
opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c Adding unfurl: Only use this method from the console; NEVER from remote. If you are using telnet, xterm, or a dial-in, type ^C now or exit with no password. Then run opiepasswd without the -c parameter. Using MD5 to compute responses. Enter new secret pass phrase: Again new secret pass phrase: ID unfurl OTP key is 499 to4268 MOS MALL GOAT ARM AVID COED
Als Enter new secret pass phrase:
of
Enter secret password:
op het scherm
verschijnt, dient een wachtwoord of wachtwoordzin ingevoerd te
worden. Dit is dus niet het aanmeldwachtwoord is, maar dit
wordt gebruikt om eenmalige wachtwoorden te maken. De
“ID” regel geeft de parameters van het verzoek
weer: de aanmeldnaam, de iteratieteller en zaad. Bij het
aanmelden kent het systeem deze parameters en worden deze
weergegeven zodat ze niet onthouden hoeven te worden. Op de
laatste regel staat het eenmalige wachtwoord dat overeenkomt met
die parameters en het geheime wachtwoord. Als de gebruiker
direct opnieuw zou aanmelden, zou hij dat eenmalige wachtwoord
moeten gebruiken.
Om een wachtwoord te initialiseren of te wijzigen over een
onveilige verbinding, moet er al ergens een veilige verbinding
bestaan waar de gebruiker opiekey
kan
uitvoeren. Dit kan een shellprompt zijn op een machine die
vertrouwd wordt. De gebruiker moet ook een iteratieteller
verzinnen (100 is wellicht een prima getal) en een eigen zaad
bedenken of er een laten fabriceren. Over de onveilige
verbinding (naar de machine die de gebruiker wil initialiseren)
wordt het commando opiepasswd
gebruikt:
%
opiepasswd
Updating unfurl: You need the response from an OTP generator. Old secret pass phrase: otp-md5 498 to4268 ext Response: GAME GAG WELT OUT DOWN CHAT New secret pass phrase: otp-md5 499 to4269 Response: LINE PAP MILK NELL BUOY TROY ID mark OTP key is 499 gr4269 LINE PAP MILK NELL BUOY TROY
Druk op Return om het standaardzaad te accepteren. Voor een toegangswachtwoord wordt ingevoerd, dient eerst gewisseld te worden naar de veilige verbinding en dienen dezelfde parameters ingegeven te worden:
%
opiekey 498 to4268
Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT
In de onveilige verbinding wordt nu het eenmalige wachtwoord in het relevante programma gekopieerd.
Als OPIE eenmaal is ingesteld staat er bij het aanmelden iets als het volgende:
%
telnet example.com
Trying 10.0.0.1... Connected to example.com Escape character is '^]'. FreeBSD/i386 (example.com) (ttypa) login:<gebruikersnaam>
otp-md5 498 gr4269 ext Password:
NB: de OPIE-prompt heeft een handige optie (die hier niet te zien is): als er op Return wordt gedrukt bij de wachtwoordregel, wordt de echo aangezet, zodat de invoer zichtbaar is. Dit is erg handig als er met de hand een wachtwoord wordt ingegeven, zoals wanneer het wordt ingevoerd vanaf een afdruk.
Nu moet het eenmalige wachtwoord gemaakt worden om het
aanmeldprompt mee te antwoorden. Dit moet gedaan worden op een
vertrouwd systeem waarop opiekey
beschikbaar
is. Er zijn ook versies voor MS-DOS®, Windows® en Mac OS®.
Voor het commando moet zowel de iteratieteller als het zaad
ingeven worden op de commandoregel. Deze kan zo overgenomen
worden vanaf het aanmeldprompt op de machine waarop de gebruiker
zich wil aanmelden.
Op het vertrouwde systeem:
%
opiekey 498 to4268
Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase: GAME GAG WELT OUT DOWN CHAT
Nu het eenmalige wachtwoord er is, kan het aanmelden doorgang vinden.
Soms moet een gebruiker ergens naar toe gaan waar er geen
toegang is tot een vertrouwde machine of een beveiligde
verbinding. In dat geval is het mogelijk om met het commando
opiekey
een aantal eenmalige wachtwoorden te
maken om uit te printen en mee te nemen:
%
opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response. Reminder: Don't use opiekey from telnet or dial-in sessions. Enter secret pass phrase:<geheim wachtwoord>
26: JOAN BORE FOSS DES NAY QUIT 27: LATE BIAS SLAY FOLK MUCH TRIG 28: SALT TIN ANTI LOON NEAL USE 29: RIO ODIN GO BYE FURY TIC 30: GREW JIVE SAN GIRD BOIL PHI
Met -n 5
worden vijf opeenvolgende
sleutels aangevraagd, 30
geeft aan wat het
laatste iteratiegetal moet zijn. Deze wachtwoorden worden
weergegeven in omgekeerde volgorde voor
gebruik. Als de gebruiker echt paranoïde bent kan hij ze
opschrijven of hij kan er ook voor kiezen ze af te drukken met
lpr
. Op iedere regel staat dus de
iteratieteller en het eenmalige wachtwoord, maar misschien is
het toch handig om ze na gebruik af te strepen.
Met OPIE kan paal en perk gesteld worden aan het gebruik van
UNIX® wachtwoorden op basis van het IP-adres
van een aanmeldsessie. Dat kan met het bestand
/etc/opieaccess
dat standaard aanwezig is.
Bij opieaccess(5) staat meer informatie over dit bestand en
welke beveiligingsoverwegingen bestaan bij het gebruik.
Hieronder een voorbeeld voor een
opieaccess
bestand:
permit 192.168.0.0 255.255.0.0
In deze regel (permit Internet
) staat
dat gebruikers met een bron IP adres (wat
gefingeerd kan worden) dat past binnen de aangegeven waarde en
masker altijd UNIX® wachtwoorden mogen gebruiken.
Als geen van de regels uit opieaccess
van toepassing is, worden standaard pogingen zonder OPIE
geweigerd.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.