Uma maneira barata e alegre é procurar o pacote segundo no handshake triplo. É fácil identificá-lo, já que é incomum que ele tenha flags SYN e ACK definidas, o que geralmente é exclusivo para uma determinada conexão. Embora ainda seja possível para o originador não responder com o terceiro e último pacote, isso é inteiramente pela graça do criador: neste ponto, você indicou que está disposto a ter essa conversa, e até onde você re preocupado, é estabelecido.
Eu registrei aqueles com
iptables -A OUTPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -j LOG --log-prefix "Connection established: "
E você pode ver isso funcionando com, por exemplo, sshd:
client% telnet 192.168.3.1 22
Trying 192.168.3.1...
Connected to 192.168.3.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3
server% tail -1 /var/log/facility/kern
Feb 18 05:06:29 server kernel: Connection established: IN= OUT=eth0.11 SRC=192.168.3.1 DST=192.168.3.11 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=22 DPT=59292 WINDOW=14480 RES=0x00 ACK SYN URGP=0
Uma nota rápida: o que você está registrando no momento não é negado conexões , mas negado pacotes ; não é a mesma coisa. Mas eu assumi que você pediu exatamente o que você quer e respondeu de acordo.