Sure, there's a lot of tutorials out there for blocking SYN+FIN, christmas scans, etc.
But did you know that most of those won't help against a default nmap scan? Try it - block all the standard stealth scans, etc using something like the following:
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
You'll find that a simple nmap scan is still able to list all the ports available on the machine. Not that I'm telling you to not use the above code, in fact it's a good first step.
If someone is trying to find all open ports on your server, think about what's happening. They are randomly going around poking it in various places saying "Hey, who's there?". They poke to the tune of hundreds or even thousands of probes per second.
