Tracking time since last contact, opportunity, etc. for Accounts

I am looking for a way to way to sort my Accounts (specifically certain types of Accounts) by how long it’s been since they were contacted. “Contacted” could mean an email, phone call, case opened, opportunity created, etc. So ideally any account that hasn’t had any sort of activity in the longest amount of time should come up at the top of the list. Is there any way to do this? Or perhaps there is a plug in I could use to do this? Do I just need to create my own custom module?
Thanks!