Vous devez exécuter vos règles dans l'ordre inverse. Iptables est sensible à l'ordre d'exécution des commandes. Si une règle correspond, elle ne vérifie pas d'autres règles, elle obéit simplement à celle-ci. Si vous définissez la suppression en premier, la règle d'acceptation ne sera jamais testée. En définissant l'acceptation spécifique avec l'adresse IP source, puis en définissant la stratégie plus générale sur drop, vous affecterez le comportement attendu.
iptables -A INPUT -s x.x.x.x -p ICMP --icmp-type 8 -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type 8 -j DROP
En ce qui concerne le problème de blocage que vous semblez avoir, êtes-vous sûr d'avoir entré une adresse IP valide ? Vous pouvez peut-être préfixer cette commande avec strace iptables …
pour voir ce qu'il fait pendant qu'il semble se bloquer.
Ne laissez pas tomber ICMP bon gré mal gré ! Bien sûr, certaines des requêtes ICMP sont dangereuses, mais le reste est absolument nécessaire pour que le réseau fonctionne (pensez à "destination inaccessible" et à ce zoo).