Space communication systems are plagued by complexity resulting in limited access to orbiting satellites and high mission operation costs that ultimately reduce mission yields and capabilities. In particular, ground stations, the access point between space and terrestrial networks, suffer from monolithic designs, narrow interfaces, and reliability issues that raise significant engineering barriers. We have reduced these barriers by decomposing monolithic ground station functions into basic component services and virtualizing their software and hardware interfaces. We captured these core services in a command and control protocol, called the Ground Station Markup Language. This modularization has also enabled us to apply recovery-oriented computing techniques, specifically recursive restarts, to quickly recover from software failures and improve overall ground station availability. Our testbed consists of globally distributed ground stations supporting university satellite missions. With case studies, we demonstrate how our work enables rapid prototyping and reconfiguration within a ground station and how it facilitates coordination of networked, heterogeneous ground stations by hiding low-level implementation details.