This document details the type of traffic activity that occurs with iPass RoamServer software and the sequence of events in play-by-play, packet-by-packet fashion. In these examples, RoamServer 5.05 for Windows is used in conjunction with various AAA implementations commonly used by the iPass customer base. This is not meant to be a comprehensive review of all possible configurations, nor does it detail the inner workings of any protocol such as LDAP, RADIUS, or RPC.
In this example, the RoamServer machine is not a member of the domain which it is performing LDAP authentication against. This represents a potential real-world scenario, since non-members (who may be placed in a DMZ network with firewall-based traffic restrictions) or even UNIX-based RoamServers are used to authenticate users against Active Directory in light of security considerations. This setup also eliminates typical domain-related activity (such as Group Policy refresh) from the capture. Traffic with an Active Directory 2000 environment should be identical.
For reference, please observe the packet capture of this event. The RoamServer IP is 192.168.0.34 and the domain controller is 192.168.0.10. The traffic capture was filtered to observe only IP traffic between these two machines as the command checkipass.exe -u <username> -p <password> is ran with a successful authentication.
The following takes place in sequence (individual sequence numbers on this list do not represent the graph below):
1. RoamServer performs a TCP handshake with the domain controller via TCP 389. RoamServer sends an LDAP Bind Request using the bind account and password specified in the RoamServer LDAP configuration file. The Distinguished Name and password of this account is sent in clear text.
LDAP Message, Bind Request Message Id: 1 Message Type: Bind Request (0x00) Message Length: 99 Response In: 5 Version: 3 DN: CN=DeviceIDbind,OU=Service Accounts,OU=User Accounts,DC=lab2003,DC=ipass,DC=com Auth Type: Simple (0x00) Password: myBadP@SSwd LDAP Controls LDAP Control Control OID: 2.16.840.1.113730.3.4.2
2. Domain controller returns a success code in the form of an LDAP Bind Result to the RoamServer.
LDAP Message, Bind Result Message Id: 1 Message Type: Bind Result (0x01) Message Length: 7 Response To: 4 Time: 0.001229000 seconds Result Code: success (0x00) Matched DN: (null) Error Message: (null)
3. RoamServer sends an LDAP Search Request with the specified search filter:
LDAP Message, Search Request Message Id: 2 Message Type: Search Request (0x03) Message Length: 80 Response In: 7 Base DN: DC=lab2003,DC=ipass,DC=com Scope: Subtree (0x02) Dereference: Always (0x03) Size Limit: 2 Time Limit: 11 Attributes Only: False Filter: (sAMAccountName=agentsmith) Attribute: 1.1 LDAP Controls LDAP Control Control OID: 2.16.840.1.113730.3.4.2
4. Domain controller returns LDAP Search Entry results in the form of enumerated Distinguished Names in various Active Directory partitions.
LDAP Message, Search Entry Message Id: 2 Message Type: Search Entry (0x04) Message Length: 76 Response To: 6 Time: 0.000362000 seconds Distinguished Name: CN=test,OU=Technical Support,OU=User Accounts,DC=lab2003,DC=ipass,DC=com LDAP Message, Search Result Reference Message Id: 2 Message Type: Search Result Reference (0x13) Message Length: 86 Response To: 6 Time: 0.000362000 seconds Reference URL: ldap://ForestDnsZones.lab2003.ipass.com/DC=ForestDnsZones,DC=lab2003,DC=ipass,DC=com LDAP Message, Search Result Reference Message Id: 2 Message Type: Search Result Reference (0x13) Message Length: 86 Response To: 6 Time: 0.000362000 seconds Reference URL: ldap://DomainDnsZones.lab2003.ipass.com/DC=DomainDnsZones,DC=lab2003,DC=ipass,DC=com
LDAP Message, Search Result Reference
Message Id: 2 Message Type: Search Result Reference (0x13) Message Length: 70 Response To: 6 Time: 0.000362000 seconds Reference URL: ldap://lab2003.ipass.com/CN=Configuration,DC=lab2003,DC=ipass,DC=com
LDAP Message, Search Result
Message Id: 2 Message Type: Search Result (0x05) Message Length: 7 Response To: 6 Time: 0.000362000 seconds Result Code: success (0x00) Matched DN: (null) Error Message: (null)
5. RoamServer sends another LDAP Bind Request with the DN of the authenticating user as well as the password for this account (once again sent in clear text).
LDAP Message, Bind Request Message Id: 3 Message Type: Bind Request (0x00) Message Length: 81 Response In: 9 Version: 3 DN: CN=test,OU=Technical Support,OU=User Accounts,DC=lab2003,DC=ipass,DC=com Auth Type: Simple (0x00) Password: matrix LDAP Controls LDAP Control Control OID: 2.16.840.1.113730.3.4.2
6. Domain controller returns an LDAP Bind Result with a success code.
LDAP Message, Bind Result Message Id: 3 Message Type: Bind Result (0x01) Message Length: 7 Response To: 8 Time: 0.001173000 seconds Result Code: success (0x00) Matched DN: (null) Error Message: (null)
7. RoamServer sends an LDAP Search Request with a filter to enumerate all attributes of this user's objectClass:
LDAP Message, Search Request Message Id: 4 Message Type: Search Request (0x03) Message Length: 58 Response In: 11 Base DN: DC=lab2003,DC=ipass,DC=com Scope: Base (0x00) Dereference: Always (0x03) Size Limit: 0 Time Limit: 0 Attributes Only: False Filter: (objectClass=*) LDAP Controls LDAP Control Control OID: 2.16.840.1.113730.3.4.2
8. Domain controller returns LDAP Search Entry results listing the various attributes of the user's objectClass.
LDAP Message, Search Entry Message Id: 4 Message Type: Search Entry (0x04) Message Length: 3462 Response To: 10 Time: 0.000962000 seconds Distinguished Name: DC=lab2003,DC=ipass,DC=com Attribute: objectClass Value: top Value: domain Value: domainDNS Attribute: distinguishedName Value: DC=lab2003,DC=ipass,DC=com Attribute: pwdHistoryLength Value: 3 Attribute: fSMORoleOwner Value: CN=NTDS Settings,CN=SL-2003DC1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=lab2003,DC=ipass,DC=com
(display output truncated for brevity)
9. Domain controller returns an LDAP Search Result success code.
LDAP Message, Search Result Message Id: 4 Message Type: Search Result (0x05) Message Length: 7 Result Code: success (0x00) Matched DN: (null) Error Message: (null)
10. RoamServer sends an LDAP Unbind Request.
LDAP Message, Unbind Request Message Id: 5 Message Type: Unbind Request (0x02) Message Length: 0 LDAP Controls LDAP Control Control OID: 2.16.840.1.113730.3.4.2
The TCP session is then torn down. The total amount of traffic is about 5 - 6 kB.
In this example, RoamServer performs RADIUS authentication to a Funk Steel-Belted RADIUS server, which in turns performs authentication with Active Directory (since the username doesn't exist on the local Funk database). This particular Funk server is configured to search for users in its own local database first, then if it cannot find a matching username, sends the request to a secondary authentication source (in this case, a Windows domain).
For reference, please observe the packet capture of this event. The RoamServer is 192.168.0.34, the Funk server is 192.168.0.36, and the domain controller is 192.168.0.6. The traffic capture was filtered to observe only IP traffic between these three machines as the command checkipass.exe -u <username> -p <password> is ran with a successful authentication.
The following takes place in sequence (individual sequence numbers on this list do not represent the graph below):
1. RoamServer sends a RADIUS Access-Request packet over UDP 1645 to the RADIUS server. The packet includes the following Attribute Value Pairs: User-Name, User-Password (encrypted), NAS-IP-Address, NAS-Identifier (with the value “i-Pass VNAS”).
Code: Access-Request (1) Packet identifier: 0x6 (6) Length: 69 Authenticator: 3B0F4484DB77A293EF1DD9F55063816D Attribute Value Pairs User-Name: agentsmith User-Password: 8,\254b\016\246\017\355\275\313\230zRM\306- NAS-IP-Address: 192.168.0.34 (192.168.0.34) NAS-Identifier: i-Pass VNAS
2. The RADIUS server initiates a DCE RPC Requests to the domain controller for NETLOGON Secure Channel transaction on TCP 1026 (this port number was presumably established previously in a Remote Procedure Call session and assigned by the RPC endpoint mapper process on the domain controller).
3. The domain controller provides DCE RPC Responses to Funk SBR. After verifying the credentials, the RADIUS server sends the RoamServer a RADIUS Access-Accept packet. The packet includes the following Attribute Value Pairs: Class, Framed-Protocol, and Service-Type.
Code: Access-Accept (2) Packet identifier: 0x6 (6) Length: 106 Authenticator: 6CF83E990FC105AAB293BF4846FFDDF5 Attribute Value Pairs Class: 53425232434C8FB8C4DE90FEEDB887C01180350180048199... Framed-Protocol: PPP (1) Service-Type: Framed-User (2)
The total amount of traffic is about 2 kB. If the username had been in the Funk local database, then traffic would be similar to the above but without the interaction between the RADIUS server and domain controller.
In this example, RoamServer performs RADIUS authentication to IAS (Microsoft RADIUS), which in turn performs authentication with Active Directory. Internet Authentication Service does not contain a built-in user database and is designed to forward authentication requests to the domain it is a member of. The ability to authenticate users is partly based on policies set at the IAS level which control monitoring of various user attributes, such as domain group membership, auth protocol (PAP, CHAP, etc.), time of day, etc.. Active Directory's user object also contains a flag under the Dial-in tab to determine whether this policy is controlled at the domain or at IAS level. This example uses Active Directory 2000 and IAS 2000.
For reference, please observe the packet capture of this event. The RoamServer is 192.168.0.34, the IAS server is 192.168.0.33, and the domain controller is 192.168.0.5. The traffic capture was filtered to observe only IP traffic between these three machines as the command checkipass.exe -u <username> -p <password> is ran with a successful authentication.
The following takes place in sequence (individual sequence numbers on this list do not represent the graph below):
1. RoamServer sends a RADIUS Access-Request packet over UDP 1812 to the RADIUS server. The packet includes the following Attribute Value Pairs: User-Name, User-Password (encrypted), NAS-IP-Address, NAS-Identifier (with the value “i-Pass VNAS”).
Code: Access-Request (1) Packet identifier: 0x4 (4) Length: 69 Authenticator: 897499391E27B0A05BB70926CB462E94 Attribute Value Pairs User-Name: agentsmith User-Password: \302-\367\030\267\345\a\230\265e\036S\255T\365\314 NAS-IP-Address: 192.168.0.34 (192.168.0.34) NAS-Identifier: i-Pass VNAS
2. IAS initiates a DCE RPC Request to the domain controller for NETLOGON Secure Channel transaction on TCP 1026 (this port number was presumably established previously in a Remote Procedure Call session and assigned by the RPC endpoint mapper process on the domain controller). The domain controller provides a DCE RPC Response to IAS.
3. IAS initiates an LDAP Search Request, filtering with (sAMAccountName=username), and querying for user object attributes such as msNPAllowDialin, msNPCallingStationID, msRADIUSCallbackNumber, msRADIUSFramedIPAddress, msRADIUSFramedRoute, and msRADIUSServiceType.
SASL Buffer Length: 273 SASL buffer GSS-API Generic Security Service Application Program Interface OID: 1.2.840.113554.1.2.2 (KRB5 - Kerberos 5) krb5_blob: 02011100FFFFFFFF4B830F1406A16239F0A9EE613B52AF93... krb5_tok_id: KRB5_GSS_Wrap (0x0102) krb5_sgn_alg: HMAC (0x0011) krb5_seal_alg: None (0xffff) krb5_snd_seq: 4B830F1406A16239 krb5_sgn_cksum: F0A9EE613B52AF93 krb5_confounder: E058A54B8A1521C6 GSS-API payload (226 bytes) LDAP Message, Search Request Message Id: 12564 Message Type: Search Request (0x03) Message Length: 209 Response In: 5 Base DN: DC=lab,DC=ipass,DC=com Scope: Subtree (0x02) Dereference: Never (0x00) Size Limit: 0 Time Limit: 10 Attributes Only: False Filter: (sAMAccountName=agentsmith) Attribute: msNPAllowDialin Attribute: msNPCallingStationID Attribute: msRADIUSCallbackNumber Attribute: msRADIUSFramedIPAddress Attribute: msRADIUSFramedRoute Attribute: msRADIUSServiceType
4. Domain controller responds with LDAP search results.
SASL Buffer Length: 392 SASL buffer GSS-API Generic Security Service Application Program Interface OID: 1.2.840.113554.1.2.2 (KRB5 - Kerberos 5) krb5_blob: 02011100FFFFFFFF9B85E1995512297C5E8742BF59914582... krb5_tok_id: KRB5_GSS_Wrap (0x0102) krb5_sgn_alg: HMAC (0x0011) krb5_seal_alg: None (0xffff) krb5_snd_seq: 9B85E1995512297C krb5_sgn_cksum: 5E8742BF59914582 krb5_confounder: 11820DEE35154CFA GSS-API payload (345 bytes) LDAP Message, Search Entry Message Id: 12564 Message Type: Search Entry (0x04) Message Length: 71 Response To: 4 Time: 0.001172000 seconds Distinguished Name: CN=agentsmith,OU=Technical Support,OU=People,DC=lab,DC=ipass,DC=com LDAP Message, Search Result Reference Message Id: 12564 Message Type: Search Result Reference (0x13) Message Length: 62 Response To: 4 Time: 0.001172000 seconds Reference URL: ldap://child2.lab.ipass.com/DC=child2,DC=lab,DC=ipass,DC=com LDAP Message, Search Result Reference Message Id: 12564 Message Type: Search Result Reference (0x13) Message Length: 62 Response To: 4 Time: 0.001172000 seconds Reference URL: ldap://child1.lab.ipass.com/DC=child1,DC=lab,DC=ipass,DC=com LDAP Message, Search Result Reference Message Id: 12564 Message Type: Search Result Reference (0x13) Message Length: 62 Response To: 4 Time: 0.001172000 seconds Reference URL: ldap://lab.ipass.com/CN=Configuration,DC=lab,DC=ipass,DC=com LDAP Message, Search Result Message Id: 12564 Message Type: Search Result (0x05) Message Length: 7 Response To: 4 Time: 0.001172000 seconds Result Code: success (0x00) Matched DN: (null) Error Message: (null)
5. IAS sends the RoamServer a RADIUS Access-Accept packet. The packet includes the following Attribute Value Pairs: Class, Framed-Protocol, and Service-Type.
Code: Access-Accept (2) Packet identifier: 0x4 (4) Length: 64 Authenticator: D6B16804061D6EE85376E2A0A904BB51 Attribute Value Pairs Framed-Protocol: PPP (1) Service-Type: Framed-User (2) Class: 5F9406B9000001370001C0A8002101C5E0D7F126ADB10000...
The total amount of traffic is about 2 kB.
In this example, RoamServer (installed on Windows Server 2003) performs NT authentication to an Active Directory domain. The type of traffic will differ with an NT 4.0 domain or NT 4.0 machines due to the type of authentication protocol support and their associated ports. RoamServer's NT authentication method is dependent on Windows' built-in authentication subsystem which is composed of several entities that coordinates the user authentication process. UNIX or Linux RoamServers cannot perform NT authentication since they do not contain operating system code necessary to perform this function. Furthermore, there is no support for attempting this on a UNIX / Linux system utilizing the Samba package for Windows domain integration.
In order for a Windows host to perform NT authentication in a domain, the host must be a member of that domain (or at the very least a member of a trusted domain). The NT Local Security Authority (LSA) subsystem, which processes logons onto a machine's desktop interactively, utilizes one of two processes:
The LSA determines whether to authenticate with the local SAM or the domain controller based upon the login “DOMAIN” field (typically the third field in the Microsoft GINA login dialog), indicating either the local machine name or the NetBIOS domain name. If the machine is not a member of a domain, this third field does not exist for user interaction since it is in “Workgroup” mode. In “Workgroup” mode, the DOMAIN value becomes the NetBIOS hostname of the machine itself.
RoamServer does not provide an NT DOMAIN value when processing iPassConnect authentication requests. Therefore, it sends the username and password to the LSA, which processes it first with the local SAM, and then if it doesn't find a matching username, will invoke the Netlogon process to authenticate with the domain (assuming the machine is a domain member).
For reference, please observe the packet capture of this event. The RoamServer is 192.168.0.34 and the domain controller is 192.168.0.5. The packet capture was filtered to observe only IP traffic between these two machines as the command checkipass.exe -u <username> -p <password> is ran with a successful authentication.
The following takes place in sequence (individual sequence numbers on this list do not represent the graph below):
1. RoamServer initiates a DCE RPC Request to the domain controller for NETLOGON Secure Channel transaction on TCP 1026 (this port number was presumably established previously in a Remote Procedure Call session and assigned by the RPC endpoint mapper process on the domain controller).
2. Domain controller provides a DCE RPC Response to the RoamServer over the same NETLOGON Secure Channel path.
The total amount of traffic is about 1 kB. However, note that in order for this to take place, the machine must have previously authenticated its domain machine account as it was connected to the network, either at boot time or when network connectivity was established. It must have also been able to determine the location of the domain controller by DNS SRV query (or via WINS / lmhosts / broadcast if NT 4.0). Default authentication protocols and available security support providers between NT 4.0 and 2000 / 2003 will also be different, and the prerequisites stated above will have different combinations of traffic established beforehand.