The table here will help you: http://pokemondb.net/type
Grass and Rock are technically the weakest types defensively, 5 other types are super-effective against them.
Steel is probably the strongest defensively, since most types are not very effective against it.
If you count dual-types, then Dark/Ghost is the best because it has no weaknesses at all.