IPTABLES(速率限制)端口 3306

IPTABLES(速率限制)端口 3306

有没有办法使用 IPTABLES 来限制 MySQL 3306 上的连接速率?我正在考虑每 5 分钟允许 2 次对端口 3306 的连接尝试。谢谢

答案1

将这些限制保留在 MySQL 本身内,而不是在网络级别,不是更好吗?根据MySQL 文档您可以限制单个帐户的以下服务器资源:

*  The number of queries that an account can issue per hour
*  The number of updates that an account can issue per hour
*  The number of times an account can connect to the server per hour
*  The number of simultaneous connections to the server an account can have

执行此操作的 MySQL 查询示例:

mysql> CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank';
mysql> GRANT ALL ON customer.* TO 'francis'@'localhost'
    ->     WITH MAX_QUERIES_PER_HOUR 20
    ->          MAX_UPDATES_PER_HOUR 10
    ->          MAX_CONNECTIONS_PER_HOUR 5
    ->          MAX_USER_CONNECTIONS 2;

我个人更愿意将这种类型的设置保留在应用程序本身中,而不是试图在应用程序不知情的情况下对其进行操作。但据我所知,使用 iptables 的其他示例在技术上也应该有效。

答案2

$IPT -A INPUT -s 0/0 -p tcp --dport 3306 --syn -m limit --limit 10/hour \

--limit-burst 10 -j ACCEPT


$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


$IPT -A INPUT -s 0/0 -p tcp --dport 3306 -j DROP

答案3

我很感兴趣,于是搜索了一下,发现本文等等。看起来你可以做到。

答案4

请注意,根据应用程序的不同,限制连接数实际上可能不会限制查询数。没有什么可以阻止应用程序在单个连接上进行数百次查询,这样做甚至是最佳实践。

相关内容