How to get hard edges when using subsurf modifier?
Couple ways to do it. One is to use an Edge Split modifier, adjust the angle at which you want an edge to be sharp, or mark specific edges sharp as needed. The other is to add additional edge loops on either side of where you want the sharp edge.

For example, here's three cylinders:



In the middle is a 32-sided cylinder with the Subsurf modifier set for 3 subdivisions. On the right is the same cylinder with the Edge Split modifier turned on. On the left, is the same cylinder with additional edge loops above and below the edge that needs to be sharp.



Same cylinders, showing the vertices on the left cylinder so you can see the two extra loops. Both approaches work. The slightly beveled edge resulting from adding more loops will arguably give you a more realistic edge, since the real car likely doesn't have a perfectly sharp edge there (few things IRL do).