|
Messages
| Members
| Groups
|
Scenario:
A few weeks back my co-workers introduced me to an excellent method of managing multiple devices without a hardware KVM: Allow me to introduce Synergy (http://synergy-foss.org/)
Taking my paranoia to the next level, let's take a look at the network traffic with Wireshark: ![]() Sure enough, the key presses and mouse movements are being transmitted in clear text. (Key Id: 100is the 100th character in the ASCII character map: d) So now we have a very useful and very insecure application. Anyone with a packet sniffer on my network and a bit of knowledge has the potential to capture all of my keystrokes and mouse movements. Bummer. Synergy doesn't include any built in security, so we'll need to rely on another method of securing our traffic.
Encrypting Synergy: By utilizing IPSec policies in Windows (2000+) we can enforce encryption between two windows devices. In this example, I'll be configuring IPSec between two Windows 7 devices. Microsoft has simplified the IPSec process in Windows 7 via Windows Firewall with Advanced Security: http://technet.microsoft.com/en-us/edge/video/how-to-encrypt-telnet-traffic-with-windows-firewall-with-advanced-security-and-ipsec However, in this example we'll be using classic IPSec policies, which are available to previous OSes. Configure IPSec on DeviceA 1. Start by opening a new MMC console: Start >Run > mmc.exe
5. IP Security Policy Name: Synergy (or something more creative if you'd like) 6. Leave default response rule unchecked 7. Leave Edit Properties checked and select Finish 8. Select Add.. from the rules tab 9. Leave "This rule does not specify a tunnel" and select Next 10. Leave "All network connections" and select Next 11. IP Filter List: Select Add..
13. Filter Action: Select Add..
15. Authentication Method: Select "Use this string to protect… (preshared key)
Configure IPSec on Device B 1. Start a continuous ping between the two devices. After enabling the IPSec filter on Device A, you should no longer be able to ping Device B until the filter is configured correctly on Device B.
3. Once successfully configured on Device B, the continuous ping should now be responding properly. Confirm IPSec is working 1. Locate the IP Security Monitor MMC Snap-in 2. Expand IP Security Monitor > Device name >Quick mode > Statistics 3. Confidential, Authenticated, and Transport Bytes should now be generating statistics, confirming IPSec is now active and operational. ![]() Now to confirm IPSec is in place with Wireshark: ![]() What a beautiful thing; Nothing but Encapsulating Security Payload (ESP) packets. Let's take a look at what we've just accomplished:
We still have another potential unresolved security issue. IPSec policies have multiple methods of being applied via IP filters, but they're just that: IP filters. We're only enforcing traffic between two predefined devices… If we suddenly change the IP of both devices, they fall outside the scope of our IP filter, IPSec is no longer enforced, and we're back to clear text communications. This could very easily happen in an environment with DHCP, or by adding another Synergy client and forgetting to setup IPSec. (Or by disabling the IPSec Policy Agent service on both devices…) In our final step, we can leverage a Defense in Depth (DiD) approach by utilizing application level filtering within the Advanced Windows Firewall to require encryption. Enforcing IPSec with Windows Firewall w/Advanced Security: Enforcing IPSec on DeviceA (Synergy Server) 1. Open Windows Firewall w/Advanced Security 2. Right-Click Inbound Rules > Select New Rule 3. Leave "Program" and select Next 4. This Program Path: Browse to the Synergy application path and select Next.
6. Select Customize
8. From the list of Inbound Rules: Right-click the rule and select Enable Rule 9. Repeat Steps 1 – 8 for Outbound Rule Enforcing IPSec on DeviceB (Synergy Client) 1. Repeat steps 1 – 9 above on Device B. ![]() Remember: Once you've successfully configured IPSec and Synergy stops working days later, we'll need to check a few things:
Walking through this process is a great way to securely "band-aid" an insecure app, however, I believe it also highlights the limitations of enforcing IPSec at the OS level. Enjoy your (now secure) app.
|