Zamyslete se, na koho ten REJECT vs. DROP bude mířit, a s jakým efektem.
Reject je zdvořilé explicitní odmítnutí s okamžitým účinkem, tzn. "ano jsem tu, ale nemám zájem". Odesilateli se pošle nějaká ICMP odezva, proč mu jeho traffic neprošel.
DROP je "tvářím se, že tu nejsem, ale ať si tazatel počká = musí si sám pro sebe timeoutovat, aby k tomu závěru došel".
Jsou porty/situace/ směry příchozích pokusů, kde 100% trafficu budou tvořit šmejdi z internetu, kteří hledají otevřený port, aby třeba zkoušeli hádat hesla apod. Těm nemá cenu napovídat a šetřit tak jejich čas / zrychlovat obrátku pokusů o útok.
Naopak jsou situace, kde nějaké to "ICMP unreachable" je součástí správného a svižného fungování nějakého protokolu. Viz třeba tradičně zmíněný "ident" v souvislosti se SMTP (nevím jak moc je to dnes ještě aktuální) nebo třeba "couldn't fragment" při autodetekci path MTU (provádí TCP stack per connection, pokud se nepletu). Pak jsou třeba situace, kdy si ISP monitoruje dostupnost Vašeho CPE pomocí pingu - takže pokud si jako bezpečnostní opatření zakážete příchozí ping (nebo odchozí odpovědi) tak je dobré, udělat díru aspoň pro monitoring ze strany ISP. Podobně když budete DROPovat odchozí tuším "ICMP ttl exceeded", tak bude příchozí traceroute zvenčí končit v /dev/null - je jistě Vaše rozhodnutí, zda chcete být maximálně bezpečný, nebo to vezmete sportovně jako že "za svou existenci se nestydím a případných DoS blbečků se nebojím". Obecně bych byl opatrný na paušální dropování ICMP.