iptables 记录已建立的连接

doe*_*ter 3 firewall iptables

我的 iptables 中有一条记录拒绝连接的规则,即-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

我想要一个类似的规则来记录所有已建立的连接,即与所有端口的非拒绝连接。我该怎么做,我尝试搜索谷歌并进行实验,但找不到匹配的字符串

Mad*_*ter 5

一种廉价而愉快的方法是寻找三向握手中的第二个数据包。它很容易发现,因为它不寻常地同时设置了 SYN 和 ACK 标志,这通常对于给定连接来说是唯一的。尽管发起者仍然有可能不响应第三个也是最后一个数据包,但这完全归功于发起者的恩典:此时,您已表示愿意进行此对话,并且就您而言关心,这是成立的。

我记录了那些

iptables -A OUTPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -j LOG --log-prefix "Connection established: "
Run Code Online (Sandbox Code Playgroud)

你可以看到它与 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 
Run Code Online (Sandbox Code Playgroud)

顺便提一下:您当前记录的不是拒绝连接,而是拒绝数据包;那不是一回事。但我假设你所要求的正是你想要的,并且已经做出了相应的回答。