I stumbled upon this post trying to figure this out myself and this is what I was able to come up with.
I used the OnComponentHit event of my capsule component from my character and checked the normal of the hit. Whenever there was a collision (which before would give me the “surfing” you described) I set the movement mode to Walking. This would mess up my jumps when standing next to a wall or colliding with one in midair so I used the normal to check if the hit was a wall (ignore) or if the hit was a walking surface (set to walking). Here is the code I ended up using.
Thanks for the help!