I'm not sure if it does everything you're looking for, but Tripwire is a tried and true solution.