WWDC2003 Session 607
Transcript
Kind: captions Language: en anyways we're here to talk about Apple open directory in specific authentication based on your support last year of the overflow room at San Jose they decided to give me two sessions this year so you can be bored this afternoon and I look forward to seeing all of you tomorrow and tomorrow morning's open directory sessions as the announcers said I'm David Rourke I'm the engineering manager for open directory and today we're going to talk about authentication what I'd like to do is review the current Jaguar feature set because I know everyone here some of the people might be new we're going to cover new features for authentication they break down into three basic areas we have local authentication open directory password server and what we're doing in that space Apple sink and Apple single sign-on / Kerberos implementation will do a summary we'll do a wrap-up and hopefully we'll have some time for Q&A if I don't go too long so Jaguar authentication the product that most of you probably had installed on your power books before we gave you the developer CD Jaguar currently support scripps all of us are familiar with crypt it supports the open directory password server it currently supports Kerberos its support cell defined and it supports any other method of authentication if you implement an open directory plug-in in Jaguar we introduce the new notion of a user attribute called the authentication Authority which is a hint to Jaguar as to how to best authenticate this user you're going to see later in this presentation and throughout the Panther process that we're going to start leveraging the authentication is already much more into the future so what authentication Authority values do we have right now we have basic and this is an attribute stored any user record and if its values basic it basically says the users using crypt if this attribute is absent we also assume the users using crypt because any existing user record that was crypt based didn't have an authentication authority so really the basic authentication authorities there for intellectual completeness that doesn't serve any purpose other than to clearly indicate this user script based the new attributes that we introduced in Jaguar was the Apple password server attribute this consisted of a keyword Apple password server which is up on the screen it's followed by a ID a public key of the password server and the network the password server that you would contact to authenticate this is how an LDAP or net info we indicate that the users authentication request should be redirected to talk to the Apple password server so for Jaguar changes we had a lot of infrastructure work to do we had to get login window onto directory services we had to get the church framework on the directory services we had to pama Phi the entire core OS most of the FreeBSD code we adopted wasn't adopting an API abstraction and because of that we couldn't replace the Crypt password and if we did these apps would would would break and we had the directory service api's of course had already supported this so the major accomplishment for Jaguar last year was that we managed to get most of apple's offer to not care how passwords are handled in puma or ten one that was not the case if you remove the crypt password there was a lot of software that broke so the major accomplishment for Jaguar was we got all of apple's software cleaned up not to care the open directory password server was also introduced with Jaguar with Jaguar server it's a password server is based on the open standard of saffell and it provides comprehensive network authentication supports for a wide variety of network protocols how many people have heard of a pop how many people have heard of crammed md5 NT land manager sha-1 shall I keep going the password server supports all of these methods so that you can have a single password supported across multiple network authentication protocols for those of you who have implemented authentication systems this is no easy trick so the authentication methods that we support with password server our md5 digests cram md5 in team land manager a pop webdav digest to a random and Apple's own disi Hellman exchange which is used by AFP I've associated the most common protocols that use each of these off methods but any protocol could in theory use any protocol any off method but you know and typically these are what their associated with all of these methods are secured to some degree if you believe network challenge response protocols are secure so none of these disclose the clear text password on the wire but all of them are necessary to support various network server protocols so last year I had a slide which I heard after the feedback was quite popular just runs you a quick diagram through how a password server authentication works for logging on to a mythical network service and I'd like to drop in a network so we have the mac OS 10 client it will be talking to the jaguar server AFP ftp IMAP SMB it's going to look the user record up in a directory server and it's going to verify that with a password server so the first thing that happens is the mac OS 10 client contacts the jaguar server and says hey I want AFP service I'd like to do to a random number exchange in my name is George the Jaguar server takes George looks them up in the directory server and what it retrieves from the directory servers George's name George's UID and in the very most important attribute as it retrieves the otha thority the author thority indicates that George is password server-based and this is the network address that this user should go to so the Jaguar server contacts the password server and conducts a network based authentication choosing an appropriate authentication method the password server responds with success even if the passwords wrong no I'm just kidding and the Jaguar server says you can log on or says no so this is very similar to Kerberos authentication for those of you but its password server based and there's no credential management going on here but the password server is the repository of the users passwords there are several advantages to the password server it maintains a single password for all network protocol part of apples strategy if you haven't heard this is we take open source offer make it easy to deploy well a lot of network administrators don't want to set a separate password databases for all their different networking protocols they want to create a user one so they want to assign a password once and they want to know that that user can log on to every single network protocol they might turn on today or tomorrow so the password servers role is to maintain a single password for all possible networking protocols that we support that remains weak that means we need to allow support for secure legacy network authentication protocols if you don't have this requirement you don't have to have a password server if you do have this requirement you have to have a password server most people have this requirement it also supports long passwords up to 511 bytes I picked bytes and not characters because utf-8 isn't necessarily a single byte per character for arbitrary strings it may be you know as little as 200 characters to the user types but it is 512 bytes it enforces password policies for all accounts it's not subject to hacking by download of hashes how many people are familiar with offline dictionary attacks in the audience you can't do that with the password server not even this password server administrator can capture the the hash is out of the password server database there's no known attack that I know of on the pastor server that can get the hashes into a user's hand where they can work them offline it supports standard security techniques such as slowing down unsuccessful failures policy to shut down the account after three or four failed attempts all of those standard things and more importantly it also has its own RSA public-key private key pair so the password server can't be spoofed in the design if you could set up the password server and take over an IP address and just have a password server that said yes every single time the client would trust what the password server would say and allow that user logon well the client when it's contacting the path server actually challenges the password server to prove it notes the private key so you cannot spoof being a password server on the network and we're going to leverage this more for some of the new features in jaguar jaguar Kerberos support thanks to our MIT brethren Jaguar came a full Kerberos support MIT provided us with a very robust Mac os10 Kerberos client an apple provided configuration documentation a lot more than what's listed here but that's one example document that Apple provided us how to configure Kerberos from Jaguar Apple carburized many servers and clients in the Jaguar timeframes there's the list for Jaguar client we Kerberos AFP weaker barytes the necklace chain mail application we terber eyes login window and kerberos helmet in Jaguar server we Kerberos AFP we Kerberos imap smtp I think we Kerber eyes pop did we curb eyes pop Marshall I don't know okay and we terber eyes the ftp server that we shipped with Jaguar server so Jaguar we did a lot of things we expanded to set of choices for authentication we abstracted the entire operating system to not care how passwords are managed and Panthers going to introduce any even more change now that we have these building blocks so what I'd like to get into is what you're all here for which is to talk about what we're doing an authentication for Panther and first we're going to talk about what changes we've made to local authentication and what I mean by local authentication are the user records that are kept locally on your powerbook that are created by the setup assistant or by the local system pref think not user records created by the server tools the first thing that most of you should stand up and applaud as crypt is dead there is no readable trip password the default local authentication is now stored in a shadow file for all local user accounts and that's strange bulleting there i had that file without a bullet file for all local user accounts is not its own bullet point anyway crip still works but no administration tools on Panther will create a crypt user no administration tools will create a crypt user it is not broken it's continued to be supported if there are legacy crypt users they will work just as well as they've always worked but no GUI tools that we ship with Panther will create the users with tripped your application should not be relying on crypt passwords Panther will break applications that require a readable crypt password this is not a bug it is a necessary evolution of the OS for us to close the security hole if your application requires a readable crypt password to authenticate a user you must adopt a password verification abstraction there are three abstractions that you could adopt to get off of readable crip passwords you could use Pam which is a pluggable authentication module from Linux we supported on mac OS 10 if you adopt Pam your application will not care how passwords are authenticated you can call the security framework it does a number of services for you I attended an excellent overview by the security team of the authorization framework you can adopt the security framework to do your password verification or you could work with us and adopt the directory service api's to do all of your passwords verification if your applications not using one of these api's it will break and has already been broken when running on Panther in your saw in the CD that we've distributed to you with Panther the default local user created by the setup assistant does not have a crypt password if you can't authenticate in your application with that user record it's not a bug in the OS it's a design decision and a security hole that we finally patched just in case this isn't clear your application is not using one of these api's it will break when running on Panther by the way your applications already broken on jaguar with the password server based user but most people don't know that and most people haven't tested with network users so this is not something new we're just tightening the noose a little bit in order to keep you guys employed so what have we done for the authentication authority matrix well we had basic that's crypt we still support that if you create a user you set the office thority to basic you'll get a Crip password we don't recommend it it's not secure we have the apple pastor server no changes there we still support the password server but we've added a new attribute that we call shadow hash a user record with an authentication authority of shadow hash indicates that a user record has a password hash stored in flash flour / DB / shadow that file is root readable only not even admin readable it's readable only to read the hashes out of that database you have to have root privileges on the local machine and on Panther root is not enabled by default so this is a secure as any system we know about the stores the passwords locally on a hard drive Panther stores all of its passwords for local users in VAR DB shadow it's a secure file system directory we use a sha-1 hash to store the password we have support for more than eight characters so those of you who want a character support and want it to be significant to more than a character support we now support that the system is no longer subject to hash download attacks of students cannot walk up to your lab machines run in I dump and walk off at the password database crypt is still supported as i said but no administration tools and Panther will create a crypt based user and all of the Panther command line tools that we've been able to identify have been updated to use the directory service api's to change passwords so you can now use change pw change password all the tools we found now use the DS API so you can change your passwords through command line or through the GUI so that's local authentication so authentication and Panther continues because we haven't been idle on what to do with network authentication as well so there are new features for the password server we have new authentication methods in the Panther password server we now support secure multi-master replication so the password server you can distribute copies of the Patrick server around your network and we've upgraded the client so the client knows about the replicas and will fail over to use a replica when one of the rep talking to you goes away we now have global and per user policies used to only be able to set password policies / user record which meant if you wanted to start in a global change you had to visit each user record well that was silly so we fixed it to have global policies and we're integrating support for Apple's Kerberos server which is really mi T's Kerberos server and I'm going to come back to that later in the presentation it's better performance there's far less networking traffic and extremely embarrassing faux paws takes 14 packets to authenticate a user on the password server how many of you think that's just hideous okay we fixed it and now takes two packets by the way if anyone can figure out how to do the authentication and single packet I want to talk to you after the session better performance less networking traffic and we have many new command line tools to automate policy management there's now a pw policy tool which lets you set all the policies from the command line it's an user / a spin on the server give it a try it has a man page the new authentication methods is we've added support for VPN authentication VPN a typical authentication method requires ms chap to the password server now offers ms chap to support and we and if you attended the server detail overview many of you are familiar now we have a PDC we had to had several authentication methods to support hosting a PDC so we added a number of auth methods so that we could host windows primary domain controllers so pastor server authentication methods look like this we have md5 digests that's supported on both platforms we have crammed md5 we have in TN land manager we have a pop we have webdav digest we have MS chap 2 which is new and only supported on Panther and we are retiring to a random every AFP client it's supported in Jaguar we're removing it in Panther because everybody since eight point one uses diffie-hellman the dhx exchange so to a random wasn't being used that much when we profiled all of our user data and there's some issues with it so we're retiring to a random and tim server there are other enhancements to the password server so new password policies I went over this global and / user password policies we now allow the policy to be set in one place so you can change your passwords from a minimum a character's to minimum 12 characters by making one single change or you can override for certain users there's that user who's calling you a lot on the phone line you don't like them you can set the password policy for them to be like 18 characters as a minimum password although I think that might cause more phone calls quite sure whether that's a good thing we have many new password policy features we have history we have character set requirements and there's a new tool for password policy management pw policy it's easier to show the new features than inventory them so i'm just going to throw up the screenshot and let you all get a good look at it so we can disable an account on a certain date we can disable an account after a certain number of days we can disable an account after a certain number of days of inactivity and inactivity in this realm is defined as successful activity so failed attempts don't keep this keeps us alive they have to have logged on successfully at least once within that period of time and we have the of course after certain number of failed attempts passwords must be a certain number of characters that contain at least a letter contain at least one numeric differ from the account name differ from the last ex passwords used and be changed every X minutes days months or years per user policies are a subset now you can override the global policies on a per user basis so I could go into a particular user say I've hired a contractor to come onto my site I want to disable it when the contractor goes away I can set a disabled logon you can see all of this in workgroup manager those are some of the policies we're supporting now and Panther secure replication slepping passwords around the network in the clear is not a good idea so when we designed replication from day one we've leveraged the public key private key pair that the password server have notes we use the ssh-keygen we don't share the ssh key but we use the exact same keygen tool that ssh uses to generate our keys so we are basing our replication on encryption done by using the public key private key pair that is already present on every password server that's already been deployed on jaguar replication can occur on change or it can occur periodically like every 20 minutes every half hour all replicas can accept change password that means if you're cut off from the mothership for a period I'm your users can still reset their passwords and when the replication occurs we merge the data and we do all the right things and knowing you know who has the later record all of that sort of stuff that you would expect from a professional server organization all replication sessions are encrypted in to end with 128-bit key using rc5 encryption that we get from the security framework there is no clear text data tapped at any time during password server replication I'd like to repeat that we never have the clear text on the wire client replica discovery is quite exhaustive if you have a replicated system but your clients are still beating on the same IP address it doesn't do you any good so we came up with a multi-layered approach for the client to discover a replica the replica picking is transparent to anyone using the directory service api's or any the higher-level api's you don't have to know that a failover is occurring replica discovery is done in parallel if you have 20 servers deployed in nineteen of them are down and you have a two-minute network timeout I doubt your user wants to make weight 38 minutes to find that the 20th replica so we discover the replicas in parallel the first thing we have we have a local cache file on on the Haute on the local machine that knows the IP address list of all the replicas for the password servers if we find the password server there we'll start working with that IP list first obviously in the genesis case we don't yet have that replica cash so we move on to a configuration record in the directory server so there is a config record in the LDAP directory server that is for the password server and it lists all the IP addresses of the password server the client downloads that configuration record and populates the cache file with that list we also use rendezvous which I'm going to come back to because we have public key private Carrie we can actually use her on demand is still secure and as a last ditch attempt we assume you might be trying to log on to a server for which you've changed its IP address and so will loop back to the local machine to see if a password servers running locally and authenticate there and the last resort will actually use the network address listed in the authentication authority if replicas available I think we'll find it I want to go back to the rendezvous case real quick the password server registers rendezvous using its public key we know the password server's public key so we can actually ask her on Naboo is there any password server on the network with with this public key now we don't trust that that password servers actually who says we still engage in the challenge to have that client proved to us that knows the private key but we were able to leverage rendezvous to use the service discovery protocol so that you can change the IP address of your password server and your clients will find them using rendezvous we thought that's pretty slick thought I might point it out to you where you have some security fallback it's kind of nice to combine rendezvous which is local network broadcast authentication or discovery with a secure authentication challenge Mike could be used for ssh as well and haven't thought about it much so integrated Kerberos support how many of you haven't heard that Apple's moving in a big way toward Kerberos okay so we are integrating test Luke's okay Apple will ship in enhanced MIT KDC I'm not sure the MIT team would think it's enhanced but no we're going to enhance it the enhancements will allow the pass or server in the KDC to share and synchronize their passwords and policy information Apple's KDC will leverage password server replication so all the KDC data will be funneled through password server replication sessions and from a customer's point of view the pasture server in the KDC or a single system so they won't know that they deployed a KDC they hopefully won't care because and if they do care we can say we're using Kerberos and then that should shut them up so legacy authentication support is still provided by the password server so what we have is in our opinion is the best of both worlds we're moving toward Kerberos but we aren't holding your legacy non Kerberos client hostage they can still engage in legacy authentication so this brings us to apples single sign-on strategy which is the last section of my presentation single sign-on this is defined as by my management as a user typing a password in the log on window and not having to worry about it ever again so Apple's adopting Kerberos as our network single sign-on approach Apple facing all of our Kerberos work on the MIT kerberos implementation Panther can be configured to work with existing Kerberos deployments Apple is not changing Kerberos we're tweaking the KDC but we're not changing Kerberos all we're really doing and I didn't realize this until we are almost done is we're providing configuration tools to make it easier to adopt Kerberos is excellent but Annapolis opinion has suffered some barriers to adoption and I'd like to go over some of those barriers so that hopefully you guys will share with me what you think we're actually adding that we're we're adding value so the first barrier to adoption is you needed a KDC you're required to deploy a KDC and up until now that's been quite an effort and up until Panther there was no KDC that ran on mac OS 10 I think heimdal ran but there was no am I TKD see that ran on panther or jaguar directory services integration this was actually fun Marshalls going to laugh at this but when we met four years ago at WWDC and San Jose what we'd realize is there were lots of Kerberos deployments in the world but none of them had standardized how do you integrate with the directory every site had done something slightly different so that's a barrier to adoption how do you integrate with the directory system lack of integrated user account management I mean there's lots of scripts and stuff but there's no GUI tool where I can say create a user and it also creates a kick with the Kerberos principle and does all the things you need to do you had to register all your hosting services so if I wanted to turn on an HP server I had to remember to create a host principal in my Kerberos server I just couldn't turn the piece over on or mail or some touch command line level configuration of the Kerberos clients I mean I can handle that but I don't think most of our customers can and there was no support for legacy network authentication if you deployed Kerberos there was no way for me to do an Indian land manager authentication for the windows 95 client that's never going to be curb erised so how do I get onto my SMB servers if it's been curb erised so we saw these as barriers to Kerberos adoption and the first thing we did was set out to dry each one of them so for Panther server requiring a KDC well we got that covered Panthers shipping with a full KDC set up by default if you complete the setup assistant on a panther server and have turned on a directory server you have deployed a KDC end of discussion no arguments no ifs no ands no buts directory server integration all the directory server tools and Panther know about the KDC and use the KDC lack of integrated user account management workgroup manager when you create new user will create a Kerberos principle for that user as well as a password server entry registration of all hosts and service principles if you complete the Panther setup assistant how many of you saw the cool auto setup assistant demo if you turn on all the services that you can turn on from Panther if you complete the setup assistant and there's a Kerberos server on the network we will have already pre-registered all the host principles for you for those services even if you haven't turned them on command line level configuration Panther desktop will optionally auto configure itself out of Kerberos there will be no command line configuration in Panther of Kerberos there can be if you prefer that but there will be no bottom there will be an option to have auto configuration no support for legacy network authentication we got that covered with the password server its whole reason for being as legacy network authentication we've integrated it with the KDC so you can have the best of both worlds you can support 50 / you can support ninety-five percent of your network as carburized and one or two machines that need to come in through a legacy protocol still can and still have the same password so Kerberos will be fully supported in Panther the Apple single sign-on changes don't modify Kerberos all we've done is provide some automated tools to assist the user with configuration Panther server will be Auto configured to use kerberos if Panther directory services are deployed but what about integrating with non-apple Kerberos systems well how many people deployed Kerberos at their site you guys already know how to do this so the way you'll do it for panthers the same way you've always done it for panther you've already you're already comfortable with the KDC you know how to create host principles there will be no difference in deploying Panther into an existing Kerberos deployment if you deploy our KDC you get the auto set features if you don't put a player out of our KDC you set it up the way you've always set up services to use the KDC the administrator is therefore responsible for the Kerberos configuration so I get this question a lot how does pants are actually auto configure Kerberos well we're using the authentication authority we now have defined an authentication authority in the user records with keyword of guess what Kerberos if we see an authentication authority with kerberos logon window will rummage around in the directory looking for kerberos config information and auto configure the Kerberos client if your directory contains that information your pants our client a lot of configure to use kerberos if your directory does not contain that information it will do nothing most directories don't contain this auto config information because we haven't told you what it is yet so your rest assured the Panther will not be automatically configuring Kerberos out of your directory system because we haven't even figured out ourselves yet with the final format of the data is but we will sites can add the auto configuration data to legacy deployments that they want we'll set it up for you automatically so we're leveraging the existence of the authentication authority in the user record and that will trigger Panther to look for config information to configure the client to use kerberos so customers can choose customers can choose to deploy Apple services and kerberos will be easier than ever many of the barriers to Kerberos adoption have been addressed in panther or customers can configure panther to work with existing Kerberos deployments no different than how they do other platforms so it's really up to use and network administrators to which system you deploy but either way Panther will support Kerberos authentication long term Apple is investing heavily in Kerberos where Apple can be an 800-pound gorilla we can actually make a lot we can actually make a lot of changes let me repeat the first statement we are investing heavily in Kerberos you should probably be doing the same we are aggressively migrating all of our networking products to be Kerberos based if it's appropriate we're going to ship at KDC we already ship a client in session 108 is a must-attend for any network services developer so you can learn how to use the Kerberos API all kerberos all the time is an apple future and yours planned today for the changes you know are coming I'd like to wrap it up at this point so Jaguar introduce new authentication support Panther has changes in three important areas we change local authentication and not bcrypt based we've enhanced the open directory passer server to be fully replicated there's new auth methods new policies new tools and apples aggressively working on making it trivial for server administrators to deploy Kerberos on their network an interesting history through the years is we started out with mac OS 10 oh and it's supported crypt 10-1 we added crypt ldap buying in the dfa p is for Mackel is 10 too we support crypt ldap Kerberos vs API password server Pam and security framework and for Panther we've dropped crypt we still have all the leg all the other support but we've added replication and moving out into the future Kerberos was more and more of the story and we're going to be working with MIT to define how that evolves and what and what we do there's some roadmap the security and architectural overview you should really go back in time and listen to that yesterday 108 is on thursday at 9am best Kerberos for mac OS 10 the immaculate end server of reviews also an excellent thing for time travel that was a 2pm Mackeson server and deaths preceded this so three of the sessions have already happened directory services is tomorrow I will be emphasizing the authentication far less and tomorrow's talk will be talking more about the enhancements to ldap and other things managed desktop technologies is heavily based on directory services i recommend if you're interested in directory services and authentication that's an excellent session and network security best practices is on friday at ten-thirty if you have any questions you can contact me or skip Levin's and for more information here's a list of documentation and open source references we have the directory service API documentation directory services is open source as part of Darwin we have the open directory SDK we have Mackel can't server documentation I particularly recommend the one in the technical briefs called open directory that's an excellent tutorial on the overview of what a directory system is we have mac lyst an ldap schema which is stored in the openldap configuration files and we have the mac-10 security api's there's also some third party sites openldap as an excellent ldap server saffell is done by carnegie mellon we base our password server on the sasal protocol pam is pam and it's a Linux password abstraction and there's Kerberos of course is web mit.edu / Kerberos Oh somebody added this slide I haven't seen it so who to contact about Kerberos would be on dreis wind occur is that correct Bob Fraser Katherine wink and enterprise level web object support and consulting I'm not quite sure that's appropriate for this session but maybe it is we have some more reference libraries that appear somebody cut and paste some slides into my presentation