Differences

This shows you the differences between two versions of the page.

Link to this comparison view

roamserver_network_traffic_analysis [2014/03/03 22:23]
ybarajas [NT Authentication (with Active Directory)]
roamserver_network_traffic_analysis [2014/06/12 23:11] (current)
ybarajas
Line 1: Line 1:
 +====== RoamServer Network Traffic Analysis ======
  
 +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.
 +
 +<note>To view the network capture files provided, use a packet capture utility such as Ethereal. The WinPCap library is not required to view these files.</note>
 +
 +===== LDAP Authentication (Active Directory 2003) =====
 +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
 +            
 +{{:graph analysis.gif?direct&500 |}}            
 +
 +The TCP session is then torn down.  The total amount of traffic is about 5 - 6 kB.
 +
 +==== RADIUS Authentication (Funk SBR proxying to Active Directory) ====
 +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)
 +        
 +{{:graph_analysis_2.gif?direct&500 |}} 
 +
 +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.
 +
 +==== RADIUS Authentication (IAS /Active Directory) ====
 +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...
 +
 +{{:graph_analysis_3.gif?direct&500 |}} 
 +
 +The total amount of traffic is about 2 kB.
 +
 +==== NT Authentication (with Active Directory) ====
 +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. 
 +
 +=== Background ===
 +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 Winlogon process to authenticate local machines accounts with the local Security Accounts Manager (SAM) database. 
 +  * The Netlogon process to authenticate domain accounts by contacting a domain controller via the operating system's Security Support Provider Interface (SSPI) using one of the available SSPs, such as Negotiate, Kerberos, NTLM, etc.; the SSPI is Microsoft's implementation of the Generic Security Service API (GSS-API). 
 +
 +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.  
 +
 +{{:graph_analysis_4.gif?direct&500 |}}
 +
 +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. 
 +
 +Go to: **[[dokuwiki_other|Other Product Documents]] > [[roamserver_help|RoamServer Documentation]]** 
 +
 +{{tag>roamserver}}
 

©2015 iPass Inc. All rights reserved. Terms of Use