Sometimes the signal turns to static for whatever reason. While I do have to solve that I do not want to have to worry about frying my Arduino's input ports. So can I make a small circuit that prevents a signal from going both negative and above 5 V?
Looking at the datasheet of the Arduino Nano there does not seem to be any protection components between the input pins and the ATMEGA328P.
This forum post shows a small protection circuit. Simulated in Falstad is seems to work quite well.

In my experiments this worked quite well. I tested the above circuit with a 4.7 V Zener, and any voltage got maxed out to around 4 V. The minimum voltage was around -0.7 V.
I later noticed that I can reduce the components and still achieve the same result, with only one resistor and a series zener diode.
In the Atmega328p datasheet I notice the max input current is 40 mA. So if I were to limit the current with a max of +5 V I would use a minimum resistor value of $$ R={V \over I}={5 \over 0.04}=125 \ohm $$ But to make it a lot safer I would use a 1k resistor.
This is what I tested with on the breadboard:

With a 5.6 V Zener, input signal is 0 to 5 V @ 40 Hz.
Same diode, input signal is -2 to 5 V @ 40 Hz.
Same diode, input signal is 0 to 8 V @ 40 Hz.
A 5.1 V zener, 0 to 5 V @ 40 Hz. (I adjusted the horizontal scale before making this screenshot).
So for a clean 0 to 5 V signal I would have to use a zener bigger then 5.1 V. The next bigger in my inventory is the 5.6 V I tested with and that seems fine.