iptables 能否在启动后的特定秒数(例如 30 秒)后自动删除已建立的输出会话?但我想将其限制在目标端口 80 和 443 上。目的是删除属于某些正在运行的应用程序(例如 Chrome、Teamviewer)的未使用的已建立 TCP 连接。我尝试使用最近和限制模块,但没有成功。可能是 IPTables 没有按连接持续时间限制连接的功能,或者我不知道什么原因?
我已经阅读了一些相关主题: https://stackoverflow.com/questions/20327518/need-to-drop-established-connections-with-iptables
等等。
你能帮我提供一些脚本或应用程序吗?也许没有办法用 IPT 来做?
我的主表:
iptables 能否在启动后的特定秒数(例如 30 秒)后自动删除已建立的输出会话?但我想将其限制为仅用于目标端口 80 和 443。目的是删除属于某些正在运行的应用程序(例如 Chrome、Teamviewer)的未使用的已建立 TCP 连接。我尝试使用最近和限制模块,但没有成功。可能是 IPTables 没有按连接持续时间限制连接的功能,或者我不知道什么?
我已经阅读了一些相关主题: https://stackoverflow.com/questions/20327518/need-to-drop-established-connections-with-iptables
等等。
你能帮我提供一些脚本或应用程序吗?也许没有办法用 IPT 来做?
我家的餐桌:
echo Kernel modules
#
modprobe ip_conntrack
modprobe ip_conntrack_ftp
################################################################################
echo Reset iptables
#
iptables -F
iptables -F -t nat
iptables -F -t raw
iptables -F -t mangle
iptables -X
iptables -X -t nat
iptables -X -t raw
iptables -X -t mangle
iptables -Z
iptables -Z -t nat
iptables -Z -t raw
iptables -Z -t mangle
################################################################################
echo Default policy
#
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
################################################################################
echo Logging INPUT,OUTPUT
#
iptables -A INPUT -j LOG --log-prefix="INPUT chain"
iptables -A OUTPUT -j LOG --log-prefix="OUTPUT chain"
################################################################################
echo Allow local
#
iptables -A INPUT -i lo -s 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -o lo -d 127.0.0.0/8 -j ACCEPT
################################################################################
echo Allow icmp out
#
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
################################################################################
echo Allow port 53 out
#
iptables -A OUTPUT -p udp --sport 1024:65535 --dport 53 \
-m state --state NEW -j ACCEPT
iptables -A INPUT -p udp --sport 53 --dport 1024:65535 \
-m state --state ESTABLISHED -j ACCEPT
################################################################################
echo Allow ports 20,21 out
#
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 \
--dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 \
-m multiport --dports 20,1024:65535 \
-m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp -m multiport --sports 20,21,1024:65535 \
--dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
################################################################################
echo Allow ports 80,443 out
#
iptables -A OUTPUT -p tcp --sport 1024:65535 -m multiport --dports 80,443 \
-m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp -m multiport --sports 80,443 \
--dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
################################################################################
echo Allow port 123 out
#
iptables -A OUTPUT -p udp -m udp --sport 123 \
--dport 123 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 123 \
--dport 123 -m state --state ESTABLISHED -j ACCEPT
################################################################################
#
##iptables -A INPUT -j REJECT
##iptables -A FORWARD -j REJECT
##iptables -A OUTPUT -j REJECT
答案1
没看到:http://linux.die.net/man/8/iptables。只有这个(不是你想要的):
... 时间
如果数据包到达时间/日期在给定范围内,则匹配。所有选项都是可选的。
--timestart value 仅当其在“value”之后时才匹配(包括,格式:HH:MM ;默认 00:00)。
--timestop value 仅当其在“value”之前时匹配(包含,格式:HH:MM ;默认 23:59)。
--days listofdays 仅当今天是给定日期之一时才匹配。(格式:星期一、星期二、星期三、星期四、星期五、星期六、星期日;默认每天)
--datestart date 仅当它在“date”之后时匹配(包含,格式:YYYY[:MM[:DD[:hh[:mm[:ss]]]]];h、m、s 从 0 开始;默认为 1970)
--datestop date 仅当它在“date”之前时匹配(包含,格式:YYYY[:MM[:DD[:hh[:mm[:ss]]]]];h、m、s 从 0 开始;默认为 2037)
...
你问的是“持续时间”而不是“时间”。你可以破解某些东西,但修复 Source 是最快、最有效的。
您可以修补内核并重新编译它。
看http://www.netfilter.org/documentation/HOWTO/netfilter-extensions-HOWTO-3.html在“conntrack patch”部分中,命令为“ctexpire”。如果您愿意编写一些代码并使用自定义过滤器修补内核,那么我们可以为您提供帮助(否则答案是“不,您不能这样做,没有这样的过滤器命令”)。