Audacity's normalization function works fine for that if you set the maximum amplitude in the dialog to -0.0dB.
Keep in mind that it will only bring the top levels of your audio file up to max, so if there are portions between which the amplitudes vary greatly (relative to one another) that will be in the normalized version as well. You can however (again with Audacity, and probably a great deal of other sound editing applications as well) choose to normalize parts of your track differently for dealing with such issues.
"Why do programmers get Halloween and Christmas mixed up?" Because Oct(31) = Dec(25)