iptables:如何让一个 IP 访问 tcp 服务一小时?

iptables:如何让一个 IP 访问 tcp 服务一小时?

我想让某个 IP 访问 TCP 端口 3306 一小时。此后,必须关闭所有连接。

如何为以下表达式添加超时?

iptables -A INPUT -m state --state NEW -m tcp -p tcp --source 1.2.3.4 --dport 3306 -j ACCEPT

答案1

我相信(我从未使用过它,而是通过 iptables 手册页找到它)--timestart 和 --timestop 将实现这一点。

iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --source 1.2.3.4 --dport 3306 --timestart 13:00 --timestop 14:00 -j ACCEPT

允许您在下午 1 点至 2 点之间。

如果数据包到达时间/日期在给定范围内,则匹配。所有选项都是可选的。

--时间开始 价值

仅当其位于“值”之后时才匹配(包括,格式:HH:MM;默认 00:00)。

- 时间停止 价值

仅当它位于“值”之前时才匹配(包括,格式:HH:MM;默认 23:59)。

答案2

不需要支持 iptables 时间模块的替代解决方案。

( iptables -I INPUT -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT ; sleep 1h; iptables -D INPUT -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT ) &

这不会在一小时后关闭连接,它只会返回到允许连接之前的任何策略;可以设置为中断和丢弃/拒绝不再允许的流量,除非您事先有 STATE ESTABLISHED ALLOW。

相关内容