Returning a rigidbody back to its original x and z rotations through physics forces.

This is a little tricky to explain so bear with me.

Imagine an upright boxing bag. These bags can be hit and will then rotate along their x and z axis, However they will naturally stand upright again after a few seconds. It doesnt matter which way they are rotated on their y axis. The bag will always come back to its starting rotation after a while.

I am trying to do something similar in code with a rigidbody, however I find myself unable to solve it. How can I constantly apply physics forces that will return my rigidbodies x and z rotations back to 0 while still allowing stronger forces to rotate it. E.g a punch or kick to the upright boxing bag.

Attach them at the bottom to something, and apply the constant force upwards.

hello, that effect happens because the center of the bag has a lot of drag and the other part has less so the heavier part will always tend to go down, i dont really know how to explain it but by creating 1 big box with a lot of drag and angular drag, and imagine 2 little objects with almost no drag and angular drag (both of the objects attached to the big one using hinge joint) you can create that effect.