The ports that you have listed are the "well-known" destination ports for certain protocols, but that doesn't mean they are used as the source port as well. The source port is actually picked from a random range and often used as the destination/incoming port for the replies. So to achieve want you want with your approach, ports from that range should be left open instead. Also, your rule only blocks certain incoming TCP traffics anyway.
So to do it "statlessly" (that is, in this case, purely port-based):
iptables -A INPUT -p tcp ! --dport 32768:60999 -j DROP
iptables -A INPUT -p udp ! --dport 32768:60999 -j DROP
As noted in the link above, the actual range can be checked with:
cat /proc/sys/net/ipv4/ip_local_port_range
A perhaps more reassuring approach (maybe only seemingly though, if you don't adopt it in addition to the above; as the source port does not really guarantee anything) is to filter incoming replies based on their source ports (which are often the destination ports of the original request):
iptables -A INPUT -p tcp -m multiport ! --sports 80,443,53,22 -j DROP
iptables -A INPUT -p udp -m multiport ! --sports 53 -j DROP
But since not all applications/protocols works purely/exactly this way, you will likely need some more exceptions (e.g. FTP? or even the no-longer-simple-these-days DNS) anyway.
To avoid these complications, you probably want to do it with a stateful approach:
iptables -A INPUT -m conntrack ! --ctstate RELATED,ESTABLISHED -j DROP
Basically this means traffics initiated by others will be dropped.
You might still want some more exceptions (for the loopback interface and ICMP). Check out this wiki page for more details and examples. (This might be good enough to use by the way.)