On Tue, Sep 06, 2005 at 02:33:33PM +0400, Eugene Prokopiev wrote: > Здравствуйте! > > Когда-то, читая Андерсона в переводе Киселева, запомнил, что цель REJECT > в iptables не просто убивает пакеты, приходящие на определенный порт, а > посылает отправителю icmp-сообщение port-unreachable. Ну и домыслил, что > nmap должен видеть такие порты как closed. > > Сегодня впервые попробовал это сделать и был немного разочарован > результатом: > процесс подключения: syn -> syn-ack -> ack процесс обрыва подключения: пакет -> rst (reset) если подключающаяся сторона не получит ни SA, ни A, ни RST пакета, то считается, то происходит отввал по timeout'у (nmap достаточно долго начинает сканировать). если на S пакет пришёл icmp - ясно понятно, что это firewall - tcp/ip стек так не действует. зато если на S пришёл R (так показывает tcpdump, кстати), то именно так и надо сбрасывать tcp подключения по rfc. в итоге правило: -j REJECT --reject-with tcp-reset (icmp отлуп имеет смысл давать только для udp - там нет механизма сброса подключения. только тут стоит учесть частоту отлупов: из-за возможности DoS'а linux kernel 5 раз в секунду вроде бы выдаёт их, не более. так что для udp надо ещё -m limit пристроить) -- С уважением, Афанасов Дмитрий