<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    On 01/14/2014 05:23 PM, Nordgren, Bryce L -FS wrote:
    <blockquote
cite="mid:82E7C9A01FD0764CACDD35D10F5DFB6E66C358@001FSN2MPN1-044.001f.mgd2.msft.net"
      type="cite">
      <pre wrap="">
</pre>
      <blockquote type="cite">
        <pre wrap="">Both AD integration solutions we have (synchronization and
cross-forest domain trusts) assume having higher level access
privileges at the time integration is set up.
</pre>
      </blockquote>
      <pre wrap="">
My problem here is that I'm too ignorable. :) There's over 15000 users in our AD; I'm in Montana, the admins are in DC. Worse, our agency's AD is being absorbed into the next level up the chain (Forest Service AD is going to become a part of the overall USDA AD). Then I'm an even smaller fish, relatively speaking.

</pre>
      <blockquote type="cite">
        <pre wrap="">I'm unaware of other
mechanisms that would give you the same flexibility and level of
privilege separation between the AD and IPA domains.
</pre>
      </blockquote>
      <pre wrap="">
?? The current solution using the LDAP interface to AD (and a metadirectory to merge "external users") provides privilege separation and the flexibility to add external users. I don't need more; I just need it to be less clunky. It weakens security, of course, as my AD password is stored in various plaintext configuration files for each application needing binding credentials to search for users in AD. I also have an index to which files contain my password, as it forms a "password-change-checklist" which I need to run thru every 60 days.

If I might try to repeat the problem back to you to see if I got it right...the factor which requires access to the corporate AD is setting up a Kerberos cross realm trust. This is required so that machines in IPA can connect directly to AD for authentication. This in turn is necessary so that identities in the AD Kerberos Realm are correctly and consistently identified as being sourced from AD. And of course, this requirement is necessary for services in AD to recognize users and groups in AD.

Let me ask what is probably a series of dumb questions: What do I lose if my FreeIPA server is set up as one of the 10 machines I can join to the network as a regular user, and all the machines in IPA connect directly to IPA? Could FreeIPA (current or future) be configured to relay the credentials to AD either via Kerberos or using AD's LDAP interface (binding as itself because it's joined to the AD domain)?  If AD accepts the provided credentials can FreeIPA issue the user a ticket in the FreeIPA realm? Would this look to AD like a bunch of users are logging into the FreeIPA server machine?

I know this arrangement would sacrifice access to any of the AD services by AD-users-on-the-IPA network. That's fine. If it's technically feasible, tho, it gives me one server that can authenticate both "corporate users" and "external users", and a central administration point for the external network. It also plainly differentiates between corporate users logged in on the corporate network, and corporate users logged in on the "external network". I'd consider that a good thing. Finally, if this is possible, it seems to me that this stands a chance of reducing the number of places my password is stored in plaintext.

Bryce

</pre>
    </blockquote>
    You might be able to do one of the following hacks. I am saying hack
    because no one tried to do it and it might not work and hit some
    bugs and issues.<br>
    <br>
    1) Use pam proxy capability. If you bind to IPA DS via LDAP you can
    configure users to authenticate using pam proxy feature of DS and
    via pam point to AD. This has limitation that it works only for LDAP
    binds but not for kerberos so your clients would be deprived off
    SSO. Alternatively you can separate external and internal users.
    Internal users would be able to do LDAP only while external users
    since they would be stored in IPA would be able to do both. AFAIU
    this is not what you want. <br>
    2) IPA in 3.3 uses compat tree to present AD data to legacy clients
    and allow bind to that tree. This is just LDAP so has similar
    limitations. I suspect it would also rely on the presence of trust
    to be able to bind to AD but I am not sure. Alexander, CCed would
    have more details to share for this case.<br>
    3) Finally the grand hack that actually might work. IPA 3.3 and 3.4
    that is being worked on have OTP support. You will setup winsync to
    sync AD users (one way from AD), you will make sure that these users
    can't be modified in IPA via permissions and ACIs so that you do not
    get into the situation when users become different in IPA and AD.
    Since you own IPA you will have full control so this part is really
    up to you. When users are synced in you will add a way of setting
    additional attributes for the synced in users. I am not sure if this
    can be done without adding a DS or Winsync plugin but I think it
    would not be a lot of code for you to do (may be there is a trick
    that I do not know that might be done to avoid writing a plugin, see
    below). As a result the synced in users will have following
    attributes set: <br>
    <strong></strong>ipatokenRadiusConfigLink - this attribute should
    point to a RADIUS server configuration object. There will be one
    such object (see below). All synced in users will point to its DN
    via this attribute.<br>
    ipaUserAuthTypeClass - this attribute should specify that the user
    should use RADIUS for his authentication. I.e. the value should be
    "radius".<br>
    Corresponding object classes that these attributes belong to should
    already be a part of user object by default in 3.4 (Nathaniel?)<br>
    Now back to plugin. Since all the synced users will have the same
    values for these two attributes it might be possible to avoid
    writing a plugin. I just do not know how.<br>
    <br>
    Now you add the RADIUS object via UI or CLI. You actually do it
    first before setting up winsync. Some hints can be found here:
    <a class="moz-txt-link-freetext" href="http://www.freeipa.org/page/V3/OTP">http://www.freeipa.org/page/V3/OTP</a>. The RADIUS configuration should
    point to some RADIUS server. If there is a RADIUS server in your
    organization you might point to it. Otherwise you can setup
    FreeRADIUS and use its LDAP or pam configuration to do an LDAP bind
    against AD.<br>
    <br>
    You can then add "external" users  as normal IPA users without
    setting any extra attributes for them.<br>
    It might be possible to avoid writing a plugin by actually not
    setting anything for synced users, defining a global
    ipaUserAuthTypeClass as "radius" and defining ipaUserAuthTypeClass
    as "passord" for any manually added external user. However I am not
    sure if that would work (I suspect there might be a bug there).
    Nathaniel, when you set global policy to "radius"<br>
    <pre>ipa config-mod --user-auth-type=radius

</pre>
    which radius configuration would it pick? How would it work?<br>
    <br>
    So let us assume that the bug is not there and things would work.
    Let me summarize my thinking...<br>
    <br>
    <br>
    1) Install IPA<br>
    2) Install RADIUS server, configure it to authenticate against AD<br>
    3) Add RADIUS server configuration to IPA using 'ipa
    radiusproxy-add' command<br>
    4) Set ipaUserAuthTypeClass attribute to 'password' for your admin
    user. You can do it using 'ipa user-mod ... --setattr...' command.
    If you do not do it I suspect you lock yourself out by the next
    step.<br>
    5) Set global IPA policy 'ipa config-mod --user-auth-type=radius' -
    that will force all users without ipaUserAuthTypeClass explicitly
    set to authenticate using RADIUS.<br>
    6) Setup one way winsync agreement with AD (that might require some
    tweaking of the winsync configuration, Rich?). Follow docs.
<a class="moz-txt-link-freetext" href="https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Identity_Management_Guide/index.html">https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Identity_Management_Guide/index.html</a><br>
    7) Always set ipaUserAuthTypeClass to 'password' when you add users
    (you can probably wrap 'ipa user-add' command with a specific shell
    script to always add it in your case. <br>
    <br>
    That seems to be it. External and internal users would be able to
    authenticate using kerberos while internal users will use their AD
    passwords but it will be IPA that would issue the tickets.<br>
    <br>
    I suggest you start will latest bits from a nightly repo as I know
    there have been bug fixes in this area that are not released yet.<br>
     <br>
    <blockquote
cite="mid:82E7C9A01FD0764CACDD35D10F5DFB6E66C358@001FSN2MPN1-044.001f.mgd2.msft.net"
      type="cite">
      <pre wrap="">




This electronic message contains information generated by the USDA solely for the intended recipients. Any unauthorized interception of this message or the use or disclosure of the information it contains may violate the law and subject the violator to civil or criminal penalties. If you believe you have received this message in error, please notify the sender and delete the email immediately.


_______________________________________________
Freeipa-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Freeipa-users@redhat.com">Freeipa-users@redhat.com</a>
<a class="moz-txt-link-freetext" href="https://www.redhat.com/mailman/listinfo/freeipa-users">https://www.redhat.com/mailman/listinfo/freeipa-users</a>
</pre>
    </blockquote>
    <br>
    <br>
    <pre class="moz-signature" cols="72">-- 
Thank you,
Dmitri Pal

Sr. Engineering Manager for IdM portfolio
Red Hat Inc.


-------------------------------
Looking to carve out IT costs?
<a class="moz-txt-link-abbreviated" href="http://www.redhat.com/carveoutcosts/">www.redhat.com/carveoutcosts/</a>


</pre>
  </body>
</html>