我的机器目前有向互联网开放的端口 445。我正在查看此端口的扫描频率,并且我计划通过在有人连接到此端口时运行 shell 脚本来实现这一点。我如何使用 IPtables 做到这一点?我正在使用 Debian 10。
答案1
您的问题的解决方案很旧,但不涉及 iptables。它被称为内网超级服务器。它的配置 - /etc/inetd.conf - 允许您定义要侦听的端口和协议 - 在 /etc/services 中定义的“服务” - 以及在连接时执行的程序 - 这可能是您的日志记录脚本。
服务将是
microsoft-ds 445/tcp # Microsoft Naked CIFS
答案2
您无法从 IPtables 启动程序或脚本,但可以记录到达 IPtables 中某个端口的流量。
每次有东西到达 udp 或 tcp 端口 445 时,这都会在系统日志(Debian 上的 /var/log/syslog)中记录条目,并带有日志前缀和有关连接的详细信息(时间戳、源端口、源 IP 等)
iptables -I INPUT -p tcp --dport 445 -j LOG --log-prefix "PORT 445 connnection!!"
iptables -I INPUT -p udp --dport 445 -j LOG --log-prefix "PORT 445 connnection!!"
如果您想在端口 445 出现某些情况时启动某个脚本,则需要使用 inetd,或者在 Debian 10 上,您还可以在端口 445 出现情况时使用 systemd 套接字通过服务启动脚本。
根据您的需要,最好只在日志中记录到端口 445 的连接,并按某个计划运行脚本来计算日志中的条目或提取它们。