well... there's your answer. You need to do two things
1. quit publishing those URLs anywhere on your site
2. send a 301 for all such URLs to the permalink. I believe that nowdays Wordpress should be doing this by default if permalinks are set up right.
So really #1 is your main problem.
One thing, can you explain what you mean by "accessible"? Does that URL end up as the final URL in the address bar, or do you end up with the permalink? And what headers is it sending? Is it currently sending a 301 of ?p=8428