Active Fault Isolation: A Duality-Based Approach via Convex Programming