Even simpler: a single diode, pointing away from the Arduino, and internal pull-up enabled.
That way the external signal can pull low the pin, but not high. Also works for signals >5V. The diode is basically a one-way level shifter. Perfectly safe as long as the external signal doesn't go over the reverse voltage of the diode (depending on the type this can be as much as 1,000V) or negative.