Devi eseguire le tue regole nell'ordine opposto. Iptables è sensibile all'ordine in cui i comandi sono stati eseguiti. Se una regola corrisponde, non controlla più regole, obbedisce solo a quella. Se imposti prima il drop, la regola di accettazione non verrà mai testata. Impostando l'accettazione specifica con l'IP di origine, quindi impostando la politica più generale da eliminare, influirai sul comportamento previsto.
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
Per quanto riguarda il problema di blocco che sembra avere, sei sicuro di aver inserito un indirizzo IP valido? Forse puoi prefissare quel comando con strace iptables …
per vedere cosa sta facendo mentre sembra bloccarsi.
Non far cadere l'ICMP, volenti o nolenti! Certo, alcune delle richieste ICMP sono pericolose, ma il resto è assolutamente necessario per il funzionamento della rete (si pensi a "destinazione irraggiungibile" e quello zoo).