mysql-iptables规则过滤

如何限制某个主机对mysql的访问

  1. 临时方案直接kill

     mysql> show processlist;
    
    +----+-------------+--------------------+----------+---------+------+-------+------------------+
    | Id | User        | Host               | db       | Command | Time | State | Info             |
    +----+-------------+--------------------+----------+---------+------+-------+------------------+
    | 49 | application | 192.168.44.1:51718 | XXXXXXXX | Sleep   |  183 |       | NULL             ||
    | 55 | application | 192.168.44.1:51769 | XXXXXXXX | Sleep   |  148 |       | NULL             |
    | 56 | application | 192.168.44.1:51770 | XXXXXXXX | Sleep   |  148 |       | NULL             |
    | 57 | application | 192.168.44.1:51771 | XXXXXXXX | Sleep   |  148 |       | NULL             |
    | 58 | application | 192.168.44.1:51968 | XXXXXXXX | Sleep   |   11 |       | NULL             |
    | 59 | root        | localhost          | NULL     | Query   |    0 | NULL  | show processlist |
    +----+-------------+--------------------+----------+---------+------+-------+--------------
    
    mysql> kill 52;
    Query OK, 0 rows affected (0.00 sec)
  2. 使用mySQL GRANT

    mysql> GRANT USAGE ON *.* TO 'user'@'<blockIP>';

使用iptables过滤

  • 这个比较复杂,而且因为是机器层面的,所以要特别小心。

  • 有两种方式,一种是只允许某些IP,其他的都block,即白名单的方式:

  • 允许

     iptables -A INPUT -p tcp -s 192.168.100.0/24 --dport 3306 -j ACCEPT # 允许那个网段ip可以访问
    iptables -A INPUT -p tcp -s 192.168.100.100 --dport 3306 -j ACCEPT # 允许那个ip可以访问
    iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT # 允许自己可以访问自己
    iptables -A INPUT -p tcp --dport 3306 -j DROP # 拒绝所有可以访问
    # 相当于设置白名单
  • 另一种反过来,不允许某些IP,其他的都允许,即设置黑名单:

iptables -A INPUT -p tcp -s IPaddress1/32 --dport 3306 -j DROP # 拒绝那个ip 或网段访问
iptables -A INPUT -p tcp -s IPaddress2/32 --dport 3306 -j DROP
iptables -A INPUT -p tcp -s IPaddress3/32 --dport 3306 -j DROP
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT # 允许所有网段访问
# 相当于设置黑名单

本博客所有文章是以学习为目的,如果有不对的地方可以一起交流沟通共同学习 邮箱:1248287831@qq.com!