IP Library › Granted Patent US 9,467,454
Granted Patent B2
US 9,467,454 · App. 14/634,000 · Granted Oct 11, 2016

Systems and methods for network filtering in VPN

Inventors: Vipin Aravindakshan (Bangalore, IN); Krishna Kumar (Bangalore, IN); Anand Kummur (Bangalore, IN)
Assignee: Citrix Systems, Inc.
H04L63/101G06F9/45533H04L43/50H04L61/00H04L63/0272H04L67/06H04L69/164H04L69/24H04L61/1511
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,467,454
App. No.
14/634,000
Granted
Oct 11, 2016
Kind
B2
Abstract

Described are systems and methods for managing network packet traffic between a client device and an enterprise server. A list of enterprise-authorized applications is maintained. Data packets, such as TCP and UDP data packets, communicated from applications running on the device are analyzed to determine an originating application corresponding to each packet. The originating application is compared to the list of authorized applications, and a VPN tunnel is created for the packet to access the enterprise server if the corresponding originating application is an authorized application.

Claims (83)

1. A system comprising:

at least one processor; and

at least one memory storing instructions that, when executed by the at least one processor, cause the system to perform:

maintaining a list of authorized applications that are authorized to access an enterprise server;

analyzing a plurality of packets originating from applications running on a client device; and

for each packet of the plurality of packets:

determining an originating application of that packet;

comparing the originating application to the list of authorized applications; and

transmitting that packet over a VPN to the enterprise server when the originating application is an authorized application.

2. The system of claim 1 , wherein the instructions further cause the system to perform preventing those packets having an associated originating application that is not on the list of authorized applications from accessing the enterprise server.

3. The system of claim 1 , wherein the list of authorized applications that are authorized to access the enterprise server further comprises a list of unauthorized applications that are unauthorized to access the enterprise server, wherein a packet originating from an unauthorized application is not transmitted over the VPN to the enterprise server.

4. The system of claim 1 , wherein the instructions further cause the system to perform receiving the plurality of packets, wherein each packet includes associated routing data.

5. The system of claim 4 , wherein the associated routing data comprises a source port number.

6. The system of claim 4 , wherein the instructions further cause the system to perform for each packet:

matching the routing data to an entry in a set of active network connection indicators, the set provided by an operating system of the client device;

determining an associated application ID of the matching entry;

determining whether the associated application ID corresponds to an authorized application; and

creating a VPN tunnel for the packet only when the associated application ID corresponds to an authorized application.

7. The system of claim 6 , wherein the list of authorized applications that are authorized to access the enterprise server further comprises a list of unauthorized applications that are unauthorized to access the enterprise server, wherein the instructions further cause the system to perform preventing VPN tunneling for those packets having an associated application ID that corresponds to an unauthorized application.

8. The system of claim 7 , wherein the packets are UDP packets or TCP packets, and wherein the at least one of the set of active network connection indicators includes at least one of a set of active TCP connection indicators and a set of active UDP connection indicators.

9. The system of claim 8 , wherein at least one of the set of active TCP connection indicators comprises proc/net/tcp or /proc/net/tcp6 interface indicators, and wherein at least one of the set of active UDP connection indicators comprises proc/net/udp or proc/net/udp6 interface indicators.

10. The system of claim 6 , wherein the instructions further cause the system to perform:

associating a timestamp with each received packet;

placing each timestamped packet in a queue;

acquiring a source port key map of a current set of active packet connection indicators at each of a plurality of times; and

selecting each timestamped packet from the queue in turn to perform a matching step, wherein the matching step comprises associating the selected timestamped packet with a corresponding source port key map having an associated timestamp that is later than the timestamp of the selected timestamped packet.

11. The system of claim 10 , wherein the instructions further cause the system to perform providing the selected timestamped packet access to a non-VPN connection when the associated ID is not on the authorized applications list.

12. The system of claim 10 , wherein the associated routing data includes a source port number for the matching step and a destination IP address and a destination port number for determining a destination for each timestamped packet.

13. The system of claim 1 , wherein the instructions further cause the system to perform accessing the enterprise server via a single sign on authentication procedure using a secure access manager application.

14. The system of claim 1 , wherein the list of authorized applications comprise securely wrapped applications.

15. The system of claim 1 , wherein at least one of the authorized applications is a dual mode application including an enterprise authorized mode and an enterprise unauthorized mode, such that data packets originating from the at least one authorized application are not allowed to access the enterprise server when at least one authorized application is operating in the enterprise unauthorized mode.

16. The system of claim 1 , wherein the instructions further cause the system to perform downloading one or more of the authorized applications from an enterprise application store.

17. One or more non-transitory computer-readable storage media comprising computer readable instructions that when executed by one or more processors, cause the one or more processors to perform:

maintaining a list of authorized applications that are authorized to access an enterprise server;

analyzing a plurality of packets originating from applications running on a client device; and

for each packet of the plurality of packets:

determining an originating application of that packet;

comparing the originating application to the list of authorized applications; and

transmitting that packet over a VPN to the enterprise server when the originating application is an authorized application.

18. The computer-readable storage media of claim 17 , wherein the instructions further cause the one or more processors to perform preventing those packets having an associated originating application that is not on the list of authorized applications from accessing the enterprise server.

19. The computer-readable storage media of claim 17 , wherein the list of authorized applications that are authorized to access the enterprise server further comprises a list of unauthorized applications that are unauthorized to access the enterprise server, wherein a packet originating from an unauthorized application is not transmitted over the VPN to the enterprise server.

20. The computer-readable storage media of claim 17 , wherein the instructions further cause the one or more processors to perform receiving the plurality of packets, wherein each packet includes associated routing data.

21. The computer-readable storage media of claim 20 , wherein the associated routing data comprises a source port number.

22. The computer-readable storage media of claim 20 , wherein the instructions further cause the one or more processors to perform for each packet:

matching the routing data to an entry in a set of active network connection indicators, the set provided by an operating system of the client device;

determining an associated application ID of the matching entry;

determining whether the associated application ID corresponds to an authorized application; and

creating a VPN tunnel for the packet only if when the associated application ID corresponds to an authorized application.

23. The computer-readable storage media of claim 22 , wherein the list of authorized applications that are authorized to access the enterprise server further comprises a list of unauthorized applications that are unauthorized to access the enterprise server, wherein the instructions further cause the one or more processors to perform preventing VPN tunneling for those packets having an associated application ID that corresponds to an unauthorized application.

24. The computer-readable storage media of claim 23 , wherein the packets are UDP packets or TCP packets, and wherein the at least one of the set of active network connection indicators includes at least one of a set of active TCP connection indicators and a set of active UDP connection indicators.

25. The computer-readable storage media of claim 24 , wherein at least one of the set of active TCP connection indicators comprises proc/net/tcp or /proc/net/tcp6 interface indicators, and wherein at least one of the set of active UDP connection indicators comprises proc/net/udp or proc/net/udp6 interface indicators.

26. The computer-readable storage media of claim 22 , wherein the instructions further cause the one or more processors to perform:

associating a timestamp with each received packet;

placing each timestamped packet in a queue;

acquiring a source port key map of a current set of active packet connection indicators at each of a plurality of times; and

selecting each timestamped packet from the queue in turn to perform a matching step, wherein the matching step comprises associating the selected timestamped packet with a corresponding source port key map having an associated timestamp that is later than the timestamp of the selected timestamped packet.

27. The computer-readable storage media of claim 26 , wherein the instructions further cause the one or more processors to perform providing the selected timestamped packet access to a non-VPN connection when the associated ID is not on the authorized applications list.

28. The computer-readable storage media of claim 26 , wherein the associated routing data includes a source port number for the matching step and a destination IP address and a destination port number for determining a destination for each timestamped packet.

29. The computer-readable storage media of claim 17 , wherein the instructions further cause the one or more processors to perform accessing the enterprise server via a single sign on authentication procedure using a secure access manager application.

30. The computer-readable storage media of claim 17 , wherein the list of authorized applications comprise securely wrapped applications.

31. The computer-readable storage media of claim 17 , wherein at least one of the authorized applications is a dual mode application including an enterprise authorized mode and an enterprise unauthorized mode, such that data packets originating from the at least one authorized application are not allowed to access the enterprise server when at least one authorized application is operating in the enterprise unauthorized mode.

32. The computer-readable storage media of claim 17 , wherein the instructions further cause the one or more processors to perform downloading one or more of the authorized applications from an enterprise application store.

33. A system, comprising:

at least one processor; and

at least one memory storing instructions that, when executed by the at least one processor, cause the system to perform:

maintaining a list of authorized applications of an enterprise server;

receiving a plurality of packets, wherein each packet includes associated routing data; and

for each packet:

matching the routing data to an entry in a set of active network connection indicators, the set provided by an operating system of a client device;

determining an associated application ID of the matching entry;

determining whether the associated application ID corresponds to an authorized application; and

creating a VPN tunnel for the packet only when the associated application ID corresponds to an authorized application.

34. The system of claim 33 , wherein the instructions further cause the system to perform preventing VPN tunneling for those packets having an associated application ID that corresponds to an unauthorized application.

35. The system of claim 33 , wherein the at least one of the set of active network connection indicators includes at least one of a set of active TCP connection indicators and a set of active UDP connection indicators.

36. The system of claim 33 , wherein the packets are TCP packets and the set of active connection indicators include at least one of a set of /proc/net/tcp, /proc/net/tcp6 interface indicators.

37. The system of claim 33 , wherein the instructions further cause the system to perform:

associating a timestamp with each received packet;

placing each timestamped packet in a queue;

acquiring a source port key map of a current set of active packet connection indicators at each of a plurality of times; and

selecting each timestamped packet from the queue in turn to perform a matching step, wherein the matching step comprises associating the selected timestamped packet with a corresponding source port key map having an associated timestamp that is later than the timestamp of the selected timestamped packet.

38. The system of claim 37 , wherein the instructions further cause the system to perform providing the selected timestamped packet access to a non-VPN connection when the associated ID is not on the authorized applications list.

39. The system of claim 37 , wherein the associated routing data includes a source port number for the matching step and a destination IP address and a destination port number for determining a destination for each timestamped packet.

40. The system of claim 33 , wherein the instructions further cause the system to perform downloading an authorized application from an enterprise application store.

Assignments (8)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
Continuity (3)
Continuation 13886526 · May 3, 2013
Provisional Application 61643249 · May 5, 2012
Related Publication 20150229649A1 · Aug 13, 2015